author | Manuel Requena <manuel.requena@cttc.es> |
Tue, 29 May 2012 10:42:17 +0200 | |
changeset 8821 | 09aadc95a3ee |
parent 8820 | 1a0fbd940a0d (current diff) |
parent 8817 | 9df898a16370 (diff) |
child 8823 | c49104e07bcb |
src/lte/doc/source/figures/MCS_14_test.eps | file | annotate | diff | comparison | revisions | |
src/lte/doc/source/figures/MCS_25_27.pdf | file | annotate | diff | comparison | revisions | |
src/lte/doc/source/figures/MCS_25_27.png | file | annotate | diff | comparison | revisions |
--- a/doc/tutorial-pt-br/source/tracing.rst Fri May 18 10:30:14 2012 +0200 +++ b/doc/tutorial-pt-br/source/tracing.rst Tue May 29 10:42:17 2012 +0200 @@ -2996,10 +2996,10 @@ Mas os objetos internos são inteiramente diferentes. Por exemplo, o Ptr<PcapFileWrapper> é um ponteiro para um objeto |ns3| que suporta ``Attributes`` e é integrado dentro do sistema de configuração. O Ptr<OutputStreamWrapper>, por outro lado, é um ponteiro para uma referência para um simples objeto contado. Lembre-se sempre de analisar o objeto que você está referenciando antes de fazer suposições sobre os "poderes" que o objeto pode ter. .. - For example, take a look at ``src/network/model/pcap-file-object.h`` in the + For example, take a look at ``src/network/utils/pcap-file-wrapper.h`` in the distribution and notice, -Por exemplo, acesse o arquivo ``src/network/model/pcap-file-object.h`` e observe, +Por exemplo, acesse o arquivo ``src/network/utils/pcap-file-wrapper.h`` e observe, :: @@ -3562,10 +3562,10 @@ uint32_t deviceid); .. - You are encouraged to peruse the Doxygen for class ``TraceHelperForDevice`` + You are encouraged to peruse the Doxygen for class ``AsciiTraceHelperForDevice`` to find the details of these methods; but to summarize ... -Para maiores detalhes sobre os métodos é interessante consultar a documentação para a classe ``TraceHelperForDevice``; mas para resumir ... +Para maiores detalhes sobre os métodos é interessante consultar a documentação para a classe ``AsciiTraceHelperForDevice``; mas para resumir ... .. There are twice as many methods available for ascii tracing as there were for
--- a/doc/tutorial/source/tracing.rst Fri May 18 10:30:14 2012 +0200 +++ b/doc/tutorial/source/tracing.rst Tue May 29 10:42:17 2012 +0200 @@ -2168,7 +2168,7 @@ Remember to always look at the object you are referencing before making any assumptions about the "powers" that object may have. -For example, take a look at ``src/network/model/pcap-file-object.h`` in the +For example, take a look at ``src/network/utils/pcap-file-wrapper.h`` in the distribution and notice, :: @@ -2566,7 +2566,7 @@ void EnableAscii (std::string prefix, uint32_t nodeid, uint32_t deviceid, bool explicitFilename); void EnableAscii (Ptr<OutputStreamWrapper> stream, uint32_t nodeid, uint32_t deviceid); -You are encouraged to peruse the Doxygen for class ``TraceHelperForDevice`` +You are encouraged to peruse the Doxygen for class ``AsciiTraceHelperForDevice`` to find the details of these methods; but to summarize ... There are twice as many methods available for ascii tracing as there were for
--- a/src/buildings/bindings/modulegen__gcc_ILP32.py Fri May 18 10:30:14 2012 +0200 +++ b/src/buildings/bindings/modulegen__gcc_ILP32.py Tue May 29 10:42:17 2012 +0200 @@ -3989,14 +3989,6 @@ cls.add_method('IsOutdoor', 'bool', []) - ## buildings-mobility-model.h (module 'buildings'): void ns3::BuildingsMobilityModel::SetFloorNumber(uint8_t nfloor) [member function] - cls.add_method('SetFloorNumber', - 'void', - [param('uint8_t', 'nfloor')]) - ## buildings-mobility-model.h (module 'buildings'): void ns3::BuildingsMobilityModel::SetIndoor(ns3::Ptr<ns3::Building> building) [member function] - cls.add_method('SetIndoor', - 'void', - [param('ns3::Ptr< ns3::Building >', 'building')]) ## buildings-mobility-model.h (module 'buildings'): void ns3::BuildingsMobilityModel::SetIndoor(ns3::Ptr<ns3::Building> building, uint8_t nfloor, uint8_t nroomx, uint8_t nroomy) [member function] cls.add_method('SetIndoor', 'void', @@ -4005,14 +3997,6 @@ cls.add_method('SetOutdoor', 'void', []) - ## buildings-mobility-model.h (module 'buildings'): void ns3::BuildingsMobilityModel::SetRoomNumberX(uint8_t nroomx) [member function] - cls.add_method('SetRoomNumberX', - 'void', - [param('uint8_t', 'nroomx')]) - ## buildings-mobility-model.h (module 'buildings'): void ns3::BuildingsMobilityModel::SetRoomNumberY(uint8_t nroomy) [member function] - cls.add_method('SetRoomNumberY', - 'void', - [param('uint8_t', 'nroomy')]) ## buildings-mobility-model.h (module 'buildings'): void ns3::BuildingsMobilityModel::DoDispose() [member function] cls.add_method('DoDispose', 'void',
--- a/src/buildings/bindings/modulegen__gcc_LP64.py Fri May 18 10:30:14 2012 +0200 +++ b/src/buildings/bindings/modulegen__gcc_LP64.py Tue May 29 10:42:17 2012 +0200 @@ -3989,14 +3989,6 @@ cls.add_method('IsOutdoor', 'bool', []) - ## buildings-mobility-model.h (module 'buildings'): void ns3::BuildingsMobilityModel::SetFloorNumber(uint8_t nfloor) [member function] - cls.add_method('SetFloorNumber', - 'void', - [param('uint8_t', 'nfloor')]) - ## buildings-mobility-model.h (module 'buildings'): void ns3::BuildingsMobilityModel::SetIndoor(ns3::Ptr<ns3::Building> building) [member function] - cls.add_method('SetIndoor', - 'void', - [param('ns3::Ptr< ns3::Building >', 'building')]) ## buildings-mobility-model.h (module 'buildings'): void ns3::BuildingsMobilityModel::SetIndoor(ns3::Ptr<ns3::Building> building, uint8_t nfloor, uint8_t nroomx, uint8_t nroomy) [member function] cls.add_method('SetIndoor', 'void', @@ -4005,14 +3997,6 @@ cls.add_method('SetOutdoor', 'void', []) - ## buildings-mobility-model.h (module 'buildings'): void ns3::BuildingsMobilityModel::SetRoomNumberX(uint8_t nroomx) [member function] - cls.add_method('SetRoomNumberX', - 'void', - [param('uint8_t', 'nroomx')]) - ## buildings-mobility-model.h (module 'buildings'): void ns3::BuildingsMobilityModel::SetRoomNumberY(uint8_t nroomy) [member function] - cls.add_method('SetRoomNumberY', - 'void', - [param('uint8_t', 'nroomy')]) ## buildings-mobility-model.h (module 'buildings'): void ns3::BuildingsMobilityModel::DoDispose() [member function] cls.add_method('DoDispose', 'void',
--- a/src/dsr/bindings/modulegen__gcc_ILP32.py Fri May 18 10:30:14 2012 +0200 +++ b/src/dsr/bindings/modulegen__gcc_ILP32.py Tue May 29 10:42:17 2012 +0200 @@ -10281,6 +10281,8 @@ cls.add_constructor([param('ns3::dsr::RouteCache::Neighbor const &', 'arg0')]) ## dsr-rcache.h (module 'dsr'): ns3::dsr::RouteCache::Neighbor::Neighbor(ns3::Ipv4Address ip, ns3::Mac48Address mac, ns3::Time t) [constructor] cls.add_constructor([param('ns3::Ipv4Address', 'ip'), param('ns3::Mac48Address', 'mac'), param('ns3::Time', 't')]) + ## dsr-rcache.h (module 'dsr'): ns3::dsr::RouteCache::Neighbor::Neighbor() [constructor] + cls.add_constructor([]) ## dsr-rcache.h (module 'dsr'): ns3::dsr::RouteCache::Neighbor::close [variable] cls.add_instance_attribute('close', 'bool', is_const=False) ## dsr-rcache.h (module 'dsr'): ns3::dsr::RouteCache::Neighbor::m_expireTime [variable]
--- a/src/dsr/bindings/modulegen__gcc_LP64.py Fri May 18 10:30:14 2012 +0200 +++ b/src/dsr/bindings/modulegen__gcc_LP64.py Tue May 29 10:42:17 2012 +0200 @@ -10281,6 +10281,8 @@ cls.add_constructor([param('ns3::dsr::RouteCache::Neighbor const &', 'arg0')]) ## dsr-rcache.h (module 'dsr'): ns3::dsr::RouteCache::Neighbor::Neighbor(ns3::Ipv4Address ip, ns3::Mac48Address mac, ns3::Time t) [constructor] cls.add_constructor([param('ns3::Ipv4Address', 'ip'), param('ns3::Mac48Address', 'mac'), param('ns3::Time', 't')]) + ## dsr-rcache.h (module 'dsr'): ns3::dsr::RouteCache::Neighbor::Neighbor() [constructor] + cls.add_constructor([]) ## dsr-rcache.h (module 'dsr'): ns3::dsr::RouteCache::Neighbor::close [variable] cls.add_instance_attribute('close', 'bool', is_const=False) ## dsr-rcache.h (module 'dsr'): ns3::dsr::RouteCache::Neighbor::m_expireTime [variable]
--- a/src/dsr/model/dsr-options.cc Fri May 18 10:30:14 2012 +0200 +++ b/src/dsr/model/dsr-options.cc Tue May 29 10:42:17 2012 +0200 @@ -802,9 +802,8 @@ rrep.SetNodesAddress (m_finalRoute); // Set the node addresses in the route reply header // Get the real source of the reply Ipv4Address realSource = m_finalRoute.back (); - Ipv4Address realDst = m_finalRoute.front (); PrintVector (m_finalRoute); - NS_LOG_DEBUG ("This is the full route from " << realSource << " to " << realDst); + NS_LOG_DEBUG ("This is the full route from " << realSource << " to " << m_finalRoute.front ()); /* * This part add dsr header to the packet and send route reply packet */ @@ -1355,11 +1354,10 @@ /* * Get the error destination address */ - Ipv4Address targetAddress = rerrUnreach.GetErrorDst (); Ipv4Address unreachAddress = rerrUnreach.GetUnreachNode (); Ipv4Address errorSource = rerrUnreach.GetErrorSrc (); - NS_LOG_DEBUG ("The destination address and the unreachable node " << targetAddress << " " << unreachAddress); + NS_LOG_DEBUG ("The destination address and the unreachable node " << rerrUnreach.GetErrorDst () << " " << unreachAddress); /* * Get the serialized size of the rerr header */
--- a/src/dsr/model/dsr-rcache.h Fri May 18 10:30:14 2012 +0200 +++ b/src/dsr/model/dsr-rcache.h Tue May 29 10:42:17 2012 +0200 @@ -493,6 +493,8 @@ close (false) { } + + Neighbor () {} // For Python bindings }; // / Return expire time for neighbor node with address addr, if exists, else return 0. Time GetExpireTime (Ipv4Address addr);
--- a/src/dsr/model/dsr-routing.cc Fri May 18 10:30:14 2012 +0200 +++ b/src/dsr/model/dsr-routing.cc Tue May 29 10:42:17 2012 +0200 @@ -1034,12 +1034,11 @@ if (optionType == 96) // This is the source route option { dsrOption = GetOption (optionType); // Get the relative DSR option and demux to the process function - Ipv4Address fromAddr = GetIPfromMAC (Mac48Address::ConvertFrom (from)); - Ipv4Address toAddr = GetIPfromMAC (Mac48Address::ConvertFrom (to)); - - NS_LOG_DEBUG (Simulator::Now ().GetSeconds () - << " DSR node " << m_mainAddress << - " overhearing packet PID: " << p->GetUid () << " from " << fromAddr << " to " << toAddr << + NS_LOG_DEBUG (Simulator::Now ().GetSeconds () << + " DSR node " << m_mainAddress << + " overhearing packet PID: " << p->GetUid () << + " from " << GetIPfromMAC (Mac48Address::ConvertFrom (from)) << + " to " << GetIPfromMAC (Mac48Address::ConvertFrom (to)) << " with source IP " << ipv4Header.GetSource () << " and destination IP " << ipv4Header.GetDestination () << " and packet : " << *dsrPacket); @@ -1527,7 +1526,7 @@ } else { - uint32_t totalQueueSize; + uint32_t totalQueueSize = 0; for (std::map<uint32_t, Ptr<dsr::DsrNetworkQueue> >::iterator j = m_priorityQueue.begin (); j != m_priorityQueue.end (); j++) { NS_LOG_DEBUG ("The size of the network queue for " << j->first << " is " << j->second->GetSize ());
--- a/src/internet/model/ipv4-l3-protocol.h Fri May 18 10:30:14 2012 +0200 +++ b/src/internet/model/ipv4-l3-protocol.h Tue May 29 10:42:17 2012 +0200 @@ -370,10 +370,6 @@ */ std::list<std::pair<Ptr<Packet>, uint16_t> > m_fragments; - /** - * \brief Number of references. - */ - mutable uint32_t m_refCount; }; typedef std::map< std::pair<uint64_t, uint32_t>, Ptr<Fragments> > MapFragments_t;
--- a/src/internet/model/ipv6-extension.cc Fri May 18 10:30:14 2012 +0200 +++ b/src/internet/model/ipv6-extension.cc Tue May 29 10:42:17 2012 +0200 @@ -347,7 +347,7 @@ m_fragments.insert (std::make_pair (fragmentsId, fragments)); EventId timeout = Simulator::Schedule (Seconds (60), &Ipv6ExtensionFragment::HandleFragmentsTimeout, this, - fragmentsId, fragments, ipHeader); + fragmentsId, ipHeader); fragments->SetTimeoutEventId (timeout); } else @@ -548,8 +548,15 @@ } -void Ipv6ExtensionFragment::HandleFragmentsTimeout (std::pair<Ipv6Address, uint32_t> fragmentsId, Ptr<Fragments> fragments, Ipv6Header & ipHeader) +void Ipv6ExtensionFragment::HandleFragmentsTimeout (std::pair<Ipv6Address, uint32_t> fragmentsId, + Ipv6Header & ipHeader) { + Ptr<Fragments> fragments; + + MapFragments_t::iterator it = m_fragments.find (fragmentsId); + NS_ASSERT_MSG(it != m_fragments.end (), "IPv6 Fragment timeout reached for non-existent fragment"); + fragments = it->second; + Ptr<Packet> packet = fragments->GetPartialPacket (); packet->AddHeader (ipHeader); @@ -557,7 +564,6 @@ // if we have at least 8 bytes, we can send an ICMP. if ( packet->GetSize () > 8 ) { - Ptr<Icmpv6L4Protocol> icmp = GetNode ()->GetObject<Icmpv6L4Protocol> (); icmp->SendErrorTimeExceeded (packet, ipHeader.GetSourceAddress (), Icmpv6Header::ICMPV6_FRAGTIME); } @@ -580,7 +586,7 @@ { std::list<std::pair<Ptr<Packet>, uint16_t> >::iterator it; - for (it = m_fragments.begin (); it != m_fragments.end (); it++) + for (it = m_packetFragments.begin (); it != m_packetFragments.end (); it++) { if (it->second > fragmentOffset) { @@ -588,12 +594,12 @@ } } - if (it == m_fragments.end ()) + if (it == m_packetFragments.end ()) { m_moreFragment = moreFragment; } - m_fragments.insert (it, std::make_pair<Ptr<Packet>, uint16_t> (fragment, fragmentOffset)); + m_packetFragments.insert (it, std::make_pair<Ptr<Packet>, uint16_t> (fragment, fragmentOffset)); } void Ipv6ExtensionFragment::Fragments::SetUnfragmentablePart (Ptr<Packet> unfragmentablePart) @@ -603,13 +609,13 @@ bool Ipv6ExtensionFragment::Fragments::IsEntire () const { - bool ret = !m_moreFragment && m_fragments.size () > 0; + bool ret = !m_moreFragment && m_packetFragments.size () > 0; if (ret) { uint16_t lastEndOffset = 0; - for (std::list<std::pair<Ptr<Packet>, uint16_t> >::const_iterator it = m_fragments.begin (); it != m_fragments.end (); it++) + for (std::list<std::pair<Ptr<Packet>, uint16_t> >::const_iterator it = m_packetFragments.begin (); it != m_packetFragments.end (); it++) { if (lastEndOffset != it->second) { @@ -628,7 +634,7 @@ { Ptr<Packet> p = m_unfragmentable->Copy (); - for (std::list<std::pair<Ptr<Packet>, uint16_t> >::const_iterator it = m_fragments.begin (); it != m_fragments.end (); it++) + for (std::list<std::pair<Ptr<Packet>, uint16_t> >::const_iterator it = m_packetFragments.begin (); it != m_packetFragments.end (); it++) { p->AddAtEnd (it->first); } @@ -651,7 +657,7 @@ uint16_t lastEndOffset = 0; - for (std::list<std::pair<Ptr<Packet>, uint16_t> >::const_iterator it = m_fragments.begin (); it != m_fragments.end (); it++) + for (std::list<std::pair<Ptr<Packet>, uint16_t> >::const_iterator it = m_packetFragments.begin (); it != m_packetFragments.end (); it++) { if (lastEndOffset != it->second) {
--- a/src/internet/model/ipv6-extension.h Fri May 18 10:30:14 2012 +0200 +++ b/src/internet/model/ipv6-extension.h Tue May 29 10:42:17 2012 +0200 @@ -343,7 +343,7 @@ /** * \brief The current fragments. */ - std::list<std::pair<Ptr<Packet>, uint16_t> > m_fragments; + std::list<std::pair<Ptr<Packet>, uint16_t> > m_packetFragments; /** * \brief The unfragmentable part. @@ -351,11 +351,6 @@ Ptr<Packet> m_unfragmentable; /** - * \brief Number of references. - */ - mutable uint32_t m_refCount; - - /** * \brief Timeout handler event */ EventId m_timeoutEventId; @@ -367,7 +362,7 @@ * \param ipHeader the IP header of the original packet * \param iif Input Interface */ - void HandleFragmentsTimeout (std::pair<Ipv6Address, uint32_t> key, Ptr<Fragments> fragments, Ipv6Header & ipHeader); + void HandleFragmentsTimeout (std::pair<Ipv6Address, uint32_t> key, Ipv6Header & ipHeader); /** * \brief Get the packet parts so far received.
--- a/src/lte/bindings/modulegen__gcc_ILP32.py Fri May 18 10:30:14 2012 +0200 +++ b/src/lte/bindings/modulegen__gcc_ILP32.py Tue May 29 10:42:17 2012 +0200 @@ -12574,14 +12574,6 @@ cls.add_method('IsOutdoor', 'bool', []) - ## buildings-mobility-model.h (module 'buildings'): void ns3::BuildingsMobilityModel::SetFloorNumber(uint8_t nfloor) [member function] - cls.add_method('SetFloorNumber', - 'void', - [param('uint8_t', 'nfloor')]) - ## buildings-mobility-model.h (module 'buildings'): void ns3::BuildingsMobilityModel::SetIndoor(ns3::Ptr<ns3::Building> building) [member function] - cls.add_method('SetIndoor', - 'void', - [param('ns3::Ptr< ns3::Building >', 'building')]) ## buildings-mobility-model.h (module 'buildings'): void ns3::BuildingsMobilityModel::SetIndoor(ns3::Ptr<ns3::Building> building, uint8_t nfloor, uint8_t nroomx, uint8_t nroomy) [member function] cls.add_method('SetIndoor', 'void', @@ -12590,14 +12582,6 @@ cls.add_method('SetOutdoor', 'void', []) - ## buildings-mobility-model.h (module 'buildings'): void ns3::BuildingsMobilityModel::SetRoomNumberX(uint8_t nroomx) [member function] - cls.add_method('SetRoomNumberX', - 'void', - [param('uint8_t', 'nroomx')]) - ## buildings-mobility-model.h (module 'buildings'): void ns3::BuildingsMobilityModel::SetRoomNumberY(uint8_t nroomy) [member function] - cls.add_method('SetRoomNumberY', - 'void', - [param('uint8_t', 'nroomy')]) ## buildings-mobility-model.h (module 'buildings'): void ns3::BuildingsMobilityModel::DoDispose() [member function] cls.add_method('DoDispose', 'void',
--- a/src/lte/bindings/modulegen__gcc_LP64.py Fri May 18 10:30:14 2012 +0200 +++ b/src/lte/bindings/modulegen__gcc_LP64.py Tue May 29 10:42:17 2012 +0200 @@ -12574,14 +12574,6 @@ cls.add_method('IsOutdoor', 'bool', []) - ## buildings-mobility-model.h (module 'buildings'): void ns3::BuildingsMobilityModel::SetFloorNumber(uint8_t nfloor) [member function] - cls.add_method('SetFloorNumber', - 'void', - [param('uint8_t', 'nfloor')]) - ## buildings-mobility-model.h (module 'buildings'): void ns3::BuildingsMobilityModel::SetIndoor(ns3::Ptr<ns3::Building> building) [member function] - cls.add_method('SetIndoor', - 'void', - [param('ns3::Ptr< ns3::Building >', 'building')]) ## buildings-mobility-model.h (module 'buildings'): void ns3::BuildingsMobilityModel::SetIndoor(ns3::Ptr<ns3::Building> building, uint8_t nfloor, uint8_t nroomx, uint8_t nroomy) [member function] cls.add_method('SetIndoor', 'void', @@ -12590,14 +12582,6 @@ cls.add_method('SetOutdoor', 'void', []) - ## buildings-mobility-model.h (module 'buildings'): void ns3::BuildingsMobilityModel::SetRoomNumberX(uint8_t nroomx) [member function] - cls.add_method('SetRoomNumberX', - 'void', - [param('uint8_t', 'nroomx')]) - ## buildings-mobility-model.h (module 'buildings'): void ns3::BuildingsMobilityModel::SetRoomNumberY(uint8_t nroomy) [member function] - cls.add_method('SetRoomNumberY', - 'void', - [param('uint8_t', 'nroomy')]) ## buildings-mobility-model.h (module 'buildings'): void ns3::BuildingsMobilityModel::DoDispose() [member function] cls.add_method('DoDispose', 'void',
--- a/src/lte/doc/Makefile Fri May 18 10:30:14 2012 +0200 +++ b/src/lte/doc/Makefile Tue May 29 10:42:17 2012 +0200 @@ -27,9 +27,6 @@ # specify eps figures from which .png and .pdf figures need to be built IMAGES_EPS = \ - $(FIGURES)/MCS_2_test.eps \ - $(FIGURES)/MCS_12_test.eps \ - $(FIGURES)/MCS_14_test.eps \ $(FIGURES)/lena-dual-stripe.eps \ $(FIGURES)/lte-mcs-index.eps \ $(FIGURES)/lenaThrTestCase1.eps \ @@ -96,8 +93,15 @@ $(FIGURES)/MCS_17_20.png \ $(FIGURES)/MCS_21_24.pdf \ $(FIGURES)/MCS_21_24.png \ - $(FIGURES)/MCS_25_27.pdf \ - $(FIGURES)/MCS_25_27.png \ + $(FIGURES)/MCS_25_28.pdf \ + $(FIGURES)/MCS_29_29.pdf \ + $(FIGURES)/MCS_29_29.png \ + $(FIGURES)/MCS_2_test.png \ + $(FIGURES)/MCS_2_test.pdf \ + $(FIGURES)/MCS_12_test.png \ + $(FIGURES)/MCS_12_test.pdf \ + $(FIGURES)/MCS_16_test.png \ + $(FIGURES)/MCS_16_test.pdf \ $(FIGURES)/lte-phy-interference.png \ $(FIGURES)/lte-phy-interference.pdf \ $(FIGURES)/helpers.png \
--- a/src/lte/doc/source/figures/MCS_12_test.eps Fri May 18 10:30:14 2012 +0200 +++ b/src/lte/doc/source/figures/MCS_12_test.eps Tue May 29 10:42:17 2012 +0200 @@ -1,7 +1,7 @@ %!PS-Adobe-2.0 EPSF-2.0 -%%Title: /home/mmiozzo/ns3/lena/ns-3-lena-pem/src/lte/doc/source/figures/MCS_12_test.fig +%%Title: MCS_12_test.fig %%Creator: fig2dev Version 3.2 Patchlevel 5a -%%CreationDate: Tue Jan 10 17:47:39 2012 +%%CreationDate: Tue May 22 11:38:22 2012 %%BoundingBox: 0 0 1095 718 %Magnification: 1.0000 %%EndComments @@ -117,29 +117,29 @@ % % pen to black in case this eps object doesn't set color first 0 0 0 setrgbcolor -% Begin Imported EPS File: /home/mmiozzo/ns3/lena/ns-3-lena-pem/src/lte/doc/source/figures/MCS_12.eps -%%BeginDocument: /home/mmiozzo/ns3/lena/ns-3-lena-pem/src/lte/doc/source/figures/MCS_12.eps +% Begin Imported EPS File: /home/mmiozzo/sandbox/lena/ns-3-lena-dev/src/lte/doc/source/figures/MCS_13.eps +%%BeginDocument: /home/mmiozzo/sandbox/lena/ns-3-lena-dev/src/lte/doc/source/figures/MCS_13.eps % n gs 45 495 tr -17.335329 -18.100159 sc +17.439759 -18.100159 sc 0 -629 tr -203 -106 tr +200 -106 tr sa -n -203 106 m 799 106 l 799 735 l -203 735 l cp clip n +n -200 106 m 796 106 l 796 735 l -200 735 l cp clip n countdictstack mark /showpage {} def % EPS file follows: %!PS-Adobe-3.0 EPSF-3.0 %%Creator: MATLAB, The Mathworks, Inc. Version 7.8.0.347 (R2009a). Operating System: Microsoft Windows XP. -%%Title: C:\Documents and Settings\Marco Miozzo\My Documents\MATLAB\Final\MCS_27_allTBsizes\MCS_12.eps -%%CreationDate: 01/10/2012 17:32:09 +%%Title: \\Hercules.cttc.es\mmiozzo\Ubiquisys\ErrorModel\29_MCS_PLOTS\MCS_PLOTS\MCS_13.eps +%%CreationDate: 05/17/2012 17:17:55 %%DocumentNeededFonts: Helvetica %%DocumentProcessColors: Cyan Magenta Yellow Black %%LanguageLevel: 2 %%Pages: 1 -%%BoundingBox: -203 106 799 735 +%%BoundingBox: -200 106 796 735 %%EndComments %%BeginProlog @@ -302,7 +302,7 @@ %%Page: 1 1 %%BeginPageSetup -%%PageBoundingBox: -203 106 799 735 +%%PageBoundingBox: -200 106 796 735 MathWorks begin bpage %%EndPageSetup @@ -311,9 +311,9 @@ bplot /dpi2point 12 def -portraitMode -2436 8820 csm +portraitMode -2400 8820 csm - 0 0 12034 7546 rc + 0 0 11962 7546 rc 85 dict begin %Colortable dictionary /c0 { 0.000000 0.000000 0.000000 sr} bdef /c1 { 1.000000 1.000000 1.000000 sr} bdef @@ -326,1002 +326,711 @@ c0 1 j 1 sg - 0 0 12035 7547 rf + 0 0 11963 7547 rf 6 w -0 6150 9327 0 0 -6150 1564 6716 4 MP +0 6150 9271 0 0 -6150 1555 6716 4 MP PP --9327 0 0 6150 9327 0 0 -6150 1564 6716 5 MP stroke +-9271 0 0 6150 9271 0 0 -6150 1555 6716 5 MP stroke 4 w DO 0 sg -1564 6716 mt 1564 566 L -1564 566 mt 1564 566 L -2729 6716 mt 2729 566 L -2729 566 mt 2729 566 L -3895 6716 mt 3895 566 L -3895 566 mt 3895 566 L -5061 6716 mt 5061 566 L -5061 566 mt 5061 566 L -6227 6716 mt 6227 566 L -6227 566 mt 6227 566 L -7393 6716 mt 7393 566 L -7393 566 mt 7393 566 L -8559 6716 mt 8559 566 L -8559 566 mt 8559 566 L -9725 6716 mt 9725 566 L -9725 566 mt 9725 566 L -10891 6716 mt 10891 566 L -10891 566 mt 10891 566 L -1564 6716 mt 10891 6716 L -10891 6716 mt 10891 6716 L -1564 5178 mt 10891 5178 L -10891 5178 mt 10891 5178 L -1564 3641 mt 10891 3641 L -10891 3641 mt 10891 3641 L -1564 2103 mt 10891 2103 L -10891 2103 mt 10891 2103 L -1564 566 mt 10891 566 L -10891 566 mt 10891 566 L +1555 6716 mt 1555 566 L +1555 566 mt 1555 566 L +2879 6716 mt 2879 566 L +2879 566 mt 2879 566 L +4203 6716 mt 4203 566 L +4203 566 mt 4203 566 L +5528 6716 mt 5528 566 L +5528 566 mt 5528 566 L +6852 6716 mt 6852 566 L +6852 566 mt 6852 566 L +8177 6716 mt 8177 566 L +8177 566 mt 8177 566 L +9501 6716 mt 9501 566 L +9501 566 mt 9501 566 L +10826 6716 mt 10826 566 L +10826 566 mt 10826 566 L +1555 6716 mt 10826 6716 L +10826 6716 mt 10826 6716 L +1555 3641 mt 10826 3641 L +10826 3641 mt 10826 3641 L +1555 566 mt 10826 566 L +10826 566 mt 10826 566 L SO 6 w -1564 566 mt 10891 566 L -1564 6716 mt 10891 6716 L -10891 6716 mt 10891 566 L -1564 6716 mt 1564 566 L -1564 6716 mt 10891 6716 L -1564 6716 mt 1564 566 L -1564 6716 mt 1564 6622 L -1564 566 mt 1564 659 L +1555 566 mt 10826 566 L +1555 6716 mt 10826 6716 L +10826 6716 mt 10826 566 L +1555 6716 mt 1555 566 L +1555 6716 mt 10826 6716 L +1555 6716 mt 1555 566 L +1555 6716 mt 1555 6623 L +1555 566 mt 1555 658 L %%IncludeResource: font Helvetica /Helvetica /WindowsLatin1Encoding 120 FMSR -1531 6861 mt +1522 6861 mt +(2) s +2879 6716 mt 2879 6623 L +2879 566 mt 2879 658 L +2796 6861 mt +(2.5) s +4203 6716 mt 4203 6623 L +4203 566 mt 4203 658 L +4170 6861 mt +(3) s +5528 6716 mt 5528 6623 L +5528 566 mt 5528 658 L +5445 6861 mt +(3.5) s +6852 6716 mt 6852 6623 L +6852 566 mt 6852 658 L +6819 6861 mt (4) s -2729 6716 mt 2729 6622 L -2729 566 mt 2729 659 L -2646 6861 mt +8177 6716 mt 8177 6623 L +8177 566 mt 8177 658 L +8094 6861 mt (4.5) s -3895 6716 mt 3895 6622 L -3895 566 mt 3895 659 L -3862 6861 mt +9501 6716 mt 9501 6623 L +9501 566 mt 9501 658 L +9468 6861 mt (5) s -5061 6716 mt 5061 6622 L -5061 566 mt 5061 659 L -4978 6861 mt +10826 6716 mt 10826 6623 L +10826 566 mt 10826 658 L +10743 6861 mt (5.5) s -6227 6716 mt 6227 6622 L -6227 566 mt 6227 659 L -6194 6861 mt -(6) s -7393 6716 mt 7393 6622 L -7393 566 mt 7393 659 L -7310 6861 mt -(6.5) s -8559 6716 mt 8559 6622 L -8559 566 mt 8559 659 L -8526 6861 mt -(7) s -9725 6716 mt 9725 6622 L -9725 566 mt 9725 659 L -9642 6861 mt -(7.5) s -10891 6716 mt 10891 6622 L -10891 566 mt 10891 659 L -10858 6861 mt -(8) s -1564 6716 mt 1610 6716 L -10891 6716 mt 10844 6716 L +1555 6716 mt 1601 6716 L +10826 6716 mt 10779 6716 L DO -1564 6716 mt 10891 6716 L -10891 6716 mt 10891 6716 L -SO -1564 6716 mt 1657 6716 L -10891 6716 mt 10797 6716 L -1305 6760 mt -(10) s -%%IncludeResource: font Helvetica -/Helvetica /WindowsLatin1Encoding 80 FMSR - -1438 6686 mt -(-4) s -1564 6253 mt 1610 6253 L -10891 6253 mt 10844 6253 L -DO -1564 6253 mt 10891 6253 L -10891 6253 mt 10891 6253 L +1555 6716 mt 10826 6716 L +10826 6716 mt 10826 6716 L SO -1564 5982 mt 1610 5982 L -10891 5982 mt 10844 5982 L -DO -1564 5982 mt 10891 5982 L -10891 5982 mt 10891 5982 L -SO -1564 5790 mt 1610 5790 L -10891 5790 mt 10844 5790 L -DO -1564 5790 mt 10891 5790 L -10891 5790 mt 10891 5790 L -SO -1564 5641 mt 1610 5641 L -10891 5641 mt 10844 5641 L -DO -1564 5641 mt 10891 5641 L -10891 5641 mt 10891 5641 L -SO -1564 5519 mt 1610 5519 L -10891 5519 mt 10844 5519 L -DO -1564 5519 mt 10891 5519 L -10891 5519 mt 10891 5519 L -SO -1564 5416 mt 1610 5416 L -10891 5416 mt 10844 5416 L -DO -1564 5416 mt 10891 5416 L -10891 5416 mt 10891 5416 L -SO -1564 5327 mt 1610 5327 L -10891 5327 mt 10844 5327 L -DO -1564 5327 mt 10891 5327 L -10891 5327 mt 10891 5327 L -SO -1564 5248 mt 1610 5248 L -10891 5248 mt 10844 5248 L -DO -1564 5248 mt 10891 5248 L -10891 5248 mt 10891 5248 L -SO -1564 5178 mt 1610 5178 L -10891 5178 mt 10844 5178 L -DO -1564 5178 mt 10891 5178 L -10891 5178 mt 10891 5178 L -SO -1564 5178 mt 1657 5178 L -10891 5178 mt 10797 5178 L -%%IncludeResource: font Helvetica -/Helvetica /WindowsLatin1Encoding 120 FMSR - -1305 5222 mt +1555 6716 mt 1647 6716 L +10826 6716 mt 10733 6716 L +1296 6760 mt (10) s %%IncludeResource: font Helvetica /Helvetica /WindowsLatin1Encoding 80 FMSR -1438 5148 mt -(-3) s -1564 4715 mt 1610 4715 L -10891 4715 mt 10844 4715 L +1429 6686 mt +(-2) s +1555 5790 mt 1601 5790 L +10826 5790 mt 10779 5790 L DO -1564 4715 mt 10891 4715 L -10891 4715 mt 10891 4715 L +1555 5790 mt 10826 5790 L +10826 5790 mt 10826 5790 L SO -1564 4444 mt 1610 4444 L -10891 4444 mt 10844 4444 L +1555 5248 mt 1601 5248 L +10826 5248 mt 10779 5248 L DO -1564 4444 mt 10891 4444 L -10891 4444 mt 10891 4444 L +1555 5248 mt 10826 5248 L +10826 5248 mt 10826 5248 L SO -1564 4252 mt 1610 4252 L -10891 4252 mt 10844 4252 L +1555 4864 mt 1601 4864 L +10826 4864 mt 10779 4864 L DO -1564 4252 mt 10891 4252 L -10891 4252 mt 10891 4252 L +1555 4864 mt 10826 4864 L +10826 4864 mt 10826 4864 L SO -1564 4103 mt 1610 4103 L -10891 4103 mt 10844 4103 L +1555 4566 mt 1601 4566 L +10826 4566 mt 10779 4566 L DO -1564 4103 mt 10891 4103 L -10891 4103 mt 10891 4103 L +1555 4566 mt 10826 4566 L +10826 4566 mt 10826 4566 L SO -1564 3982 mt 1610 3982 L -10891 3982 mt 10844 3982 L +1555 4323 mt 1601 4323 L +10826 4323 mt 10779 4323 L DO -1564 3982 mt 10891 3982 L -10891 3982 mt 10891 3982 L +1555 4323 mt 10826 4323 L +10826 4323 mt 10826 4323 L SO -1564 3879 mt 1610 3879 L -10891 3879 mt 10844 3879 L +1555 4117 mt 1601 4117 L +10826 4117 mt 10779 4117 L DO -1564 3879 mt 10891 3879 L -10891 3879 mt 10891 3879 L +1555 4117 mt 10826 4117 L +10826 4117 mt 10826 4117 L SO -1564 3789 mt 1610 3789 L -10891 3789 mt 10844 3789 L +1555 3938 mt 1601 3938 L +10826 3938 mt 10779 3938 L DO -1564 3789 mt 10891 3789 L -10891 3789 mt 10891 3789 L +1555 3938 mt 10826 3938 L +10826 3938 mt 10826 3938 L SO -1564 3711 mt 1610 3711 L -10891 3711 mt 10844 3711 L +1555 3781 mt 1601 3781 L +10826 3781 mt 10779 3781 L DO -1564 3711 mt 10891 3711 L -10891 3711 mt 10891 3711 L +1555 3781 mt 10826 3781 L +10826 3781 mt 10826 3781 L SO -1564 3641 mt 1610 3641 L -10891 3641 mt 10844 3641 L +1555 3641 mt 1601 3641 L +10826 3641 mt 10779 3641 L DO -1564 3641 mt 10891 3641 L -10891 3641 mt 10891 3641 L +1555 3641 mt 10826 3641 L +10826 3641 mt 10826 3641 L SO -1564 3641 mt 1657 3641 L -10891 3641 mt 10797 3641 L +1555 3641 mt 1647 3641 L +10826 3641 mt 10733 3641 L %%IncludeResource: font Helvetica /Helvetica /WindowsLatin1Encoding 120 FMSR -1305 3685 mt +1296 3685 mt (10) s %%IncludeResource: font Helvetica /Helvetica /WindowsLatin1Encoding 80 FMSR -1438 3611 mt -(-2) s -1564 3178 mt 1610 3178 L -10891 3178 mt 10844 3178 L +1429 3611 mt +(-1) s +1555 2715 mt 1601 2715 L +10826 2715 mt 10779 2715 L DO -1564 3178 mt 10891 3178 L -10891 3178 mt 10891 3178 L +1555 2715 mt 10826 2715 L +10826 2715 mt 10826 2715 L SO -1564 2907 mt 1610 2907 L -10891 2907 mt 10844 2907 L +1555 2173 mt 1601 2173 L +10826 2173 mt 10779 2173 L DO -1564 2907 mt 10891 2907 L -10891 2907 mt 10891 2907 L +1555 2173 mt 10826 2173 L +10826 2173 mt 10826 2173 L SO -1564 2715 mt 1610 2715 L -10891 2715 mt 10844 2715 L +1555 1789 mt 1601 1789 L +10826 1789 mt 10779 1789 L DO -1564 2715 mt 10891 2715 L -10891 2715 mt 10891 2715 L +1555 1789 mt 10826 1789 L +10826 1789 mt 10826 1789 L SO -1564 2566 mt 1610 2566 L -10891 2566 mt 10844 2566 L +1555 1491 mt 1601 1491 L +10826 1491 mt 10779 1491 L DO -1564 2566 mt 10891 2566 L -10891 2566 mt 10891 2566 L +1555 1491 mt 10826 1491 L +10826 1491 mt 10826 1491 L SO -1564 2444 mt 1610 2444 L -10891 2444 mt 10844 2444 L +1555 1248 mt 1601 1248 L +10826 1248 mt 10779 1248 L DO -1564 2444 mt 10891 2444 L -10891 2444 mt 10891 2444 L +1555 1248 mt 10826 1248 L +10826 1248 mt 10826 1248 L SO -1564 2341 mt 1610 2341 L -10891 2341 mt 10844 2341 L +1555 1042 mt 1601 1042 L +10826 1042 mt 10779 1042 L DO -1564 2341 mt 10891 2341 L -10891 2341 mt 10891 2341 L +1555 1042 mt 10826 1042 L +10826 1042 mt 10826 1042 L SO -1564 2252 mt 1610 2252 L -10891 2252 mt 10844 2252 L +1555 863 mt 1601 863 L +10826 863 mt 10779 863 L DO -1564 2252 mt 10891 2252 L -10891 2252 mt 10891 2252 L +1555 863 mt 10826 863 L +10826 863 mt 10826 863 L SO -1564 2173 mt 1610 2173 L -10891 2173 mt 10844 2173 L +1555 706 mt 1601 706 L +10826 706 mt 10779 706 L DO -1564 2173 mt 10891 2173 L -10891 2173 mt 10891 2173 L +1555 706 mt 10826 706 L +10826 706 mt 10826 706 L SO -1564 2103 mt 1610 2103 L -10891 2103 mt 10844 2103 L +1555 566 mt 1601 566 L +10826 566 mt 10779 566 L DO -1564 2103 mt 10891 2103 L -10891 2103 mt 10891 2103 L +1555 566 mt 10826 566 L +10826 566 mt 10826 566 L SO -1564 2103 mt 1657 2103 L -10891 2103 mt 10797 2103 L +1555 566 mt 1647 566 L +10826 566 mt 10733 566 L %%IncludeResource: font Helvetica /Helvetica /WindowsLatin1Encoding 120 FMSR -1305 2147 mt +1296 610 mt (10) s %%IncludeResource: font Helvetica /Helvetica /WindowsLatin1Encoding 80 FMSR -1438 2073 mt -(-1) s -1564 1640 mt 1610 1640 L -10891 1640 mt 10844 1640 L -DO -1564 1640 mt 10891 1640 L -10891 1640 mt 10891 1640 L -SO -1564 1369 mt 1610 1369 L -10891 1369 mt 10844 1369 L -DO -1564 1369 mt 10891 1369 L -10891 1369 mt 10891 1369 L -SO -1564 1177 mt 1610 1177 L -10891 1177 mt 10844 1177 L -DO -1564 1177 mt 10891 1177 L -10891 1177 mt 10891 1177 L -SO -1564 1028 mt 1610 1028 L -10891 1028 mt 10844 1028 L -DO -1564 1028 mt 10891 1028 L -10891 1028 mt 10891 1028 L -SO -1564 907 mt 1610 907 L -10891 907 mt 10844 907 L -DO -1564 907 mt 10891 907 L -10891 907 mt 10891 907 L -SO -1564 804 mt 1610 804 L -10891 804 mt 10844 804 L -DO -1564 804 mt 10891 804 L -10891 804 mt 10891 804 L -SO -1564 714 mt 1610 714 L -10891 714 mt 10844 714 L -DO -1564 714 mt 10891 714 L -10891 714 mt 10891 714 L -SO -1564 636 mt 1610 636 L -10891 636 mt 10844 636 L -DO -1564 636 mt 10891 636 L -10891 636 mt 10891 636 L -SO -1564 566 mt 1610 566 L -10891 566 mt 10844 566 L -DO -1564 566 mt 10891 566 L -10891 566 mt 10891 566 L -SO -1564 566 mt 1657 566 L -10891 566 mt 10797 566 L -%%IncludeResource: font Helvetica -/Helvetica /WindowsLatin1Encoding 120 FMSR - -1305 610 mt -(10) s -%%IncludeResource: font Helvetica -/Helvetica /WindowsLatin1Encoding 80 FMSR - -1438 536 mt +1429 536 mt (0) s -1564 566 mt 10891 566 L -1564 6716 mt 10891 6716 L -10891 6716 mt 10891 566 L -1564 6716 mt 1564 566 L -gs 1564 566 9328 6151 rc +1555 566 mt 10826 566 L +1555 6716 mt 10826 6716 L +10826 6716 mt 10826 566 L +1555 6716 mt 1555 566 L +gs 1555 566 9272 6151 rc DA 24 w /c8 { 1.000000 0.000000 0.000000 sr} bdef c8 -234 1611 233 1104 233 888 233 536 233 245 234 88 233 16 233 2 -233 0 233 0 233 0 234 0 233 0 233 0 233 0 233 0 -233 0 234 0 233 0 233 0 233 0 233 0 233 0 1564 566 24 MP stroke +265 2767 265 1498 265 813 265 343 265 87 265 14 265 0 265 0 +264 0 265 0 265 0 265 0 265 0 265 0 265 0 265 0 +265 0 264 0 265 0 265 0 265 0 265 0 265 0 265 0 +265 0 264 0 1555 566 27 MP stroke SO /c9 { 0.000000 0.000000 1.000000 sr} bdef c9 -234 1632 233 1300 233 889 233 530 233 251 234 84 233 17 233 2 -233 0 233 0 233 0 234 0 233 0 233 0 233 0 233 0 -233 0 234 0 233 0 233 0 233 0 233 0 233 0 1564 566 24 MP stroke +265 2263 265 1515 265 822 265 337 265 90 265 13 265 1 265 0 +264 0 265 0 265 0 265 0 265 0 265 0 265 0 265 0 +265 0 264 0 265 0 265 0 265 0 265 0 265 0 265 0 +265 0 264 0 1555 566 27 MP stroke gr 24 w c9 -gs 1418 420 5656 4998 rc +gs 1409 420 7180 5334 rc 0 j -69 119 -138 0 69 -119 1564 645 4 MP +69 119 -138 0 69 -119 1555 645 4 MP DP -69 119 -138 0 69 -119 1797 645 4 MP +69 119 -138 0 69 -119 1819 645 4 MP DP -69 119 -138 0 69 -119 2030 645 4 MP +69 119 -138 0 69 -119 2084 645 4 MP +DP +69 119 -138 0 69 -119 2349 645 4 MP DP -69 119 -138 0 69 -119 2263 645 4 MP +69 119 -138 0 69 -119 2614 645 4 MP DP -69 119 -138 0 69 -119 2496 645 4 MP +69 119 -138 0 69 -119 2879 645 4 MP DP -69 119 -138 0 69 -119 2729 645 4 MP +69 119 -138 0 69 -119 3144 645 4 MP DP -69 119 -138 0 69 -119 2963 645 4 MP +69 119 -138 0 69 -119 3409 645 4 MP DP -69 119 -138 0 69 -119 3196 645 4 MP +69 119 -138 0 69 -119 3674 645 4 MP DP -69 119 -138 0 69 -119 3429 645 4 MP +69 119 -138 0 69 -119 3938 645 4 MP +DP +69 119 -138 0 69 -119 4203 645 4 MP DP -69 119 -138 0 69 -119 3662 645 4 MP +69 119 -138 0 69 -119 4468 645 4 MP DP -69 119 -138 0 69 -119 3895 645 4 MP +69 119 -138 0 69 -119 4733 645 4 MP DP -69 119 -138 0 69 -119 4128 645 4 MP +69 119 -138 0 69 -119 4998 645 4 MP DP -69 119 -138 0 69 -119 4362 645 4 MP +69 119 -138 0 69 -119 5263 645 4 MP DP -69 119 -138 0 69 -119 4595 645 4 MP +69 119 -138 0 69 -119 5528 645 4 MP DP -69 119 -138 0 69 -119 4828 645 4 MP +69 119 -138 0 69 -119 5793 645 4 MP +DP +69 119 -138 0 69 -119 6058 645 4 MP DP -69 119 -138 0 69 -119 5061 645 4 MP +69 119 -138 0 69 -119 6322 645 4 MP DP -69 119 -138 0 69 -119 5294 647 4 MP +69 119 -138 0 69 -119 6587 645 4 MP DP -69 119 -138 0 69 -119 5527 664 4 MP +69 119 -138 0 69 -119 6852 646 4 MP DP -69 119 -138 0 69 -119 5761 748 4 MP +69 119 -138 0 69 -119 7117 659 4 MP DP -69 119 -138 0 69 -119 5994 999 4 MP +69 119 -138 0 69 -119 7382 749 4 MP DP -69 119 -138 0 69 -119 6227 1529 4 MP +69 119 -138 0 69 -119 7647 1086 4 MP DP -69 119 -138 0 69 -119 6460 2418 4 MP +69 119 -138 0 69 -119 7912 1908 4 MP DP -69 119 -138 0 69 -119 6693 3718 4 MP +69 119 -138 0 69 -119 8177 3423 4 MP DP -69 119 -138 0 69 -119 6927 5350 4 MP +69 119 -138 0 69 -119 8442 5686 4 MP DP gr -gs 1564 566 9328 6151 rc +gs 1555 566 9272 6151 rc DA c8 -234 1192 233 909 233 642 233 440 233 245 234 111 233 42 233 10 -233 2 233 0 233 0 234 0 233 0 233 0 233 0 233 0 -233 0 234 0 233 0 233 0 233 0 233 0 233 0 1564 566 24 MP stroke +265 1632 265 1057 265 722 265 345 265 120 265 37 265 8 265 1 +264 0 265 0 265 0 265 0 265 0 265 0 265 0 265 0 +265 0 264 0 265 0 265 0 265 0 265 0 265 0 265 0 +265 0 264 0 1555 566 27 MP stroke SO c9 -234 1109 233 911 233 657 233 431 233 246 234 114 233 41 233 10 -233 1 233 0 233 0 234 0 233 0 233 0 233 0 233 0 -233 0 234 0 233 0 233 0 233 0 233 0 233 0 1564 566 24 MP stroke -gr - -gs 1418 420 5656 3813 rc -0 j --69 119 -69 -119 138 0 1495 606 4 MP -DP --69 119 -69 -119 138 0 1728 606 4 MP -DP --69 119 -69 -119 138 0 1961 606 4 MP -DP --69 119 -69 -119 138 0 2194 606 4 MP -DP --69 119 -69 -119 138 0 2427 606 4 MP -DP --69 119 -69 -119 138 0 2660 606 4 MP -DP --69 119 -69 -119 138 0 2894 606 4 MP -DP --69 119 -69 -119 138 0 3127 606 4 MP -DP --69 119 -69 -119 138 0 3360 606 4 MP -DP --69 119 -69 -119 138 0 3593 606 4 MP -DP --69 119 -69 -119 138 0 3826 606 4 MP -DP --69 119 -69 -119 138 0 4059 606 4 MP -DP --69 119 -69 -119 138 0 4293 606 4 MP -DP --69 119 -69 -119 138 0 4526 606 4 MP -DP --69 119 -69 -119 138 0 4759 606 4 MP -DP --69 119 -69 -119 138 0 4992 607 4 MP -DP --69 119 -69 -119 138 0 5225 617 4 MP -DP --69 119 -69 -119 138 0 5458 658 4 MP -DP --69 119 -69 -119 138 0 5692 772 4 MP -DP --69 119 -69 -119 138 0 5925 1018 4 MP -DP --69 119 -69 -119 138 0 6158 1449 4 MP -DP --69 119 -69 -119 138 0 6391 2106 4 MP -DP --69 119 -69 -119 138 0 6624 3017 4 MP -DP --69 119 -69 -119 138 0 6858 4126 4 MP -DP +265 1617 265 1140 265 685 265 343 265 131 265 35 265 7 265 0 +264 0 265 0 265 0 265 0 265 0 265 0 265 0 265 0 +265 0 264 0 265 0 265 0 265 0 265 0 265 0 265 0 +265 0 264 0 1555 566 27 MP stroke gr -gs 1564 566 9328 6151 rc -DA -c8 -233 958 234 779 233 567 233 455 233 297 233 179 234 97 233 41 -233 17 233 4 233 0 233 0 234 0 233 0 233 0 233 0 -233 0 233 0 234 0 233 0 233 0 233 0 233 0 233 0 -1564 566 25 MP stroke -SO -c9 -233 942 234 724 233 598 233 439 233 298 233 182 234 96 233 43 -233 14 233 5 233 0 233 0 234 0 233 0 233 0 233 0 -233 0 233 0 234 0 233 0 233 0 233 0 233 0 233 0 -1564 566 25 MP stroke -gr - -gs 1418 420 5889 3634 rc +gs 1409 420 7180 4251 rc 0 j -0 -94 -94 0 0 94 94 0 1517 519 5 MP +-69 119 -69 -119 138 0 1486 606 4 MP DP -0 -94 -94 0 0 94 94 0 1750 519 5 MP +-69 119 -69 -119 138 0 1750 606 4 MP +DP +-69 119 -69 -119 138 0 2015 606 4 MP DP -0 -94 -94 0 0 94 94 0 1983 519 5 MP +-69 119 -69 -119 138 0 2280 606 4 MP DP -0 -94 -94 0 0 94 94 0 2216 519 5 MP +-69 119 -69 -119 138 0 2545 606 4 MP +DP +-69 119 -69 -119 138 0 2810 606 4 MP DP -0 -94 -94 0 0 94 94 0 2449 519 5 MP +-69 119 -69 -119 138 0 3075 606 4 MP DP -0 -94 -94 0 0 94 94 0 2682 519 5 MP +-69 119 -69 -119 138 0 3340 606 4 MP +DP +-69 119 -69 -119 138 0 3605 606 4 MP DP -0 -94 -94 0 0 94 94 0 2916 519 5 MP +-69 119 -69 -119 138 0 3869 606 4 MP +DP +-69 119 -69 -119 138 0 4134 606 4 MP DP -0 -94 -94 0 0 94 94 0 3149 519 5 MP +-69 119 -69 -119 138 0 4399 606 4 MP +DP +-69 119 -69 -119 138 0 4664 606 4 MP DP -0 -94 -94 0 0 94 94 0 3382 519 5 MP -DP -0 -94 -94 0 0 94 94 0 3615 519 5 MP +-69 119 -69 -119 138 0 4929 606 4 MP DP -0 -94 -94 0 0 94 94 0 3848 519 5 MP +-69 119 -69 -119 138 0 5194 606 4 MP DP -0 -94 -94 0 0 94 94 0 4081 519 5 MP +-69 119 -69 -119 138 0 5459 606 4 MP DP -0 -94 -94 0 0 94 94 0 4315 519 5 MP +-69 119 -69 -119 138 0 5724 606 4 MP DP -0 -94 -94 0 0 94 94 0 4548 519 5 MP +-69 119 -69 -119 138 0 5989 606 4 MP DP -0 -94 -94 0 0 94 94 0 4781 519 5 MP +-69 119 -69 -119 138 0 6253 606 4 MP DP -0 -94 -94 0 0 94 94 0 5014 524 5 MP +-69 119 -69 -119 138 0 6518 606 4 MP DP -0 -94 -94 0 0 94 94 0 5247 538 5 MP -DP -0 -94 -94 0 0 94 94 0 5480 581 5 MP +-69 119 -69 -119 138 0 6783 613 4 MP DP -0 -94 -94 0 0 94 94 0 5714 677 5 MP +-69 119 -69 -119 138 0 7048 648 4 MP DP -0 -94 -94 0 0 94 94 0 5947 859 5 MP +-69 119 -69 -119 138 0 7313 779 4 MP DP -0 -94 -94 0 0 94 94 0 6180 1157 5 MP +-69 119 -69 -119 138 0 7578 1122 4 MP DP -0 -94 -94 0 0 94 94 0 6413 1596 5 MP +-69 119 -69 -119 138 0 7843 1807 4 MP DP -0 -94 -94 0 0 94 94 0 6646 2194 5 MP +-69 119 -69 -119 138 0 8108 2947 4 MP DP -0 -94 -94 0 0 94 94 0 6880 2918 5 MP -DP -0 -94 -94 0 0 94 94 0 7113 3860 5 MP +-69 119 -69 -119 138 0 8373 4564 4 MP DP gr -gs 1564 566 9328 6151 rc +gs 1555 566 9272 6151 rc DA c8 -233 622 233 481 233 485 233 398 234 326 233 275 233 195 233 147 -233 109 234 71 233 44 233 27 233 15 233 8 233 3 234 1 -233 0 233 0 233 0 233 0 233 0 234 0 233 0 233 0 -233 0 233 0 233 0 1564 566 28 MP stroke +264 1333 265 1122 265 767 265 543 265 275 265 133 265 39 265 16 +265 5 264 0 265 0 265 0 265 0 265 0 265 0 265 0 +265 0 265 0 264 0 265 0 265 0 265 0 265 0 265 0 +265 0 265 0 264 0 1555 566 28 MP stroke SO c9 -233 605 233 529 233 456 233 386 234 304 233 261 233 203 233 153 -233 108 234 73 233 46 233 26 233 14 233 6 233 3 234 1 -233 0 233 0 233 0 233 0 233 0 234 0 233 0 233 0 -233 0 233 0 233 0 1564 566 28 MP stroke -gr - -gs 1418 420 6588 3467 rc -1504 566 mt 1624 566 L -1564 506 mt 1564 626 L -1737 566 mt 1857 566 L -1797 506 mt 1797 626 L -1970 566 mt 2090 566 L -2030 506 mt 2030 626 L -2203 566 mt 2323 566 L -2263 506 mt 2263 626 L -2436 566 mt 2556 566 L -2496 506 mt 2496 626 L -2669 566 mt 2789 566 L -2729 506 mt 2729 626 L -2903 566 mt 3023 566 L -2963 506 mt 2963 626 L -3136 566 mt 3256 566 L -3196 506 mt 3196 626 L -3369 566 mt 3489 566 L -3429 506 mt 3429 626 L -3602 566 mt 3722 566 L -3662 506 mt 3662 626 L -3835 566 mt 3955 566 L -3895 506 mt 3895 626 L -4068 566 mt 4188 566 L -4128 506 mt 4128 626 L -4302 567 mt 4422 567 L -4362 507 mt 4362 627 L -4535 570 mt 4655 570 L -4595 510 mt 4595 630 L -4768 576 mt 4888 576 L -4828 516 mt 4828 636 L -5001 590 mt 5121 590 L -5061 530 mt 5061 650 L -5234 616 mt 5354 616 L -5294 556 mt 5294 676 L -5467 662 mt 5587 662 L -5527 602 mt 5527 722 L -5701 735 mt 5821 735 L -5761 675 mt 5761 795 L -5934 843 mt 6054 843 L -5994 783 mt 5994 903 L -6167 996 mt 6287 996 L -6227 936 mt 6227 1056 L -6400 1199 mt 6520 1199 L -6460 1139 mt 6460 1259 L -6633 1460 mt 6753 1460 L -6693 1400 mt 6693 1520 L -6867 1764 mt 6987 1764 L -6927 1704 mt 6927 1824 L -7100 2150 mt 7220 2150 L -7160 2090 mt 7160 2210 L -7333 2606 mt 7453 2606 L -7393 2546 mt 7393 2666 L -7566 3135 mt 7686 3135 L -7626 3075 mt 7626 3195 L -7799 3740 mt 7919 3740 L -7859 3680 mt 7859 3800 L -gr - -gs 1564 566 9328 6151 rc -DA -c8 -233 462 233 467 234 305 233 362 233 277 233 250 233 219 233 185 -234 168 233 125 233 112 233 87 233 62 234 46 233 38 233 19 -233 16 233 10 233 5 234 4 233 3 233 1 233 0 233 0 -233 0 234 0 233 0 233 0 233 0 233 0 233 0 1564 566 32 MP stroke -SO -c9 -233 442 233 404 234 365 233 328 233 291 233 257 233 222 233 190 -234 152 233 134 233 108 233 85 233 65 234 49 233 34 233 23 -233 16 233 9 233 6 234 3 233 2 233 1 233 0 233 0 -233 0 234 0 233 0 233 0 233 0 233 0 233 0 1564 566 32 MP stroke +264 1520 265 1110 265 803 265 510 265 282 265 130 265 48 265 13 +265 3 264 0 265 0 265 0 265 0 265 0 265 0 265 0 +265 0 265 0 264 0 265 0 265 0 265 0 265 0 265 0 +265 0 265 0 264 0 1555 566 28 MP stroke gr -gs 1418 420 7521 3479 rc +gs 1409 420 7444 4712 rc 0 j --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 1513 536 13 MP +0 -94 -94 0 0 94 94 0 1508 519 5 MP DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 1746 536 13 MP -DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 1979 536 13 MP +0 -94 -94 0 0 94 94 0 1772 519 5 MP DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 2212 536 13 MP +0 -94 -94 0 0 94 94 0 2037 519 5 MP DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 2445 536 13 MP +0 -94 -94 0 0 94 94 0 2302 519 5 MP DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 2678 536 13 MP +0 -94 -94 0 0 94 94 0 2567 519 5 MP DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 2912 536 13 MP +0 -94 -94 0 0 94 94 0 2832 519 5 MP DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 3145 536 13 MP -DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 3378 536 13 MP +0 -94 -94 0 0 94 94 0 3097 519 5 MP DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 3611 536 13 MP +0 -94 -94 0 0 94 94 0 3362 519 5 MP DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 3844 537 13 MP +0 -94 -94 0 0 94 94 0 3627 519 5 MP DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 4077 539 13 MP +0 -94 -94 0 0 94 94 0 3891 519 5 MP DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 4311 542 13 MP +0 -94 -94 0 0 94 94 0 4156 519 5 MP DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 4544 548 13 MP +0 -94 -94 0 0 94 94 0 4421 519 5 MP DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 4777 557 13 MP +0 -94 -94 0 0 94 94 0 4686 519 5 MP DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 5010 573 13 MP -DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 5243 596 13 MP +0 -94 -94 0 0 94 94 0 4951 519 5 MP DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 5476 630 13 MP +0 -94 -94 0 0 94 94 0 5216 519 5 MP DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 5710 679 13 MP +0 -94 -94 0 0 94 94 0 5481 519 5 MP DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 5943 744 13 MP +0 -94 -94 0 0 94 94 0 5746 519 5 MP DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 6176 829 13 MP +0 -94 -94 0 0 94 94 0 6011 519 5 MP DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 6409 937 13 MP +0 -94 -94 0 0 94 94 0 6275 519 5 MP DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 6642 1071 13 MP +0 -94 -94 0 0 94 94 0 6540 522 5 MP DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 6876 1223 13 MP +0 -94 -94 0 0 94 94 0 6805 535 5 MP DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 7109 1413 13 MP +0 -94 -94 0 0 94 94 0 7070 583 5 MP DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 7342 1635 13 MP +0 -94 -94 0 0 94 94 0 7335 713 5 MP DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 7575 1892 13 MP +0 -94 -94 0 0 94 94 0 7600 995 5 MP DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 7808 2183 13 MP +0 -94 -94 0 0 94 94 0 7865 1505 5 MP DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 8041 2511 13 MP +0 -94 -94 0 0 94 94 0 8130 2308 5 MP DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 8275 2876 13 MP +0 -94 -94 0 0 94 94 0 8395 3418 5 MP DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 8508 3280 13 MP -DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 8741 3722 13 MP +0 -94 -94 0 0 94 94 0 8659 4938 5 MP DP gr -gs 1564 566 9328 6151 rc +gs 1555 566 9272 6151 rc DA c8 -233 281 233 294 233 262 233 288 234 246 233 237 233 177 233 228 -233 170 233 136 234 127 233 123 233 100 233 98 233 70 233 70 -234 53 233 46 233 42 233 27 233 19 234 20 233 14 233 12 -233 6 233 4 233 4 234 2 233 1 233 2 233 1 233 0 -233 0 234 0 233 0 233 0 233 0 233 0 233 0 1564 566 40 MP stroke +265 936 265 668 264 657 265 439 265 369 265 228 265 174 265 114 +265 59 265 48 265 11 264 6 265 4 265 0 265 0 265 0 +265 0 265 0 265 0 265 0 264 0 265 0 265 0 265 0 +265 0 265 0 265 0 265 0 264 0 1555 566 30 MP stroke SO c9 -233 314 233 294 233 274 233 256 234 237 233 219 233 201 233 183 -233 166 233 150 234 134 233 119 233 104 233 91 233 78 233 66 -234 53 233 46 233 38 233 30 233 24 234 18 233 13 233 10 -233 7 233 5 233 4 234 2 233 1 233 1 233 1 233 0 -233 0 234 0 233 0 233 0 233 0 233 0 233 0 1564 566 40 MP stroke +265 876 265 729 264 590 265 452 265 353 265 255 265 172 265 110 +265 64 265 35 265 16 264 7 265 3 265 1 265 0 265 0 +265 0 265 0 265 0 265 0 264 0 265 0 265 0 265 0 +265 0 265 0 265 0 265 0 264 0 1555 566 30 MP stroke +gr + +gs 1409 420 7974 3956 rc +1495 566 mt 1615 566 L +1555 506 mt 1555 626 L +1759 566 mt 1879 566 L +1819 506 mt 1819 626 L +2024 566 mt 2144 566 L +2084 506 mt 2084 626 L +2289 566 mt 2409 566 L +2349 506 mt 2349 626 L +2554 566 mt 2674 566 L +2614 506 mt 2614 626 L +2819 566 mt 2939 566 L +2879 506 mt 2879 626 L +3084 566 mt 3204 566 L +3144 506 mt 3144 626 L +3349 566 mt 3469 566 L +3409 506 mt 3409 626 L +3614 566 mt 3734 566 L +3674 506 mt 3674 626 L +3878 566 mt 3998 566 L +3938 506 mt 3938 626 L +4143 566 mt 4263 566 L +4203 506 mt 4203 626 L +4408 566 mt 4528 566 L +4468 506 mt 4468 626 L +4673 566 mt 4793 566 L +4733 506 mt 4733 626 L +4938 566 mt 5058 566 L +4998 506 mt 4998 626 L +5203 566 mt 5323 566 L +5263 506 mt 5263 626 L +5468 566 mt 5588 566 L +5528 506 mt 5528 626 L +5733 567 mt 5853 567 L +5793 507 mt 5793 627 L +5998 570 mt 6118 570 L +6058 510 mt 6058 630 L +6262 577 mt 6382 577 L +6322 517 mt 6322 637 L +6527 593 mt 6647 593 L +6587 533 mt 6587 653 L +6792 628 mt 6912 628 L +6852 568 mt 6852 688 L +7057 692 mt 7177 692 L +7117 632 mt 7117 752 L +7322 802 mt 7442 802 L +7382 742 mt 7382 862 L +7587 974 mt 7707 974 L +7647 914 mt 7647 1034 L +7852 1229 mt 7972 1229 L +7912 1169 mt 7912 1289 L +8117 1582 mt 8237 1582 L +8177 1522 mt 8177 1642 L +8382 2034 mt 8502 2034 L +8442 1974 mt 8442 2094 L +8646 2624 mt 8766 2624 L +8706 2564 mt 8706 2684 L +8911 3353 mt 9031 3353 L +8971 3293 mt 8971 3413 L +9176 4229 mt 9296 4229 L +9236 4169 mt 9236 4289 L +gr + +gs 1555 566 9272 6151 rc +DA +c8 +265 504 265 562 265 461 265 401 265 395 264 322 265 239 265 153 +265 140 265 105 265 77 265 66 265 30 265 32 264 10 265 7 +265 3 265 5 265 1 265 0 265 0 265 0 265 0 264 0 +265 0 265 0 265 0 265 0 265 0 265 0 265 0 264 0 +1555 566 33 MP stroke +SO +c9 +265 632 265 556 265 484 265 416 265 350 264 291 265 231 265 188 +265 145 265 109 265 78 265 54 265 36 265 23 264 14 265 8 +265 4 265 2 265 2 265 0 265 0 265 0 265 0 264 0 +265 0 265 0 265 0 265 0 265 0 265 0 265 0 264 0 +1555 566 33 MP stroke gr -gs 1418 420 9386 3432 rc -1504 566 mt 1624 566 L -1564 506 mt 1564 626 L -1737 566 mt 1857 566 L -1797 506 mt 1797 626 L -1970 566 mt 2090 566 L -2030 506 mt 2030 626 L -2203 566 mt 2323 566 L -2263 506 mt 2263 626 L -2436 566 mt 2556 566 L -2496 506 mt 2496 626 L -2669 566 mt 2789 566 L -2729 506 mt 2729 626 L -2903 566 mt 3023 566 L -2963 506 mt 2963 626 L -3136 566 mt 3256 566 L -3196 506 mt 3196 626 L -3369 566 mt 3489 566 L -3429 506 mt 3429 626 L -3602 567 mt 3722 567 L -3662 507 mt 3662 627 L -3835 568 mt 3955 568 L -3895 508 mt 3895 628 L -4068 569 mt 4188 569 L -4128 509 mt 4128 629 L -4302 571 mt 4422 571 L -4362 511 mt 4362 631 L -4535 575 mt 4655 575 L -4595 515 mt 4595 635 L -4768 580 mt 4888 580 L -4828 520 mt 4828 640 L -5001 587 mt 5121 587 L -5061 527 mt 5061 647 L -5234 597 mt 5354 597 L -5294 537 mt 5294 657 L -5467 610 mt 5587 610 L -5527 550 mt 5527 670 L -5701 628 mt 5821 628 L -5761 568 mt 5761 688 L -5934 652 mt 6054 652 L -5994 592 mt 5994 712 L -6167 682 mt 6287 682 L -6227 622 mt 6227 742 L -6400 720 mt 6520 720 L -6460 660 mt 6460 780 L -6633 766 mt 6753 766 L -6693 706 mt 6693 826 L -6867 819 mt 6987 819 L -6927 759 mt 6927 879 L -7100 885 mt 7220 885 L -7160 825 mt 7160 945 L -7333 963 mt 7453 963 L -7393 903 mt 7393 1023 L -7566 1054 mt 7686 1054 L -7626 994 mt 7626 1114 L -7799 1158 mt 7919 1158 L -7859 1098 mt 7859 1218 L -8032 1277 mt 8152 1277 L -8092 1217 mt 8092 1337 L -8266 1411 mt 8386 1411 L -8326 1351 mt 8326 1471 L -8499 1561 mt 8619 1561 L -8559 1501 mt 8559 1621 L -8732 1727 mt 8852 1727 L -8792 1667 mt 8792 1787 L -8965 1910 mt 9085 1910 L -9025 1850 mt 9025 1970 L -9198 2111 mt 9318 2111 L -9258 2051 mt 9258 2171 L -9431 2330 mt 9551 2330 L -9491 2270 mt 9491 2390 L -9665 2567 mt 9785 2567 L -9725 2507 mt 9725 2627 L -9898 2823 mt 10018 2823 L -9958 2763 mt 9958 2883 L -10131 3097 mt 10251 3097 L -10191 3037 mt 10191 3157 L -10364 3391 mt 10484 3391 L -10424 3331 mt 10424 3451 L -10597 3705 mt 10717 3705 L -10657 3645 mt 10657 3765 L -1522 524 mt 1606 608 L -1606 524 mt 1522 608 L -1755 524 mt 1839 608 L -1839 524 mt 1755 608 L -1988 524 mt 2072 608 L -2072 524 mt 1988 608 L -2221 524 mt 2305 608 L -2305 524 mt 2221 608 L -2454 524 mt 2538 608 L -2538 524 mt 2454 608 L -2687 524 mt 2771 608 L -2771 524 mt 2687 608 L -2921 524 mt 3005 608 L -3005 524 mt 2921 608 L -3154 524 mt 3238 608 L -3238 524 mt 3154 608 L -3387 524 mt 3471 608 L -3471 524 mt 3387 608 L -3620 525 mt 3704 609 L -3704 525 mt 3620 609 L -3853 526 mt 3937 610 L -3937 526 mt 3853 610 L -4086 527 mt 4170 611 L -4170 527 mt 4086 611 L -4320 529 mt 4404 613 L -4404 529 mt 4320 613 L -4553 533 mt 4637 617 L -4637 533 mt 4553 617 L -4786 538 mt 4870 622 L -4870 538 mt 4786 622 L -5019 545 mt 5103 629 L -5103 545 mt 5019 629 L -5252 555 mt 5336 639 L -5336 555 mt 5252 639 L -5485 568 mt 5569 652 L -5569 568 mt 5485 652 L -5719 586 mt 5803 670 L -5803 586 mt 5719 670 L -5952 610 mt 6036 694 L -6036 610 mt 5952 694 L -6185 640 mt 6269 724 L -6269 640 mt 6185 724 L -6418 678 mt 6502 762 L -6502 678 mt 6418 762 L -6651 724 mt 6735 808 L -6735 724 mt 6651 808 L -6885 777 mt 6969 861 L -6969 777 mt 6885 861 L -7118 843 mt 7202 927 L -7202 843 mt 7118 927 L -7351 921 mt 7435 1005 L -7435 921 mt 7351 1005 L -7584 1012 mt 7668 1096 L -7668 1012 mt 7584 1096 L -7817 1116 mt 7901 1200 L -7901 1116 mt 7817 1200 L -8050 1235 mt 8134 1319 L -8134 1235 mt 8050 1319 L -8284 1369 mt 8368 1453 L -8368 1369 mt 8284 1453 L -8517 1519 mt 8601 1603 L -8601 1519 mt 8517 1603 L -8750 1685 mt 8834 1769 L -8834 1685 mt 8750 1769 L -8983 1868 mt 9067 1952 L -9067 1868 mt 8983 1952 L -9216 2069 mt 9300 2153 L -9300 2069 mt 9216 2153 L -9449 2288 mt 9533 2372 L -9533 2288 mt 9449 2372 L -9683 2525 mt 9767 2609 L -9767 2525 mt 9683 2609 L -9916 2781 mt 10000 2865 L -10000 2781 mt 9916 2865 L -10149 3055 mt 10233 3139 L -10233 3055 mt 10149 3139 L -10382 3349 mt 10466 3433 L -10466 3349 mt 10382 3433 L -10615 3663 mt 10699 3747 L -10699 3663 mt 10615 3747 L +gs 1409 420 8769 3916 rc +0 j +-21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 +34 0 17 30 17 -30 34 0 1504 536 13 MP +DP +-21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 +34 0 17 30 17 -30 34 0 1768 536 13 MP +DP +-21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 +34 0 17 30 17 -30 34 0 2033 536 13 MP +DP +-21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 +34 0 17 30 17 -30 34 0 2298 536 13 MP +DP +-21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 +34 0 17 30 17 -30 34 0 2563 536 13 MP +DP +-21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 +34 0 17 30 17 -30 34 0 2828 536 13 MP +DP +-21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 +34 0 17 30 17 -30 34 0 3093 536 13 MP +DP +-21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 +34 0 17 30 17 -30 34 0 3358 536 13 MP +DP +-21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 +34 0 17 30 17 -30 34 0 3623 536 13 MP +DP +-21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 +34 0 17 30 17 -30 34 0 3887 536 13 MP +DP +-21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 +34 0 17 30 17 -30 34 0 4152 536 13 MP +DP +-21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 +34 0 17 30 17 -30 34 0 4417 536 13 MP +DP +-21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 +34 0 17 30 17 -30 34 0 4682 536 13 MP +DP +-21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 +34 0 17 30 17 -30 34 0 4947 536 13 MP +DP +-21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 +34 0 17 30 17 -30 34 0 5212 538 13 MP +DP +-21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 +34 0 17 30 17 -30 34 0 5477 540 13 MP +DP +-21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 +34 0 17 30 17 -30 34 0 5742 544 13 MP +DP +-21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 +34 0 17 30 17 -30 34 0 6007 552 13 MP +DP +-21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 +34 0 17 30 17 -30 34 0 6271 566 13 MP +DP +-21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 +34 0 17 30 17 -30 34 0 6536 589 13 MP +DP +-21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 +34 0 17 30 17 -30 34 0 6801 625 13 MP +DP +-21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 +34 0 17 30 17 -30 34 0 7066 679 13 MP +DP +-21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 +34 0 17 30 17 -30 34 0 7331 757 13 MP +DP +-21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 +34 0 17 30 17 -30 34 0 7596 866 13 MP +DP +-21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 +34 0 17 30 17 -30 34 0 7861 1011 13 MP +DP +-21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 +34 0 17 30 17 -30 34 0 8126 1199 13 MP +DP +-21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 +34 0 17 30 17 -30 34 0 8391 1430 13 MP +DP +-21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 +34 0 17 30 17 -30 34 0 8655 1721 13 MP +DP +-21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 +34 0 17 30 17 -30 34 0 8920 2071 13 MP +DP +-21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 +34 0 17 30 17 -30 34 0 9185 2487 13 MP +DP +-21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 +34 0 17 30 17 -30 34 0 9450 2971 13 MP +DP +-21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 +34 0 17 30 17 -30 34 0 9715 3527 13 MP +DP +-21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 +34 0 17 30 17 -30 34 0 9980 4159 13 MP +DP gr -gs 1564 566 9328 6151 rc +gs 1555 566 9272 6151 rc gr 0 sg %%IncludeResource: font Helvetica /Helvetica /WindowsLatin1Encoding 120 FMSR -6083 7004 mt -(SINR) s -1223 3799 mt -90 rotate +6062 7004 mt +(SNR) s +1214 3799 mt -90 rotate (BLER) s 90 rotate -1547 6759 mt +1538 6759 mt ( ) s -10875 608 mt +10810 608 mt ( ) s 6 w 1 sg -0 2058 1696 0 0 -2058 1601 6684 4 MP +0 1722 1696 0 0 -1722 1601 6681 4 MP PP --1696 0 0 2058 1696 0 0 -2058 1601 6684 5 MP stroke +-1696 0 0 1722 1696 0 0 -1722 1601 6681 5 MP stroke 4 w DO SO 6 w 0 sg -1601 4626 mt 3297 4626 L -1601 6684 mt 3297 6684 L -3297 6684 mt 3297 4626 L -1601 6684 mt 1601 4626 L -1601 6684 mt 3297 6684 L -1601 6684 mt 1601 4626 L -1601 4626 mt 3297 4626 L -1601 6684 mt 3297 6684 L -3297 6684 mt 3297 4626 L -1601 6684 mt 1601 4626 L -2073 4773 mt +1601 4959 mt 3297 4959 L +1601 6681 mt 3297 6681 L +3297 6681 mt 3297 4959 L +1601 6681 mt 1601 4959 L +1601 6681 mt 3297 6681 L +1601 6681 mt 1601 4959 L +1601 4959 mt 3297 4959 L +1601 6681 mt 3297 6681 L +3297 6681 mt 3297 4959 L +1601 6681 mt 1601 4959 L +2073 5106 mt (TB = 6000 \(AWGN\)) s -gs 1601 4626 1697 2059 rc +gs 1601 4959 1697 1723 rc DA 24 w c8 -363 0 1673 4731 2 MP stroke +363 0 1673 5064 2 MP stroke SO gr 24 w c8 0 sg -2073 4941 mt +2073 5274 mt (TB = 6000 \(estimated\)) s -gs 1601 4626 1697 2059 rc +gs 1601 4959 1697 1723 rc c9 -363 0 1673 4899 2 MP stroke -gs 1708 4753 293 293 rc +363 0 1673 5232 2 MP stroke +gs 1708 5086 293 293 rc 0 j -69 119 -138 0 69 -119 1854 4978 4 MP +69 119 -138 0 69 -119 1854 5311 4 MP DP gr @@ -1329,25 +1038,25 @@ c9 0 sg -2073 5109 mt +2073 5442 mt (TB = 4000 \(AWGN\)) s -gs 1601 4626 1697 2059 rc +gs 1601 4959 1697 1723 rc DA c8 -363 0 1673 5067 2 MP stroke +363 0 1673 5400 2 MP stroke SO gr c8 0 sg -2073 5277 mt +2073 5610 mt (TB = 4000 \(estimated\)) s -gs 1601 4626 1697 2059 rc +gs 1601 4959 1697 1723 rc c9 -363 0 1673 5235 2 MP stroke -gs 1708 5089 293 293 rc +363 0 1673 5568 2 MP stroke +gs 1708 5422 293 293 rc 0 j --69 119 -69 -119 138 0 1785 5275 4 MP +-69 119 -69 -119 138 0 1785 5608 4 MP DP gr @@ -1355,25 +1064,25 @@ c9 0 sg -2073 5445 mt +2073 5778 mt (TB = 2560 \(AWGN\)) s -gs 1601 4626 1697 2059 rc +gs 1601 4959 1697 1723 rc DA c8 -363 0 1673 5403 2 MP stroke +363 0 1673 5736 2 MP stroke SO gr c8 0 sg -2073 5613 mt +2073 5947 mt (TB = 2560 \(estimated\)) s -gs 1601 4626 1697 2059 rc +gs 1601 4959 1697 1723 rc c9 -363 0 1673 5571 2 MP stroke -gs 1708 5425 293 293 rc +363 0 1673 5904 2 MP stroke +gs 1708 5758 293 293 rc 0 j -0 -94 -94 0 0 94 94 0 1807 5524 5 MP +0 -94 -94 0 0 94 94 0 1807 5857 5 MP DP gr @@ -1381,85 +1090,58 @@ c9 0 sg -2073 5782 mt +2073 6115 mt (TB = 1024 \(AWGN\)) s -gs 1601 4626 1697 2059 rc +gs 1601 4959 1697 1723 rc DA c8 -363 0 1673 5739 2 MP stroke +363 0 1673 6072 2 MP stroke SO gr c8 0 sg -2073 5950 mt +2073 6283 mt (TB = 1024 \(estimated\)) s -gs 1601 4626 1697 2059 rc +gs 1601 4959 1697 1723 rc c9 -363 0 1673 5907 2 MP stroke -gs 1708 5761 293 293 rc -1794 5907 mt 1914 5907 L -1854 5847 mt 1854 5967 L +363 0 1673 6240 2 MP stroke +gs 1708 6094 293 293 rc +1794 6240 mt 1914 6240 L +1854 6180 mt 1854 6300 L gr gr c9 0 sg -2073 6118 mt +2073 6451 mt (TB = 512 \(AWGN\)) s -gs 1601 4626 1697 2059 rc +gs 1601 4959 1697 1723 rc DA c8 -363 0 1673 6075 2 MP stroke +363 0 1673 6408 2 MP stroke SO gr c8 0 sg -2073 6286 mt +2073 6619 mt (TB = 512 \(estimated\)) s -gs 1601 4626 1697 2059 rc +gs 1601 4959 1697 1723 rc c9 -363 0 1673 6242 2 MP stroke -gs 1708 6096 293 293 rc -0 j --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 1803 6212 13 MP -DP -gr - +363 0 1673 6575 2 MP stroke gr c9 -0 sg -2073 6454 mt -(TB = 256 \(AWGN\)) s -gs 1601 4626 1697 2059 rc -DA -c8 -363 0 1673 6410 2 MP stroke -SO +gs 1708 6429 293 293 rc +0 j +-21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 +34 0 17 30 17 -30 34 0 1803 6545 13 MP +DP gr -c8 -0 sg -2073 6622 mt -(TB = 256 \(estimated\)) s -gs 1601 4626 1697 2059 rc -c9 -363 0 1673 6578 2 MP stroke -gr - -c9 -gs 1708 6432 293 293 rc -1794 6578 mt 1914 6578 L -1854 6518 mt 1854 6638 L -1812 6536 mt 1896 6620 L -1896 6536 mt 1812 6620 L -gr - -gs 1601 4626 1697 2059 rc +gs 1601 4959 1697 1723 rc 6 w gr @@ -1482,28 +1164,22 @@ countdictstack exch sub { end } repeat restore grestore % -% End Imported PIC File: /home/mmiozzo/ns3/lena/ns-3-lena-pem/src/lte/doc/source/figures/MCS_12.eps +% End Imported PIC File: /home/mmiozzo/sandbox/lena/ns-3-lena-dev/src/lte/doc/source/figures/MCS_13.eps %%EndDocument % % Ellipse 45.000 slw -n 9585 3600 324 324 0 360 DrawEllipse gs col4 s gr +n 11565 3735 324 324 0 360 DrawEllipse gs col4 s gr % Ellipse -n 9540 1530 324 324 0 360 DrawEllipse gs col4 s gr - -% Ellipse -n 9540 2160 324 324 0 360 DrawEllipse gs col4 s gr +n 11610 2655 324 324 0 360 DrawEllipse gs col4 s gr /Helvetica-Bold ff 349.25 scf sf -9855 1215 m +10890 2790 m gs 1 -1 sc (E) col4 sh gr /Helvetica-Bold ff 349.25 scf sf -9990 2205 m -gs 1 -1 sc (F) col4 sh gr -/Helvetica-Bold ff 349.25 scf sf -9945 4005 m -gs 1 -1 sc (G) col4 sh gr +10845 3870 m +gs 1 -1 sc (D) col4 sh gr % here ends figure; pagefooter showpage
--- a/src/lte/doc/source/figures/MCS_14_test.eps Fri May 18 10:30:14 2012 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1641 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: /home/mmiozzo/ns3/lena/ns-3-lena-pem/src/lte/doc/source/figures/MCS_14_test.fig -%%Creator: fig2dev Version 3.2 Patchlevel 5a -%%CreationDate: Tue Jan 10 17:48:10 2012 -%%BoundingBox: 0 0 1095 718 -%Magnification: 1.0000 -%%EndComments -%%BeginProlog -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def - -end - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def - /DrawEllipse { - /endangle exch def - /startangle exch def - /yrad exch def - /xrad exch def - /y exch def - /x exch def - /savematrix mtrx currentmatrix def - x y tr xrad yrad sc 0 0 1 startangle endangle arc - closepath - savematrix setmatrix - } def - -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def - -/pageheader { -save -newpath 0 718 moveto 0 0 lineto 1095 0 lineto 1095 718 lineto closepath clip newpath --2.8 748.3 translate -1 -1 scale -$F2psBegin -10 setmiterlimit -0 slj 0 slc - 0.06299 0.06299 sc -} bind def -/pagefooter { -$F2psEnd -restore -} bind def -%%EndProlog -pageheader -% -% Fig objects follow -% -% -% here starts figure with depth 51 -% Polyline -% -% pen to black in case this eps object doesn't set color first -0 0 0 setrgbcolor -% Begin Imported EPS File: /home/mmiozzo/ns3/lena/ns-3-lena-pem/src/lte/doc/source/figures/MCS_14.eps -%%BeginDocument: /home/mmiozzo/ns3/lena/ns-3-lena-pem/src/lte/doc/source/figures/MCS_14.eps -% -n gs -45 495 tr -17.335329 -18.100159 sc -0 -629 tr -203 -106 tr -sa -n -203 106 m 799 106 l 799 735 l -203 735 l cp clip n -countdictstack -mark -/showpage {} def -% EPS file follows: -%!PS-Adobe-3.0 EPSF-3.0 -%%Creator: MATLAB, The Mathworks, Inc. Version 7.8.0.347 (R2009a). Operating System: Microsoft Windows XP. -%%Title: C:\Documents and Settings\Marco Miozzo\My Documents\MATLAB\Final\MCS_27_allTBsizes\MCS_14.eps -%%CreationDate: 01/10/2012 17:33:16 -%%DocumentNeededFonts: Helvetica -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%LanguageLevel: 2 -%%Pages: 1 -%%BoundingBox: -203 106 799 735 -%%EndComments - -%%BeginProlog -% MathWorks dictionary -/MathWorks 160 dict begin -% definition operators -/bdef {bind def} bind def -/ldef {load def} bind def -/xdef {exch def} bdef -/xstore {exch store} bdef -% operator abbreviations -/c /clip ldef -/cc /concat ldef -/cp /closepath ldef -/gr /grestore ldef -/gs /gsave ldef -/mt /moveto ldef -/np /newpath ldef -/cm /currentmatrix ldef -/sm /setmatrix ldef -/rm /rmoveto ldef -/rl /rlineto ldef -/s {show newpath} bdef -/sc {setcmykcolor} bdef -/sr /setrgbcolor ldef -/sg /setgray ldef -/w /setlinewidth ldef -/j /setlinejoin ldef -/cap /setlinecap ldef -/rc {rectclip} bdef -/rf {rectfill} bdef -% page state control -/pgsv () def -/bpage {/pgsv save def} bdef -/epage {pgsv restore} bdef -/bplot /gsave ldef -/eplot {stroke grestore} bdef -% orientation switch -/portraitMode 0 def /landscapeMode 1 def /rotateMode 2 def -% coordinate system mappings -/dpi2point 0 def -% font control -/FontSize 0 def -/FMS {/FontSize xstore findfont [FontSize 0 0 FontSize neg 0 0] - makefont setfont} bdef -/ISOLatin1Encoding where {pop /WindowsLatin1Encoding 256 array bdef -ISOLatin1Encoding WindowsLatin1Encoding copy pop -/.notdef/.notdef/quotesinglbase/florin/quotedblbase/ellipsis/dagger -/daggerdbl/circumflex/perthousand/Scaron/guilsinglleft/OE/.notdef/.notdef -/.notdef/.notdef/quoteleft/quoteright/quotedblleft/quotedblright/bullet -/endash/emdash/tilde/trademark/scaron/guilsinglright/oe/.notdef/.notdef -/Ydieresis WindowsLatin1Encoding 128 32 getinterval astore pop} -{/WindowsLatin1Encoding StandardEncoding bdef} ifelse -/reencode {exch dup where {pop load} {pop StandardEncoding} ifelse - exch dup 3 1 roll findfont dup length dict begin - { 1 index /FID ne {def}{pop pop} ifelse } forall - /Encoding exch def currentdict end definefont pop} bdef -/isroman {findfont /CharStrings get /Agrave known} bdef -/FMSR {3 1 roll 1 index dup isroman {reencode} {pop pop} ifelse - exch FMS} bdef -/csm {1 dpi2point div -1 dpi2point div scale neg translate - dup landscapeMode eq {pop -90 rotate} - {rotateMode eq {90 rotate} if} ifelse} bdef -% line types: solid, dotted, dashed, dotdash -/SO { [] 0 setdash } bdef -/DO { [.5 dpi2point mul 4 dpi2point mul] 0 setdash } bdef -/DA { [6 dpi2point mul] 0 setdash } bdef -/DD { [.5 dpi2point mul 4 dpi2point mul 6 dpi2point mul 4 - dpi2point mul] 0 setdash } bdef -% macros for lines and objects -/L {lineto stroke} bdef -/MP {3 1 roll moveto 1 sub {rlineto} repeat} bdef -/AP {{rlineto} repeat} bdef -/PDlw -1 def -/W {/PDlw currentlinewidth def setlinewidth} def -/PP {closepath eofill} bdef -/DP {closepath stroke} bdef -/MR {4 -2 roll moveto dup 0 exch rlineto exch 0 rlineto - neg 0 exch rlineto closepath} bdef -/FR {MR stroke} bdef -/PR {MR fill} bdef -/L1i {{currentfile picstr readhexstring pop} image} bdef -/tMatrix matrix def -/MakeOval {newpath tMatrix currentmatrix pop translate scale -0 0 1 0 360 arc tMatrix setmatrix} bdef -/FO {MakeOval stroke} bdef -/PO {MakeOval fill} bdef -/PD {currentlinewidth 2 div 0 360 arc fill - PDlw -1 eq not {PDlw w /PDlw -1 def} if} def -/FA {newpath tMatrix currentmatrix pop translate scale - 0 0 1 5 -2 roll arc tMatrix setmatrix stroke} bdef -/PA {newpath tMatrix currentmatrix pop translate 0 0 moveto scale - 0 0 1 5 -2 roll arc closepath tMatrix setmatrix fill} bdef -/FAn {newpath tMatrix currentmatrix pop translate scale - 0 0 1 5 -2 roll arcn tMatrix setmatrix stroke} bdef -/PAn {newpath tMatrix currentmatrix pop translate 0 0 moveto scale - 0 0 1 5 -2 roll arcn closepath tMatrix setmatrix fill} bdef -/vradius 0 def /hradius 0 def /lry 0 def -/lrx 0 def /uly 0 def /ulx 0 def /rad 0 def -/MRR {/vradius xdef /hradius xdef /lry xdef /lrx xdef /uly xdef - /ulx xdef newpath tMatrix currentmatrix pop ulx hradius add uly - vradius add translate hradius vradius scale 0 0 1 180 270 arc - tMatrix setmatrix lrx hradius sub uly vradius add translate - hradius vradius scale 0 0 1 270 360 arc tMatrix setmatrix - lrx hradius sub lry vradius sub translate hradius vradius scale - 0 0 1 0 90 arc tMatrix setmatrix ulx hradius add lry vradius sub - translate hradius vradius scale 0 0 1 90 180 arc tMatrix setmatrix - closepath} bdef -/FRR {MRR stroke } bdef -/PRR {MRR fill } bdef -/MlrRR {/lry xdef /lrx xdef /uly xdef /ulx xdef /rad lry uly sub 2 div def - newpath tMatrix currentmatrix pop ulx rad add uly rad add translate - rad rad scale 0 0 1 90 270 arc tMatrix setmatrix lrx rad sub lry rad - sub translate rad rad scale 0 0 1 270 90 arc tMatrix setmatrix - closepath} bdef -/FlrRR {MlrRR stroke } bdef -/PlrRR {MlrRR fill } bdef -/MtbRR {/lry xdef /lrx xdef /uly xdef /ulx xdef /rad lrx ulx sub 2 div def - newpath tMatrix currentmatrix pop ulx rad add uly rad add translate - rad rad scale 0 0 1 180 360 arc tMatrix setmatrix lrx rad sub lry rad - sub translate rad rad scale 0 0 1 0 180 arc tMatrix setmatrix - closepath} bdef -/FtbRR {MtbRR stroke } bdef -/PtbRR {MtbRR fill } bdef -/stri 6 array def /dtri 6 array def -/smat 6 array def /dmat 6 array def -/tmat1 6 array def /tmat2 6 array def /dif 3 array def -/asub {/ind2 exch def /ind1 exch def dup dup - ind1 get exch ind2 get sub exch } bdef -/tri_to_matrix { - 2 0 asub 3 1 asub 4 0 asub 5 1 asub - dup 0 get exch 1 get 7 -1 roll astore } bdef -/compute_transform { - dmat dtri tri_to_matrix tmat1 invertmatrix - smat stri tri_to_matrix tmat2 concatmatrix } bdef -/ds {stri astore pop} bdef -/dt {dtri astore pop} bdef -/db {2 copy /cols xdef /rows xdef mul dup 3 mul string - currentfile - 3 index 0 eq {/ASCIIHexDecode filter} - {/ASCII85Decode filter 3 index 2 eq {/RunLengthDecode filter} if } - ifelse exch readstring pop - dup 0 3 index getinterval /rbmap xdef - dup 2 index dup getinterval /gbmap xdef - 1 index dup 2 mul exch getinterval /bbmap xdef pop pop}bdef -/it {gs np dtri aload pop moveto lineto lineto cp c - cols rows 8 compute_transform - rbmap gbmap bbmap true 3 colorimage gr}bdef -/il {newpath moveto lineto stroke}bdef -currentdict end def -%%EndProlog - -%%BeginSetup -MathWorks begin - -0 cap - -end -%%EndSetup - -%%Page: 1 1 -%%BeginPageSetup -%%PageBoundingBox: -203 106 799 735 -MathWorks begin -bpage -%%EndPageSetup - -%%BeginObject: obj1 -bplot - -/dpi2point 12 def -portraitMode -2436 8820 csm - - 0 0 12034 7546 rc -85 dict begin %Colortable dictionary -/c0 { 0.000000 0.000000 0.000000 sr} bdef -/c1 { 1.000000 1.000000 1.000000 sr} bdef -/c2 { 0.900000 0.000000 0.000000 sr} bdef -/c3 { 0.000000 0.820000 0.000000 sr} bdef -/c4 { 0.000000 0.000000 0.800000 sr} bdef -/c5 { 0.910000 0.820000 0.320000 sr} bdef -/c6 { 1.000000 0.260000 0.820000 sr} bdef -/c7 { 0.000000 0.820000 0.820000 sr} bdef -c0 -1 j -1 sg - 0 0 12035 7547 rf -6 w -0 6150 9327 0 0 -6150 1564 6716 4 MP -PP --9327 0 0 6150 9327 0 0 -6150 1564 6716 5 MP stroke -4 w -DO -0 sg -1564 6716 mt 1564 566 L -1564 566 mt 1564 566 L -3118 6716 mt 3118 566 L -3118 566 mt 3118 566 L -4673 6716 mt 4673 566 L -4673 566 mt 4673 566 L -6227 6716 mt 6227 566 L -6227 566 mt 6227 566 L -7782 6716 mt 7782 566 L -7782 566 mt 7782 566 L -9336 6716 mt 9336 566 L -9336 566 mt 9336 566 L -10891 6716 mt 10891 566 L -10891 566 mt 10891 566 L -1564 6716 mt 10891 6716 L -10891 6716 mt 10891 6716 L -1564 4666 mt 10891 4666 L -10891 4666 mt 10891 4666 L -1564 2616 mt 10891 2616 L -10891 2616 mt 10891 2616 L -1564 566 mt 10891 566 L -10891 566 mt 10891 566 L -SO -6 w -1564 566 mt 10891 566 L -1564 6716 mt 10891 6716 L -10891 6716 mt 10891 566 L -1564 6716 mt 1564 566 L -1564 6716 mt 10891 6716 L -1564 6716 mt 1564 566 L -1564 6716 mt 1564 6622 L -1564 566 mt 1564 659 L -%%IncludeResource: font Helvetica -/Helvetica /WindowsLatin1Encoding 120 FMSR - -1531 6861 mt -(4) s -3118 6716 mt 3118 6622 L -3118 566 mt 3118 659 L -3085 6861 mt -(5) s -4673 6716 mt 4673 6622 L -4673 566 mt 4673 659 L -4640 6861 mt -(6) s -6227 6716 mt 6227 6622 L -6227 566 mt 6227 659 L -6194 6861 mt -(7) s -7782 6716 mt 7782 6622 L -7782 566 mt 7782 659 L -7749 6861 mt -(8) s -9336 6716 mt 9336 6622 L -9336 566 mt 9336 659 L -9303 6861 mt -(9) s -10891 6716 mt 10891 6622 L -10891 566 mt 10891 659 L -10825 6861 mt -(10) s -1564 6716 mt 1610 6716 L -10891 6716 mt 10844 6716 L -DO -1564 6716 mt 10891 6716 L -10891 6716 mt 10891 6716 L -SO -1564 6716 mt 1657 6716 L -10891 6716 mt 10797 6716 L -1305 6760 mt -(10) s -%%IncludeResource: font Helvetica -/Helvetica /WindowsLatin1Encoding 80 FMSR - -1438 6686 mt -(-3) s -1564 6098 mt 1610 6098 L -10891 6098 mt 10844 6098 L -DO -1564 6098 mt 10891 6098 L -10891 6098 mt 10891 6098 L -SO -1564 5737 mt 1610 5737 L -10891 5737 mt 10844 5737 L -DO -1564 5737 mt 10891 5737 L -10891 5737 mt 10891 5737 L -SO -1564 5481 mt 1610 5481 L -10891 5481 mt 10844 5481 L -DO -1564 5481 mt 10891 5481 L -10891 5481 mt 10891 5481 L -SO -1564 5283 mt 1610 5283 L -10891 5283 mt 10844 5283 L -DO -1564 5283 mt 10891 5283 L -10891 5283 mt 10891 5283 L -SO -1564 5120 mt 1610 5120 L -10891 5120 mt 10844 5120 L -DO -1564 5120 mt 10891 5120 L -10891 5120 mt 10891 5120 L -SO -1564 4983 mt 1610 4983 L -10891 4983 mt 10844 4983 L -DO -1564 4983 mt 10891 4983 L -10891 4983 mt 10891 4983 L -SO -1564 4864 mt 1610 4864 L -10891 4864 mt 10844 4864 L -DO -1564 4864 mt 10891 4864 L -10891 4864 mt 10891 4864 L -SO -1564 4759 mt 1610 4759 L -10891 4759 mt 10844 4759 L -DO -1564 4759 mt 10891 4759 L -10891 4759 mt 10891 4759 L -SO -1564 4666 mt 1610 4666 L -10891 4666 mt 10844 4666 L -DO -1564 4666 mt 10891 4666 L -10891 4666 mt 10891 4666 L -SO -1564 4666 mt 1657 4666 L -10891 4666 mt 10797 4666 L -%%IncludeResource: font Helvetica -/Helvetica /WindowsLatin1Encoding 120 FMSR - -1305 4710 mt -(10) s -%%IncludeResource: font Helvetica -/Helvetica /WindowsLatin1Encoding 80 FMSR - -1438 4636 mt -(-2) s -1564 4048 mt 1610 4048 L -10891 4048 mt 10844 4048 L -DO -1564 4048 mt 10891 4048 L -10891 4048 mt 10891 4048 L -SO -1564 3687 mt 1610 3687 L -10891 3687 mt 10844 3687 L -DO -1564 3687 mt 10891 3687 L -10891 3687 mt 10891 3687 L -SO -1564 3431 mt 1610 3431 L -10891 3431 mt 10844 3431 L -DO -1564 3431 mt 10891 3431 L -10891 3431 mt 10891 3431 L -SO -1564 3233 mt 1610 3233 L -10891 3233 mt 10844 3233 L -DO -1564 3233 mt 10891 3233 L -10891 3233 mt 10891 3233 L -SO -1564 3070 mt 1610 3070 L -10891 3070 mt 10844 3070 L -DO -1564 3070 mt 10891 3070 L -10891 3070 mt 10891 3070 L -SO -1564 2933 mt 1610 2933 L -10891 2933 mt 10844 2933 L -DO -1564 2933 mt 10891 2933 L -10891 2933 mt 10891 2933 L -SO -1564 2814 mt 1610 2814 L -10891 2814 mt 10844 2814 L -DO -1564 2814 mt 10891 2814 L -10891 2814 mt 10891 2814 L -SO -1564 2709 mt 1610 2709 L -10891 2709 mt 10844 2709 L -DO -1564 2709 mt 10891 2709 L -10891 2709 mt 10891 2709 L -SO -1564 2616 mt 1610 2616 L -10891 2616 mt 10844 2616 L -DO -1564 2616 mt 10891 2616 L -10891 2616 mt 10891 2616 L -SO -1564 2616 mt 1657 2616 L -10891 2616 mt 10797 2616 L -%%IncludeResource: font Helvetica -/Helvetica /WindowsLatin1Encoding 120 FMSR - -1305 2660 mt -(10) s -%%IncludeResource: font Helvetica -/Helvetica /WindowsLatin1Encoding 80 FMSR - -1438 2586 mt -(-1) s -1564 1998 mt 1610 1998 L -10891 1998 mt 10844 1998 L -DO -1564 1998 mt 10891 1998 L -10891 1998 mt 10891 1998 L -SO -1564 1637 mt 1610 1637 L -10891 1637 mt 10844 1637 L -DO -1564 1637 mt 10891 1637 L -10891 1637 mt 10891 1637 L -SO -1564 1381 mt 1610 1381 L -10891 1381 mt 10844 1381 L -DO -1564 1381 mt 10891 1381 L -10891 1381 mt 10891 1381 L -SO -1564 1183 mt 1610 1183 L -10891 1183 mt 10844 1183 L -DO -1564 1183 mt 10891 1183 L -10891 1183 mt 10891 1183 L -SO -1564 1020 mt 1610 1020 L -10891 1020 mt 10844 1020 L -DO -1564 1020 mt 10891 1020 L -10891 1020 mt 10891 1020 L -SO -1564 883 mt 1610 883 L -10891 883 mt 10844 883 L -DO -1564 883 mt 10891 883 L -10891 883 mt 10891 883 L -SO -1564 764 mt 1610 764 L -10891 764 mt 10844 764 L -DO -1564 764 mt 10891 764 L -10891 764 mt 10891 764 L -SO -1564 659 mt 1610 659 L -10891 659 mt 10844 659 L -DO -1564 659 mt 10891 659 L -10891 659 mt 10891 659 L -SO -1564 566 mt 1610 566 L -10891 566 mt 10844 566 L -DO -1564 566 mt 10891 566 L -10891 566 mt 10891 566 L -SO -1564 566 mt 1657 566 L -10891 566 mt 10797 566 L -%%IncludeResource: font Helvetica -/Helvetica /WindowsLatin1Encoding 120 FMSR - -1305 610 mt -(10) s -%%IncludeResource: font Helvetica -/Helvetica /WindowsLatin1Encoding 80 FMSR - -1438 536 mt -(0) s -1564 566 mt 10891 566 L -1564 6716 mt 10891 6716 L -10891 6716 mt 10891 566 L -1564 6716 mt 1564 566 L -gs 1564 565 9328 6151 rc -DA -24 w -/c8 { 1.000000 0.000000 0.000000 sr} bdef -c8 -155 2213 156 1361 155 890 156 532 155 227 155 63 156 13 155 0 -156 0 155 0 156 0 155 0 156 0 155 0 155 0 156 0 -155 0 156 0 155 0 156 0 155 0 156 0 155 0 156 0 -155 0 155 0 156 0 155 0 156 0 155 0 156 0 155 0 -156 0 155 0 155 0 1564 566 36 MP stroke -SO -/c9 { 0.000000 0.000000 1.000000 sr} bdef -c9 -155 1941 156 1413 155 929 156 521 155 225 155 67 156 11 155 1 -156 0 155 0 156 0 155 0 156 0 155 0 155 0 156 0 -155 0 156 0 155 0 156 0 155 0 156 0 155 0 156 0 -155 0 155 0 156 0 155 0 156 0 155 0 156 0 155 0 -156 0 155 0 155 0 1564 566 36 MP stroke -gr - -24 w -c9 -gs 1418 420 5733 5401 rc -0 j -69 119 -138 0 69 -119 1564 645 4 MP -DP -69 119 -138 0 69 -119 1719 645 4 MP -DP -69 119 -138 0 69 -119 1874 645 4 MP -DP -69 119 -138 0 69 -119 2030 645 4 MP -DP -69 119 -138 0 69 -119 2185 645 4 MP -DP -69 119 -138 0 69 -119 2341 645 4 MP -DP -69 119 -138 0 69 -119 2496 645 4 MP -DP -69 119 -138 0 69 -119 2652 645 4 MP -DP -69 119 -138 0 69 -119 2807 645 4 MP -DP -69 119 -138 0 69 -119 2963 645 4 MP -DP -69 119 -138 0 69 -119 3118 645 4 MP -DP -69 119 -138 0 69 -119 3273 645 4 MP -DP -69 119 -138 0 69 -119 3429 645 4 MP -DP -69 119 -138 0 69 -119 3584 645 4 MP -DP -69 119 -138 0 69 -119 3740 645 4 MP -DP -69 119 -138 0 69 -119 3895 645 4 MP -DP -69 119 -138 0 69 -119 4051 645 4 MP -DP -69 119 -138 0 69 -119 4206 645 4 MP -DP -69 119 -138 0 69 -119 4362 645 4 MP -DP -69 119 -138 0 69 -119 4517 645 4 MP -DP -69 119 -138 0 69 -119 4673 645 4 MP -DP -69 119 -138 0 69 -119 4828 645 4 MP -DP -69 119 -138 0 69 -119 4983 645 4 MP -DP -69 119 -138 0 69 -119 5139 645 4 MP -DP -69 119 -138 0 69 -119 5294 645 4 MP -DP -69 119 -138 0 69 -119 5450 645 4 MP -DP -69 119 -138 0 69 -119 5605 645 4 MP -DP -69 119 -138 0 69 -119 5761 645 4 MP -DP -69 119 -138 0 69 -119 5916 646 4 MP -DP -69 119 -138 0 69 -119 6072 657 4 MP -DP -69 119 -138 0 69 -119 6227 724 4 MP -DP -69 119 -138 0 69 -119 6382 949 4 MP -DP -69 119 -138 0 69 -119 6538 1470 4 MP -DP -69 119 -138 0 69 -119 6693 2399 4 MP -DP -69 119 -138 0 69 -119 6849 3812 4 MP -DP -69 119 -138 0 69 -119 7004 5753 4 MP -DP -gr - -gs 1564 565 9328 6151 rc -DA -c8 -155 1227 156 1029 155 769 156 487 155 261 155 118 156 37 155 7 -156 2 155 0 156 0 155 0 156 0 155 0 155 0 156 0 -155 0 156 0 155 0 156 0 155 0 156 0 155 0 156 0 -155 0 155 0 156 0 155 0 156 0 155 0 156 0 155 0 -156 0 155 0 155 0 1564 566 36 MP stroke -SO -c9 -155 1421 156 1078 155 762 156 484 155 265 155 115 156 38 155 8 -156 1 155 0 156 0 155 0 156 0 155 0 155 0 156 0 -155 0 156 0 155 0 156 0 155 0 156 0 155 0 156 0 -155 0 155 0 156 0 155 0 156 0 155 0 156 0 155 0 -156 0 155 0 155 0 1564 566 36 MP stroke -gr - -gs 1418 420 5733 4465 rc -0 j --69 119 -69 -119 138 0 1495 606 4 MP -DP --69 119 -69 -119 138 0 1650 606 4 MP -DP --69 119 -69 -119 138 0 1805 606 4 MP -DP --69 119 -69 -119 138 0 1961 606 4 MP -DP --69 119 -69 -119 138 0 2116 606 4 MP -DP --69 119 -69 -119 138 0 2272 606 4 MP -DP --69 119 -69 -119 138 0 2427 606 4 MP -DP --69 119 -69 -119 138 0 2583 606 4 MP -DP --69 119 -69 -119 138 0 2738 606 4 MP -DP --69 119 -69 -119 138 0 2894 606 4 MP -DP --69 119 -69 -119 138 0 3049 606 4 MP -DP --69 119 -69 -119 138 0 3204 606 4 MP -DP --69 119 -69 -119 138 0 3360 606 4 MP -DP --69 119 -69 -119 138 0 3515 606 4 MP -DP --69 119 -69 -119 138 0 3671 606 4 MP -DP --69 119 -69 -119 138 0 3826 606 4 MP -DP --69 119 -69 -119 138 0 3982 606 4 MP -DP --69 119 -69 -119 138 0 4137 606 4 MP -DP --69 119 -69 -119 138 0 4293 606 4 MP -DP --69 119 -69 -119 138 0 4448 606 4 MP -DP --69 119 -69 -119 138 0 4604 606 4 MP -DP --69 119 -69 -119 138 0 4759 606 4 MP -DP --69 119 -69 -119 138 0 4914 606 4 MP -DP --69 119 -69 -119 138 0 5070 606 4 MP -DP --69 119 -69 -119 138 0 5225 606 4 MP -DP --69 119 -69 -119 138 0 5381 606 4 MP -DP --69 119 -69 -119 138 0 5536 606 4 MP -DP --69 119 -69 -119 138 0 5692 607 4 MP -DP --69 119 -69 -119 138 0 5847 615 4 MP -DP --69 119 -69 -119 138 0 6003 653 4 MP -DP --69 119 -69 -119 138 0 6158 768 4 MP -DP --69 119 -69 -119 138 0 6313 1033 4 MP -DP --69 119 -69 -119 138 0 6469 1517 4 MP -DP --69 119 -69 -119 138 0 6624 2279 4 MP -DP --69 119 -69 -119 138 0 6780 3357 4 MP -DP --69 119 -69 -119 138 0 6935 4778 4 MP -DP -gr - -gs 1564 565 9328 6151 rc -DA -c8 -155 1072 156 1101 155 997 156 617 155 477 156 307 155 166 155 85 -156 36 155 12 156 2 155 0 156 0 155 0 156 0 155 0 -155 0 156 0 155 0 156 0 155 0 156 0 155 0 156 0 -155 0 156 0 155 0 155 0 156 0 155 0 156 0 155 0 -156 0 155 0 156 0 155 0 155 0 1564 566 38 MP stroke -SO -c9 -155 1331 156 1096 155 870 156 659 155 467 156 304 155 174 155 85 -156 34 155 10 156 3 155 0 156 0 155 0 156 0 155 0 -155 0 156 0 155 0 156 0 155 0 156 0 155 0 156 0 -155 0 156 0 155 0 155 0 156 0 155 0 156 0 155 0 -156 0 155 0 156 0 155 0 155 0 1564 566 38 MP stroke -gr - -gs 1418 420 6044 5326 rc -0 j -0 -94 -94 0 0 94 94 0 1517 519 5 MP -DP -0 -94 -94 0 0 94 94 0 1672 519 5 MP -DP -0 -94 -94 0 0 94 94 0 1827 519 5 MP -DP -0 -94 -94 0 0 94 94 0 1983 519 5 MP -DP -0 -94 -94 0 0 94 94 0 2138 519 5 MP -DP -0 -94 -94 0 0 94 94 0 2294 519 5 MP -DP -0 -94 -94 0 0 94 94 0 2449 519 5 MP -DP -0 -94 -94 0 0 94 94 0 2605 519 5 MP -DP -0 -94 -94 0 0 94 94 0 2760 519 5 MP -DP -0 -94 -94 0 0 94 94 0 2916 519 5 MP -DP -0 -94 -94 0 0 94 94 0 3071 519 5 MP -DP -0 -94 -94 0 0 94 94 0 3226 519 5 MP -DP -0 -94 -94 0 0 94 94 0 3382 519 5 MP -DP -0 -94 -94 0 0 94 94 0 3537 519 5 MP -DP -0 -94 -94 0 0 94 94 0 3693 519 5 MP -DP -0 -94 -94 0 0 94 94 0 3848 519 5 MP -DP -0 -94 -94 0 0 94 94 0 4004 519 5 MP -DP -0 -94 -94 0 0 94 94 0 4159 519 5 MP -DP -0 -94 -94 0 0 94 94 0 4315 519 5 MP -DP -0 -94 -94 0 0 94 94 0 4470 519 5 MP -DP -0 -94 -94 0 0 94 94 0 4626 519 5 MP -DP -0 -94 -94 0 0 94 94 0 4781 519 5 MP -DP -0 -94 -94 0 0 94 94 0 4936 519 5 MP -DP -0 -94 -94 0 0 94 94 0 5092 519 5 MP -DP -0 -94 -94 0 0 94 94 0 5247 519 5 MP -DP -0 -94 -94 0 0 94 94 0 5403 519 5 MP -DP -0 -94 -94 0 0 94 94 0 5558 519 5 MP -DP -0 -94 -94 0 0 94 94 0 5714 522 5 MP -DP -0 -94 -94 0 0 94 94 0 5869 532 5 MP -DP -0 -94 -94 0 0 94 94 0 6025 566 5 MP -DP -0 -94 -94 0 0 94 94 0 6180 651 5 MP -DP -0 -94 -94 0 0 94 94 0 6335 825 5 MP -DP -0 -94 -94 0 0 94 94 0 6491 1129 5 MP -DP -0 -94 -94 0 0 94 94 0 6646 1596 5 MP -DP -0 -94 -94 0 0 94 94 0 6802 2255 5 MP -DP -0 -94 -94 0 0 94 94 0 6957 3125 5 MP -DP -0 -94 -94 0 0 94 94 0 7113 4221 5 MP -DP -0 -94 -94 0 0 94 94 0 7268 5552 5 MP -DP -gr - -gs 1564 565 9328 6151 rc -DA -c8 -155 792 156 656 155 666 156 595 155 485 156 430 155 307 156 256 -155 204 156 156 155 96 155 66 156 40 155 18 156 14 155 7 -156 2 155 1 156 0 155 0 155 0 156 0 155 0 156 0 -155 0 156 0 155 0 156 0 155 0 156 0 155 0 155 0 -156 0 155 0 156 0 155 0 156 0 155 0 156 0 155 0 -155 0 1564 566 42 MP stroke -SO -c9 -155 828 156 738 155 651 156 565 155 483 156 404 155 330 156 262 -155 200 156 146 155 102 155 66 156 40 155 22 156 12 155 5 -156 2 155 1 156 0 155 0 155 0 156 0 155 0 156 0 -155 0 156 0 155 0 156 0 155 0 156 0 155 0 155 0 -156 0 155 0 156 0 155 0 156 0 155 0 156 0 155 0 -155 0 1564 566 42 MP stroke -gr - -gs 1418 420 6666 5150 rc -1504 566 mt 1624 566 L -1564 506 mt 1564 626 L -1659 566 mt 1779 566 L -1719 506 mt 1719 626 L -1814 566 mt 1934 566 L -1874 506 mt 1874 626 L -1970 566 mt 2090 566 L -2030 506 mt 2030 626 L -2125 566 mt 2245 566 L -2185 506 mt 2185 626 L -2281 566 mt 2401 566 L -2341 506 mt 2341 626 L -2436 566 mt 2556 566 L -2496 506 mt 2496 626 L -2592 566 mt 2712 566 L -2652 506 mt 2652 626 L -2747 566 mt 2867 566 L -2807 506 mt 2807 626 L -2903 566 mt 3023 566 L -2963 506 mt 2963 626 L -3058 566 mt 3178 566 L -3118 506 mt 3118 626 L -3213 566 mt 3333 566 L -3273 506 mt 3273 626 L -3369 566 mt 3489 566 L -3429 506 mt 3429 626 L -3524 566 mt 3644 566 L -3584 506 mt 3584 626 L -3680 566 mt 3800 566 L -3740 506 mt 3740 626 L -3835 566 mt 3955 566 L -3895 506 mt 3895 626 L -3991 566 mt 4111 566 L -4051 506 mt 4051 626 L -4146 566 mt 4266 566 L -4206 506 mt 4206 626 L -4302 566 mt 4422 566 L -4362 506 mt 4362 626 L -4457 566 mt 4577 566 L -4517 506 mt 4517 626 L -4613 566 mt 4733 566 L -4673 506 mt 4673 626 L -4768 566 mt 4888 566 L -4828 506 mt 4828 626 L -4923 566 mt 5043 566 L -4983 506 mt 4983 626 L -5079 566 mt 5199 566 L -5139 506 mt 5139 626 L -5234 567 mt 5354 567 L -5294 507 mt 5294 627 L -5390 569 mt 5510 569 L -5450 509 mt 5450 629 L -5545 574 mt 5665 574 L -5605 514 mt 5605 634 L -5701 586 mt 5821 586 L -5761 526 mt 5761 646 L -5856 608 mt 5976 608 L -5916 548 mt 5916 668 L -6012 648 mt 6132 648 L -6072 588 mt 6072 708 L -6167 714 mt 6287 714 L -6227 654 mt 6227 774 L -6322 816 mt 6442 816 L -6382 756 mt 6382 876 L -6478 962 mt 6598 962 L -6538 902 mt 6538 1022 L -6633 1162 mt 6753 1162 L -6693 1102 mt 6693 1222 L -6789 1424 mt 6909 1424 L -6849 1364 mt 6849 1484 L -6944 1754 mt 7064 1754 L -7004 1694 mt 7004 1814 L -7100 2158 mt 7220 2158 L -7160 2098 mt 7160 2218 L -7255 2641 mt 7375 2641 L -7315 2581 mt 7315 2701 L -7411 3206 mt 7531 3206 L -7471 3146 mt 7471 3266 L -7566 3857 mt 7686 3857 L -7626 3797 mt 7626 3917 L -7722 4595 mt 7842 4595 L -7782 4535 mt 7782 4655 L -7877 5423 mt 7997 5423 L -7937 5363 mt 7937 5483 L -gr - -gs 1564 565 9328 6151 rc -DA -c8 -156 565 155 539 156 524 155 469 155 379 156 361 155 318 156 278 -155 191 156 179 155 151 156 119 155 103 156 79 155 51 155 42 -156 29 155 17 156 13 155 4 156 3 155 1 156 1 155 1 -155 0 156 0 155 0 156 0 155 0 156 0 155 0 156 0 -155 0 156 0 155 0 155 0 156 0 155 0 156 0 155 0 -156 0 155 0 156 0 155 0 155 0 1564 566 46 MP stroke -SO -c9 -156 559 155 513 156 467 155 423 155 380 156 337 155 297 156 257 -155 220 156 186 155 152 156 124 155 97 156 74 155 55 155 39 -156 27 155 18 156 11 155 7 156 3 155 3 156 1 155 0 -155 0 156 0 155 0 156 0 155 0 156 0 155 0 156 0 -155 0 156 0 155 0 155 0 156 0 155 0 156 0 155 0 -156 0 155 0 156 0 155 0 155 0 1564 566 46 MP stroke -gr - -gs 1418 420 7288 4543 rc -0 j --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 1513 536 13 MP -DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 1668 536 13 MP -DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 1823 536 13 MP -DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 1979 536 13 MP -DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 2134 536 13 MP -DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 2290 536 13 MP -DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 2445 536 13 MP -DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 2601 536 13 MP -DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 2756 536 13 MP -DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 2912 536 13 MP -DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 3067 536 13 MP -DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 3222 536 13 MP -DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 3378 536 13 MP -DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 3533 536 13 MP -DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 3689 536 13 MP -DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 3844 536 13 MP -DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 4000 536 13 MP -DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 4155 536 13 MP -DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 4311 536 13 MP -DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 4466 536 13 MP -DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 4622 536 13 MP -DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 4777 536 13 MP -DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 4932 536 13 MP -DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 5088 537 13 MP -DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 5243 540 13 MP -DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 5399 543 13 MP -DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 5554 550 13 MP -DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 5710 561 13 MP -DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 5865 579 13 MP -DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 6021 606 13 MP -DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 6176 645 13 MP -DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 6331 700 13 MP -DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 6487 774 13 MP -DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 6642 871 13 MP -DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 6798 995 13 MP -DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 6953 1147 13 MP -DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 7109 1333 13 MP -DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 7264 1553 13 MP -DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 7420 1810 13 MP -DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 7575 2107 13 MP -DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 7731 2444 13 MP -DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 7886 2824 13 MP -DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 8041 3247 13 MP -DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 8197 3714 13 MP -DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 8352 4227 13 MP -DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 8508 4786 13 MP -DP -gr - -gs 1564 565 9328 6151 rc -DA -c8 -155 267 156 465 155 427 155 334 156 330 155 207 156 302 155 247 -156 234 155 230 156 181 155 171 155 140 156 136 155 106 156 86 -155 85 156 81 155 56 156 50 155 44 156 28 155 23 155 16 -156 17 155 12 156 6 155 5 156 6 155 2 156 3 155 1 -155 0 156 0 155 0 156 0 155 0 156 0 155 0 156 0 -155 0 156 0 155 0 155 0 156 0 155 0 156 0 155 0 -156 0 155 0 156 0 155 0 155 0 1564 566 54 MP stroke -SO -c9 -155 389 156 368 155 346 155 325 156 304 155 283 156 262 155 242 -156 221 155 203 156 183 155 165 155 147 156 130 155 114 156 98 -155 85 156 72 155 60 156 49 155 40 156 32 155 24 155 19 -156 14 155 11 156 7 155 6 156 3 155 2 156 2 155 1 -155 1 156 0 155 0 156 0 155 0 156 0 155 0 156 0 -155 0 156 0 155 0 155 0 156 0 155 0 156 0 155 0 -156 0 155 0 156 0 155 0 155 0 1564 566 54 MP stroke -gr - -gs 1418 420 8531 4501 rc -1504 566 mt 1624 566 L -1564 506 mt 1564 626 L -1659 566 mt 1779 566 L -1719 506 mt 1719 626 L -1814 566 mt 1934 566 L -1874 506 mt 1874 626 L -1970 566 mt 2090 566 L -2030 506 mt 2030 626 L -2125 566 mt 2245 566 L -2185 506 mt 2185 626 L -2281 566 mt 2401 566 L -2341 506 mt 2341 626 L -2436 566 mt 2556 566 L -2496 506 mt 2496 626 L -2592 566 mt 2712 566 L -2652 506 mt 2652 626 L -2747 566 mt 2867 566 L -2807 506 mt 2807 626 L -2903 566 mt 3023 566 L -2963 506 mt 2963 626 L -3058 566 mt 3178 566 L -3118 506 mt 3118 626 L -3213 566 mt 3333 566 L -3273 506 mt 3273 626 L -3369 566 mt 3489 566 L -3429 506 mt 3429 626 L -3524 566 mt 3644 566 L -3584 506 mt 3584 626 L -3680 566 mt 3800 566 L -3740 506 mt 3740 626 L -3835 566 mt 3955 566 L -3895 506 mt 3895 626 L -3991 566 mt 4111 566 L -4051 506 mt 4051 626 L -4146 566 mt 4266 566 L -4206 506 mt 4206 626 L -4302 566 mt 4422 566 L -4362 506 mt 4362 626 L -4457 566 mt 4577 566 L -4517 506 mt 4517 626 L -4613 566 mt 4733 566 L -4673 506 mt 4673 626 L -4768 567 mt 4888 567 L -4828 507 mt 4828 627 L -4923 568 mt 5043 568 L -4983 508 mt 4983 628 L -5079 570 mt 5199 570 L -5139 510 mt 5139 630 L -5234 572 mt 5354 572 L -5294 512 mt 5294 632 L -5390 575 mt 5510 575 L -5450 515 mt 5450 635 L -5545 581 mt 5665 581 L -5605 521 mt 5605 641 L -5701 588 mt 5821 588 L -5761 528 mt 5761 648 L -5856 599 mt 5976 599 L -5916 539 mt 5916 659 L -6012 613 mt 6132 613 L -6072 553 mt 6072 673 L -6167 632 mt 6287 632 L -6227 572 mt 6227 692 L -6322 656 mt 6442 656 L -6382 596 mt 6382 716 L -6478 688 mt 6598 688 L -6538 628 mt 6538 748 L -6633 728 mt 6753 728 L -6693 668 mt 6693 788 L -6789 777 mt 6909 777 L -6849 717 mt 6849 837 L -6944 837 mt 7064 837 L -7004 777 mt 7004 897 L -7100 909 mt 7220 909 L -7160 849 mt 7160 969 L -7255 994 mt 7375 994 L -7315 934 mt 7315 1054 L -7411 1092 mt 7531 1092 L -7471 1032 mt 7471 1152 L -7566 1206 mt 7686 1206 L -7626 1146 mt 7626 1266 L -7722 1336 mt 7842 1336 L -7782 1276 mt 7782 1396 L -7877 1483 mt 7997 1483 L -7937 1423 mt 7937 1543 L -8032 1648 mt 8152 1648 L -8092 1588 mt 8092 1708 L -8188 1831 mt 8308 1831 L -8248 1771 mt 8248 1891 L -8343 2034 mt 8463 2034 L -8403 1974 mt 8403 2094 L -8499 2255 mt 8619 2255 L -8559 2195 mt 8559 2315 L -8654 2497 mt 8774 2497 L -8714 2437 mt 8714 2557 L -8810 2759 mt 8930 2759 L -8870 2699 mt 8870 2819 L -8965 3042 mt 9085 3042 L -9025 2982 mt 9025 3102 L -9121 3346 mt 9241 3346 L -9181 3286 mt 9181 3406 L -9276 3671 mt 9396 3671 L -9336 3611 mt 9336 3731 L -9431 4017 mt 9551 4017 L -9491 3957 mt 9491 4077 L -9587 4385 mt 9707 4385 L -9647 4325 mt 9647 4445 L -9742 4774 mt 9862 4774 L -9802 4714 mt 9802 4834 L -1522 524 mt 1606 608 L -1606 524 mt 1522 608 L -1677 524 mt 1761 608 L -1761 524 mt 1677 608 L -1832 524 mt 1916 608 L -1916 524 mt 1832 608 L -1988 524 mt 2072 608 L -2072 524 mt 1988 608 L -2143 524 mt 2227 608 L -2227 524 mt 2143 608 L -2299 524 mt 2383 608 L -2383 524 mt 2299 608 L -2454 524 mt 2538 608 L -2538 524 mt 2454 608 L -2610 524 mt 2694 608 L -2694 524 mt 2610 608 L -2765 524 mt 2849 608 L -2849 524 mt 2765 608 L -2921 524 mt 3005 608 L -3005 524 mt 2921 608 L -3076 524 mt 3160 608 L -3160 524 mt 3076 608 L -3231 524 mt 3315 608 L -3315 524 mt 3231 608 L -3387 524 mt 3471 608 L -3471 524 mt 3387 608 L -3542 524 mt 3626 608 L -3626 524 mt 3542 608 L -3698 524 mt 3782 608 L -3782 524 mt 3698 608 L -3853 524 mt 3937 608 L -3937 524 mt 3853 608 L -4009 524 mt 4093 608 L -4093 524 mt 4009 608 L -4164 524 mt 4248 608 L -4248 524 mt 4164 608 L -4320 524 mt 4404 608 L -4404 524 mt 4320 608 L -4475 524 mt 4559 608 L -4559 524 mt 4475 608 L -4631 524 mt 4715 608 L -4715 524 mt 4631 608 L -4786 525 mt 4870 609 L -4870 525 mt 4786 609 L -4941 526 mt 5025 610 L -5025 526 mt 4941 610 L -5097 528 mt 5181 612 L -5181 528 mt 5097 612 L -5252 530 mt 5336 614 L -5336 530 mt 5252 614 L -5408 533 mt 5492 617 L -5492 533 mt 5408 617 L -5563 539 mt 5647 623 L -5647 539 mt 5563 623 L -5719 546 mt 5803 630 L -5803 546 mt 5719 630 L -5874 557 mt 5958 641 L -5958 557 mt 5874 641 L -6030 571 mt 6114 655 L -6114 571 mt 6030 655 L -6185 590 mt 6269 674 L -6269 590 mt 6185 674 L -6340 614 mt 6424 698 L -6424 614 mt 6340 698 L -6496 646 mt 6580 730 L -6580 646 mt 6496 730 L -6651 686 mt 6735 770 L -6735 686 mt 6651 770 L -6807 735 mt 6891 819 L -6891 735 mt 6807 819 L -6962 795 mt 7046 879 L -7046 795 mt 6962 879 L -7118 867 mt 7202 951 L -7202 867 mt 7118 951 L -7273 952 mt 7357 1036 L -7357 952 mt 7273 1036 L -7429 1050 mt 7513 1134 L -7513 1050 mt 7429 1134 L -7584 1164 mt 7668 1248 L -7668 1164 mt 7584 1248 L -7740 1294 mt 7824 1378 L -7824 1294 mt 7740 1378 L -7895 1441 mt 7979 1525 L -7979 1441 mt 7895 1525 L -8050 1606 mt 8134 1690 L -8134 1606 mt 8050 1690 L -8206 1789 mt 8290 1873 L -8290 1789 mt 8206 1873 L -8361 1992 mt 8445 2076 L -8445 1992 mt 8361 2076 L -8517 2213 mt 8601 2297 L -8601 2213 mt 8517 2297 L -8672 2455 mt 8756 2539 L -8756 2455 mt 8672 2539 L -8828 2717 mt 8912 2801 L -8912 2717 mt 8828 2801 L -8983 3000 mt 9067 3084 L -9067 3000 mt 8983 3084 L -9139 3304 mt 9223 3388 L -9223 3304 mt 9139 3388 L -9294 3629 mt 9378 3713 L -9378 3629 mt 9294 3713 L -9449 3975 mt 9533 4059 L -9533 3975 mt 9449 4059 L -9605 4343 mt 9689 4427 L -9689 4343 mt 9605 4427 L -9760 4732 mt 9844 4816 L -9844 4732 mt 9760 4816 L -gr - -gs 1564 565 9328 6151 rc -gr - -0 sg -%%IncludeResource: font Helvetica -/Helvetica /WindowsLatin1Encoding 120 FMSR - -6083 7004 mt -(SINR) s -1223 3799 mt -90 rotate -(BLER) s -90 rotate -1547 6758 mt -( ) s -10875 607 mt -( ) s -6 w -1 sg -0 2058 1696 0 0 -2058 1601 6675 4 MP -PP --1696 0 0 2058 1696 0 0 -2058 1601 6675 5 MP stroke -4 w -DO -SO -6 w -0 sg -1601 4617 mt 3297 4617 L -1601 6675 mt 3297 6675 L -3297 6675 mt 3297 4617 L -1601 6675 mt 1601 4617 L -1601 6675 mt 3297 6675 L -1601 6675 mt 1601 4617 L -1601 4617 mt 3297 4617 L -1601 6675 mt 3297 6675 L -3297 6675 mt 3297 4617 L -1601 6675 mt 1601 4617 L -2073 4764 mt -(TB = 6000 \(AWGN\)) s -gs 1601 4617 1697 2059 rc -DA -24 w -c8 -363 0 1673 4722 2 MP stroke -SO -gr - -24 w -c8 -0 sg -2073 4932 mt -(TB = 6000 \(estimated\)) s -gs 1601 4617 1697 2059 rc -c9 -363 0 1673 4890 2 MP stroke -gs 1708 4744 293 293 rc -0 j -69 119 -138 0 69 -119 1854 4969 4 MP -DP -gr - -gr - -c9 -0 sg -2073 5100 mt -(TB = 4000 \(AWGN\)) s -gs 1601 4617 1697 2059 rc -DA -c8 -363 0 1673 5058 2 MP stroke -SO -gr - -c8 -0 sg -2073 5268 mt -(TB = 4000 \(estimated\)) s -gs 1601 4617 1697 2059 rc -c9 -363 0 1673 5226 2 MP stroke -gs 1708 5080 293 293 rc -0 j --69 119 -69 -119 138 0 1785 5266 4 MP -DP -gr - -gr - -c9 -0 sg -2073 5436 mt -(TB = 2560 \(AWGN\)) s -gs 1601 4617 1697 2059 rc -DA -c8 -363 0 1673 5394 2 MP stroke -SO -gr - -c8 -0 sg -2073 5604 mt -(TB = 2560 \(estimated\)) s -gs 1601 4617 1697 2059 rc -c9 -363 0 1673 5562 2 MP stroke -gs 1708 5416 293 293 rc -0 j -0 -94 -94 0 0 94 94 0 1807 5515 5 MP -DP -gr - -gr - -c9 -0 sg -2073 5773 mt -(TB = 1024 \(AWGN\)) s -gs 1601 4617 1697 2059 rc -DA -c8 -363 0 1673 5730 2 MP stroke -SO -gr - -c8 -0 sg -2073 5941 mt -(TB = 1024 \(estimated\)) s -gs 1601 4617 1697 2059 rc -c9 -363 0 1673 5898 2 MP stroke -gs 1708 5752 293 293 rc -1794 5898 mt 1914 5898 L -1854 5838 mt 1854 5958 L -gr - -gr - -c9 -0 sg -2073 6109 mt -(TB = 512 \(AWGN\)) s -gs 1601 4617 1697 2059 rc -DA -c8 -363 0 1673 6066 2 MP stroke -SO -gr - -c8 -0 sg -2073 6277 mt -(TB = 512 \(estimated\)) s -gs 1601 4617 1697 2059 rc -c9 -363 0 1673 6233 2 MP stroke -gs 1708 6087 293 293 rc -0 j --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 1803 6203 13 MP -DP -gr - -gr - -c9 -0 sg -2073 6445 mt -(TB = 256 \(AWGN\)) s -gs 1601 4617 1697 2059 rc -DA -c8 -363 0 1673 6401 2 MP stroke -SO -gr - -c8 -0 sg -2073 6613 mt -(TB = 256 \(estimated\)) s -gs 1601 4617 1697 2059 rc -c9 -363 0 1673 6569 2 MP stroke -gr - -c9 -gs 1708 6423 293 293 rc -1794 6569 mt 1914 6569 L -1854 6509 mt 1854 6629 L -1812 6527 mt 1896 6611 L -1896 6527 mt 1812 6611 L -gr - -gs 1601 4617 1697 2059 rc -6 w -gr - -6 w - -end %%Color Dict - -eplot -%%EndObject - -epage -end - -showpage - -%%Trailer -%%EOF - -cleartomark -countdictstack exch sub { end } repeat -restore grestore -% -% End Imported PIC File: /home/mmiozzo/ns3/lena/ns-3-lena-pem/src/lte/doc/source/figures/MCS_14.eps -%%EndDocument -% -% Ellipse -45.000 slw -n 10035 4455 324 324 0 360 DrawEllipse gs col4 s gr - -/Helvetica-Bold ff 349.25 scf sf -10125 4050 m -gs 1 -1 sc (H) col4 sh gr -% here ends figure; -pagefooter -showpage -%%Trailer -%EOF
--- a/src/lte/doc/source/figures/MCS_2_test.eps Fri May 18 10:30:14 2012 +0200 +++ b/src/lte/doc/source/figures/MCS_2_test.eps Tue May 29 10:42:17 2012 +0200 @@ -1,9 +1,9 @@ %!PS-Adobe-2.0 EPSF-2.0 %%Title: MCS_2_test.fig %%Creator: fig2dev Version 3.2 Patchlevel 5a -%%CreationDate: Tue Jan 10 16:58:02 2012 -%%BoundingBox: 0 0 1095 718 -%Magnification: 1.0000 +%%CreationDate: Tue May 22 12:12:53 2012 +%%BoundingBox: 0 0 548 359 +%Magnification: 0.5000 %%EndComments %%BeginProlog /$F2psDict 200 dict def @@ -94,13 +94,13 @@ /pageheader { save -newpath 0 718 moveto 0 0 lineto 1095 0 lineto 1095 718 lineto closepath clip newpath --2.8 748.3 translate +newpath 0 359 moveto 0 0 lineto 548 0 lineto 548 359 lineto closepath clip newpath +-1.4 374.2 translate 1 -1 scale $F2psBegin 10 setmiterlimit 0 slj 0 slc - 0.06299 0.06299 sc + 0.03150 0.03150 sc } bind def /pagefooter { $F2psEnd @@ -117,29 +117,29 @@ % % pen to black in case this eps object doesn't set color first 0 0 0 setrgbcolor -% Begin Imported EPS File: /home/mmiozzo/ns3/lena/ns-3-lena-pem/src/lte/doc/source/figures/MCS_3_test.eps -%%BeginDocument: /home/mmiozzo/ns3/lena/ns-3-lena-pem/src/lte/doc/source/figures/MCS_3_test.eps +% Begin Imported EPS File: /home/mmiozzo/sandbox/lena/ns-3-lena-dev/src/lte/doc/source/figures/MCS_3.eps +%%BeginDocument: /home/mmiozzo/sandbox/lena/ns-3-lena-dev/src/lte/doc/source/figures/MCS_3.eps % n gs 45 495 tr -17.335329 -18.100159 sc +17.439759 -18.100159 sc 0 -629 tr -203 -106 tr +200 -106 tr sa -n -203 106 m 799 106 l 799 735 l -203 735 l cp clip n +n -200 106 m 796 106 l 796 735 l -200 735 l cp clip n countdictstack mark /showpage {} def % EPS file follows: %!PS-Adobe-3.0 EPSF-3.0 %%Creator: MATLAB, The Mathworks, Inc. Version 7.8.0.347 (R2009a). Operating System: Microsoft Windows XP. -%%Title: C:\Documents and Settings\Marco Miozzo\My Documents\MATLAB\Final\MCS_27_allTBsizes\MCS_3_test.eps -%%CreationDate: 01/10/2012 16:41:09 +%%Title: \\Hercules.cttc.es\mmiozzo\Ubiquisys\ErrorModel\29_MCS_PLOTS\MCS_PLOTS\MCS_3.eps +%%CreationDate: 05/17/2012 17:12:20 %%DocumentNeededFonts: Helvetica %%DocumentProcessColors: Cyan Magenta Yellow Black %%LanguageLevel: 2 %%Pages: 1 -%%BoundingBox: -203 106 799 735 +%%BoundingBox: -200 106 796 735 %%EndComments %%BeginProlog @@ -302,7 +302,7 @@ %%Page: 1 1 %%BeginPageSetup -%%PageBoundingBox: -203 106 799 735 +%%PageBoundingBox: -200 106 796 735 MathWorks begin bpage %%EndPageSetup @@ -311,9 +311,9 @@ bplot /dpi2point 12 def -portraitMode -2436 8820 csm +portraitMode -2400 8820 csm - 0 0 12034 7546 rc + 0 0 11962 7546 rc 85 dict begin %Colortable dictionary /c0 { 0.000000 0.000000 0.000000 sr} bdef /c1 { 1.000000 1.000000 1.000000 sr} bdef @@ -326,1147 +326,1001 @@ c0 1 j 1 sg - 0 0 12035 7547 rf + 0 0 11963 7547 rf 6 w -0 6150 9327 0 0 -6150 1564 6716 4 MP +0 6150 9271 0 0 -6150 1555 6716 4 MP PP --9327 0 0 6150 9327 0 0 -6150 1564 6716 5 MP stroke +-9271 0 0 6150 9271 0 0 -6150 1555 6716 5 MP stroke 4 w DO 0 sg -1564 6716 mt 1564 566 L -1564 566 mt 1564 566 L -2600 6716 mt 2600 566 L -2600 566 mt 2600 566 L -3636 6716 mt 3636 566 L -3636 566 mt 3636 566 L -4673 6716 mt 4673 566 L -4673 566 mt 4673 566 L -5709 6716 mt 5709 566 L -5709 566 mt 5709 566 L -6745 6716 mt 6745 566 L -6745 566 mt 6745 566 L -7782 6716 mt 7782 566 L -7782 566 mt 7782 566 L -8818 6716 mt 8818 566 L -8818 566 mt 8818 566 L -9854 6716 mt 9854 566 L -9854 566 mt 9854 566 L -10891 6716 mt 10891 566 L -10891 566 mt 10891 566 L -1564 6716 mt 10891 6716 L -10891 6716 mt 10891 6716 L -1564 4666 mt 10891 4666 L -10891 4666 mt 10891 4666 L -1564 2616 mt 10891 2616 L -10891 2616 mt 10891 2616 L -1564 566 mt 10891 566 L -10891 566 mt 10891 566 L +1555 6716 mt 1555 566 L +1555 566 mt 1555 566 L +2879 6716 mt 2879 566 L +2879 566 mt 2879 566 L +4203 6716 mt 4203 566 L +4203 566 mt 4203 566 L +5528 6716 mt 5528 566 L +5528 566 mt 5528 566 L +6852 6716 mt 6852 566 L +6852 566 mt 6852 566 L +8177 6716 mt 8177 566 L +8177 566 mt 8177 566 L +9501 6716 mt 9501 566 L +9501 566 mt 9501 566 L +10826 6716 mt 10826 566 L +10826 566 mt 10826 566 L +1555 6716 mt 10826 6716 L +10826 6716 mt 10826 6716 L +1555 5178 mt 10826 5178 L +10826 5178 mt 10826 5178 L +1555 3641 mt 10826 3641 L +10826 3641 mt 10826 3641 L +1555 2103 mt 10826 2103 L +10826 2103 mt 10826 2103 L +1555 566 mt 10826 566 L +10826 566 mt 10826 566 L SO 6 w -1564 566 mt 10891 566 L -1564 6716 mt 10891 6716 L -10891 6716 mt 10891 566 L -1564 6716 mt 1564 566 L -1564 6716 mt 10891 6716 L - - -1564 6716 mt 1564 566 L -1564 6716 mt 1564 6622 L -1564 566 mt 1564 659 L +1555 566 mt 10826 566 L +1555 6716 mt 10826 6716 L +10826 6716 mt 10826 566 L +1555 6716 mt 1555 566 L +1555 6716 mt 10826 6716 L +1555 6716 mt 1555 566 L +1555 6716 mt 1555 6623 L +1555 566 mt 1555 658 L %%IncludeResource: font Helvetica /Helvetica /WindowsLatin1Encoding 120 FMSR -1461 6861 mt +1452 6861 mt +(-7) s +2879 6716 mt 2879 6623 L +2879 566 mt 2879 658 L +2726 6861 mt +(-6.5) s +4203 6716 mt 4203 6623 L +4203 566 mt 4203 658 L +4100 6861 mt +(-6) s +5528 6716 mt 5528 6623 L +5528 566 mt 5528 658 L +5375 6861 mt +(-5.5) s +6852 6716 mt 6852 6623 L +6852 566 mt 6852 658 L +6749 6861 mt (-5) s -2600 6716 mt 2600 6622 L -2600 566 mt 2600 659 L -2447 6861 mt +8177 6716 mt 8177 6623 L +8177 566 mt 8177 658 L +8024 6861 mt (-4.5) s -3636 6716 mt 3636 6622 L -3636 566 mt 3636 659 L -3533 6861 mt +9501 6716 mt 9501 6623 L +9501 566 mt 9501 658 L +9398 6861 mt (-4) s -4673 6716 mt 4673 6622 L -4673 566 mt 4673 659 L -4520 6861 mt +10826 6716 mt 10826 6623 L +10826 566 mt 10826 658 L +10673 6861 mt (-3.5) s -5709 6716 mt 5709 6622 L -5709 566 mt 5709 659 L -5606 6861 mt -(-3) s -6745 6716 mt 6745 6622 L -6745 566 mt 6745 659 L -6592 6861 mt -(-2.5) s -7782 6716 mt 7782 6622 L -7782 566 mt 7782 659 L -7679 6861 mt -(-2) s -8818 6716 mt 8818 6622 L -8818 566 mt 8818 659 L -8665 6861 mt -(-1.5) s -9854 6716 mt 9854 6622 L -9854 566 mt 9854 659 L -9751 6861 mt -(-1) s -10891 6716 mt 10891 6622 L -10891 566 mt 10891 659 L -10738 6861 mt -(-0.5) s -1564 6716 mt 1610 6716 L -10891 6716 mt 10844 6716 L +1555 6716 mt 1601 6716 L +10826 6716 mt 10779 6716 L +DO +1555 6716 mt 10826 6716 L +10826 6716 mt 10826 6716 L +SO +1555 6716 mt 1647 6716 L +10826 6716 mt 10733 6716 L +1296 6760 mt +(10) s +%%IncludeResource: font Helvetica +/Helvetica /WindowsLatin1Encoding 80 FMSR + +1429 6686 mt +(-4) s +1555 6253 mt 1601 6253 L +10826 6253 mt 10779 6253 L +DO +1555 6253 mt 10826 6253 L +10826 6253 mt 10826 6253 L +SO +1555 5982 mt 1601 5982 L +10826 5982 mt 10779 5982 L +DO +1555 5982 mt 10826 5982 L +10826 5982 mt 10826 5982 L +SO +1555 5790 mt 1601 5790 L +10826 5790 mt 10779 5790 L +DO +1555 5790 mt 10826 5790 L +10826 5790 mt 10826 5790 L +SO +1555 5641 mt 1601 5641 L +10826 5641 mt 10779 5641 L DO -1564 6716 mt 10891 6716 L -10891 6716 mt 10891 6716 L +1555 5641 mt 10826 5641 L +10826 5641 mt 10826 5641 L +SO +1555 5519 mt 1601 5519 L +10826 5519 mt 10779 5519 L +DO +1555 5519 mt 10826 5519 L +10826 5519 mt 10826 5519 L +SO +1555 5416 mt 1601 5416 L +10826 5416 mt 10779 5416 L +DO +1555 5416 mt 10826 5416 L +10826 5416 mt 10826 5416 L SO -1564 6716 mt 1657 6716 L -10891 6716 mt 10797 6716 L -1305 6760 mt +1555 5327 mt 1601 5327 L +10826 5327 mt 10779 5327 L +DO +1555 5327 mt 10826 5327 L +10826 5327 mt 10826 5327 L +SO +1555 5248 mt 1601 5248 L +10826 5248 mt 10779 5248 L +DO +1555 5248 mt 10826 5248 L +10826 5248 mt 10826 5248 L +SO +1555 5178 mt 1601 5178 L +10826 5178 mt 10779 5178 L +DO +1555 5178 mt 10826 5178 L +10826 5178 mt 10826 5178 L +SO +1555 5178 mt 1647 5178 L +10826 5178 mt 10733 5178 L +%%IncludeResource: font Helvetica +/Helvetica /WindowsLatin1Encoding 120 FMSR + +1296 5222 mt (10) s %%IncludeResource: font Helvetica /Helvetica /WindowsLatin1Encoding 80 FMSR -1438 6686 mt +1429 5148 mt (-3) s -1564 6098 mt 1610 6098 L -10891 6098 mt 10844 6098 L +1555 4715 mt 1601 4715 L +10826 4715 mt 10779 4715 L DO -1564 6098 mt 10891 6098 L -10891 6098 mt 10891 6098 L +1555 4715 mt 10826 4715 L +10826 4715 mt 10826 4715 L SO -1564 5737 mt 1610 5737 L -10891 5737 mt 10844 5737 L +1555 4444 mt 1601 4444 L +10826 4444 mt 10779 4444 L DO -1564 5737 mt 10891 5737 L -10891 5737 mt 10891 5737 L +1555 4444 mt 10826 4444 L +10826 4444 mt 10826 4444 L SO -1564 5481 mt 1610 5481 L -10891 5481 mt 10844 5481 L +1555 4252 mt 1601 4252 L +10826 4252 mt 10779 4252 L DO -1564 5481 mt 10891 5481 L -10891 5481 mt 10891 5481 L +1555 4252 mt 10826 4252 L +10826 4252 mt 10826 4252 L SO -1564 5283 mt 1610 5283 L -10891 5283 mt 10844 5283 L +1555 4103 mt 1601 4103 L +10826 4103 mt 10779 4103 L DO -1564 5283 mt 10891 5283 L -10891 5283 mt 10891 5283 L +1555 4103 mt 10826 4103 L +10826 4103 mt 10826 4103 L SO -1564 5120 mt 1610 5120 L -10891 5120 mt 10844 5120 L +1555 3982 mt 1601 3982 L +10826 3982 mt 10779 3982 L DO -1564 5120 mt 10891 5120 L -10891 5120 mt 10891 5120 L +1555 3982 mt 10826 3982 L +10826 3982 mt 10826 3982 L SO -1564 4983 mt 1610 4983 L -10891 4983 mt 10844 4983 L +1555 3879 mt 1601 3879 L +10826 3879 mt 10779 3879 L DO -1564 4983 mt 10891 4983 L -10891 4983 mt 10891 4983 L +1555 3879 mt 10826 3879 L +10826 3879 mt 10826 3879 L SO -1564 4864 mt 1610 4864 L -10891 4864 mt 10844 4864 L +1555 3789 mt 1601 3789 L +10826 3789 mt 10779 3789 L DO -1564 4864 mt 10891 4864 L -10891 4864 mt 10891 4864 L +1555 3789 mt 10826 3789 L +10826 3789 mt 10826 3789 L SO -1564 4759 mt 1610 4759 L -10891 4759 mt 10844 4759 L +1555 3711 mt 1601 3711 L +10826 3711 mt 10779 3711 L DO -1564 4759 mt 10891 4759 L -10891 4759 mt 10891 4759 L +1555 3711 mt 10826 3711 L +10826 3711 mt 10826 3711 L SO -1564 4666 mt 1610 4666 L -10891 4666 mt 10844 4666 L +1555 3641 mt 1601 3641 L +10826 3641 mt 10779 3641 L DO -1564 4666 mt 10891 4666 L -10891 4666 mt 10891 4666 L +1555 3641 mt 10826 3641 L +10826 3641 mt 10826 3641 L SO -1564 4666 mt 1657 4666 L -10891 4666 mt 10797 4666 L +1555 3641 mt 1647 3641 L +10826 3641 mt 10733 3641 L %%IncludeResource: font Helvetica /Helvetica /WindowsLatin1Encoding 120 FMSR -1305 4710 mt +1296 3685 mt (10) s %%IncludeResource: font Helvetica /Helvetica /WindowsLatin1Encoding 80 FMSR -1438 4636 mt +1429 3611 mt (-2) s -1564 4048 mt 1610 4048 L -10891 4048 mt 10844 4048 L +1555 3178 mt 1601 3178 L +10826 3178 mt 10779 3178 L DO -1564 4048 mt 10891 4048 L -10891 4048 mt 10891 4048 L +1555 3178 mt 10826 3178 L +10826 3178 mt 10826 3178 L SO -1564 3687 mt 1610 3687 L -10891 3687 mt 10844 3687 L +1555 2907 mt 1601 2907 L +10826 2907 mt 10779 2907 L DO -1564 3687 mt 10891 3687 L -10891 3687 mt 10891 3687 L +1555 2907 mt 10826 2907 L +10826 2907 mt 10826 2907 L SO -1564 3431 mt 1610 3431 L -10891 3431 mt 10844 3431 L +1555 2715 mt 1601 2715 L +10826 2715 mt 10779 2715 L DO -1564 3431 mt 10891 3431 L -10891 3431 mt 10891 3431 L +1555 2715 mt 10826 2715 L +10826 2715 mt 10826 2715 L SO -1564 3233 mt 1610 3233 L -10891 3233 mt 10844 3233 L +1555 2566 mt 1601 2566 L +10826 2566 mt 10779 2566 L DO -1564 3233 mt 10891 3233 L -10891 3233 mt 10891 3233 L +1555 2566 mt 10826 2566 L +10826 2566 mt 10826 2566 L SO -1564 3070 mt 1610 3070 L -10891 3070 mt 10844 3070 L +1555 2444 mt 1601 2444 L +10826 2444 mt 10779 2444 L DO -1564 3070 mt 10891 3070 L -10891 3070 mt 10891 3070 L +1555 2444 mt 10826 2444 L +10826 2444 mt 10826 2444 L SO -1564 2933 mt 1610 2933 L -10891 2933 mt 10844 2933 L +1555 2341 mt 1601 2341 L +10826 2341 mt 10779 2341 L DO -1564 2933 mt 10891 2933 L -10891 2933 mt 10891 2933 L +1555 2341 mt 10826 2341 L +10826 2341 mt 10826 2341 L SO -1564 2814 mt 1610 2814 L -10891 2814 mt 10844 2814 L +1555 2252 mt 1601 2252 L +10826 2252 mt 10779 2252 L DO -1564 2814 mt 10891 2814 L -10891 2814 mt 10891 2814 L +1555 2252 mt 10826 2252 L +10826 2252 mt 10826 2252 L SO -1564 2709 mt 1610 2709 L -10891 2709 mt 10844 2709 L +1555 2173 mt 1601 2173 L +10826 2173 mt 10779 2173 L DO -1564 2709 mt 10891 2709 L -10891 2709 mt 10891 2709 L +1555 2173 mt 10826 2173 L +10826 2173 mt 10826 2173 L SO -1564 2616 mt 1610 2616 L -10891 2616 mt 10844 2616 L +1555 2103 mt 1601 2103 L +10826 2103 mt 10779 2103 L DO -1564 2616 mt 10891 2616 L -10891 2616 mt 10891 2616 L +1555 2103 mt 10826 2103 L +10826 2103 mt 10826 2103 L SO -1564 2616 mt 1657 2616 L -10891 2616 mt 10797 2616 L +1555 2103 mt 1647 2103 L +10826 2103 mt 10733 2103 L %%IncludeResource: font Helvetica /Helvetica /WindowsLatin1Encoding 120 FMSR -1305 2660 mt +1296 2147 mt (10) s %%IncludeResource: font Helvetica /Helvetica /WindowsLatin1Encoding 80 FMSR -1438 2586 mt +1429 2073 mt (-1) s -1564 1998 mt 1610 1998 L -10891 1998 mt 10844 1998 L +1555 1640 mt 1601 1640 L +10826 1640 mt 10779 1640 L DO -1564 1998 mt 10891 1998 L -10891 1998 mt 10891 1998 L +1555 1640 mt 10826 1640 L +10826 1640 mt 10826 1640 L SO -1564 1637 mt 1610 1637 L -10891 1637 mt 10844 1637 L +1555 1369 mt 1601 1369 L +10826 1369 mt 10779 1369 L DO -1564 1637 mt 10891 1637 L -10891 1637 mt 10891 1637 L +1555 1369 mt 10826 1369 L +10826 1369 mt 10826 1369 L SO -1564 1381 mt 1610 1381 L -10891 1381 mt 10844 1381 L +1555 1177 mt 1601 1177 L +10826 1177 mt 10779 1177 L DO -1564 1381 mt 10891 1381 L -10891 1381 mt 10891 1381 L +1555 1177 mt 10826 1177 L +10826 1177 mt 10826 1177 L SO -1564 1183 mt 1610 1183 L -10891 1183 mt 10844 1183 L +1555 1028 mt 1601 1028 L +10826 1028 mt 10779 1028 L DO -1564 1183 mt 10891 1183 L -10891 1183 mt 10891 1183 L +1555 1028 mt 10826 1028 L +10826 1028 mt 10826 1028 L SO -1564 1020 mt 1610 1020 L -10891 1020 mt 10844 1020 L +1555 907 mt 1601 907 L +10826 907 mt 10779 907 L DO -1564 1020 mt 10891 1020 L -10891 1020 mt 10891 1020 L +1555 907 mt 10826 907 L +10826 907 mt 10826 907 L SO -1564 883 mt 1610 883 L -10891 883 mt 10844 883 L +1555 804 mt 1601 804 L +10826 804 mt 10779 804 L DO -1564 883 mt 10891 883 L -10891 883 mt 10891 883 L +1555 804 mt 10826 804 L +10826 804 mt 10826 804 L SO -1564 764 mt 1610 764 L -10891 764 mt 10844 764 L +1555 714 mt 1601 714 L +10826 714 mt 10779 714 L DO -1564 764 mt 10891 764 L -10891 764 mt 10891 764 L +1555 714 mt 10826 714 L +10826 714 mt 10826 714 L SO -1564 659 mt 1610 659 L -10891 659 mt 10844 659 L +1555 636 mt 1601 636 L +10826 636 mt 10779 636 L DO -1564 659 mt 10891 659 L -10891 659 mt 10891 659 L +1555 636 mt 10826 636 L +10826 636 mt 10826 636 L SO -1564 566 mt 1610 566 L -10891 566 mt 10844 566 L +1555 566 mt 1601 566 L +10826 566 mt 10779 566 L DO -1564 566 mt 10891 566 L -10891 566 mt 10891 566 L +1555 566 mt 10826 566 L +10826 566 mt 10826 566 L SO -1564 566 mt 1657 566 L -10891 566 mt 10797 566 L +1555 566 mt 1647 566 L +10826 566 mt 10733 566 L %%IncludeResource: font Helvetica /Helvetica /WindowsLatin1Encoding 120 FMSR -1305 610 mt +1296 610 mt (10) s %%IncludeResource: font Helvetica /Helvetica /WindowsLatin1Encoding 80 FMSR -1438 536 mt +1429 536 mt (0) s -1564 566 mt 10891 566 L -1564 6716 mt 10891 6716 L -10891 6716 mt 10891 566 L -1564 6716 mt 1564 566 L -gs 1564 565 9328 6151 rc +1555 566 mt 10826 566 L +1555 6716 mt 10826 6716 L +10826 6716 mt 10826 566 L +1555 6716 mt 1555 566 L +gs 1555 566 9272 6151 rc DA 24 w /c8 { 1.000000 0.000000 0.000000 sr} bdef c8 -207 1668 207 1311 208 634 207 225 207 51 207 5 208 0 207 0 -207 0 208 0 207 0 207 0 207 0 208 0 207 0 207 0 -207 0 208 0 207 0 207 0 207 0 1564 566 22 MP stroke +265 1762 265 1483 265 880 265 357 264 109 265 19 265 2 265 0 +265 0 265 0 265 0 265 0 264 0 1555 566 14 MP stroke SO /c9 { 0.000000 0.000000 1.000000 sr} bdef c9 -207 2023 207 1257 208 638 207 229 207 48 207 5 208 0 207 0 -207 0 208 0 207 0 207 0 207 0 208 0 207 0 207 0 -207 0 208 0 207 0 207 0 207 0 1564 566 22 MP stroke +265 2136 265 1434 265 831 265 372 264 108 265 16 265 1 265 0 +265 0 265 0 265 0 265 0 264 0 1555 566 14 MP stroke gr 24 w c9 -gs 1418 420 4645 4493 rc +gs 1409 420 3736 5191 rc 0 j -69 119 -138 0 69 -119 1564 645 4 MP +69 119 -138 0 69 -119 1555 645 4 MP DP -69 119 -138 0 69 -119 1771 645 4 MP -DP -69 119 -138 0 69 -119 1978 645 4 MP -DP -69 119 -138 0 69 -119 2185 645 4 MP +69 119 -138 0 69 -119 1819 645 4 MP DP -69 119 -138 0 69 -119 2393 645 4 MP +69 119 -138 0 69 -119 2084 645 4 MP DP -69 119 -138 0 69 -119 2600 645 4 MP -DP -69 119 -138 0 69 -119 2807 645 4 MP +69 119 -138 0 69 -119 2349 645 4 MP DP -69 119 -138 0 69 -119 3014 645 4 MP +69 119 -138 0 69 -119 2614 645 4 MP DP -69 119 -138 0 69 -119 3222 645 4 MP -DP -69 119 -138 0 69 -119 3429 645 4 MP +69 119 -138 0 69 -119 2879 645 4 MP DP -69 119 -138 0 69 -119 3636 645 4 MP +69 119 -138 0 69 -119 3144 645 4 MP DP -69 119 -138 0 69 -119 3843 645 4 MP -DP -69 119 -138 0 69 -119 4051 645 4 MP +69 119 -138 0 69 -119 3409 646 4 MP DP -69 119 -138 0 69 -119 4258 645 4 MP +69 119 -138 0 69 -119 3674 662 4 MP DP -69 119 -138 0 69 -119 4465 645 4 MP -DP -69 119 -138 0 69 -119 4673 645 4 MP +69 119 -138 0 69 -119 3938 770 4 MP DP -69 119 -138 0 69 -119 4880 650 4 MP +69 119 -138 0 69 -119 4203 1142 4 MP DP -69 119 -138 0 69 -119 5087 698 4 MP -DP -69 119 -138 0 69 -119 5294 927 4 MP +69 119 -138 0 69 -119 4468 1973 4 MP DP -69 119 -138 0 69 -119 5502 1565 4 MP +69 119 -138 0 69 -119 4733 3407 4 MP DP -69 119 -138 0 69 -119 5709 2822 4 MP -DP -69 119 -138 0 69 -119 5916 4845 4 MP +69 119 -138 0 69 -119 4998 5543 4 MP DP gr -gs 1564 565 9328 6151 rc +gs 1555 566 9272 6151 rc DA c8 -207 1509 207 1331 207 908 208 510 207 239 207 72 207 13 208 2 -207 0 207 0 208 0 207 0 207 0 207 0 208 0 207 0 -207 0 207 0 208 0 207 0 207 0 207 0 1564 566 23 MP stroke +265 1645 265 904 265 633 265 346 264 120 265 32 265 6 265 0 +265 0 265 0 265 0 265 0 264 0 1555 566 14 MP stroke SO c9 -207 1950 207 1401 207 914 208 515 207 231 207 74 207 15 208 2 -207 0 207 0 208 0 207 0 207 0 207 0 208 0 207 0 -207 0 207 0 208 0 207 0 207 0 207 0 1564 566 23 MP stroke +265 1516 265 1049 265 645 265 331 264 126 265 32 265 5 265 0 +265 0 265 0 265 0 265 0 264 0 1555 566 14 MP stroke +gr + +gs 1409 420 3736 3997 rc +0 j +-69 119 -69 -119 138 0 1486 606 4 MP +DP +-69 119 -69 -119 138 0 1750 606 4 MP +DP +-69 119 -69 -119 138 0 2015 606 4 MP +DP +-69 119 -69 -119 138 0 2280 606 4 MP +DP +-69 119 -69 -119 138 0 2545 606 4 MP +DP +-69 119 -69 -119 138 0 2810 606 4 MP +DP +-69 119 -69 -119 138 0 3075 606 4 MP +DP +-69 119 -69 -119 138 0 3340 611 4 MP +DP +-69 119 -69 -119 138 0 3605 643 4 MP +DP +-69 119 -69 -119 138 0 3869 769 4 MP +DP +-69 119 -69 -119 138 0 4134 1100 4 MP +DP +-69 119 -69 -119 138 0 4399 1745 4 MP +DP +-69 119 -69 -119 138 0 4664 2794 4 MP +DP +-69 119 -69 -119 138 0 4929 4310 4 MP +DP gr -gs 1418 420 4852 5395 rc +gs 1555 566 9272 6151 rc +DA +c8 +265 1107 265 1022 265 640 265 476 265 241 264 140 265 44 265 12 +265 4 265 0 265 0 265 0 265 0 264 0 1555 566 15 MP stroke +SO +c9 +265 1275 265 966 265 690 265 451 265 261 264 126 265 48 265 14 +265 3 265 0 265 0 265 0 265 0 264 0 1555 566 15 MP stroke +gr + +gs 1409 420 4001 4127 rc 0 j --69 119 -69 -119 138 0 1495 606 4 MP -DP --69 119 -69 -119 138 0 1702 606 4 MP -DP --69 119 -69 -119 138 0 1909 606 4 MP -DP --69 119 -69 -119 138 0 2116 606 4 MP -DP --69 119 -69 -119 138 0 2324 606 4 MP +0 -94 -94 0 0 94 94 0 1508 519 5 MP DP --69 119 -69 -119 138 0 2531 606 4 MP -DP --69 119 -69 -119 138 0 2738 606 4 MP -DP --69 119 -69 -119 138 0 2945 606 4 MP +0 -94 -94 0 0 94 94 0 1772 519 5 MP DP --69 119 -69 -119 138 0 3153 606 4 MP +0 -94 -94 0 0 94 94 0 2037 519 5 MP DP --69 119 -69 -119 138 0 3360 606 4 MP -DP --69 119 -69 -119 138 0 3567 606 4 MP +0 -94 -94 0 0 94 94 0 2302 519 5 MP DP --69 119 -69 -119 138 0 3774 606 4 MP +0 -94 -94 0 0 94 94 0 2567 519 5 MP DP --69 119 -69 -119 138 0 3982 606 4 MP -DP --69 119 -69 -119 138 0 4189 606 4 MP +0 -94 -94 0 0 94 94 0 2832 519 5 MP DP --69 119 -69 -119 138 0 4396 606 4 MP +0 -94 -94 0 0 94 94 0 3097 522 5 MP DP --69 119 -69 -119 138 0 4604 608 4 MP +0 -94 -94 0 0 94 94 0 3362 536 5 MP DP --69 119 -69 -119 138 0 4811 623 4 MP +0 -94 -94 0 0 94 94 0 3627 584 5 MP DP --69 119 -69 -119 138 0 5018 697 4 MP +0 -94 -94 0 0 94 94 0 3891 710 5 MP DP --69 119 -69 -119 138 0 5225 928 4 MP +0 -94 -94 0 0 94 94 0 4156 971 5 MP DP --69 119 -69 -119 138 0 5433 1443 4 MP +0 -94 -94 0 0 94 94 0 4421 1422 5 MP DP --69 119 -69 -119 138 0 5640 2357 4 MP +0 -94 -94 0 0 94 94 0 4686 2112 5 MP DP --69 119 -69 -119 138 0 5847 3758 4 MP +0 -94 -94 0 0 94 94 0 4951 3078 5 MP DP --69 119 -69 -119 138 0 6054 5708 4 MP +0 -94 -94 0 0 94 94 0 5216 4353 5 MP DP gr -gs 1564 565 9328 6151 rc +gs 1555 566 9272 6151 rc DA c8 -208 1533 207 1279 207 961 207 668 208 391 207 212 207 88 207 32 -208 6 207 1 207 0 208 0 207 0 207 0 207 0 208 0 -207 0 207 0 207 0 208 0 207 0 207 0 207 0 1564 566 24 MP stroke +265 692 265 673 265 431 265 366 265 310 265 221 265 142 264 89 +265 45 265 22 265 14 265 6 265 0 265 0 265 0 264 0 +1555 566 17 MP stroke SO c9 -208 1693 207 1311 207 963 207 655 208 401 207 210 207 90 207 29 -208 7 207 1 207 0 208 0 207 0 207 0 207 0 208 0 -207 0 207 0 207 0 208 0 207 0 207 0 207 0 1564 566 24 MP stroke +265 779 265 641 265 514 265 399 265 298 265 212 265 141 264 87 +265 49 265 25 265 11 265 4 265 2 265 0 265 0 264 0 +1555 566 17 MP stroke gr -gs 1418 420 5060 5653 rc -0 j -0 -94 -94 0 0 94 94 0 1517 519 5 MP -DP -0 -94 -94 0 0 94 94 0 1724 519 5 MP -DP -0 -94 -94 0 0 94 94 0 1931 519 5 MP -DP -0 -94 -94 0 0 94 94 0 2138 519 5 MP -DP -0 -94 -94 0 0 94 94 0 2346 519 5 MP -DP -0 -94 -94 0 0 94 94 0 2553 519 5 MP -DP -0 -94 -94 0 0 94 94 0 2760 519 5 MP -DP -0 -94 -94 0 0 94 94 0 2967 519 5 MP -DP -0 -94 -94 0 0 94 94 0 3175 519 5 MP -DP -0 -94 -94 0 0 94 94 0 3382 519 5 MP -DP -0 -94 -94 0 0 94 94 0 3589 519 5 MP -DP -0 -94 -94 0 0 94 94 0 3796 519 5 MP -DP -0 -94 -94 0 0 94 94 0 4004 519 5 MP -DP -0 -94 -94 0 0 94 94 0 4211 519 5 MP -DP -0 -94 -94 0 0 94 94 0 4418 520 5 MP -DP -0 -94 -94 0 0 94 94 0 4626 527 5 MP -DP -0 -94 -94 0 0 94 94 0 4833 556 5 MP -DP -0 -94 -94 0 0 94 94 0 5040 646 5 MP -DP -0 -94 -94 0 0 94 94 0 5247 856 5 MP -DP -0 -94 -94 0 0 94 94 0 5455 1257 5 MP -DP -0 -94 -94 0 0 94 94 0 5662 1912 5 MP -DP -0 -94 -94 0 0 94 94 0 5869 2875 5 MP -DP -0 -94 -94 0 0 94 94 0 6076 4186 5 MP -DP -0 -94 -94 0 0 94 94 0 6284 5879 5 MP -DP -gr - -gs 1564 565 9328 6151 rc -DA -c8 -207 1049 207 750 208 630 207 509 207 429 207 302 208 222 207 142 -207 91 207 49 208 27 207 9 207 3 208 1 207 0 207 0 -207 0 208 0 207 0 207 0 207 0 208 0 207 0 207 0 -207 0 1564 566 26 MP stroke -SO -c9 -207 979 207 821 208 673 207 538 207 416 207 307 208 217 207 143 -207 88 207 48 208 25 207 12 207 4 208 2 207 0 207 0 -207 0 208 0 207 0 207 0 207 0 208 0 207 0 207 0 -207 0 1564 566 26 MP stroke +gs 1409 420 4531 3455 rc +1495 566 mt 1615 566 L +1555 506 mt 1555 626 L +1759 566 mt 1879 566 L +1819 506 mt 1819 626 L +2024 566 mt 2144 566 L +2084 506 mt 2084 626 L +2289 566 mt 2409 566 L +2349 506 mt 2349 626 L +2554 568 mt 2674 568 L +2614 508 mt 2614 628 L +2819 572 mt 2939 572 L +2879 512 mt 2879 632 L +3084 583 mt 3204 583 L +3144 523 mt 3144 643 L +3349 608 mt 3469 608 L +3409 548 mt 3409 668 L +3614 657 mt 3734 657 L +3674 597 mt 3674 717 L +3878 744 mt 3998 744 L +3938 684 mt 3938 804 L +4143 885 mt 4263 885 L +4203 825 mt 4203 945 L +4408 1097 mt 4528 1097 L +4468 1037 mt 4468 1157 L +4673 1395 mt 4793 1395 L +4733 1335 mt 4733 1455 L +4938 1794 mt 5058 1794 L +4998 1734 mt 4998 1854 L +5203 2308 mt 5323 2308 L +5263 2248 mt 5263 2368 L +5468 2949 mt 5588 2949 L +5528 2889 mt 5528 3009 L +5733 3728 mt 5853 3728 L +5793 3668 mt 5793 3788 L gr -gs 1418 420 5474 4566 rc -1504 566 mt 1624 566 L -1564 506 mt 1564 626 L -1711 566 mt 1831 566 L -1771 506 mt 1771 626 L -1918 566 mt 2038 566 L -1978 506 mt 1978 626 L -2125 566 mt 2245 566 L -2185 506 mt 2185 626 L -2333 566 mt 2453 566 L -2393 506 mt 2393 626 L -2540 566 mt 2660 566 L -2600 506 mt 2600 626 L -2747 566 mt 2867 566 L -2807 506 mt 2807 626 L -2954 566 mt 3074 566 L -3014 506 mt 3014 626 L -3162 566 mt 3282 566 L -3222 506 mt 3222 626 L -3369 566 mt 3489 566 L -3429 506 mt 3429 626 L -3576 566 mt 3696 566 L -3636 506 mt 3636 626 L -3783 566 mt 3903 566 L -3843 506 mt 3843 626 L -3991 568 mt 4111 568 L -4051 508 mt 4051 628 L -4198 572 mt 4318 572 L -4258 512 mt 4258 632 L -4405 584 mt 4525 584 L -4465 524 mt 4465 644 L -4613 609 mt 4733 609 L -4673 549 mt 4673 669 L -4820 657 mt 4940 657 L -4880 597 mt 4880 717 L -5027 745 mt 5147 745 L -5087 685 mt 5087 805 L -5234 888 mt 5354 888 L -5294 828 mt 5294 948 L -5442 1105 mt 5562 1105 L -5502 1045 mt 5502 1165 L -5649 1412 mt 5769 1412 L -5709 1352 mt 5709 1472 L -5856 1828 mt 5976 1828 L -5916 1768 mt 5916 1888 L -6063 2366 mt 6183 2366 L -6123 2306 mt 6123 2426 L -6271 3039 mt 6391 3039 L -6331 2979 mt 6331 3099 L -6478 3860 mt 6598 3860 L -6538 3800 mt 6538 3920 L -6685 4839 mt 6805 4839 L -6745 4779 mt 6745 4899 L +gs 1555 566 9272 6151 rc +DA +c8 +265 432 264 494 265 415 265 372 265 297 265 245 265 223 265 155 +265 124 265 98 264 55 265 42 265 26 265 17 265 8 265 5 +265 2 265 0 264 1 1555 566 20 MP stroke +SO +c9 +265 622 264 539 265 461 265 389 265 324 265 263 265 210 265 163 +265 122 265 89 264 61 265 41 265 26 265 16 265 8 265 5 +265 2 265 2 264 0 1555 566 20 MP stroke gr -gs 1564 565 9328 6151 rc -DA -c8 -207 986 208 597 207 538 207 483 207 362 208 319 207 285 207 222 -207 179 208 139 207 94 207 73 207 43 208 36 207 16 207 10 -208 5 207 3 207 1 207 1 208 0 207 0 207 0 207 0 -208 0 207 0 207 0 207 0 1564 566 29 MP stroke -SO -c9 -207 733 208 645 207 561 207 483 207 409 208 341 207 280 207 224 -207 175 208 133 207 97 207 69 207 46 208 31 207 18 207 11 -208 6 207 3 207 2 207 1 208 0 207 0 207 0 207 0 -208 0 207 0 207 0 207 0 1564 566 29 MP stroke -gr - -gs 1418 420 6096 4561 rc +gs 1409 420 5325 3636 rc 0 j -21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 1513 536 13 MP +34 0 17 30 17 -30 34 0 1504 536 13 MP +DP +-21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 +34 0 17 30 17 -30 34 0 1768 536 13 MP +DP +-21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 +34 0 17 30 17 -30 34 0 2033 538 13 MP DP -21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 1720 536 13 MP +34 0 17 30 17 -30 34 0 2298 540 13 MP +DP +-21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 +34 0 17 30 17 -30 34 0 2563 545 13 MP +DP +-21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 +34 0 17 30 17 -30 34 0 2828 553 13 MP +DP +-21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 +34 0 17 30 17 -30 34 0 3093 569 13 MP DP -21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 1927 536 13 MP -DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 2134 536 13 MP +34 0 17 30 17 -30 34 0 3358 595 13 MP DP -21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 2342 536 13 MP -DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 2549 536 13 MP -DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 2756 536 13 MP -DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 2963 536 13 MP +34 0 17 30 17 -30 34 0 3623 636 13 MP DP -21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 3171 536 13 MP -DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 3378 537 13 MP -DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 3585 539 13 MP +34 0 17 30 17 -30 34 0 3887 697 13 MP DP -21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 3792 542 13 MP +34 0 17 30 17 -30 34 0 4152 786 13 MP DP -21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 4000 548 13 MP +34 0 17 30 17 -30 34 0 4417 908 13 MP DP -21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 4207 559 13 MP -DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 4414 577 13 MP +34 0 17 30 17 -30 34 0 4682 1071 13 MP DP -21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 4622 608 13 MP -DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 4829 654 13 MP +34 0 17 30 17 -30 34 0 4947 1281 13 MP DP -21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 5036 723 13 MP +34 0 17 30 17 -30 34 0 5212 1544 13 MP DP -21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 5243 820 13 MP -DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 5451 953 13 MP -DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 5658 1128 13 MP +34 0 17 30 17 -30 34 0 5477 1868 13 MP DP -21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 5865 1352 13 MP -DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 6072 1632 13 MP -DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 6280 1973 13 MP +34 0 17 30 17 -30 34 0 5742 2257 13 MP DP -21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 6487 2382 13 MP -DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 6694 2865 13 MP +34 0 17 30 17 -30 34 0 6007 2718 13 MP DP -21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 6901 3426 13 MP +34 0 17 30 17 -30 34 0 6271 3257 13 MP DP -21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 7109 4071 13 MP -DP --21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 7316 4804 13 MP +34 0 17 30 17 -30 34 0 6536 3879 13 MP DP gr -gs 1564 565 9328 6151 rc +gs 1555 566 9272 6151 rc DA c8 -207 430 207 486 207 412 208 404 207 337 207 307 208 262 207 274 -207 262 207 205 208 174 207 146 207 104 207 98 208 74 207 60 -207 49 207 31 208 28 207 19 207 10 208 9 207 4 207 4 -207 1 208 1 207 1 207 1 207 0 208 0 207 0 207 0 -207 0 1564 566 34 MP stroke +265 733 265 393 265 279 265 318 265 376 265 206 264 221 265 236 +265 115 265 135 265 102 265 111 265 72 265 63 265 45 264 46 +265 31 265 18 265 18 265 3 265 6 265 4 265 4 264 1 +1555 567 25 MP stroke SO c9 -207 537 207 546 207 495 208 445 207 398 207 353 208 311 207 272 -207 236 207 201 208 171 207 142 207 117 207 95 208 75 207 59 -207 45 207 34 208 25 207 17 207 13 208 8 207 6 207 4 -207 2 208 1 207 1 207 1 207 0 208 0 207 0 207 0 -207 0 1564 566 34 MP stroke +265 461 265 415 265 372 265 330 265 292 265 255 264 223 265 191 +265 163 265 138 265 114 265 94 265 76 265 60 265 47 264 36 +265 27 265 20 265 15 265 10 265 7 265 4 265 3 264 2 +1555 569 25 MP stroke gr -gs 1418 420 7132 4903 rc -1504 566 mt 1624 566 L -1564 506 mt 1564 626 L -1711 566 mt 1831 566 L -1771 506 mt 1771 626 L -1918 566 mt 2038 566 L -1978 506 mt 1978 626 L -2125 566 mt 2245 566 L -2185 506 mt 2185 626 L -2333 566 mt 2453 566 L -2393 506 mt 2393 626 L -2540 566 mt 2660 566 L -2600 506 mt 2600 626 L -2747 567 mt 2867 567 L -2807 507 mt 2807 627 L -2954 568 mt 3074 568 L -3014 508 mt 3014 628 L -3162 569 mt 3282 569 L -3222 509 mt 3222 629 L -3369 571 mt 3489 571 L -3429 511 mt 3429 631 L -3576 575 mt 3696 575 L -3636 515 mt 3636 635 L -3783 581 mt 3903 581 L -3843 521 mt 3843 641 L -3991 589 mt 4111 589 L -4051 529 mt 4051 649 L -4198 602 mt 4318 602 L -4258 542 mt 4258 662 L -4405 619 mt 4525 619 L -4465 559 mt 4465 679 L -4613 644 mt 4733 644 L -4673 584 mt 4673 704 L -4820 678 mt 4940 678 L -4880 618 mt 4880 738 L -5027 723 mt 5147 723 L -5087 663 mt 5087 783 L -5234 782 mt 5354 782 L -5294 722 mt 5294 842 L -5442 857 mt 5562 857 L -5502 797 mt 5502 917 L -5649 952 mt 5769 952 L -5709 892 mt 5709 1012 L -5856 1069 mt 5976 1069 L -5916 1009 mt 5916 1129 L -6063 1211 mt 6183 1211 L -6123 1151 mt 6123 1271 L -6271 1382 mt 6391 1382 L -6331 1322 mt 6331 1442 L -6478 1583 mt 6598 1583 L -6538 1523 mt 6538 1643 L -6685 1819 mt 6805 1819 L -6745 1759 mt 6745 1879 L -6892 2091 mt 7012 2091 L -6952 2031 mt 6952 2151 L -7100 2402 mt 7220 2402 L -7160 2342 mt 7160 2462 L -7307 2755 mt 7427 2755 L -7367 2695 mt 7367 2815 L -7514 3153 mt 7634 3153 L -7574 3093 mt 7574 3213 L -7722 3598 mt 7842 3598 L -7782 3538 mt 7782 3658 L -7929 4093 mt 8049 4093 L -7989 4033 mt 7989 4153 L -8136 4639 mt 8256 4639 L -8196 4579 mt 8196 4699 L -8343 5176 mt 8463 5176 L -8403 5116 mt 8403 5236 L -1522 524 mt 1606 608 L -1606 524 mt 1522 608 L -1729 524 mt 1813 608 L -1813 524 mt 1729 608 L -1936 524 mt 2020 608 L -2020 524 mt 1936 608 L -2143 524 mt 2227 608 L -2227 524 mt 2143 608 L -2351 524 mt 2435 608 L -2435 524 mt 2351 608 L -2558 524 mt 2642 608 L -2642 524 mt 2558 608 L -2765 525 mt 2849 609 L -2849 525 mt 2765 609 L -2972 526 mt 3056 610 L -3056 526 mt 2972 610 L -3180 527 mt 3264 611 L -3264 527 mt 3180 611 L -3387 529 mt 3471 613 L -3471 529 mt 3387 613 L -3594 533 mt 3678 617 L -3678 533 mt 3594 617 L -3801 539 mt 3885 623 L -3885 539 mt 3801 623 L -4009 547 mt 4093 631 L -4093 547 mt 4009 631 L -4216 560 mt 4300 644 L -4300 560 mt 4216 644 L -4423 577 mt 4507 661 L -4507 577 mt 4423 661 L -4631 602 mt 4715 686 L -4715 602 mt 4631 686 L -4838 636 mt 4922 720 L -4922 636 mt 4838 720 L -5045 681 mt 5129 765 L -5129 681 mt 5045 765 L -5252 740 mt 5336 824 L -5336 740 mt 5252 824 L -5460 815 mt 5544 899 L -5544 815 mt 5460 899 L -5667 910 mt 5751 994 L -5751 910 mt 5667 994 L -5874 1027 mt 5958 1111 L -5958 1027 mt 5874 1111 L -6081 1169 mt 6165 1253 L -6165 1169 mt 6081 1253 L -6289 1340 mt 6373 1424 L -6373 1340 mt 6289 1424 L -6496 1541 mt 6580 1625 L -6580 1541 mt 6496 1625 L -6703 1777 mt 6787 1861 L -6787 1777 mt 6703 1861 L -6910 2049 mt 6994 2133 L -6994 2049 mt 6910 2133 L -7118 2360 mt 7202 2444 L -7202 2360 mt 7118 2444 L -7325 2713 mt 7409 2797 L -7409 2713 mt 7325 2797 L -7532 3111 mt 7616 3195 L -7616 3111 mt 7532 3195 L -7740 3556 mt 7824 3640 L -7824 3556 mt 7740 3640 L -7947 4051 mt 8031 4135 L -8031 4051 mt 7947 4135 L -8154 4597 mt 8238 4681 L -8238 4597 mt 8154 4681 L -8361 5134 mt 8445 5218 L -8445 5134 mt 8361 5218 L +gs 1409 423 6650 3648 rc +1495 569 mt 1615 569 L +1555 509 mt 1555 629 L +1759 571 mt 1879 571 L +1819 511 mt 1819 631 L +2024 574 mt 2144 574 L +2084 514 mt 2084 634 L +2289 578 mt 2409 578 L +2349 518 mt 2349 638 L +2554 585 mt 2674 585 L +2614 525 mt 2614 645 L +2819 595 mt 2939 595 L +2879 535 mt 2879 655 L +3084 610 mt 3204 610 L +3144 550 mt 3144 670 L +3349 630 mt 3469 630 L +3409 570 mt 3409 690 L +3614 657 mt 3734 657 L +3674 597 mt 3674 717 L +3878 693 mt 3998 693 L +3938 633 mt 3938 753 L +4143 740 mt 4263 740 L +4203 680 mt 4203 800 L +4408 800 mt 4528 800 L +4468 740 mt 4468 860 L +4673 876 mt 4793 876 L +4733 816 mt 4733 936 L +4938 970 mt 5058 970 L +4998 910 mt 4998 1030 L +5203 1084 mt 5323 1084 L +5263 1024 mt 5263 1144 L +5468 1222 mt 5588 1222 L +5528 1162 mt 5528 1282 L +5733 1385 mt 5853 1385 L +5793 1325 mt 5793 1445 L +5998 1576 mt 6118 1576 L +6058 1516 mt 6058 1636 L +6262 1799 mt 6382 1799 L +6322 1739 mt 6322 1859 L +6527 2054 mt 6647 2054 L +6587 1994 mt 6587 2114 L +6792 2346 mt 6912 2346 L +6852 2286 mt 6852 2406 L +7057 2676 mt 7177 2676 L +7117 2616 mt 7117 2736 L +7322 3048 mt 7442 3048 L +7382 2988 mt 7382 3108 L +7587 3463 mt 7707 3463 L +7647 3403 mt 7647 3523 L +7852 3924 mt 7972 3924 L +7912 3864 mt 7912 3984 L +1513 527 mt 1597 611 L +1597 527 mt 1513 611 L +1777 529 mt 1861 613 L +1861 529 mt 1777 613 L +2042 532 mt 2126 616 L +2126 532 mt 2042 616 L +2307 536 mt 2391 620 L +2391 536 mt 2307 620 L +2572 543 mt 2656 627 L +2656 543 mt 2572 627 L +2837 553 mt 2921 637 L +2921 553 mt 2837 637 L +3102 568 mt 3186 652 L +3186 568 mt 3102 652 L +3367 588 mt 3451 672 L +3451 588 mt 3367 672 L +3632 615 mt 3716 699 L +3716 615 mt 3632 699 L +3896 651 mt 3980 735 L +3980 651 mt 3896 735 L +4161 698 mt 4245 782 L +4245 698 mt 4161 782 L +4426 758 mt 4510 842 L +4510 758 mt 4426 842 L +4691 834 mt 4775 918 L +4775 834 mt 4691 918 L +4956 928 mt 5040 1012 L +5040 928 mt 4956 1012 L +5221 1042 mt 5305 1126 L +5305 1042 mt 5221 1126 L +5486 1180 mt 5570 1264 L +5570 1180 mt 5486 1264 L +5751 1343 mt 5835 1427 L +5835 1343 mt 5751 1427 L +6016 1534 mt 6100 1618 L +6100 1534 mt 6016 1618 L +6280 1757 mt 6364 1841 L +6364 1757 mt 6280 1841 L +6545 2012 mt 6629 2096 L +6629 2012 mt 6545 2096 L +6810 2304 mt 6894 2388 L +6894 2304 mt 6810 2388 L +7075 2634 mt 7159 2718 L +7159 2634 mt 7075 2718 L +7340 3006 mt 7424 3090 L +7424 3006 mt 7340 3090 L +7605 3421 mt 7689 3505 L +7689 3421 mt 7605 3505 L +7870 3882 mt 7954 3966 L +7954 3882 mt 7870 3966 L gr -gs 1564 565 9328 6151 rc +gs 1555 566 9272 6151 rc DA c8 -207 373 207 435 207 354 208 359 207 316 207 213 207 253 208 224 -207 253 207 234 208 182 207 145 207 129 207 123 208 106 207 92 -207 68 207 60 208 54 207 37 207 29 207 27 208 17 207 13 -207 13 208 9 207 4 207 5 207 4 208 1 207 2 207 1 -207 0 208 1 207 0 207 0 207 0 1564 566 38 MP stroke +265 332 264 107 265 341 265 224 265 275 265 172 265 176 265 169 +265 160 265 154 264 142 265 89 265 102 265 83 265 68 265 52 +265 54 265 35 265 19 264 23 265 26 265 10 265 15 265 9 +265 0 265 9 265 0 264 1 1555 569 29 MP stroke SO c9 -207 485 207 448 207 413 208 379 207 312 207 318 207 287 208 258 -207 231 207 205 208 181 207 159 207 137 207 119 208 102 207 86 -207 72 207 59 208 49 207 39 207 31 207 25 208 19 207 15 -207 11 208 8 207 6 207 4 207 3 208 3 207 1 207 1 -207 1 208 1 207 0 207 0 207 0 1564 566 38 MP stroke +265 393 264 359 265 325 265 295 265 266 265 238 265 213 265 188 +265 166 265 145 264 126 265 109 265 93 265 78 265 66 265 55 +265 44 265 37 265 29 264 23 265 17 265 14 265 11 265 7 +265 6 265 4 265 3 264 3 1555 570 29 MP stroke gr -gs 1418 420 7961 4761 rc +gs 1409 424 7709 3606 rc 0 j -0 138 -119 -69 119 -69 1524 635 4 MP +0 138 -119 -69 119 -69 1515 639 4 MP DP -0 138 -119 -69 119 -69 1731 635 4 MP -DP -0 138 -119 -69 119 -69 1938 635 4 MP +0 138 -119 -69 119 -69 1779 642 4 MP DP -0 138 -119 -69 119 -69 2145 635 4 MP +0 138 -119 -69 119 -69 2044 645 4 MP DP -0 138 -119 -69 119 -69 2353 636 4 MP +0 138 -119 -69 119 -69 2309 649 4 MP DP -0 138 -119 -69 119 -69 2560 637 4 MP +0 138 -119 -69 119 -69 2574 655 4 MP DP -0 138 -119 -69 119 -69 2767 638 4 MP -DP -0 138 -119 -69 119 -69 2974 639 4 MP +0 138 -119 -69 119 -69 2839 662 4 MP DP -0 138 -119 -69 119 -69 3182 642 4 MP +0 138 -119 -69 119 -69 3104 673 4 MP DP -0 138 -119 -69 119 -69 3389 645 4 MP +0 138 -119 -69 119 -69 3369 687 4 MP DP -0 138 -119 -69 119 -69 3596 649 4 MP +0 138 -119 -69 119 -69 3634 704 4 MP DP -0 138 -119 -69 119 -69 3803 655 4 MP -DP -0 138 -119 -69 119 -69 4011 663 4 MP +0 138 -119 -69 119 -69 3898 727 4 MP DP -0 138 -119 -69 119 -69 4218 674 4 MP +0 138 -119 -69 119 -69 4163 756 4 MP DP -0 138 -119 -69 119 -69 4425 689 4 MP +0 138 -119 -69 119 -69 4428 793 4 MP DP -0 138 -119 -69 119 -69 4633 708 4 MP +0 138 -119 -69 119 -69 4693 837 4 MP DP -0 138 -119 -69 119 -69 4840 733 4 MP -DP -0 138 -119 -69 119 -69 5047 764 4 MP +0 138 -119 -69 119 -69 4958 892 4 MP DP -0 138 -119 -69 119 -69 5254 803 4 MP -DP -0 138 -119 -69 119 -69 5462 852 4 MP +0 138 -119 -69 119 -69 5223 958 4 MP DP -0 138 -119 -69 119 -69 5669 911 4 MP +0 138 -119 -69 119 -69 5488 1036 4 MP DP -0 138 -119 -69 119 -69 5876 983 4 MP -DP -0 138 -119 -69 119 -69 6083 1069 4 MP +0 138 -119 -69 119 -69 5753 1129 4 MP DP -0 138 -119 -69 119 -69 6291 1171 4 MP +0 138 -119 -69 119 -69 6018 1238 4 MP DP -0 138 -119 -69 119 -69 6498 1290 4 MP +0 138 -119 -69 119 -69 6282 1364 4 MP DP -0 138 -119 -69 119 -69 6705 1427 4 MP +0 138 -119 -69 119 -69 6547 1509 4 MP DP -0 138 -119 -69 119 -69 6912 1586 4 MP -DP -0 138 -119 -69 119 -69 7120 1767 4 MP +0 138 -119 -69 119 -69 6812 1675 4 MP DP -0 138 -119 -69 119 -69 7327 1972 4 MP +0 138 -119 -69 119 -69 7077 1863 4 MP DP -0 138 -119 -69 119 -69 7534 2203 4 MP +0 138 -119 -69 119 -69 7342 2076 4 MP DP -0 138 -119 -69 119 -69 7742 2461 4 MP +0 138 -119 -69 119 -69 7607 2314 4 MP DP -0 138 -119 -69 119 -69 7949 2748 4 MP -DP -0 138 -119 -69 119 -69 8156 3066 4 MP +0 138 -119 -69 119 -69 7872 2580 4 MP DP -0 138 -119 -69 119 -69 8363 3378 4 MP +0 138 -119 -69 119 -69 8137 2875 4 MP DP -0 138 -119 -69 119 -69 8571 3757 4 MP +0 138 -119 -69 119 -69 8402 3200 4 MP DP -0 138 -119 -69 119 -69 8778 4170 4 MP +0 138 -119 -69 119 -69 8666 3559 4 MP DP -0 138 -119 -69 119 -69 8985 4618 4 MP -DP -0 138 -119 -69 119 -69 9192 5103 4 MP +0 138 -119 -69 119 -69 8931 3952 4 MP DP gr -gs 1564 565 9328 6151 rc +gs 1555 566 9272 6151 rc DA c8 -208 318 207 275 207 320 207 322 208 263 207 210 207 216 207 285 -208 211 207 147 207 182 207 148 208 151 207 137 207 122 208 105 -207 91 207 82 207 70 208 63 207 50 207 48 207 34 208 35 -207 27 207 20 207 13 208 13 207 10 207 6 208 6 207 7 -207 3 207 2 208 2 207 2 207 2 207 0 208 0 207 0 -207 1 207 0 1564 566 43 MP stroke +265 0 265 526 265 271 265 176 265 153 264 302 265 179 265 164 +265 229 265 154 265 117 265 101 265 107 265 100 264 74 265 51 +265 71 265 63 265 47 265 33 265 26 265 25 265 30 264 20 +265 11 265 4 265 18 265 6 265 4 265 4 265 2 264 1 +1555 571 33 MP stroke SO c9 -208 412 207 386 207 359 207 335 208 310 207 286 207 264 207 242 -208 222 207 182 207 185 207 167 208 149 207 134 207 118 208 105 -207 92 207 80 207 69 208 59 207 51 207 43 207 36 208 30 -207 25 207 20 207 16 208 14 207 10 207 8 208 7 207 5 -207 4 207 3 208 2 207 2 207 1 207 1 208 1 207 0 -207 1 207 0 1564 566 43 MP stroke +265 352 265 324 265 297 265 274 265 249 264 228 265 206 265 187 +265 168 265 150 265 135 265 119 265 105 265 93 264 80 265 70 +265 61 265 51 265 44 265 36 265 31 265 26 265 21 264 17 +265 13 265 11 265 9 265 7 265 5 265 5 265 3 264 2 +1555 573 33 MP stroke gr -gs 1418 420 8998 4729 rc +gs 1409 427 8769 3672 rc 0 j -35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 -15 -41 43 0 1506 547 11 MP +15 -41 43 0 1497 554 11 MP DP -35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 -15 -41 43 0 1713 547 11 MP +15 -41 43 0 1761 556 11 MP DP -35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 -15 -41 43 0 1920 548 11 MP -DP --35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 -15 -41 43 0 2127 548 11 MP +15 -41 43 0 2026 559 11 MP DP -35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 -15 -41 43 0 2335 549 11 MP -DP --35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 -15 -41 43 0 2542 550 11 MP +15 -41 43 0 2291 564 11 MP DP -35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 -15 -41 43 0 2749 551 11 MP +15 -41 43 0 2556 569 11 MP DP -35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 -15 -41 43 0 2956 553 11 MP +15 -41 43 0 2821 576 11 MP DP -35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 -15 -41 43 0 3164 555 11 MP -DP --35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 -15 -41 43 0 3371 558 11 MP +15 -41 43 0 3086 585 11 MP DP -35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 -15 -41 43 0 3578 562 11 MP +15 -41 43 0 3351 596 11 MP DP -35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 -15 -41 43 0 3785 567 11 MP -DP --35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 -15 -41 43 0 3993 574 11 MP +15 -41 43 0 3616 609 11 MP DP -35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 -15 -41 43 0 4200 582 11 MP +15 -41 43 0 3880 626 11 MP DP -35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 -15 -41 43 0 4407 592 11 MP +15 -41 43 0 4145 647 11 MP DP -35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 -15 -41 43 0 4615 606 11 MP +15 -41 43 0 4410 673 11 MP DP -35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 -15 -41 43 0 4822 622 11 MP +15 -41 43 0 4675 704 11 MP DP -35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 -15 -41 43 0 5029 642 11 MP -DP --35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 -15 -41 43 0 5236 667 11 MP +15 -41 43 0 4940 740 11 MP DP -35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 -15 -41 43 0 5444 697 11 MP +15 -41 43 0 5205 784 11 MP DP -35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 -15 -41 43 0 5651 733 11 MP +15 -41 43 0 5470 835 11 MP DP -35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 -15 -41 43 0 5858 776 11 MP +15 -41 43 0 5735 896 11 MP DP -35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 -15 -41 43 0 6065 827 11 MP +15 -41 43 0 6000 966 11 MP DP -35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 -15 -41 43 0 6273 886 11 MP -DP --35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 -15 -41 43 0 6480 955 11 MP +15 -41 43 0 6264 1046 11 MP DP -35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 -15 -41 43 0 6687 1035 11 MP +15 -41 43 0 6529 1139 11 MP DP -35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 -15 -41 43 0 6894 1127 11 MP +15 -41 43 0 6794 1244 11 MP DP -35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 -15 -41 43 0 7102 1232 11 MP -DP --35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 -15 -41 43 0 7309 1350 11 MP +15 -41 43 0 7059 1363 11 MP DP -35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 -15 -41 43 0 7516 1484 11 MP +15 -41 43 0 7324 1498 11 MP DP -35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 -15 -41 43 0 7724 1633 11 MP +15 -41 43 0 7589 1648 11 MP DP -35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 -15 -41 43 0 7931 1800 11 MP +15 -41 43 0 7854 1816 11 MP DP -35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 -15 -41 43 0 8138 1985 11 MP +15 -41 43 0 8119 2003 11 MP DP -35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 -15 -41 43 0 8345 2167 11 MP -DP --35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 -15 -41 43 0 8553 2389 11 MP +15 -41 43 0 8384 2209 11 MP DP -35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 -15 -41 43 0 8760 2631 11 MP +15 -41 43 0 8648 2437 11 MP DP -35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 -15 -41 43 0 8967 2895 11 MP -DP --35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 -15 -41 43 0 9174 3181 11 MP +15 -41 43 0 8913 2686 11 MP DP -35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 -15 -41 43 0 9382 3491 11 MP -DP --35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 -15 -41 43 0 9589 3826 11 MP +15 -41 43 0 9178 2960 11 MP DP -35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 -15 -41 43 0 9796 4185 11 MP +15 -41 43 0 9443 3257 11 MP DP -35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 -15 -41 43 0 10003 4571 11 MP +15 -41 43 0 9708 3581 11 MP DP -35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 -15 -41 43 0 10211 4983 11 MP +15 -41 43 0 9973 3933 11 MP DP gr -gs 1564 565 9328 6151 rc +gs 1555 566 9272 6151 rc gr 0 sg %%IncludeResource: font Helvetica /Helvetica /WindowsLatin1Encoding 120 FMSR -6013 7004 mt -(SINR) s -%%IncludeResource: font Helvetica -/Helvetica /WindowsLatin1Encoding 96 FMSR - -1223 3799 mt -90 rotate +6062 7004 mt +(SNR) s +1214 3799 mt -90 rotate (BLER) s 90 rotate -1547 6758 mt +1538 6759 mt ( ) s -10875 607 mt +10810 608 mt ( ) s 6 w 1 sg -0 2730 1696 0 0 -2730 1646 6627 4 MP +0 2730 1696 0 0 -2730 1583 6690 4 MP PP --1696 0 0 2730 1696 0 0 -2730 1646 6627 5 MP stroke +-1696 0 0 2730 1696 0 0 -2730 1583 6690 5 MP stroke 4 w DO SO 6 w 0 sg -1646 3897 mt 3342 3897 L -1646 6627 mt 3342 6627 L -3342 6627 mt 3342 3897 L -1646 6627 mt 1646 3897 L -1646 6627 mt 3342 6627 L -1646 6627 mt 1646 3897 L -1646 3897 mt 3342 3897 L -1646 6627 mt 3342 6627 L -3342 6627 mt 3342 3897 L -1646 6627 mt 1646 3897 L -2118 4044 mt +1583 3960 mt 3279 3960 L +1583 6690 mt 3279 6690 L +3279 6690 mt 3279 3960 L +1583 6690 mt 1583 3960 L +1583 6690 mt 3279 6690 L +1583 6690 mt 1583 3960 L +1583 3960 mt 3279 3960 L +1583 6690 mt 3279 6690 L +3279 6690 mt 3279 3960 L +1583 6690 mt 1583 3960 L +2055 4107 mt (TB = 6000 \(AWGN\)) s -gs 1646 3897 1697 2731 rc +gs 1583 3960 1697 2731 rc DA 24 w c8 -363 0 1718 4002 2 MP stroke +363 0 1655 4065 2 MP stroke SO gr 24 w c8 0 sg -2118 4212 mt +2055 4275 mt (TB = 6000 \(estimated\)) s -gs 1646 3897 1697 2731 rc +gs 1583 3960 1697 2731 rc c9 -363 0 1718 4170 2 MP stroke -gs 1753 4024 293 293 rc +363 0 1655 4233 2 MP stroke +gs 1690 4087 293 293 rc 0 j -69 119 -138 0 69 -119 1899 4249 4 MP +69 119 -138 0 69 -119 1836 4312 4 MP DP gr @@ -1474,25 +1328,25 @@ c9 0 sg -2118 4380 mt +2055 4443 mt (TB = 4000 \(AWGN\)) s -gs 1646 3897 1697 2731 rc +gs 1583 3960 1697 2731 rc DA c8 -363 0 1718 4338 2 MP stroke +363 0 1655 4401 2 MP stroke SO gr c8 0 sg -2118 4548 mt +2055 4611 mt (TB = 4000 \(estimated\)) s -gs 1646 3897 1697 2731 rc +gs 1583 3960 1697 2731 rc c9 -363 0 1718 4506 2 MP stroke -gs 1753 4360 293 293 rc +363 0 1655 4569 2 MP stroke +gs 1690 4423 293 293 rc 0 j --69 119 -69 -119 138 0 1830 4546 4 MP +-69 119 -69 -119 138 0 1767 4609 4 MP DP gr @@ -1500,25 +1354,25 @@ c9 0 sg -2118 4716 mt +2055 4779 mt (TB = 2560 \(AWGN\)) s -gs 1646 3897 1697 2731 rc +gs 1583 3960 1697 2731 rc DA c8 -363 0 1718 4674 2 MP stroke +363 0 1655 4737 2 MP stroke SO gr c8 0 sg -2118 4884 mt +2055 4947 mt (TB = 2560 \(estimated\)) s -gs 1646 3897 1697 2731 rc +gs 1583 3960 1697 2731 rc c9 -363 0 1718 4842 2 MP stroke -gs 1753 4696 293 293 rc +363 0 1655 4905 2 MP stroke +gs 1690 4759 293 293 rc 0 j -0 -94 -94 0 0 94 94 0 1852 4795 5 MP +0 -94 -94 0 0 94 94 0 1789 4858 5 MP DP gr @@ -1526,51 +1380,51 @@ c9 0 sg -2118 5052 mt +2055 5115 mt (TB = 1024 \(AWGN\)) s -gs 1646 3897 1697 2731 rc +gs 1583 3960 1697 2731 rc DA c8 -363 0 1718 5010 2 MP stroke +363 0 1655 5073 2 MP stroke SO gr c8 0 sg -2118 5220 mt +2055 5283 mt (TB = 1024 \(estimated\)) s -gs 1646 3897 1697 2731 rc +gs 1583 3960 1697 2731 rc c9 -363 0 1718 5178 2 MP stroke -gs 1753 5032 293 293 rc -1839 5178 mt 1959 5178 L -1899 5118 mt 1899 5238 L +363 0 1655 5241 2 MP stroke +gs 1690 5095 293 293 rc +1776 5241 mt 1896 5241 L +1836 5181 mt 1836 5301 L gr gr c9 0 sg -2118 5389 mt +2055 5452 mt (TB = 512 \(AWGN\)) s -gs 1646 3897 1697 2731 rc +gs 1583 3960 1697 2731 rc DA c8 -363 0 1718 5346 2 MP stroke +363 0 1655 5409 2 MP stroke SO gr c8 0 sg -2118 5557 mt +2055 5620 mt (TB = 512 \(estimated\)) s -gs 1646 3897 1697 2731 rc +gs 1583 3960 1697 2731 rc c9 -363 0 1718 5514 2 MP stroke -gs 1753 5368 293 293 rc +363 0 1655 5577 2 MP stroke +gs 1690 5431 293 293 rc 0 j -21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 -34 0 17 30 17 -30 34 0 1848 5484 13 MP +34 0 17 30 17 -30 34 0 1785 5547 13 MP DP gr @@ -1578,52 +1432,52 @@ c9 0 sg -2118 5725 mt +2055 5788 mt (TB = 256 \(AWGN\)) s -gs 1646 3897 1697 2731 rc +gs 1583 3960 1697 2731 rc DA c8 -363 0 1718 5682 2 MP stroke +363 0 1655 5745 2 MP stroke SO gr c8 0 sg -2118 5893 mt +2055 5956 mt (TB = 256 \(estimated\)) s -gs 1646 3897 1697 2731 rc +gs 1583 3960 1697 2731 rc c9 -363 0 1718 5850 2 MP stroke -gs 1753 5704 293 293 rc -1839 5850 mt 1959 5850 L -1899 5790 mt 1899 5910 L -1857 5808 mt 1941 5892 L -1941 5808 mt 1857 5892 L +363 0 1655 5913 2 MP stroke +gs 1690 5767 293 293 rc +1776 5913 mt 1896 5913 L +1836 5853 mt 1836 5973 L +1794 5871 mt 1878 5955 L +1878 5871 mt 1794 5955 L gr gr c9 0 sg -2118 6061 mt +2055 6124 mt (TB = 160 \(AWGN\)) s -gs 1646 3897 1697 2731 rc +gs 1583 3960 1697 2731 rc DA c8 -363 0 1718 6018 2 MP stroke +363 0 1655 6081 2 MP stroke SO gr c8 0 sg -2118 6229 mt +2055 6292 mt (TB = 160 \(estimated\)) s -gs 1646 3897 1697 2731 rc +gs 1583 3960 1697 2731 rc c9 -363 0 1718 6186 2 MP stroke -gs 1753 6040 293 293 rc +363 0 1655 6249 2 MP stroke +gs 1690 6103 293 293 rc 0 j -0 138 -119 -69 119 -69 1859 6255 4 MP +0 138 -119 -69 119 -69 1796 6318 4 MP DP gr @@ -1631,33 +1485,33 @@ c9 0 sg -2118 6397 mt +2055 6460 mt (TB = 104 \(AWGN\)) s -gs 1646 3897 1697 2731 rc +gs 1583 3960 1697 2731 rc DA c8 -363 0 1718 6354 2 MP stroke +363 0 1655 6417 2 MP stroke SO gr c8 0 sg -2118 6565 mt +2055 6628 mt (TB = 104 \(estimated\)) s -gs 1646 3897 1697 2731 rc +gs 1583 3960 1697 2731 rc c9 -363 0 1718 6522 2 MP stroke +363 0 1655 6585 2 MP stroke gr c9 -gs 1753 6376 293 293 rc +gs 1690 6439 293 293 rc 0 j -35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 -15 -41 43 0 1841 6503 11 MP +15 -41 43 0 1778 6566 11 MP DP gr -gs 1646 3897 1697 2731 rc +gs 1583 3960 1697 2731 rc 6 w gr @@ -1680,33 +1534,27 @@ countdictstack exch sub { end } repeat restore grestore % -% End Imported PIC File: /home/mmiozzo/ns3/lena/ns-3-lena-pem/src/lte/doc/source/figures/MCS_3_test.eps +% End Imported PIC File: /home/mmiozzo/sandbox/lena/ns-3-lena-dev/src/lte/doc/source/figures/MCS_3.eps %%EndDocument % % Ellipse 45.000 slw -n 10575 4410 324 324 0 360 DrawEllipse gs col4 s gr +n 8055 2520 324 324 0 360 DrawEllipse gs col4 s gr % Ellipse -n 9585 4455 324 324 0 360 DrawEllipse gs col4 s gr - -% Ellipse -n 7965 1755 324 324 0 360 DrawEllipse gs col4 s gr +n 8010 3510 324 324 0 360 DrawEllipse gs col4 s gr % Ellipse -n 10665 3420 324 324 0 360 DrawEllipse gs col4 s gr +n 8010 4950 324 324 0 360 DrawEllipse gs col4 s gr /Helvetica-Bold ff 349.25 scf sf -11070 3330 m +8280 3105 m gs 1 -1 sc (A) col4 sh gr /Helvetica-Bold ff 349.25 scf sf -10980 4590 m +8100 4185 m gs 1 -1 sc (B) col4 sh gr /Helvetica-Bold ff 349.25 scf sf -7965 1305 m -gs 1 -1 sc (D) col4 sh gr -/Helvetica-Bold ff 349.25 scf sf -9720 4050 m +8370 5310 m gs 1 -1 sc (C) col4 sh gr % here ends figure; pagefooter
--- a/src/lte/doc/source/lte-design.rst Fri May 18 10:30:14 2012 +0200 +++ b/src/lte/doc/source/lte-design.rst Tue May 29 10:42:17 2012 +0200 @@ -1255,15 +1255,26 @@ BLER for MCS 21, 22, 23 and 24. -.. _fig-mcs-25-27-ber: -.. figure:: figures/MCS_25_27.* +.. _fig-mcs-25-28-ber: + +.. figure:: figures/MCS_25_28.* :width: 900px :align: center :height: 700px - BLER for MCS 25, 26 and 27. + BLER for MCS 25, 26, 27 and 28. + +.. _fig-mcs-29-29-ber: + +.. figure:: figures/MCS_29_29.* + :width: 900px + :align: center + :height: 700px + + + BLER for MCS 29.
--- a/src/lte/doc/source/lte-testing.rst Fri May 18 10:30:14 2012 +0200 +++ b/src/lte/doc/source/lte-testing.rst Tue May 29 10:42:17 2012 +0200 @@ -372,14 +372,12 @@ The parameters of the nine test cases are reported in the following: - #. 4 UEs placed 898 meters far from the eNB, which implies the use of MCS 2 (SINR of -2.21 dB) and a TB of 176 bits, that in turns produce a BER of 0.19 (see point A in figure :ref:`fig-mcs-2-test`). - #. 3 UEs placed 900 meters far from the eNB, which implies the use of MCS 2 (SINR of -2.25 dB) and a TB of 328 bits, that in turns produce a BER of 0.09 (see point B in figure :ref:`fig-mcs-2-test`). - #. 2 UEs placed 920 meters far from the eNB, which implies the use of MCS 2 (SINR of -2.61 dB) and a TB of 72 bits, that in turns produce a BER of 0.123 (see point D in figure :ref:`fig-mcs-2-test`). - #. 1 UE placed 930 meters far from the eNB, which implies the use of MCS 2 (SINR of -2.79 dB) and a TB of 72 bits, that in turns produce a BER of 0.9 (see point D in figure :ref:`fig-mcs-2-test`). - #. 1 UE placed 538 meters far from the eNB, which implies the use of MCS 12 (SINR of 4.19 dB) and a TB of 4776 bits, that in turns produce a BER of 0.017 (see point E in figure :ref:`fig-mcs-12-test`). - #. 3 UEs placed 538 meters far from the eNB, which implies the use of MCS 12 (SINR of 4.19 dB) and a TB of 1608 bits, that in turns produce a BER of 0.23 (see point F in figure :ref:`fig-mcs-12-test`). - #. 7 UEs placed 538 meters far from the eNB, which implies the use of MCS 12 (SINR of 4.19 dB) and a TB of 376 bits, that in turns produce a BER of 0.72 (see point G in figure :ref:`fig-mcs-12-test`). - #. 1 UE placed 500 meters far from the eNB, which implies the use of MCS 14 (SINR of 5.53 dB) and a TB of 6248 bits (segmented in 2 CBs of 3136 bits each one), that in turns produce a BER of 0.18, since each CB has CBLER equal to 0.096 (see point H in figure :ref:`fig-mcs-14-test`). + #. 4 UEs placed 1800 meters far from the eNB, which implies the use of MCS 2 (SINR of -5.51 dB) and a TB of 256 bits, that in turns produce a BER of 0.33 (see point A in figure :ref:`fig-mcs-2-test`). + #. 2 UEs placed 1800 meters far from the eNB, which implies the use of MCS 2 (SINR of -5.51 dB) and a TB of 528 bits, that in turns produce a BER of 0.11 (see point B in figure :ref:`fig-mcs-2-test`). + #. 1 UE placed 1800 meters far from the eNB, which implies the use of MCS 2 (SINR of -5.51 dB) and a TB of 1088 bits, that in turns produce a BER of 0.02 (see point C in figure :ref:`fig-mcs-2-test`). + #. 1 UE placed 600 meters far from the eNB, which implies the use of MCS 12 (SINR of 4.43 dB) and a TB of 4800 bits, that in turns produce a BER of 0.3 (see point D in figure :ref:`fig-mcs-12-test`). + #. 3 UEs placed 600 meters far from the eNB, which implies the use of MCS 12 (SINR of 4.43 dB) and a TB of 1632 bits, that in turns produce a BER of 0.55 (see point E in figure :ref:`fig-mcs-12-test`). + #. 1 UE placed 470 meters far from the eNB, which implies the use of MCS 16 (SINR of 8.48 dB) and a TB of 7272 bits (segmented in 2 CBs of 3648 and 3584 bits), that in turns produce a BER of 0.14, since each CB has CBLER equal to 0.075 (see point F in figure :ref:`fig-mcs-14-test`). .. _fig-mcs-2-test: @@ -388,21 +386,21 @@ :align: center - BLER for tests 1, 2, 3, 4. + BLER for tests 1, 2, 3. .. _fig-mcs-12-test: .. figure:: figures/MCS_12_test.* :align: center - BLER for tests 5, 6, 7. + BLER for tests 4, 5. .. _fig-mcs-14-test: -.. figure:: figures/MCS_14_test.* +.. figure:: figures/MCS_16_test.* :align: center - BLER for test 8. + BLER for test 6. The test verifies that in each case the expected number of packets received correct corresponds to a Bernoulli distribution with a confidence interval of 95%, where the probability of success in each trail is :math:`1-BER` and :math:`n` is the total number of packet sent.
--- a/src/lte/examples/lena-dual-stripe.cc Fri May 18 10:30:14 2012 +0200 +++ b/src/lte/examples/lena-dual-stripe.cc Tue May 29 10:42:17 2012 +0200 @@ -154,11 +154,66 @@ outFile << "set object " << index << " rect from " << box.xMin << "," << box.yMin << " to " << box.xMax << "," << box.yMax - << " front" + << " front fs empty " << std::endl; } } +void +PrintGnuplottableUeListToFile (std::string filename) +{ + std::ofstream outFile; + outFile.open (filename.c_str ()); + if (!outFile.is_open ()) + { + NS_LOG_ERROR ("Can't open file " << filename); + return; + } + for (NodeList::Iterator it = NodeList::Begin (); it != NodeList::End (); ++it) + { + Ptr<Node> node = *it; + int nDevs = node->GetNDevices (); + for (int j = 0; j < nDevs; j++) + { + Ptr<LteUeNetDevice> uedev = node->GetDevice (j)->GetObject <LteUeNetDevice> (); + if (uedev) + { + Vector pos = node->GetObject<MobilityModel> ()->GetPosition (); + outFile << "set label \"" << uedev->GetImsi () + << "\" at "<< pos.x << "," << pos.y << " left font \"Helvetica,4\" textcolor rgb \"grey\" front point pt 1 ps 0.3 lc rgb \"grey\" offset 0,0" + << std::endl; + } + } + } +} + +void +PrintGnuplottableEnbListToFile (std::string filename) +{ + std::ofstream outFile; + outFile.open (filename.c_str ()); + if (!outFile.is_open ()) + { + NS_LOG_ERROR ("Can't open file " << filename); + return; + } + for (NodeList::Iterator it = NodeList::Begin (); it != NodeList::End (); ++it) + { + Ptr<Node> node = *it; + int nDevs = node->GetNDevices (); + for (int j = 0; j < nDevs; j++) + { + Ptr<LteEnbNetDevice> enbdev = node->GetDevice (j)->GetObject <LteEnbNetDevice> (); + if (enbdev) + { + Vector pos = node->GetObject<MobilityModel> ()->GetPosition (); + outFile << "set label \"" << enbdev->GetCellId () + << "\" at "<< pos.x << "," << pos.y << " left font \"Helvetica,4\" textcolor rgb \"white\" front point pt 2 ps 0.3 lc rgb \"white\" offset 0,0" + << std::endl; + } + } + } +} int main (int argc, char *argv[]) @@ -193,7 +248,6 @@ bool epcUl = true; bool useUdp = true; bool generateRem = false; - bool printBuildingList = false; CommandLine cmd; cmd.AddValue ("nBlocks", "Number of femtocell blocks", nBlocks); @@ -222,8 +276,6 @@ cmd.AddValue ("simTime", "Total duration of the simulation [s]", simTime); cmd.AddValue ("generateRem", "if true, will generate a REM and then abort the simulation;" "if false, will run the simulation normally (without generating any REM)", generateRem); - cmd.AddValue ("printBuildingList", "if true, will save a list of buildings with their positions to file;" - "if false, will run the simulation normally (without generating any REM)", printBuildingList); cmd.AddValue ("epc", "if true, will setup the EPC to simulate an end-to-end topology;" "if false, only the LTE radio access will be simulated.", epc); cmd.AddValue ("epcDl", "if true, will activate data flows in the downlink when EPC is being used. " @@ -244,22 +296,32 @@ cmd.Parse (argc, argv); - uint32_t currentSite = nMacroEnbSites -1; - uint32_t biRowIndex = (currentSite / (nMacroEnbSitesX + nMacroEnbSitesX + 1)); - uint32_t biRowRemainder = currentSite % (nMacroEnbSitesX + nMacroEnbSitesX + 1); - uint32_t rowIndex = biRowIndex*2 + 1; - if (biRowRemainder >= nMacroEnbSitesX) + Box macroUeBox; + + if (nMacroEnbSites > 0) { - ++rowIndex; + uint32_t currentSite = nMacroEnbSites -1; + uint32_t biRowIndex = (currentSite / (nMacroEnbSitesX + nMacroEnbSitesX + 1)); + uint32_t biRowRemainder = currentSite % (nMacroEnbSitesX + nMacroEnbSitesX + 1); + uint32_t rowIndex = biRowIndex*2 + 1; + if (biRowRemainder >= nMacroEnbSitesX) + { + ++rowIndex; + } + uint32_t nMacroEnbSitesY = rowIndex; + NS_LOG_LOGIC ("nMacroEnbSitesY = " << nMacroEnbSitesY); + + macroUeBox = Box (-areaMarginFactor*interSiteDistance, + (nMacroEnbSitesX + areaMarginFactor)*interSiteDistance, + -areaMarginFactor*interSiteDistance, + (nMacroEnbSitesY -1)*interSiteDistance*sqrt(0.75) + areaMarginFactor*interSiteDistance, + 1.0, 2.0); } - uint32_t nMacroEnbSitesY = rowIndex; - NS_LOG_LOGIC ("nMacroEnbSitesY = " << nMacroEnbSitesY); - - Box macroUeBox (-areaMarginFactor*interSiteDistance, - (nMacroEnbSitesX + areaMarginFactor)*interSiteDistance, - -areaMarginFactor*interSiteDistance, - (nMacroEnbSitesY -1)*interSiteDistance*sqrt(0.75) + areaMarginFactor*interSiteDistance, - 1.0, 2.0); + else + { + // still need the box to place femtocell blocks + macroUeBox = Box (0, 150, 0, 150, 1.0, 2.0); + } FemtocellBlockAllocator blockAllocator (macroUeBox, nApartmentsX, nFloors); blockAllocator.Create (nBlocks); @@ -353,7 +415,17 @@ mobility.SetPositionAllocator (positionAlloc); mobility.Install (homeUes); NetDeviceContainer homeUeDevs = lteHelper->InstallUeDevice (homeUes); - lteHelper->AttachToClosestEnb (homeUeDevs, homeEnbDevs); + + NetDeviceContainer::Iterator ueDevIt; + NetDeviceContainer::Iterator enbDevIt; + // attach explicitly each home UE to its home eNB + for (ueDevIt = homeUeDevs.Begin (), + enbDevIt = homeEnbDevs.Begin (); + ueDevIt != homeUeDevs.End () && enbDevIt != homeEnbDevs.End (); + ++ueDevIt, ++enbDevIt) + { + lteHelper->Attach (*ueDevIt, *enbDevIt); + } if (epc) @@ -478,6 +550,10 @@ Ptr<RadioEnvironmentMapHelper> remHelper; if (generateRem) { + PrintGnuplottableBuildingListToFile ("buildings.txt"); + PrintGnuplottableEnbListToFile ("enbs.txt"); + PrintGnuplottableUeListToFile ("ues.txt"); + remHelper = CreateObject<RadioEnvironmentMapHelper> (); remHelper->SetAttribute ("ChannelPath", StringValue ("/ChannelList/0")); remHelper->SetAttribute ("OutputFile", StringValue ("lena-dual-stripe.rem")); @@ -488,6 +564,8 @@ remHelper->SetAttribute ("Z", DoubleValue (1.5)); remHelper->Install (); // simulation will stop right after the REM has been generated + + } else { @@ -501,11 +579,6 @@ lteHelper->EnablePdcpTraces (); } - if (printBuildingList) - { - PrintGnuplottableBuildingListToFile ("buildings.txt"); - } - Simulator::Run (); //GtkConfigStore config;
--- a/src/lte/examples/lena-rem-sector-antenna.cc Fri May 18 10:30:14 2012 +0200 +++ b/src/lte/examples/lena-rem-sector-antenna.cc Tue May 29 10:42:17 2012 +0200 @@ -164,12 +164,12 @@ vector < NetDeviceContainer > ueDevs; // power setting in dBm for small cells - Config::SetDefault ("ns3::LteEnbPhy::TxPower", DoubleValue (10.0)); + Config::SetDefault ("ns3::LteEnbPhy::TxPower", DoubleValue (20.0)); enbDevs = lteHelper->InstallEnbDevice (oneSectorNodes); // power setting for three-sector macrocell - Config::SetDefault ("ns3::LteEnbPhy::TxPower", DoubleValue (30.0)); + Config::SetDefault ("ns3::LteEnbPhy::TxPower", DoubleValue (43.0)); // Beam width is made quite narrow so sectors can be noticed in the REM lteHelper->SetEnbAntennaModelType ("ns3::CosineAntennaModel");
--- a/src/lte/model/lte-amc.cc Fri May 18 10:30:14 2012 +0200 +++ b/src/lte/model/lte-amc.cc Tue May 29 10:42:17 2012 +0200 @@ -348,7 +348,7 @@ double ber = 0.0; while (mcs < 28) { - ber = LteMiErrorModel::GetTbError (sinr, rbgMap, (uint16_t)GetTbSizeFromMcs (mcs, rbgSize), mcs); + ber = LteMiErrorModel::GetTbError (sinr, rbgMap, (uint16_t)GetTbSizeFromMcs (mcs, rbgSize) / 8, mcs); if (ber > 0.1) break; mcs++;
--- a/src/lte/model/lte-mi-error-model.cc Fri May 18 10:30:14 2012 +0200 +++ b/src/lte/model/lte-mi-error-model.cc Tue May 29 10:42:17 2012 +0200 @@ -40,7 +40,6 @@ #include <stdint.h> #include "stdlib.h" #include <ns3/lte-mi-error-model.h> -//#include <ns3/lte-amc.h> // for DEBUGing @@ -67,147 +66,173 @@ 5824, 5888, 5952, 6016, 6080, 6144 }; - double MI_map_qpsk[MI_MAP_QPSK_SIZE] = { - 0.241488960000000,0.246542900000000,0.251558600000000,0.256536500000000,0.261477000000000,0.266380510000000,0.271247420000000,0.276078100000000,0.280872930000000,0.285632250000000,0.290356410000000,0.295045750000000,0.299700590000000,0.304321240000000,0.308908030000000,0.313461230000000,0.317981160000000,0.322468090000000,0.326922300000000,0.331344060000000,0.335733640000000,0.340091280000000,0.344417260000000,0.348711800000000,0.352975150000000,0.357207550000000,0.361409220000000,0.364930950000000,0.369063590000000,0.373163910000000,0.377232300000000,0.381269140000000,0.385274790000000,0.389249620000000,0.393193970000000,0.397108200000000,0.400992630000000,0.404847590000000,0.408673420000000,0.412470430000000,0.416238920000000,0.419979200000000,0.423691560000000,0.427376310000000,0.431033730000000,0.434664100000000,0.438267690000000,0.441844780000000,0.445395640000000,0.448920520000000,0.452419680000000,0.455893390000000,0.459341880000000,0.462765400000000,0.466164190000000,0.469538500000000,0.472888540000000,0.476214560000000,0.479516780000000,0.482795410000000,0.486050690000000,0.489282820000000,0.492492030000000,0.495678510000000,0.498842470000000,0.501984120000000,0.505103670000000,0.508201300000000,0.511277210000000,0.514331590000000,0.517364640000000,0.520376540000000,0.523367480000000,0.526337640000000,0.529287190000000,0.532216320000000,0.535125210000000,0.538014010000000,0.540882910000000,0.543732080000000,0.546561670000000,0.549371860000000,0.552162810000000,0.554934680000000,0.557687620000000,0.560421800000000,0.563137360000000,0.565834470000000,0.568513260000000,0.571173900000000,0.573816530000000,0.576441300000000,0.579048340000000,0.581637810000000,0.584209840000000,0.586764580000000,0.589302160000000,0.591822710000000,0.594326380000000,0.596813300000000,0.599283600000000,0.601737400000000,0.604174850000000,0.606596060000000,0.609001170000000,0.611390290000000,0.613763560000000,0.616121100000000,0.618463020000000,0.620789450000000,0.623100500000000,0.625396300000000,0.627676970000000,0.629942600000000,0.632193330000000,0.634429260000000,0.636650510000000,0.638857190000000,0.641049400000000,0.643227250000000,0.645390860000000,0.647540330000000,0.649675770000000,0.651797270000000,0.653904950000000,0.655998910000000,0.658079240000000,0.660146050000000,0.662199440000000,0.664239510000000,0.666266360000000,0.668280070000000,0.670280760000000,0.672268510000000,0.674243420000000,0.676205580000000,0.678155080000000,0.680092020000000,0.682016490000000,0.683928580000000,0.685828370000000,0.687715960000000,0.689591440000000,0.691454880000000,0.693306380000000,0.695146030000000,0.696973900000000,0.698790090000000,0.700594670000000,0.702387730000000,0.704169340000000,0.705939600000000,0.707698580000000,0.709446360000000,0.711183020000000,0.712908640000000,0.714623290000000,0.716327060000000,0.718020020000000,0.719702250000000,0.721373810000000,0.723034800000000,0.724685270000000,0.726325300000000,0.727954970000000,0.729574350000000,0.731183510000000,0.732782520000000,0.734371450000000,0.735950370000000,0.737519350000000,0.739078460000000,0.740627770000000,0.742167340000000,0.743697240000000,0.745217540000000,0.746728300000000,0.748229600000000,0.749721480000000,0.751204030000000,0.752677300000000,0.754141350000000,0.755596250000000,0.757042070000000,0.758478850000000,0.759906670000000,0.761325590000000,0.762735660000000,0.764136940000000,0.765529500000000,0.766913400000000,0.768288690000000,0.769655420000000,0.771013670000000,0.772363480000000,0.773704920000000,0.775038030000000,0.776362880000000,0.777679510000000,0.778988000000000,0.780288380000000,0.781580710000000,0.782865060000000,0.784141460000000,0.785409980000000,0.786670670000000,0.787923570000000,0.789168750000000,0.790406240000000,0.791636110000000,0.792858410000000,0.794073170000000,0.795280460000000,0.796480330000000,0.797672820000000,0.798857970000000,0.800035850000000,0.801206500000000,0.802369960000000,0.803526280000000,0.804675510000000,0.805817700000000,0.806952890000000,0.808081130000000,0.809202470000000,0.810316940000000,0.811424600000000,0.812525490000000,0.813619650000000,0.814707120000000,0.815787960000000,0.816862210000000,0.817929900000000,0.818991080000000,0.820045790000000,0.821094080000000,0.822135980000000,0.823171540000000,0.824200800000000,0.825223800000000,0.826240580000000,0.827251180000000,0.828255640000000,0.829254010000000,0.830246310000000,0.831232590000000,0.832212890000000,0.833187250000000,0.834155700000000,0.835118290000000,0.836075040000000,0.837026010000000,0.837971210000000,0.838910710000000,0.839844520000000,0.840772690000000,0.841695250000000,0.842612230000000,0.843523690000000,0.844429640000000,0.845330120000000,0.846225180000000,0.847114840000000,0.847999130000000,0.848878100000000,0.849751780000000,0.850620200000000,0.851483390000000,0.852341390000000,0.853194230000000,0.854041940000000,0.854884560000000,0.855722120000000,0.856554650000000,0.857382180000000,0.858204740000000,0.859022370000000,0.859835100000000,0.860642950000000,0.861445970000000,0.862244170000000,0.863037590000000,0.863826270000000,0.864610220000000,0.865389480000000,0.866164090000000,0.866934060000000,0.867699430000000,0.868460220000000,0.869216480000000,0.869968210000000,0.870715460000000,0.871458260000000,0.872196620000000,0.872930570000000,0.873660150000000,0.874385390000000,0.875106300000000,0.875822920000000,0.876535280000000,0.877243390000000,0.877947290000000,0.878647000000000,0.879342550000000,0.880033970000000,0.880721280000000,0.881404500000000,0.882083670000000,0.882758810000000,0.883429930000000,0.884097080000000,0.884760270000000,0.885419520000000,0.886074870000000,0.886726330000000,0.887373930000000,0.888017700000000,0.888657650000000,0.889293810000000,0.889926210000000,0.890554870000000,0.891179810000000,0.891801060000000,0.892418630000000,0.893032560000000,0.893642850000000,0.894249540000000,0.894852650000000,0.895452200000000,0.896048210000000,0.896640710000000,0.897229710000000,0.897815230000000,0.898397310000000,0.898975950000000,0.899551190000000,0.900123040000000,0.900691520000000,0.901256650000000,0.901818460000000,0.902376960000000,0.902932180000000,0.903484130000000,0.904032840000000,0.904578320000000,0.905120600000000,0.905659690000000,0.906195620000000,0.906728400000000,0.907258050000000,0.907784600000000,0.908308050000000,0.908828440000000,0.909345770000000,0.909860080000000,0.910371360000000,0.910879660000000,0.911384970000000,0.911887330000000,0.912386740000000,0.912883230000000,0.913376820000000,0.913867520000000,0.914355350000000,0.914840330000000,0.915322470000000,0.915801790000000,0.916278320000000,0.916752060000000,0.917223030000000,0.917691250000000,0.918156740000000,0.918619520000000,0.919079590000000,0.919536980000000,0.919991710000000,0.920443780000000,0.920893220000000,0.921340040000000,0.921784250000000,0.922225880000000,0.922664940000000,0.923101440000000,0.923535400000000,0.923966840000000,0.924395760000000,0.924822190000000,0.925246140000000,0.925667630000000,0.926086670000000,0.926503270000000,0.926917450000000,0.927329230000000,0.927738610000000,0.928145620000000,0.928550270000000,0.928952570000000,0.929352530000000,0.929750180000000,0.930145510000000,0.930538560000000,0.930929330000000,0.931317830000000,0.931704090000000,0.932088100000000,0.932469900000000,0.932849480000000,0.933226860000000,0.933602060000000,0.933975090000000,0.934345960000000 - }; - double MI_map_qpsk_axis[MI_MAP_QPSK_SIZE] = { - -3.97940010000000,-3.87216140000000,-3.76750710000000,-3.66531540000000,-3.56547320000000,-3.46787490000000,-3.37242170000000,-3.27902140000000,-3.18758760000000,-3.09803920000000,-3.01030000000000,-2.92429820000000,-2.83996660000000,-2.75724130000000,-2.67606240000000,-2.59637310000000,-2.51811970000000,-2.44125140000000,-2.36572010000000,-2.29147990000000,-2.21848750000000,-2.14670160000000,-2.07608310000000,-2.00659450000000,-1.93820030000000,-1.87086640000000,-1.80456060000000,-1.73925200000000,-1.67491090000000,-1.61150910000000,-1.54901960000000,-1.48741650000000,-1.42667500000000,-1.36677140000000,-1.30768280000000,-1.24938740000000,-1.19186410000000,-1.13509270000000,-1.07905400000000,-1.02372910000000,-0.969100130000000,-0.915149810000000,-0.861861480000000,-0.809219080000000,-0.757207140000000,-0.705810740000000,-0.655015490000000,-0.604807470000000,-0.555173280000000,-0.506099930000000,-0.457574910000000,-0.409586080000000,-0.362121730000000,-0.315170510000000,-0.268721460000000,-0.222763950000000,-0.177287670000000,-0.132282660000000,-0.0877392430000000,-0.0436480540000000,0,0.0432137380000000,0.0860017180000000,0.128372250000000,0.170333390000000,0.211892990000000,0.253058650000000,0.293837780000000,0.334237550000000,0.374264980000000,0.413926850000000,0.453229790000000,0.492180230000000,0.530784430000000,0.569048510000000,0.606978400000000,0.644579890000000,0.681858620000000,0.718820070000000,0.755469610000000,0.791812460000000,0.827853700000000,0.863598310000000,0.899051110000000,0.934216850000000,0.969100130000000,1.00370550000000,1.03803720000000,1.07209970000000,1.10589710000000,1.13943350000000,1.17271300000000,1.20573930000000,1.23851640000000,1.27104800000000,1.30333770000000,1.33538910000000,1.36720570000000,1.39879090000000,1.43014800000000,1.46128040000000,1.49219110000000,1.52288340000000,1.55336040000000,1.58362490000000,1.61368000000000,1.64352860000000,1.67317330000000,1.70261720000000,1.73186270000000,1.76091260000000,1.78976950000000,1.81843590000000,1.84691430000000,1.87520720000000,1.90331700000000,1.93124600000000,1.95899650000000,1.98657090000000,2.01397120000000,2.04119980000000,2.06825880000000,2.09515010000000,2.12187600000000,2.14843850000000,2.17483940000000,2.20108090000000,2.22716470000000,2.25309280000000,2.27886700000000,2.30448920000000,2.32996110000000,2.35528450000000,2.38046100000000,2.40549250000000,2.43038050000000,2.45512670000000,2.47973270000000,2.50420000000000,2.52853030000000,2.55272510000000,2.57678570000000,2.60071390000000,2.62451090000000,2.64817820000000,2.67171730000000,2.69512940000000,2.71841610000000,2.74157850000000,2.76461800000000,2.78753600000000,2.81033370000000,2.83301230000000,2.85557310000000,2.87801730000000,2.90034610000000,2.92256070000000,2.94466230000000,2.96665190000000,2.98853080000000,3.01030000000000,3.03196060000000,3.05351370000000,3.07496040000000,3.09630170000000,3.11753860000000,3.13867220000000,3.15970350000000,3.18063330000000,3.20146290000000,3.22219290000000,3.24282460000000,3.26335860000000,3.28379600000000,3.30413770000000,3.32438460000000,3.34453750000000,3.36459730000000,3.38456490000000,3.40444110000000,3.42422680000000,3.44392270000000,3.46352970000000,3.48304860000000,3.50248020000000,3.52182520000000,3.54108440000000,3.56025860000000,3.57934850000000,3.59835480000000,3.61727840000000,3.63611980000000,3.65487980000000,3.67355920000000,3.69215860000000,3.71067860000000,3.72912000000000,3.74748350000000,3.76576960000000,3.78397900000000,3.80211240000000,3.82017040000000,3.83815370000000,3.85606270000000,3.87389830000000,3.89166080000000,3.90935110000000,3.92696950000000,3.94451680000000,3.96199350000000,3.97940010000000,3.99673720000000,4.01400540000000,4.03120520000000,4.04833720000000,4.06540180000000,4.08239970000000,4.09933120000000,4.11619710000000,4.13299760000000,4.14973350000000,4.16640510000000,4.18301290000000,4.19955750000000,4.21603930000000,4.23245870000000,4.24881640000000,4.26511260000000,4.28134790000000,4.29752280000000,4.31363760000000,4.32969290000000,4.34568900000000,4.36162650000000,4.37750560000000,4.39332690000000,4.40909080000000,4.42479770000000,4.44044800000000,4.45604200000000,4.47158030000000,4.48706320000000,4.50249110000000,4.51786440000000,4.53318340000000,4.54844860000000,4.56366030000000,4.57881900000000,4.59392490000000,4.60897840000000,4.62398000000000,4.63892990000000,4.65382850000000,4.66867620000000,4.68347330000000,4.69822020000000,4.71291710000000,4.72756450000000,4.74216260000000,4.75671190000000,4.77121250000000,4.78566500000000,4.80006940000000,4.81442630000000,4.82873580000000,4.84299840000000,4.85721430000000,4.87138380000000,4.88550720000000,4.89958480000000,4.91361690000000,4.92760390000000,4.94154590000000,4.95544340000000,4.96929650000000,4.98310550000000,4.99687080000000,5.01059260000000,5.02427120000000,5.03790680000000,5.05149980000000,5.06505030000000,5.07855870000000,5.09202520000000,5.10545010000000,5.11883360000000,5.13217600000000,5.14547750000000,5.15873840000000,5.17195900000000,5.18513940000000,5.19827990000000,5.21138080000000,5.22444230000000,5.23746470000000,5.25044810000000,5.26339280000000,5.27629900000000,5.28916700000000,5.30199700000000,5.31478920000000,5.32754380000000,5.34026110000000,5.35294120000000,5.36558440000000,5.37819100000000,5.39076100000000,5.40329470000000,5.41579240000000,5.42825430000000,5.44068040000000,5.45307120000000,5.46542660000000,5.47774710000000,5.49003260000000,5.50228350000000,5.51450000000000,5.52668220000000,5.53883030000000,5.55094450000000,5.56302500000000,5.57507200000000,5.58708570000000,5.59906630000000,5.61101380000000,5.62292860000000,5.63481090000000,5.64666060000000,5.65847820000000,5.67026370000000,5.68201720000000,5.69373910000000,5.70542940000000,5.71708830000000,5.72871600000000,5.74031270000000,5.75187840000000,5.76341350000000,5.77491800000000,5.78639210000000,5.79783600000000,5.80924980000000,5.82063360000000,5.83198770000000,5.84331220000000,5.85460730000000,5.86587300000000,5.87710970000000,5.88831730000000,5.89949600000000,5.91064610000000,5.92176760000000,5.93286070000000,5.94392550000000,5.95496220000000,5.96597100000000,5.97695190000000,5.98790510000000,5.99883070000000,6.00972900000000,6.02059990000000,6.03144370000000,6.04226050000000,6.05305050000000,6.06381370000000,6.07455020000000,6.08526030000000,6.09594410000000,6.10660160000000,6.11723310000000,6.12783860000000,6.13841820000000,6.14897220000000,6.15950050000000,6.17000340000000,6.18048100000000,6.19093330000000,6.20136050000000,6.21176280000000,6.22214020000000,6.23249290000000,6.24282100000000,6.25312450000000,6.26340370000000,6.27365860000000,6.28388930000000,6.29409600000000,6.30427880000000,6.31443770000000,6.32457290000000,6.33468460000000,6.34477270000000,6.35483750000000,6.36487900000000,6.37489730000000,6.38489260000000,6.39486490000000,6.40481440000000,6.41474110000000,6.42464520000000,6.43452680000000,6.44438590000000,6.45422270000000,6.46403730000000,6.47382970000000,6.48360010000000,6.49334860000000,6.50307520000000,6.51278010000000,6.52246340000000,6.53212510000000 - }; - - double MI_map_16qam[MI_MAP_16QAM_SIZE] = { - 0.456130300000000,0.460154830000000,0.464125120000000,0.468042570000000,0.471908520000000,0.475724250000000,0.479491030000000,0.483210040000000,0.486882460000000,0.490509410000000,0.494091960000000,0.497631160000000,0.501128010000000,0.504583500000000,0.507998570000000,0.511374120000000,0.514711030000000,0.518010150000000,0.521272300000000,0.524498280000000,0.527688850000000,0.530844760000000,0.533966720000000,0.537055440000000,0.539786130000000,0.542806950000000,0.545795760000000,0.548753210000000,0.551679940000000,0.554576570000000,0.557443690000000,0.560281880000000,0.563091700000000,0.565873700000000,0.568628410000000,0.571356350000000,0.574058000000000,0.576733860000000,0.579384390000000,0.582010060000000,0.584611300000000,0.587188540000000,0.589742210000000,0.592272710000000,0.594780440000000,0.597265780000000,0.599729100000000,0.602170780000000,0.604591160000000,0.606990590000000,0.609369400000000,0.611727930000000,0.614066480000000,0.616385380000000,0.618684910000000,0.620965380000000,0.623227080000000,0.625470270000000,0.627695230000000,0.629902230000000,0.632091530000000,0.634263380000000,0.636418020000000,0.638555700000000,0.640676640000000,0.642781080000000,0.644869250000000,0.646941350000000,0.648997600000000,0.651038220000000,0.653063400000000,0.655073340000000,0.657068230000000,0.659048280000000,0.661013650000000,0.662964530000000,0.664901110000000,0.666823550000000,0.668732020000000,0.670626690000000,0.672507730000000,0.674375280000000,0.676229510000000,0.678070580000000,0.679898620000000,0.681713790000000,0.683516230000000,0.685306070000000,0.687083470000000,0.688848550000000,0.690601450000000,0.692342290000000,0.694071210000000,0.695788330000000,0.697493770000000,0.699187650000000,0.700870090000000,0.702541210000000,0.704201120000000,0.705849930000000,0.707487760000000,0.709114710000000,0.710730880000000,0.712336390000000,0.713931330000000,0.715515810000000,0.717089920000000,0.718653760000000,0.720207430000000,0.721751020000000,0.723284630000000,0.724808340000000,0.726322250000000,0.727826440000000,0.729321010000000,0.730806030000000,0.732281590000000,0.733747780000000,0.735204680000000,0.736652360000000,0.738090910000000,0.739520400000000,0.740940920000000,0.742352530000000,0.743755320000000,0.745149350000000,0.746534710000000,0.747911460000000,0.749279670000000,0.750639410000000,0.751990750000000,0.753333770000000,0.754668520000000,0.755995070000000,0.757313490000000,0.758623850000000,0.759926200000000,0.761220620000000,0.762507150000000,0.763785870000000,0.765056830000000,0.766320100000000,0.767575720000000,0.768823770000000,0.770064300000000,0.771297370000000,0.772523030000000,0.773741330000000,0.774952340000000,0.776156110000000,0.777352690000000,0.778542130000000,0.779724490000000,0.780899820000000,0.782068170000000,0.783229590000000,0.784384140000000,0.785531850000000,0.786672790000000,0.787806990000000,0.788934520000000,0.790055410000000,0.791169710000000,0.792277470000000,0.793378740000000,0.794473560000000,0.795561980000000,0.796644030000000,0.797719780000000,0.798789250000000,0.799852500000000,0.800909570000000,0.801960490000000,0.803005310000000,0.804044080000000,0.805076840000000,0.806103620000000,0.807124460000000,0.808139420000000,0.809148520000000,0.810151800000000,0.811149320000000,0.812141090000000,0.813127170000000,0.814107590000000,0.815082390000000,0.816051610000000,0.817015280000000,0.817973440000000,0.818926130000000,0.819873380000000,0.820815220000000,0.821751710000000,0.822682860000000,0.823608710000000,0.824529310000000,0.825444670000000,0.826354850000000,0.827259860000000,0.828159750000000,0.829054550000000,0.829944290000000,0.830829000000000,0.831708720000000,0.832583470000000,0.833453290000000,0.834318220000000,0.835178270000000,0.836033490000000,0.836883900000000,0.837729540000000,0.838570430000000,0.839406610000000,0.840238100000000,0.841064940000000,0.841887150000000,0.842704760000000,0.843517810000000,0.844326310000000,0.845130310000000,0.845929820000000,0.846724880000000,0.847515510000000,0.848301740000000,0.849083600000000,0.849861110000000,0.850634310000000,0.851403220000000,0.852167860000000,0.852928260000000,0.853684450000000,0.854436460000000,0.855184310000000,0.855928020000000,0.856667620000000,0.857403140000000,0.858134600000000,0.858862020000000,0.859585440000000,0.860304870000000,0.861020350000000,0.861731880000000,0.862439500000000,0.863143240000000,0.863843110000000,0.864539140000000,0.865231350000000,0.865919760000000,0.866604410000000,0.867285300000000,0.867962470000000,0.868635930000000,0.869305710000000,0.869971830000000,0.870634320000000,0.871293190000000,0.871948460000000,0.872600160000000,0.873248310000000,0.873892930000000,0.874534050000000,0.875171670000000,0.875805830000000,0.876436540000000,0.877063820000000,0.877687700000000,0.878308200000000,0.878925330000000,0.879539110000000,0.880149570000000,0.880756720000000,0.881360590000000,0.881961190000000,0.882558550000000,0.883152670000000,0.883743590000000,0.884331310000000,0.884915870000000,0.885497270000000,0.886075540000000,0.886650690000000,0.887222740000000,0.887791720000000,0.888357630000000,0.888920510000000,0.889480350000000,0.890037190000000,0.890591040000000,0.891141910000000,0.891689830000000,0.892234810000000,0.892776870000000,0.893316030000000,0.893852290000000,0.894385690000000,0.894916240000000,0.895443940000000,0.895968830000000,0.896490910000000,0.897010210000000,0.897526730000000,0.898040490000000,0.898551520000000,0.899059820000000,0.899565420000000,0.900068320000000,0.900568540000000,0.901066100000000,0.901561020000000,0.902053300000000,0.902542970000000,0.903030030000000,0.903514510000000,0.903996420000000,0.904475770000000,0.904952580000000,0.905426860000000,0.905898630000000,0.906367900000000,0.906834690000000,0.907299010000000,0.907760870000000,0.908220280000000,0.908677270000000,0.909131850000000,0.909584030000000,0.910033810000000,0.910481230000000,0.910926280000000,0.911368990000000,0.911809370000000,0.912247420000000,0.912683170000000,0.913116630000000,0.913547800000000,0.913976710000000,0.914403360000000,0.914827770000000,0.915249950000000,0.915669920000000,0.916087680000000,0.916503240000000,0.916916630000000,0.917327850000000,0.917736920000000,0.918143840000000,0.918548630000000,0.918951310000000,0.919351870000000,0.919750340000000,0.920146730000000,0.920541040000000,0.920933300000000,0.921323510000000,0.921711680000000,0.922097820000000,0.922481950000000,0.922864080000000,0.923244210000000,0.923622370000000,0.923998550000000,0.924372780000000,0.924745060000000,0.925115400000000,0.925483810000000,0.925850310000000,0.926214910000000,0.926577610000000,0.926938430000000,0.927297370000000,0.927654450000000,0.928009680000000,0.928363070000000,0.928714620000000,0.929064360000000,0.929412280000000,0.929758400000000,0.930102730000000,0.930445270000000,0.930786050000000,0.931125060000000,0.931462320000000,0.931797840000000,0.932131620000000,0.932463690000000,0.932794030000000,0.933122680000000,0.933449620000000,0.933774890000000,0.934098470000000,0.934420390000000,0.934740650000000,0.935059260000000,0.935376230000000,0.935691570000000,0.936005290000000,0.936317400000000,0.936627900000000,0.936936800000000,0.937244120000000,0.937549860000000,0.937854030000000,0.938156640000000,0.938457700000000,0.938757220000000,0.939055200000000,0.939351650000000,0.939646580000000,0.939940000000000,0.940231930000000,0.940522350000000,0.940811290000000,0.941098760000000,0.941384750000000,0.941669280000000,0.941952360000000,0.942234000000000,0.942514190000000,0.942792960000000,0.943070300000000,0.943346230000000,0.943620750000000,0.943893870000000,0.944165600000000,0.944435940000000,0.944704910000000,0.944972510000000,0.945238750000000,0.945503630000000,0.945767170000000,0.946029370000000,0.946290230000000,0.946549770000000,0.946807990000000,0.947064900000000,0.947320500000000,0.947574810000000,0.947827830000000,0.948079560000000,0.948330020000000,0.948579210000000,0.948827140000000,0.949073810000000,0.949319230000000,0.949563410000000,0.949806350000000,0.950048070000000,0.950288560000000,0.950527840000000,0.950765900000000,0.951002770000000,0.951238440000000,0.951472910000000,0.951706210000000,0.951938330000000,0.952169270000000,0.952399060000000,0.952627680000000,0.952855150000000,0.953081470000000,0.953306660000000,0.953530710000000,0.953753630000000,0.953975430000000,0.954196120000000,0.954415700000000,0.954634170000000,0.954851540000000,0.955067820000000,0.955283020000000,0.955497130000000,0.955710170000000,0.955922140000000,0.956133040000000,0.956342890000000,0.956551690000000,0.956759440000000,0.956966150000000,0.957171820000000,0.957376460000000,0.957580080000000,0.957782680000000,0.957984260000000,0.958184840000000,0.958384410000000,0.958582980000000,0.958780570000000,0.958977160000000,0.959172770000000,0.959367410000000,0.959561070000000,0.959753770000000,0.959945510000000,0.960136290000000,0.960326120000000,0.960515000000000,0.960702940000000,0.960889940000000,0.961076010000000,0.961261160000000,0.961445380000000,0.961628690000000,0.961811080000000,0.961992570000000,0.962173160000000,0.962352840000000,0.962531640000000,0.962709540000000,0.962886560000000,0.963062710000000,0.963237980000000,0.963412370000000,0.963585910000000,0.963758580000000,0.963930390000000,0.964101360000000,0.964271470000000,0.964440750000000,0.964609180000000,0.964776780000000,0.964943550000000,0.965109500000000,0.965274620000000,0.965438930000000,0.965602430000000,0.965765110000000,0.965926990000000,0.966088080000000,0.966248360000000,0.966407860000000,0.966566560000000,0.966724490000000,0.966881630000000,0.967038000000000,0.967193600000000,0.967348430000000,0.967502490000000,0.967655800000000,0.967808350000000,0.967960150000000,0.968111210000000,0.968261520000000,0.968411090000000,0.968559920000000,0.968708020000000,0.968855390000000,0.969002040000000,0.969147970000000,0.969293180000000,0.969437680000000,0.969581460000000,0.969724540000000,0.969866920000000,0.970008600000000,0.970149590000000,0.970289880000000,0.970429480000000,0.970568400000000,0.970706640000000,0.970844200000000,0.970981090000000,0.971117310000000,0.971252860000000,0.971387750000000,0.971521970000000,0.971655540000000,0.971788460000000,0.971920720000000,0.972052340000000,0.972183320000000,0.972313660000000,0.972443360000000,0.972572420000000,0.972700860000000,0.972828660000000,0.972955850000000,0.973082410000000,0.973208360000000,0.973333690000000,0.973458410000000,0.973582530000000,0.973706030000000,0.973828940000000,0.973951250000000,0.974072960000000,0.974194080000000,0.974314610000000,0.974434550000000,0.974553910000000,0.974672690000000,0.974790890000000,0.974908520000000,0.975025580000000,0.975142060000000,0.975257980000000,0.975373340000000,0.975488140000000,0.975602380000000,0.975716060000000,0.975829200000000,0.975941780000000 - }; - double MI_map_16qam_axis[MI_MAP_16QAM_SIZE] = { - 4.77121250000000,4.84299840000000,4.91361690000000,4.98310550000000,5.05149980000000,5.11883360000000,5.18513940000000,5.25044810000000,5.31478920000000,5.37819100000000,5.44068040000000,5.50228350000000,5.56302500000000,5.62292860000000,5.68201720000000,5.74031270000000,5.79783600000000,5.85460730000000,5.91064610000000,5.96597100000000,6.02059990000000,6.07455020000000,6.12783860000000,6.18048100000000,6.23249290000000,6.28388930000000,6.33468460000000,6.38489260000000,6.43452680000000,6.48360010000000,6.53212510000000,6.58011400000000,6.62757830000000,6.67452950000000,6.72097860000000,6.76693610000000,6.81241240000000,6.85741740000000,6.90196080000000,6.94605200000000,6.98970000000000,7.03291380000000,7.07570180000000,7.11807230000000,7.16003340000000,7.20159300000000,7.24275870000000,7.28353780000000,7.32393760000000,7.36396500000000,7.40362690000000,7.44292980000000,7.48188030000000,7.52048450000000,7.55874860000000,7.59667840000000,7.63427990000000,7.67155870000000,7.70852010000000,7.74516970000000,7.78151250000000,7.81755370000000,7.85329840000000,7.88875120000000,7.92391690000000,7.95880020000000,7.99340550000000,8.02773730000000,8.06179970000000,8.09559710000000,8.12913360000000,8.16241300000000,8.19543940000000,8.22821650000000,8.26074800000000,8.29303770000000,8.32508910000000,8.35690570000000,8.38849090000000,8.41984800000000,8.45098040000000,8.48189120000000,8.51258350000000,8.54306040000000,8.57332500000000,8.60338010000000,8.63322860000000,8.66287340000000,8.69231720000000,8.72156270000000,8.75061260000000,8.77946950000000,8.80813590000000,8.83661440000000,8.86490730000000,8.89301700000000,8.92094600000000,8.94869660000000,8.97627090000000,9.00367130000000,9.03089990000000,9.05795880000000,9.08485020000000,9.11157610000000,9.13813850000000,9.16453950000000,9.19078090000000,9.21686480000000,9.24279290000000,9.26856710000000,9.29418930000000,9.31966110000000,9.34498450000000,9.37016110000000,9.39519250000000,9.42008050000000,9.44482670000000,9.46943270000000,9.49390010000000,9.51823040000000,9.54242510000000,9.56648580000000,9.59041390000000,9.61421090000000,9.63787830000000,9.66141730000000,9.68482950000000,9.70811610000000,9.73127850000000,9.75431810000000,9.77723610000000,9.80003370000000,9.82271230000000,9.84527310000000,9.86771730000000,9.89004620000000,9.91226080000000,9.93436230000000,9.95635190000000,9.97823080000000,10,10.0216610000000,10.0432140000000,10.0646600000000,10.0860020000000,10.1072390000000,10.1283720000000,10.1494030000000,10.1703330000000,10.1911630000000,10.2118930000000,10.2325250000000,10.2530590000000,10.2734960000000,10.2938380000000,10.3140850000000,10.3342380000000,10.3542970000000,10.3742650000000,10.3941410000000,10.4139270000000,10.4336230000000,10.4532300000000,10.4727490000000,10.4921800000000,10.5115250000000,10.5307840000000,10.5499590000000,10.5690490000000,10.5880550000000,10.6069780000000,10.6258200000000,10.6445800000000,10.6632590000000,10.6818590000000,10.7003790000000,10.7188200000000,10.7371840000000,10.7554700000000,10.7736790000000,10.7918120000000,10.8098700000000,10.8278540000000,10.8457630000000,10.8635980000000,10.8813610000000,10.8990510000000,10.9166700000000,10.9342170000000,10.9516940000000,10.9691000000000,10.9864370000000,11.0037050000000,11.0209050000000,11.0380370000000,11.0551020000000,11.0721000000000,11.0890310000000,11.1058970000000,11.1226980000000,11.1394340000000,11.1561050000000,11.1727130000000,11.1892580000000,11.2057390000000,11.2221590000000,11.2385160000000,11.2548130000000,11.2710480000000,11.2872230000000,11.3033380000000,11.3193930000000,11.3353890000000,11.3513270000000,11.3672060000000,11.3830270000000,11.3987910000000,11.4144980000000,11.4301480000000,11.4457420000000,11.4612800000000,11.4767630000000,11.4921910000000,11.5075640000000,11.5228830000000,11.5381490000000,11.5533600000000,11.5685190000000,11.5836250000000,11.5986780000000,11.6136800000000,11.6286300000000,11.6435290000000,11.6583760000000,11.6731730000000,11.6879200000000,11.7026170000000,11.7172650000000,11.7318630000000,11.7464120000000,11.7609130000000,11.7753650000000,11.7897690000000,11.8041260000000,11.8184360000000,11.8326980000000,11.8469140000000,11.8610840000000,11.8752070000000,11.8892850000000,11.9033170000000,11.9173040000000,11.9312460000000,11.9451430000000,11.9589970000000,11.9728060000000,11.9865710000000,12.0002930000000,12.0139710000000,12.0276070000000,12.0412000000000,12.0547500000000,12.0682590000000,12.0817250000000,12.0951500000000,12.1085340000000,12.1218760000000,12.1351780000000,12.1484380000000,12.1616590000000,12.1748390000000,12.1879800000000,12.2010810000000,12.2141420000000,12.2271650000000,12.2401480000000,12.2530930000000,12.2659990000000,12.2788670000000,12.2916970000000,12.3044890000000,12.3172440000000,12.3299610000000,12.3426410000000,12.3552840000000,12.3678910000000,12.3804610000000,12.3929950000000,12.4054920000000,12.4179540000000,12.4303800000000,12.4427710000000,12.4551270000000,12.4674470000000,12.4797330000000,12.4919840000000,12.5042000000000,12.5163820000000,12.5285300000000,12.5406450000000,12.5527250000000,12.5647720000000,12.5767860000000,12.5887660000000,12.6007140000000,12.6126290000000,12.6245110000000,12.6363610000000,12.6481780000000,12.6599640000000,12.6717170000000,12.6834390000000,12.6951290000000,12.7067880000000,12.7184160000000,12.7300130000000,12.7415780000000,12.7531140000000,12.7646180000000,12.7760920000000,12.7875360000000,12.7989500000000,12.8103340000000,12.8216880000000,12.8330120000000,12.8443070000000,12.8555730000000,12.8668100000000,12.8780170000000,12.8891960000000,12.9003460000000,12.9114680000000,12.9225610000000,12.9336260000000,12.9446620000000,12.9556710000000,12.9666520000000,12.9776050000000,12.9885310000000,12.9994290000000,13.0103000000000,13.0211440000000,13.0319610000000,13.0427510000000,13.0535140000000,13.0642500000000,13.0749600000000,13.0856440000000,13.0963020000000,13.1069330000000,13.1175390000000,13.1281180000000,13.1386720000000,13.1492010000000,13.1597030000000,13.1701810000000,13.1806330000000,13.1910610000000,13.2014630000000,13.2118400000000,13.2221930000000,13.2325210000000,13.2428250000000,13.2531040000000,13.2633590000000,13.2735890000000,13.2837960000000,13.2939790000000,13.3041380000000,13.3142730000000,13.3243850000000,13.3344730000000,13.3445380000000,13.3545790000000,13.3645970000000,13.3745930000000,13.3845650000000,13.3945140000000,13.4044410000000,13.4143450000000,13.4242270000000,13.4340860000000,13.4439230000000,13.4537370000000,13.4635300000000,13.4733000000000,13.4830490000000,13.4927750000000,13.5024800000000,13.5121630000000,13.5218250000000,13.5314650000000,13.5410840000000,13.5506820000000,13.5602590000000,13.5698140000000,13.5793480000000,13.5888620000000,13.5983550000000,13.6078270000000,13.6172780000000,13.6267090000000,13.6361200000000,13.6455100000000,13.6548800000000,13.6642300000000,13.6735590000000,13.6828690000000,13.6921590000000,13.7014280000000,13.7106790000000,13.7199090000000,13.7291200000000,13.7383110000000,13.7474830000000,13.7566360000000,13.7657700000000,13.7748840000000,13.7839790000000,13.7930550000000,13.8021120000000,13.8111510000000,13.8201700000000,13.8291710000000,13.8381540000000,13.8471170000000,13.8560630000000,13.8649900000000,13.8738980000000,13.8827890000000,13.8916610000000,13.9005150000000,13.9093510000000,13.9181690000000,13.9269700000000,13.9357520000000,13.9445170000000,13.9532640000000,13.9619930000000,13.9707050000000,13.9794000000000,13.9880770000000,13.9967370000000,14.0053800000000,14.0140050000000,14.0226140000000,14.0312050000000,14.0397800000000,14.0483370000000,14.0568780000000,14.0654020000000,14.0739090000000,14.0824000000000,14.0908740000000,14.0993310000000,14.1077720000000,14.1161970000000,14.1246050000000,14.1329980000000,14.1413740000000,14.1497330000000,14.1580770000000,14.1664050000000,14.1747170000000,14.1830130000000,14.1912930000000,14.1995570000000,14.2078060000000,14.2160390000000,14.2242570000000,14.2324590000000,14.2406450000000,14.2488160000000,14.2569720000000,14.2651130000000,14.2732380000000,14.2813480000000,14.2894430000000,14.2975230000000,14.3055880000000,14.3136380000000,14.3216730000000,14.3296930000000,14.3376980000000,14.3456890000000,14.3536650000000,14.3616260000000,14.3695730000000,14.3775060000000,14.3854230000000,14.3933270000000,14.4012160000000,14.4090910000000,14.4169510000000,14.4247980000000,14.4326300000000,14.4404480000000,14.4482520000000,14.4560420000000,14.4638180000000,14.4715800000000,14.4793290000000,14.4870630000000,14.4947840000000,14.5024910000000,14.5101850000000,14.5178640000000,14.5255310000000,14.5331830000000,14.5408230000000,14.5484490000000,14.5560610000000,14.5636600000000,14.5712460000000,14.5788190000000,14.5863780000000,14.5939250000000,14.6014580000000,14.6089780000000,14.6164860000000,14.6239800000000,14.6314610000000,14.6389300000000,14.6463860000000,14.6538290000000,14.6612590000000,14.6686760000000,14.6760810000000,14.6834730000000,14.6908530000000,14.6982200000000,14.7055750000000,14.7129170000000,14.7202470000000,14.7275640000000,14.7348700000000,14.7421630000000,14.7494430000000,14.7567120000000,14.7639680000000,14.7712130000000,14.7784450000000,14.7856650000000,14.7928730000000,14.8000690000000,14.8072540000000,14.8144260000000,14.8215870000000,14.8287360000000,14.8358730000000,14.8429980000000,14.8501120000000,14.8572140000000,14.8643050000000,14.8713840000000,14.8784510000000,14.8855070000000,14.8925520000000,14.8995850000000,14.9066070000000,14.9136170000000,14.9206160000000,14.9276040000000,14.9345810000000,14.9415460000000,14.9485000000000,14.9554430000000,14.9623750000000,14.9692960000000,14.9762060000000,14.9831060000000,14.9899940000000,14.9968710000000,15.0037370000000,15.0105930000000,15.0174370000000,15.0242710000000,15.0310940000000,15.0379070000000,15.0447090000000,15.0515000000000,15.0582800000000,15.0650500000000,15.0718100000000,15.0785590000000,15.0852970000000,15.0920250000000,15.0987430000000,15.1054500000000,15.1121470000000,15.1188340000000,15.1255100000000,15.1321760000000,15.1388320000000,15.1454780000000,15.1521130000000,15.1587380000000,15.1653540000000,15.1719590000000,15.1785540000000,15.1851390000000 - }; - - - double MI_map_64qam[MI_MAP_64QAM_SIZE] = { - 0.594727140000000,0.597397600000000,0.600038840000000,0.602651650000000,0.605236780000000,0.607794940000000,0.610326790000000,0.612832980000000,0.615314110000000,0.617770790000000,0.620203550000000,0.622612930000000,0.624999450000000,0.627363570000000,0.629705780000000,0.632026500000000,0.634326170000000,0.636605200000000,0.638863960000000,0.641102840000000,0.643322200000000,0.645522370000000,0.647703700000000,0.649866490000000,0.652011060000000,0.653921260000000,0.656028510000000,0.658118030000000,0.660190110000000,0.662245020000000,0.664283030000000,0.666304390000000,0.668309340000000,0.670298130000000,0.672270970000000,0.674228110000000,0.676169740000000,0.678096090000000,0.680007360000000,0.681903740000000,0.683785420000000,0.685652600000000,0.687505460000000,0.689344180000000,0.691168920000000,0.692979860000000,0.694777160000000,0.696560970000000,0.698331470000000,0.700088790000000,0.701833100000000,0.703564520000000,0.705283220000000,0.706989320000000,0.708682960000000,0.710364280000000,0.712033410000000,0.713690470000000,0.715335590000000,0.716968900000000,0.718590510000000,0.720200540000000,0.721799110000000,0.723386330000000,0.724962320000000,0.726527190000000,0.728081030000000,0.729623970000000,0.731156100000000,0.732677520000000,0.734188340000000,0.735688660000000,0.737178580000000,0.738658180000000,0.740127580000000,0.741586850000000,0.743036090000000,0.744475400000000,0.745904850000000,0.747324550000000,0.748734580000000,0.750135010000000,0.751525950000000,0.752907460000000,0.754279630000000,0.755642550000000,0.756996300000000,0.758340940000000,0.759676570000000,0.761003250000000,0.762321070000000,0.763630100000000,0.764930410000000,0.766222070000000,0.767505170000000,0.768779760000000,0.770045930000000,0.771303740000000,0.772553250000000,0.773794550000000,0.775027690000000,0.776252740000000,0.777469770000000,0.778678850000000,0.779880030000000,0.781073380000000,0.782258970000000,0.783436860000000,0.784607110000000,0.785769770000000,0.786924920000000,0.788072610000000,0.789212890000000,0.790345840000000,0.791471500000000,0.792589930000000,0.793701200000000,0.794805350000000,0.795902440000000,0.796992530000000,0.798075670000000,0.799151910000000,0.800221320000000,0.801283940000000,0.802339820000000,0.803389010000000,0.804431580000000,0.805467560000000,0.806497010000000,0.807519980000000,0.808536520000000,0.809546670000000,0.810550490000000,0.811548020000000,0.812539320000000,0.813524420000000,0.814503370000000,0.815476230000000,0.816443030000000,0.817403820000000,0.818358650000000,0.819307570000000,0.820250600000000,0.821187810000000,0.822119230000000,0.823044900000000,0.823964880000000,0.824879190000000,0.825787880000000,0.826691000000000,0.827588580000000,0.828480670000000,0.829367300000000,0.830248520000000,0.831124360000000,0.831994870000000,0.832860070000000,0.833720020000000,0.834574750000000,0.835424300000000,0.836268700000000,0.837107990000000,0.837942220000000,0.838771400000000,0.839595590000000,0.840414820000000,0.841229120000000,0.842038530000000,0.842843080000000,0.843642820000000,0.844437760000000,0.845227950000000,0.846013420000000,0.846794210000000,0.847570340000000,0.848341850000000,0.849108780000000,0.849871150000000,0.850629000000000,0.851382360000000,0.852131270000000,0.852875740000000,0.853615820000000,0.854351530000000,0.855082900000000,0.855809980000000,0.856532770000000,0.857251320000000,0.857965660000000,0.858675810000000,0.859381810000000,0.860083670000000,0.860781440000000,0.861475130000000,0.862164790000000,0.862850420000000,0.863532070000000,0.864209760000000,0.864883520000000,0.865553370000000,0.866219340000000,0.866881460000000,0.867539760000000,0.868194250000000,0.868844970000000,0.869491940000000,0.870135190000000,0.870774740000000,0.871410620000000,0.872042850000000,0.872671460000000,0.873296470000000,0.873917910000000,0.874535800000000,0.875150160000000,0.875761010000000,0.876368400000000,0.876972320000000,0.877572810000000,0.878169900000000,0.878763590000000,0.879353930000000,0.879940920000000,0.880524600000000,0.881104970000000,0.881682080000000,0.882255930000000,0.882826540000000,0.883393950000000,0.883958170000000,0.884519220000000,0.885077130000000,0.885631910000000,0.886183580000000,0.886732170000000,0.887277690000000,0.887820170000000,0.888359630000000,0.888896080000000,0.889429540000000,0.889960040000000,0.890487590000000,0.891012220000000,0.891533940000000,0.892052770000000,0.892568730000000,0.893081840000000,0.893592110000000,0.894099570000000,0.894604240000000,0.895106120000000,0.895605250000000,0.896101630000000,0.896595290000000,0.897086240000000,0.897574500000000,0.898060090000000,0.898543020000000,0.899023320000000,0.899500990000000,0.899976060000000,0.900448540000000,0.900918450000000,0.901385800000000,0.901850610000000,0.902312910000000,0.902772690000000,0.903229990000000,0.903684800000000,0.904137160000000,0.904587080000000,0.905034570000000,0.905479640000000,0.905922320000000,0.906362610000000,0.906800540000000,0.907236110000000,0.907669350000000,0.908100260000000,0.908528860000000,0.908955170000000,0.909379200000000,0.909800960000000,0.910220480000000,0.910637750000000,0.911052800000000,0.911465640000000,0.911876290000000,0.912284750000000,0.912691050000000,0.913095180000000,0.913497180000000,0.913897050000000,0.914294800000000,0.914690450000000,0.915084010000000,0.915475490000000,0.915864910000000,0.916252280000000,0.916637610000000,0.917020910000000,0.917402200000000,0.917781490000000,0.918158790000000,0.918534110000000,0.918907470000000,0.919278870000000,0.919648330000000,0.920015870000000,0.920381480000000,0.920745190000000,0.921107010000000,0.921466940000000,0.921825000000000,0.922181210000000,0.922535560000000,0.922888070000000,0.923238760000000,0.923587630000000,0.923934700000000,0.924279980000000,0.924623470000000,0.924965190000000,0.925305140000000,0.925643350000000,0.925979810000000,0.926314550000000,0.926647560000000,0.926978870000000,0.927308470000000,0.927636390000000,0.927962630000000,0.928287190000000,0.928610100000000,0.928931360000000,0.929250980000000,0.929568970000000,0.929885330000000,0.930200090000000,0.930513250000000,0.930824810000000,0.931134790000000,0.931443200000000,0.931750040000000,0.932055330000000,0.932359080000000,0.932661280000000,0.932961960000000,0.933261120000000,0.933558770000000,0.933854920000000,0.934149580000000,0.934442750000000,0.934734450000000,0.935024690000000,0.935313460000000,0.935600790000000,0.935886670000000,0.936171120000000,0.936454150000000,0.936735770000000,0.937015970000000,0.937294770000000,0.937572190000000,0.937848220000000,0.938122870000000,0.938396160000000,0.938668080000000,0.938938660000000,0.939207890000000,0.939475780000000,0.939742350000000,0.940007590000000,0.940271520000000,0.940534140000000,0.940795470000000,0.941055500000000,0.941314250000000,0.941571720000000,0.941827930000000,0.942082870000000,0.942336550000000,0.942588990000000,0.942840190000000,0.943090150000000,0.943338890000000,0.943586410000000,0.943832710000000,0.944077810000000,0.944321710000000,0.944564410000000,0.944805930000000,0.945046270000000,0.945285440000000,0.945523440000000,0.945760280000000,0.945995970000000,0.946230510000000,0.946463920000000,0.946696180000000,0.946927330000000,0.947157340000000,0.947386250000000,0.947614050000000,0.947840740000000,0.948066340000000,0.948290840000000,0.948514270000000,0.948736610000000,0.948957880000000,0.949178090000000,0.949397230000000,0.949615320000000,0.949832360000000,0.950048360000000,0.950263320000000,0.950477250000000,0.950690150000000,0.950902040000000,0.951112910000000,0.951322770000000,0.951531620000000,0.951739480000000,0.951946340000000,0.952152220000000,0.952357120000000,0.952561040000000,0.952763980000000,0.952965970000000,0.953166990000000,0.953367060000000,0.953566170000000,0.953764340000000,0.953961570000000,0.954157870000000,0.954353240000000,0.954547680000000,0.954741200000000,0.954933810000000,0.955125510000000,0.955316300000000,0.955506190000000,0.955695190000000,0.955883300000000,0.956070520000000,0.956256860000000,0.956442320000000,0.956626920000000,0.956810640000000,0.956993510000000,0.957175510000000,0.957356670000000,0.957536970000000,0.957716430000000,0.957895060000000,0.958072840000000,0.958249800000000,0.958425930000000,0.958601240000000,0.958775730000000,0.958949410000000,0.959122280000000,0.959294350000000,0.959465610000000,0.959636080000000,0.959805760000000,0.959974650000000,0.960142760000000,0.960310090000000,0.960476640000000,0.960642420000000,0.960807440000000,0.960971690000000,0.961135180000000,0.961297920000000,0.961459910000000,0.961621150000000,0.961781640000000,0.961941400000000,0.962100420000000,0.962258710000000,0.962416280000000,0.962573110000000,0.962729230000000,0.962884630000000,0.963039320000000,0.963193300000000,0.963346580000000,0.963499150000000,0.963651030000000,0.963802210000000,0.963952700000000,0.964102500000000,0.964251620000000,0.964400050000000,0.964547820000000,0.964694900000000,0.964841320000000,0.964987080000000,0.965132160000000,0.965276590000000,0.965420370000000,0.965563490000000,0.965705960000000,0.965847790000000,0.965988970000000,0.966129510000000,0.966269420000000,0.966408690000000,0.966547340000000,0.966685350000000,0.966822750000000,0.966959520000000,0.967095680000000,0.967231220000000,0.967366160000000,0.967500480000000,0.967634200000000,0.967767320000000,0.967899840000000,0.968031770000000,0.968163100000000,0.968293840000000,0.968424000000000,0.968553570000000,0.968682560000000,0.968810980000000,0.968938820000000,0.969066090000000,0.969192790000000,0.969318920000000,0.969444490000000,0.969569500000000,0.969693950000000,0.969817850000000,0.969941190000000,0.970063990000000,0.970186240000000,0.970307950000000,0.970429110000000,0.970549740000000,0.970669830000000,0.970789380000000,0.970908410000000,0.971026910000000,0.971144880000000,0.971262330000000,0.971379260000000,0.971495680000000,0.971611580000000,0.971726960000000,0.971841840000000,0.971956210000000,0.972070080000000,0.972183440000000,0.972296300000000,0.972408670000000,0.972520540000000,0.972631920000000,0.972742810000000,0.972853210000000,0.972963120000000,0.973072560000000,0.973181510000000,0.973289980000000,0.973397980000000,0.973505510000000,0.973612560000000,0.973719150000000,0.973825270000000,0.973930920000000,0.974036110000000,0.974140850000000,0.974245120000000,0.974348940000000,0.974452310000000,0.974555230000000,0.974657690000000,0.974759720000000,0.974861290000000,0.974962430000000,0.975063120000000,0.975163380000000,0.975263200000000,0.975362590000000,0.975461550000000,0.975560070000000,0.975658170000000,0.975755850000000,0.975853100000000,0.975949930000000,0.976046340000000,0.976142330000000,0.976237910000000,0.976333080000000,0.976427830000000,0.976522170000000,0.976616110000000,0.976709640000000,0.976802770000000,0.976895500000000,0.976987830000000,0.977079760000000,0.977171290000000,0.977262430000000,0.977353180000000,0.977443540000000,0.977533510000000,0.977623090000000,0.977712290000000,0.977801110000000,0.977889540000000,0.977977600000000,0.978065280000000,0.978152580000000,0.978239510000000,0.978326070000000,0.978412260000000,0.978498080000000,0.978583530000000,0.978668620000000,0.978753340000000,0.978837700000000,0.978921700000000,0.979005350000000,0.979088640000000,0.979171570000000,0.979254150000000,0.979336380000000,0.979418260000000,0.979499790000000,0.979580970000000,0.979661810000000,0.979742310000000,0.979822460000000,0.979902280000000,0.979981750000000,0.980060890000000,0.980139700000000,0.980218170000000,0.980296300000000,0.980374110000000,0.980451590000000,0.980528740000000,0.980605560000000,0.980682060000000,0.980758240000000,0.980834090000000,0.980909630000000,0.980984850000000,0.981059750000000,0.981134330000000,0.981208600000000,0.981282560000000,0.981356200000000,0.981429540000000,0.981502560000000,0.981575280000000,0.981647700000000,0.981719810000000,0.981791620000000,0.981863120000000,0.981934330000000,0.982005240000000,0.982075850000000,0.982146160000000,0.982216180000000,0.982285910000000,0.982355350000000,0.982424490000000,0.982493350000000,0.982561920000000,0.982630200000000,0.982698190000000,0.982765910000000,0.982833340000000 - }; - double MI_map_64qam_axis[MI_MAP_64QAM_SIZE] = { - 11.7609130000000,11.8184360000000,11.8752070000000,11.9312460000000,11.9865710000000,12.0412000000000,12.0951500000000,12.1484380000000,12.2010810000000,12.2530930000000,12.3044890000000,12.3552840000000,12.4054920000000,12.4551270000000,12.5042000000000,12.5527250000000,12.6007140000000,12.6481780000000,12.6951290000000,12.7415780000000,12.7875360000000,12.8330120000000,12.8780170000000,12.9225610000000,12.9666520000000,13.0103000000000,13.0535140000000,13.0963020000000,13.1386720000000,13.1806330000000,13.2221930000000,13.2633590000000,13.3041380000000,13.3445380000000,13.3845650000000,13.4242270000000,13.4635300000000,13.5024800000000,13.5410840000000,13.5793480000000,13.6172780000000,13.6548800000000,13.6921590000000,13.7291200000000,13.7657700000000,13.8021120000000,13.8381540000000,13.8738980000000,13.9093510000000,13.9445170000000,13.9794000000000,14.0140050000000,14.0483370000000,14.0824000000000,14.1161970000000,14.1497330000000,14.1830130000000,14.2160390000000,14.2488160000000,14.2813480000000,14.3136380000000,14.3456890000000,14.3775060000000,14.4090910000000,14.4404480000000,14.4715800000000,14.5024910000000,14.5331830000000,14.5636600000000,14.5939250000000,14.6239800000000,14.6538290000000,14.6834730000000,14.7129170000000,14.7421630000000,14.7712130000000,14.8000690000000,14.8287360000000,14.8572140000000,14.8855070000000,14.9136170000000,14.9415460000000,14.9692960000000,14.9968710000000,15.0242710000000,15.0515000000000,15.0785590000000,15.1054500000000,15.1321760000000,15.1587380000000,15.1851390000000,15.2113810000000,15.2374650000000,15.2633930000000,15.2891670000000,15.3147890000000,15.3402610000000,15.3655840000000,15.3907610000000,15.4157920000000,15.4406800000000,15.4654270000000,15.4900330000000,15.5145000000000,15.5388300000000,15.5630250000000,15.5870860000000,15.6110140000000,15.6348110000000,15.6584780000000,15.6820170000000,15.7054290000000,15.7287160000000,15.7518780000000,15.7749180000000,15.7978360000000,15.8206340000000,15.8433120000000,15.8658730000000,15.8883170000000,15.9106460000000,15.9328610000000,15.9549620000000,15.9769520000000,15.9988310000000,16.0206000000000,16.0422610000000,16.0638140000000,16.0852600000000,16.1066020000000,16.1278390000000,16.1489720000000,16.1700030000000,16.1909330000000,16.2117630000000,16.2324930000000,16.2531250000000,16.2736590000000,16.2940960000000,16.3144380000000,16.3346850000000,16.3548370000000,16.3748970000000,16.3948650000000,16.4147410000000,16.4345270000000,16.4542230000000,16.4738300000000,16.4933490000000,16.5127800000000,16.5321250000000,16.5513840000000,16.5705590000000,16.5896480000000,16.6086550000000,16.6275780000000,16.6464200000000,16.6651800000000,16.6838590000000,16.7024590000000,16.7209790000000,16.7394200000000,16.7577830000000,16.7760700000000,16.7942790000000,16.8124120000000,16.8304700000000,16.8484540000000,16.8663630000000,16.8841980000000,16.9019610000000,16.9196510000000,16.9372690000000,16.9548170000000,16.9722930000000,16.9897000000000,17.0070370000000,17.0243050000000,17.0415050000000,17.0586370000000,17.0757020000000,17.0927000000000,17.1096310000000,17.1264970000000,17.1432980000000,17.1600330000000,17.1767050000000,17.1933130000000,17.2098570000000,17.2263390000000,17.2427590000000,17.2591160000000,17.2754130000000,17.2916480000000,17.3078230000000,17.3239380000000,17.3399930000000,17.3559890000000,17.3719260000000,17.3878060000000,17.4036270000000,17.4193910000000,17.4350980000000,17.4507480000000,17.4663420000000,17.4818800000000,17.4973630000000,17.5127910000000,17.5281640000000,17.5434830000000,17.5587490000000,17.5739600000000,17.5891190000000,17.6042250000000,17.6192780000000,17.6342800000000,17.6492300000000,17.6641280000000,17.6789760000000,17.6937730000000,17.7085200000000,17.7232170000000,17.7378640000000,17.7524630000000,17.7670120000000,17.7815130000000,17.7959650000000,17.8103690000000,17.8247260000000,17.8390360000000,17.8532980000000,17.8675140000000,17.8816840000000,17.8958070000000,17.9098850000000,17.9239170000000,17.9379040000000,17.9518460000000,17.9657430000000,17.9795960000000,17.9934050000000,18.0071710000000,18.0208930000000,18.0345710000000,18.0482070000000,18.0618000000000,18.0753500000000,18.0888590000000,18.1023250000000,18.1157500000000,18.1291340000000,18.1424760000000,18.1557770000000,18.1690380000000,18.1822590000000,18.1954390000000,18.2085800000000,18.2216810000000,18.2347420000000,18.2477650000000,18.2607480000000,18.2736930000000,18.2865990000000,18.2994670000000,18.3122970000000,18.3250890000000,18.3378440000000,18.3505610000000,18.3632410000000,18.3758840000000,18.3884910000000,18.4010610000000,18.4135950000000,18.4260920000000,18.4385540000000,18.4509800000000,18.4633710000000,18.4757270000000,18.4880470000000,18.5003330000000,18.5125830000000,18.5248000000000,18.5369820000000,18.5491300000000,18.5612440000000,18.5733250000000,18.5853720000000,18.5973860000000,18.6093660000000,18.6213140000000,18.6332290000000,18.6451110000000,18.6569610000000,18.6687780000000,18.6805640000000,18.6923170000000,18.7040390000000,18.7157290000000,18.7273880000000,18.7390160000000,18.7506130000000,18.7621780000000,18.7737130000000,18.7852180000000,18.7966920000000,18.8081360000000,18.8195500000000,18.8309340000000,18.8422880000000,18.8536120000000,18.8649070000000,18.8761730000000,18.8874100000000,18.8986170000000,18.9097960000000,18.9209460000000,18.9320680000000,18.9431610000000,18.9542250000000,18.9652620000000,18.9762710000000,18.9872520000000,18.9982050000000,19.0091310000000,19.0200290000000,19.0309000000000,19.0417440000000,19.0525600000000,19.0633500000000,19.0741140000000,19.0848500000000,19.0955600000000,19.1062440000000,19.1169020000000,19.1275330000000,19.1381390000000,19.1487180000000,19.1592720000000,19.1698000000000,19.1803030000000,19.1907810000000,19.2012330000000,19.2116610000000,19.2220630000000,19.2324400000000,19.2427930000000,19.2531210000000,19.2634240000000,19.2737040000000,19.2839590000000,19.2941890000000,19.3043960000000,19.3145790000000,19.3247380000000,19.3348730000000,19.3449850000000,19.3550730000000,19.3651370000000,19.3751790000000,19.3851970000000,19.3951930000000,19.4051650000000,19.4151140000000,19.4250410000000,19.4349450000000,19.4448270000000,19.4546860000000,19.4645230000000,19.4743370000000,19.4841300000000,19.4939000000000,19.5036490000000,19.5133750000000,19.5230800000000,19.5327630000000,19.5424250000000,19.5520650000000,19.5616840000000,19.5712820000000,19.5808580000000,19.5904140000000,19.5999480000000,19.6094620000000,19.6189550000000,19.6284270000000,19.6378780000000,19.6473090000000,19.6567200000000,19.6661100000000,19.6754800000000,19.6848290000000,19.6941590000000,19.7034690000000,19.7127580000000,19.7220280000000,19.7312790000000,19.7405090000000,19.7497200000000,19.7589110000000,19.7680830000000,19.7772360000000,19.7863690000000,19.7954840000000,19.8045790000000,19.8136550000000,19.8227120000000,19.8317510000000,19.8407700000000,19.8497710000000,19.8587540000000,19.8677170000000,19.8766630000000,19.8855900000000,19.8944980000000,19.9033890000000,19.9122610000000,19.9211150000000,19.9299510000000,19.9387690000000,19.9475690000000,19.9563520000000,19.9651170000000,19.9738640000000,19.9825930000000,19.9913050000000,20,20.0086770000000,20.0173370000000,20.0259800000000,20.0346050000000,20.0432140000000,20.0518050000000,20.0603800000000,20.0689370000000,20.0774780000000,20.0860020000000,20.0945090000000,20.1030000000000,20.1114740000000,20.1199310000000,20.1283720000000,20.1367970000000,20.1452050000000,20.1535980000000,20.1619740000000,20.1703330000000,20.1786770000000,20.1870050000000,20.1953170000000,20.2036130000000,20.2118930000000,20.2201570000000,20.2284060000000,20.2366390000000,20.2448570000000,20.2530590000000,20.2612450000000,20.2694160000000,20.2775720000000,20.2857130000000,20.2938380000000,20.3019480000000,20.3100430000000,20.3181230000000,20.3261880000000,20.3342380000000,20.3422730000000,20.3502930000000,20.3582980000000,20.3662890000000,20.3742650000000,20.3822260000000,20.3901730000000,20.3981060000000,20.4060230000000,20.4139270000000,20.4218160000000,20.4296910000000,20.4375510000000,20.4453980000000,20.4532300000000,20.4610480000000,20.4688520000000,20.4766420000000,20.4844180000000,20.4921800000000,20.4999290000000,20.5076630000000,20.5153840000000,20.5230910000000,20.5307840000000,20.5384640000000,20.5461310000000,20.5537830000000,20.5614230000000,20.5690490000000,20.5766610000000,20.5842600000000,20.5918460000000,20.5994190000000,20.6069780000000,20.6145250000000,20.6220580000000,20.6295780000000,20.6370860000000,20.6445800000000,20.6520610000000,20.6595300000000,20.6669860000000,20.6744280000000,20.6818590000000,20.6892760000000,20.6966810000000,20.7040730000000,20.7114530000000,20.7188200000000,20.7261750000000,20.7335170000000,20.7408470000000,20.7481640000000,20.7554700000000,20.7627630000000,20.7700430000000,20.7773120000000,20.7845680000000,20.7918120000000,20.7990450000000,20.8062650000000,20.8134730000000,20.8206690000000,20.8278540000000,20.8350260000000,20.8421870000000,20.8493360000000,20.8564730000000,20.8635980000000,20.8707120000000,20.8778140000000,20.8849050000000,20.8919840000000,20.8990510000000,20.9061070000000,20.9131520000000,20.9201850000000,20.9272060000000,20.9342170000000,20.9412160000000,20.9482040000000,20.9551800000000,20.9621460000000,20.9691000000000,20.9760430000000,20.9829750000000,20.9898960000000,20.9968060000000,21.0037050000000,21.0105940000000,21.0174710000000,21.0243370000000,21.0311930000000,21.0380370000000,21.0448710000000,21.0516940000000,21.0585070000000,21.0653090000000,21.0721000000000,21.0788800000000,21.0856500000000,21.0924100000000,21.0991590000000,21.1058970000000,21.1126250000000,21.1193430000000,21.1260500000000,21.1327470000000,21.1394340000000,21.1461100000000,21.1527760000000,21.1594320000000,21.1660770000000,21.1727130000000,21.1793380000000,21.1859540000000,21.1925590000000,21.1991540000000,21.2057390000000,21.2123150000000,21.2188800000000,21.2254350000000,21.2319810000000,21.2385160000000,21.2450420000000,21.2515580000000,21.2580650000000,21.2645610000000,21.2710480000000,21.2775250000000,21.2839930000000,21.2904510000000,21.2968990000000,21.3033380000000,21.3097670000000,21.3161870000000,21.3225970000000,21.3289980000000,21.3353890000000,21.3417710000000,21.3481440000000,21.3545070000000,21.3608610000000,21.3672060000000,21.3735410000000,21.3798670000000,21.3861840000000,21.3924920000000,21.3987910000000,21.4050800000000,21.4113610000000,21.4176320000000,21.4238950000000,21.4301480000000,21.4363920000000,21.4426280000000,21.4488540000000,21.4550720000000,21.4612800000000,21.4674800000000,21.4736710000000,21.4798530000000,21.4860270000000,21.4921910000000,21.4983470000000,21.5044940000000,21.5106330000000,21.5167620000000,21.5228830000000,21.5289960000000,21.5351000000000,21.5411950000000,21.5472820000000,21.5533600000000,21.5594300000000,21.5654920000000,21.5715440000000,21.5775890000000,21.5836250000000,21.5896530000000,21.5956720000000,21.6016830000000,21.6076860000000,21.6136800000000,21.6196660000000,21.6256440000000,21.6316140000000,21.6375750000000,21.6435290000000,21.6494740000000,21.6554110000000,21.6613400000000,21.6672610000000,21.6731730000000,21.6790780000000,21.6849750000000,21.6908640000000,21.6967440000000,21.7026170000000,21.7084820000000,21.7143390000000,21.7201880000000,21.7260290000000,21.7318630000000,21.7376880000000,21.7435060000000,21.7493160000000,21.7551180000000,21.7609130000000 - }; + ; uint16_t cbMiSizeTable [9] = {40, 104, 160, 256, 512, 1024, 2560, 4032, 6144}; - -double bEcrTable [9][27] = { - + +double MI_map_qpsk[MI_MAP_QPSK_SIZE] = { + 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 +}; + +double MI_map_qpsk_axis[MI_MAP_QPSK_SIZE] = { + 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 +}; + + +double MI_map_16qam[MI_MAP_16QAM_SIZE] = { + 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 +}; + + +double MI_map_16qam_axis[MI_MAP_16QAM_SIZE] = { + 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 +}; + + +double MI_map_64qam[MI_MAP_64QAM_SIZE] = { + 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 +}; + +double MI_map_64qam_axis[MI_MAP_64QAM_SIZE] = { + 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 +}; + + + + +double bEcrTable [9][29] = { // CB of 40 bits { - 0.2346, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, + 0.1777, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, - -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000 + -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, + -1.000, -1.000 }, // CB of 104 bits { - 0.1897, 0.2628, 0.3270, 0.3732, 0.4743, 0.5855, -1.000, -1.000, -1.000, - -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, - -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000 + 0.1423, 0.1753, 0.1882, 0.2499, -1.000, -1.000, -1.000, -1.000, -1.000, + -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, + -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, + -1.000, -1.000 }, // CB of 160 { - 0.1806, 0.2501, 0.3115, 0.3565, 0.4519, 0.5580, 0.6471, 0.7317, 0.8101, - 0.8449, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, - -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000 + 0.1354, 0.1655, 0.1812, 0.2351, 0.2873, 0.3462, -1.000, -1.000, -1.000, + -1.0000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, + -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, + -1.000, -1.000 }, // CB of 256 { - 0.1733, 0.2406, 0.3009, 0.3442, 0.4312, 0.5341, 0.6207, 0.7054, 0.7813, - 0.8483, 0.5288, 0.5599, 0.6001, 0.6380, -1.000, -1.000, -1.000, -1.000, - -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000 + 0.1304, 0.1584, 0.1735, 0.2265, 0.2782, 0.3340, 0.3927, 0.4785, 0.5566, + -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, + -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, + -1.000, -1.000 }, // CB of 512 { - 0.1669, 0.2309, 0.2916, 0.3334, 0.4139, 0.5148, 0.5984, 0.6810, 0.7559, - 0.8163, 0.5047, 0.5352, 0.5754, 0.6153, 0.6544, 0.6836, 0.7295, 0.7890, - 0.8516, 0.6533, 0.6897, 0.7260, -1.000, -1.000, -1.000, -1.000, -1.000 + 0.1257, 0.1528, 0.1667, 0.2188, 0.2680, 0.3229, 0.3818, 0.4607, 0.5373, + 0.6081, 0.7451, 0.4049, 0.4472, 0.4975, -1.000, -1.000, -1.000, -1.000, + -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, + -1.000, -1.000 }, // CB of 1024 { - 0.1639, 0.2264, 0.2871, 0.3288, 0.4049, 0.5053, 0.5873, 0.6681, 0.7455, - 0.8040, 0.4987, 0.5275, 0.5648, 0.6037, 0.6422, 0.6717, 0.7182, 0.7770, - 0.8393, 0.6378, 0.6769, 0.7151, 0.7517, 0.7838, 0.8391, 0.8837, 0.9320 + 0.1224, 0.1497, 0.1638, 0.2139, 0.2636, 0.3195, 0.3768, 0.4520, 0.5269, + 0.5963, 0.7412, 0.3979, 0.4399, 0.4894, 0.6422, 0.6034, 0.6619, 0.7538, + 0.7743, 0.5627, 0.6089, 0.6577, 0.7049, 0.7508, -1.000, -1.000, -1.000, + -1.000, -1.000 }, // CB of 2560 { - 0.1617, 0.2237, 0.2842, 0.3257, 0.3995, 0.4997, 0.5809, 0.6607, 0.7369, - 0.7980, 0.4944, 0.5234, 0.5602, 0.5973, 0.6365, 0.6649, 0.7105, 0.7711, - 0.8308, 0.6339, 0.6699, 0.7069, 0.7435, 0.7788, 0.8312, 0.8737, 0.9196 + 0.1211, 0.1480, 0.1615, 0.2119, 0.2611, 0.3157, 0.3735, 0.4458, 0.5205, + 0.5902, 0.7376, 0.3939, 0.4351, 0.4851, 0.6365, 0.5976, 0.6554, 0.7442, + 0.7701, 0.5619, 0.6056, 0.6521, 0.6982, 0.7441, 0.7874, 0.8315, 0.8735, + 0.9089, 0.9369 }, // CB of 4032 { - 0.1612, 0.2235, 0.2837, 0.3254, 0.3982, 0.4981, 0.5793, 0.6589, 0.7349, - 0.7959, 0.4949, 0.5215, 0.5566, 0.5939, 0.6535, 0.6621, 0.7081, 0.7692, - 0.8281, 0.6313, 0.6695, 0.7076, 0.7435, 0.7788, 0.8296, 0.8703, 0.9168 + 0.1208, 0.1477, 0.1612, 0.2112, 0.2606, 0.3153, 0.3728, 0.4441, 0.5185, + 0.5882, 0.7349, 0.3921, 0.4338, 0.4871, 0.6535, 0.5940, 0.6527, 0.7430, + 0.7699, 0.5591, 0.6027, 0.6512, 0.6981, 0.7437, 0.7873, 0.8301, 0.8702, + 0.9082, 0.9339 }, // CB of 6144 { - 0.1611, 0.2233, 0.2835, 0.3253, 0.3980, 0.4978, 0.5786, 0.6578, 0.7342, - 0.7947, 0.4930, 0.5222, 0.5588, 0.5952, 0.6339, 0.6625, 0.7085, 0.7689, - 0.8273, 0.6306, 0.6674, 0.7045, 0.7404, 0.7757, 0.8283, 0.8690, 0.9153 + 0.1207, 0.1474, 0.1612, 0.2111, 0.2605, 0.3153, 0.3726, 0.4439, 0.5193, + 0.5882, 0.7369, 0.3921, 0.4339, 0.4833, 0.6339, 0.5952, 0.6528, 0.7420, + 0.7664, 0.5600, 0.6027, 0.6494, 0.6948, 0.7407, 0.7842, 0.8284, 0.8692, + 0.9058, 0.9325 }, - }; - - -double cEcrTable [9][27] = { + + +double cEcrTable [9][29] = { // CB of 40 bits { - 0.0435, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, + 0.0342, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, - -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000 + -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, + -1.000, -1.000 }, // CB of 104 bits { - 0.0257, 0.0342, 0.0410, 0.0434, 0.0516, 0.0578, -1.000, -1.000, -1.000, + 0.0198, 0.0239, 0.0248, 0.0320, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, - -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000 + -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, + -1.000, -1.000 }, // CB of 160 bits { - 0.0205, 0.0275, 0.0332, 0.0357, 0.0414, 0.0471, 0.0500, 0.0499, 0.0472, - 0.0424, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, - -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000 + 0.0157, 0.0190, 0.0204, 0.0252, 0.0310, 0.0348, -1.0000, -1.000, -1.000, + -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, + -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, + -1.000, -1.000 }, // CB of 256 bits { - 0.0160, 0.0216, 0.0263, 0.0291, 0.0330, 0.0378, 0.0396, 0.0411, 0.0401, - 0.0364, 0.0314, 0.0336, 0.0346, 0.0361, -1.000, -1.000, -1.000, -1.000, - -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000 + 0.0123, 0.0149, 0.0163, 0.0212, 0.0252, 0.0298, 0.0304, 0.0341, 0.0382, + -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, + -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, + -1.000, -1.000 }, // CB of 512 bits { - 0.0111, 0.0148, 0.0189, 0.0206, 0.0230, 0.0267, 0.0280, 0.0294, 0.0295, - 0.0281, 0.0229, 0.0235, 0.0247, 0.0252, 0.0257, 0.0269, 0.0272, 0.0263, - 0.0246, 0.0236, 0.0253, 0.0255, -1.000, -1.000, -1.000, -1.000, -1.000 + 0.0085, 0.0106, 0.0109, 0.0140, 0.0178, 0.0217, 0.0219, 0.0249, 0.0270, + 0.0292, 0.0293, 0.0206, 0.0220, 0.0235, 0.0257, -1.000, -1.000, -1.000, + -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, + -1.000, -1.000 }, // CB of 1024 bits { - 0.0079, 0.0105, 0.0133, 0.0148, 0.0159, 0.0183, 0.0197, 0.0211, 0.0213, - 0.0206, 0.0164, 0.0167, 0.0174, 0.0181, 0.0183, 0.0187, 0.0196, 0.0193, - 0.0184, 0.0171, 0.0179, 0.0187, 0.0192, 0.0187, 0.0182, 0.0169, 0.0139 + 0.0061, 0.0074, 0.0078, 0.0102, 0.0121, 0.0138, 0.0163, 0.0178, 0.0207, + 0.0198, 0.0203, 0.0137, 0.0154, 0.0164, 0.0183, 0.0188, 0.0188, 0.0220, + 0.0215, 0.0157, 0.0169, 0.0185, 0.0189, 0.0200, -1.000, -1.000, -1.000, + -1.000, -1.000 }, // CB of 2560 bits { - 0.0051, 0.0065, 0.0083, 0.0095, 0.0103, 0.0118, 0.0126, 0.0129, 0.0134, - 0.0131, 0.0101, 0.0106, 0.0109, 0.0111, 0.0116, 0.0118, 0.0125, 0.0122, - 0.0118, 0.0105, 0.0114, 0.0115, 0.0119, 0.0120, 0.0116, 0.0107, 0.0096 + 0.0040, 0.0047, 0.0050, 0.0063, 0.0079, 0.0091, 0.0101, 0.0117, 0.0123, + 0.0129, 0.0123, 0.0091, 0.0095, 0.0102, 0.0116, 0.0114, 0.0119, 0.0116, + 0.0123, 0.0096, 0.0104, 0.0109, 0.0108, 0.0118, 0.0122, 0.0117, 0.0110, + 0.0097, 0.0085 }, // CB of 4032 bits { - 0.0040, 0.0053, 0.0067, 0.0075, 0.0082, 0.0096, 0.0101, 0.0107, 0.0108, - 0.0105, 0.0086, 0.0087, 0.0087, 0.0090, 0.0095, 0.0094, 0.0100, 0.0099, - 0.0096, 0.0086, 0.0092, 0.0094, 0.0095, 0.0097, 0.0091, 0.0086, 0.0078 + 0.0032, 0.0038, 0.0039, 0.0051, 0.0063, 0.0072, 0.0079, 0.0084, 0.0100, + 0.0106, 0.0106, 0.0074, 0.0078, 0.0090, 0.0095, 0.0089, 0.0092, 0.0101, + 0.0096, 0.0080, 0.0081, 0.0090, 0.0091, 0.0095, 0.0096, 0.0094, 0.0086, + 0.0078, 0.0071 }, // CB of 6144 bits { - 0.0032, 0.0044, 0.0054, 0.0062, 0.0069, 0.0077, 0.0083, 0.0087, 0.0088, - 0.0083, 0.0068, 0.0069, 0.0073, 0.0073, 0.0077, 0.0079, 0.0080, 0.0080, - 0.0078, 0.0068, 0.0073, 0.0075, 0.0077, 0.0079, 0.0075, 0.0067, 0.0063 + 0.0025, 0.0032, 0.0032, 0.0042, 0.0054, 0.0059, 0.0064, 0.0073, 0.0081, + 0.0076, 0.0083, 0.0058, 0.0064, 0.0070, 0.0077, 0.0074, 0.0080, 0.0080, + 0.0080, 0.0061, 0.0066, 0.0069, 0.0080, 0.0081, 0.0080, 0.0077, 0.0068, + 0.0066, 0.0058 } - + }; @@ -227,11 +252,11 @@ if (mcs <= 10) // QPSK { int tr = 0; - while ((tr<MI_MAP_QPSK_SIZE)&&(MI_map_qpsk_axis[tr] < sinr_db)) + while ((tr<MI_MAP_QPSK_SIZE)&&(MI_map_qpsk_axis[tr] < sinrLin)) { tr++; } - if (sinr_db > MI_map_qpsk_axis[MI_MAP_QPSK_SIZE-1]) + if (sinrLin > MI_map_qpsk_axis[MI_MAP_QPSK_SIZE-1]) { MI = 1; } @@ -246,11 +271,11 @@ if (mcs > 10 && mcs < 20 ) // 16-QAM { int tr = 0; - while ((tr<MI_MAP_16QAM_SIZE)&&(MI_map_16qam_axis[tr] < sinr_db)) + while ((tr<MI_MAP_16QAM_SIZE)&&(MI_map_16qam_axis[tr] < sinrLin)) { tr++; } - if (sinr_db > MI_map_16qam_axis[MI_MAP_16QAM_SIZE-1]) + if (sinrLin > MI_map_16qam_axis[MI_MAP_16QAM_SIZE-1]) { MI = 1; } @@ -263,11 +288,11 @@ else // 64-QAM { int tr = 0; - while ((tr<MI_MAP_64QAM_SIZE)&&(MI_map_64qam_axis[tr] < sinr_db)) + while ((tr<MI_MAP_64QAM_SIZE)&&(MI_map_64qam_axis[tr] < sinrLin)) { tr++; } - if (sinr_db > MI_map_64qam_axis[MI_MAP_64QAM_SIZE-1]) + if (sinrLin > MI_map_64qam_axis[MI_MAP_64QAM_SIZE-1]) { MI = 1; } @@ -278,7 +303,7 @@ } } } - NS_LOG_LOGIC (" RB " << map.at (i) << "Minimum SNR = " << sinr_db << " dB, MCS = " << (uint16_t)mcs << ", MI = " << MI); + NS_LOG_LOGIC (" RB " << map.at (i) << "Minimum SNR = " << sinr_db << " V, MCS = " << (uint16_t)mcs << ", MI = " << MI); MIsum += MI; } MI = MIsum / map.size (); @@ -293,17 +318,17 @@ NS_LOG_FUNCTION (mib << (uint32_t) mcs << (uint32_t) cbSize); double b = 0; double c = 0; - NS_ASSERT_MSG (mcs < 32, "MCS out of range"); + NS_ASSERT_MSG (mcs < 29, "MCS out of range [0..28]"); int tbsIndex = TbsIndex[mcs]; int cbIndex = 1; - while ((cbIndex < 9)&&(cbMiSizeTable[cbIndex]< cbSize)) + while ((cbIndex < 9)&&(cbMiSizeTable[cbIndex]<= cbSize)) { cbIndex++; } cbIndex--; NS_LOG_LOGIC (" MCS " << (uint16_t)mcs << " TBS " << tbsIndex << " CB size " << cbSize << " CB size curve " << cbMiSizeTable[cbIndex]); - b = bEcrTable[cbIndex][tbsIndex]; + b = bEcrTable[cbIndex][mcs]; if (b<0.0) { //take the lowest CB size including this CB for removing CB size @@ -311,10 +336,10 @@ int i = cbIndex; while ((i<9)&&(b<0)) { - b = bEcrTable[i++][tbsIndex]; + b = bEcrTable[i++][mcs]; } } - c = cEcrTable[cbIndex][tbsIndex]; + c = cEcrTable[cbIndex][mcs]; if (c<0.0) { //take the lowest CB size including this CB for removing CB size @@ -322,12 +347,12 @@ int i = cbIndex; while ((i<9)&&(c<0)) { - c = cEcrTable[i++][tbsIndex]; + c = cEcrTable[i++][mcs]; } } // see IEEE802.16m EMD formula 55 of section 4.3.2.1 double bler = 0.5*( 1 - erf((mib-b)/(sqrt(2)*c)) ); - NS_LOG_LOGIC ("MIB: " << mib << " BLER:" << bler); + NS_LOG_LOGIC ("MIB: " << mib << " BLER:" << bler << " b:" << b << " c:" << c); return bler; } @@ -432,16 +457,10 @@ double errorRate = 1.0; if (C!=1) { - for (uint32_t i = 0; i < Cplus; i++) - { - double cbler = MappingMiBler (MI, mcs, Kplus); - errorRate *= (1.0 - cbler); - } - for (uint32_t i = 0; i < Cminus; i++) - { - double cbler = MappingMiBler (MI, mcs, Kminus); - errorRate *= (1.0 - cbler); - } + double cbler = MappingMiBler (MI, mcs, Kplus); + errorRate *= pow (1.0 - cbler, Cplus); + cbler = MappingMiBler (MI, mcs, Kminus); + errorRate *= pow (1.0 - cbler, Cminus); errorRate = 1.0 - errorRate; } else
--- a/src/lte/model/lte-mi-error-model.h Fri May 18 10:30:14 2012 +0200 +++ b/src/lte/model/lte-mi-error-model.h Tue May 29 10:42:17 2012 +0200 @@ -44,9 +44,9 @@ namespace ns3 { - const uint16_t MI_MAP_QPSK_SIZE = 411; - const uint16_t MI_MAP_16QAM_SIZE = 601; - const uint16_t MI_MAP_64QAM_SIZE = 676; + const uint16_t MI_MAP_QPSK_SIZE = 766; + const uint16_t MI_MAP_16QAM_SIZE = 843; + const uint16_t MI_MAP_64QAM_SIZE = 725;
--- a/src/lte/test/lte-test-phy-error-model.cc Fri May 18 10:30:14 2012 +0200 +++ b/src/lte/test/lte-test-phy-error-model.cc Tue May 29 10:42:17 2012 +0200 @@ -46,6 +46,7 @@ #include <ns3/config.h> #include <ns3/boolean.h> #include <ns3/enum.h> +#include <ns3/unused.h> NS_LOG_COMPONENT_DEFINE ("LenaTestPhyErrorModel"); @@ -58,22 +59,19 @@ { NS_LOG_INFO ("creating LenaTestPhyErrorModelTestCase"); - // MCS 2 TB size of 256 bits BER 0.19 SINR -2.21 - AddTestCase (new LenaPhyErrorModelTestCase (4, 898, 32, 0.19, 25)); -// MCS 2 TB size of 328 bits BER 0.09 SINR -2.25 - AddTestCase (new LenaPhyErrorModelTestCase (3, 900, 41, 0.09, 18)); -// MCS 2 TB size of 520 bits BER 0.123 SINR -2.61 - AddTestCase (new LenaPhyErrorModelTestCase (2, 920, 65, 0.123, 21)); -// MCS 2 TB size of 1080 bits BER 0.097 SINR -2.79 - AddTestCase (new LenaPhyErrorModelTestCase (1, 930, 135, 0.097, 19)); - // MCS 12 TB size of 4776 bits BER 0.017 SINR 6.22 - AddTestCase (new LenaPhyErrorModelTestCase (1, 538, 597, 0.017, 8)); -// MCS 12 TB size of 1608 bits BER 0.23 SINR 6.22 - AddTestCase (new LenaPhyErrorModelTestCase (3, 538, 201, 0.23, 26)); - // MCS 12 TB size of 376 bits BER 0.72 SINR 6.22 - AddTestCase (new LenaPhyErrorModelTestCase (7,538, 47, 0.72, 28)); -// MCS 14 TB size of 6248 bits (3136 x 2) BER 0.18 (0.096 x 2) SINR 5.53 - AddTestCase (new LenaPhyErrorModelTestCase (1, 500, 781, 0.18, 24)); + // MCS 2 TB size of 256 bits BER 0.33 SINR -5.51 + AddTestCase (new LenaPhyErrorModelTestCase (4, 1800, 32, 0.33, 29)); +// MCS 2 TB size of 528 bits BER 0.11 SINR -5.51 + AddTestCase (new LenaPhyErrorModelTestCase (2, 1800, 66, 0.11, 20)); +// MCS 2 TB size of 1088 bits BER 0.02 SINR -5.51 + AddTestCase (new LenaPhyErrorModelTestCase (1, 1800, 136, 0.02, 9)); + // MCS 12 TB size of 4800 bits BER 0.3 SINR 4.43 + AddTestCase (new LenaPhyErrorModelTestCase (1, 600, 600, 0.3, 29)); +// MCS 12 TB size of 1632 bits BER 0.55 SINR 4.43 + AddTestCase (new LenaPhyErrorModelTestCase (3, 600, 204, 0.55, 31)); +// MCS 16 TB size of 7272 bits (3648 x 3584) BER 0.14 SINR 8.48 +// BER 0.14 = 1 - ((1-0.075)*(1-0.075)) + AddTestCase (new LenaPhyErrorModelTestCase (1, 470, 781, 0.14, 22)); @@ -107,7 +105,7 @@ LenaPhyErrorModelTestCase::DoRun (void) { - double ber = 0.01; + double ber = 0.03; Config::SetDefault ("ns3::LteAmc::Ber", DoubleValue (ber)); Config::SetDefault ("ns3::LteAmc::AmcModel", EnumValue (LteAmc::PiroEW2010)); Config::SetDefault ("ns3::LteSpectrumPhy::PemEnabled", BooleanValue (true)); @@ -153,6 +151,7 @@ // LogComponentEnable ("LteAmc", LOG_LEVEL_ALL); // LogComponentDisableAll (LOG_LEVEL_ALL); + LogComponentEnable ("LenaTestPhyErrorModel", LOG_LEVEL_ALL); @@ -242,9 +241,12 @@ double txed = rlcStats->GetDlTxData (imsi, lcId); int n = txed / m_tbSize; int lambda = (double)dlDataRxed.at (i) / m_tbSize; - double ber = 2.0 - ((double)dlDataRxed.at (i)/txed); + double ber = 1.0 - ((double)dlDataRxed.at (i)/txed); double np = n-n*m_berRef; - NS_LOG_INFO ("\tUser " << i << " imsi " << imsi << " bytes rxed " << (double)dlDataRxed.at (i) << " txed " << txed << " BER " << ber << " Err " << fabs (m_berRef - ber) << " lambda " << lambda << " np " << np << " difference " << abs(lambda - np) << " quantile " << m_bernQuantile); + NS_LOG_INFO ("\tUser " << i << " imsi " << imsi << " bytes rxed " << (double)dlDataRxed.at (i) << " txed " << txed + << " BER " << ber << " Err " << fabs (m_berRef - ber) << " lambda " << lambda + << " np " << np << " difference " << abs(lambda - np) << " quantile " << m_bernQuantile); + NS_UNUSED (ber); // the quantiles are evaluated offline according to a Bernoulli // ditribution with n equal to the number of packet sent and p equal // to the BER (see /reference/bernuolliDistribution.m for details)
--- a/src/lte/test/lte-test-rlc-am-e2e.cc Fri May 18 10:30:14 2012 +0200 +++ b/src/lte/test/lte-test-rlc-am-e2e.cc Tue May 29 10:42:17 2012 +0200 @@ -114,8 +114,8 @@ { uint16_t numberOfNodes = 1; - LogLevel level = (LogLevel) (LOG_LEVEL_ALL | LOG_PREFIX_TIME | LOG_PREFIX_NODE | LOG_PREFIX_FUNC); - LogComponentEnable ("LteRlcAmE2eTest", level); + // LogLevel level = (LogLevel) (LOG_LEVEL_ALL | LOG_PREFIX_TIME | LOG_PREFIX_NODE | LOG_PREFIX_FUNC); + // LogComponentEnable ("LteRlcAmE2eTest", level); // LogComponentEnable ("ErrorModel", level); // LogComponentEnable ("LteSimpleHelper", level); // LogComponentEnable ("LteSimpleNetDevice", level);
--- a/src/lte/test/lte-test-rlc-am-transmitter.cc Fri May 18 10:30:14 2012 +0200 +++ b/src/lte/test/lte-test-rlc-am-transmitter.cc Tue May 29 10:42:17 2012 +0200 @@ -38,8 +38,8 @@ LteRlcAmTransmitterTestSuite::LteRlcAmTransmitterTestSuite () : TestSuite ("lte-rlc-am-transmitter", SYSTEM) { - LogLevel logLevel = (LogLevel)(LOG_PREFIX_FUNC | LOG_PREFIX_TIME | LOG_LEVEL_ALL); - LogComponentEnable ("LteRlcAmTransmitterTest", logLevel); + // LogLevel logLevel = (LogLevel)(LOG_PREFIX_FUNC | LOG_PREFIX_TIME | LOG_LEVEL_ALL); + // LogComponentEnable ("LteRlcAmTransmitterTest", logLevel); AddTestCase (new LteRlcAmTransmitterOneSduTestCase ("One SDU, one PDU")); AddTestCase (new LteRlcAmTransmitterSegmentationTestCase ("Segmentation")); @@ -63,12 +63,12 @@ void LteRlcAmTransmitterTestCase::DoRun (void) { - LogLevel logLevel = (LogLevel)(LOG_PREFIX_FUNC | LOG_PREFIX_TIME | LOG_LEVEL_ALL); - LogComponentEnable ("LteRlcAmTransmitterTest", logLevel); - LogComponentEnable ("LteTestEntities", logLevel); - LogComponentEnable ("LteRlc", logLevel); - LogComponentEnable ("LteRlcAm", logLevel); - LogComponentEnable ("LteRlcHeader", logLevel); + // LogLevel logLevel = (LogLevel)(LOG_PREFIX_FUNC | LOG_PREFIX_TIME | LOG_LEVEL_ALL); + // LogComponentEnable ("LteRlcAmTransmitterTest", logLevel); + // LogComponentEnable ("LteTestEntities", logLevel); + // LogComponentEnable ("LteRlc", logLevel); + // LogComponentEnable ("LteRlcAm", logLevel); + // LogComponentEnable ("LteRlcHeader", logLevel); uint16_t rnti = 1111; uint8_t lcid = 222;
--- a/src/lte/test/lte-test-rlc-um-e2e.cc Fri May 18 10:30:14 2012 +0200 +++ b/src/lte/test/lte-test-rlc-um-e2e.cc Tue May 29 10:42:17 2012 +0200 @@ -111,8 +111,8 @@ { uint16_t numberOfNodes = 1; - LogLevel level = (LogLevel) (LOG_LEVEL_ALL | LOG_PREFIX_TIME | LOG_PREFIX_NODE | LOG_PREFIX_FUNC); - LogComponentEnable ("LteRlcUmE2eTest", level); + // LogLevel level = (LogLevel) (LOG_LEVEL_ALL | LOG_PREFIX_TIME | LOG_PREFIX_NODE | LOG_PREFIX_FUNC); + // LogComponentEnable ("LteRlcUmE2eTest", level); // LogComponentEnable ("ErrorModel", level); // LogComponentEnable ("LteSimpleHelper", level); // LogComponentEnable ("LteSimpleNetDevice", level);
--- a/src/lte/test/lte-test-rr-ff-mac-scheduler.cc Fri May 18 10:30:14 2012 +0200 +++ b/src/lte/test/lte-test-rr-ff-mac-scheduler.cc Tue May 29 10:42:17 2012 +0200 @@ -316,9 +316,8 @@ uint64_t imsi = ueDevs.Get (i)->GetObject<LteUeNetDevice> ()->GetImsi (); // get the lcId uint8_t lcId = ueDevs.Get (i)->GetObject<LteUeNetDevice> ()->GetRrc ()->GetLcIdVector ().at (0); - double txed = rlcStats->GetUlTxData (imsi, lcId); ulDataRxed.push_back (rlcStats->GetUlRxData (imsi, lcId)); - NS_LOG_INFO ("\tUser " << i << " imsi " << imsi << " bytes txed " << (double)ulDataRxed.at (i) << " thr " << (double)ulDataRxed.at (i) / simulationTime << " ref " << m_thrRefUl << " txed " << txed / simulationTime); + NS_LOG_INFO ("\tUser " << i << " imsi " << imsi << " bytes txed " << (double)ulDataRxed.at (i) << " thr " << (double)ulDataRxed.at (i) / simulationTime << " ref " << m_thrRefUl << " txed " << rlcStats->GetUlTxData (imsi, lcId) / simulationTime); NS_TEST_ASSERT_MSG_EQ_TOL ((double)ulDataRxed.at (i) / simulationTime, m_thrRefUl, m_thrRefUl * tolerance, " Unfair Throughput!"); }
--- a/src/lte/test/reference/bernuolliDistribution.m Fri May 18 10:30:14 2012 +0200 +++ b/src/lte/test/reference/bernuolliDistribution.m Tue May 29 10:42:17 2012 +0200 @@ -2,7 +2,7 @@ % related to phy error model test n = 1000; -p_vect = [0.19 0.09 0.123 0.097 0.017 0.23 0.72 0.18]; +p_vect = [0.33 0.11 0.02 0.3 0.55 0.14]; for i=1:length(p_vect) p = p_vect(i) cdf = 0.0;
--- a/src/lte/test/test-epc-tft-classifier.cc Fri May 18 10:30:14 2012 +0200 +++ b/src/lte/test/test-epc-tft-classifier.cc Tue May 29 10:42:17 2012 +0200 @@ -114,7 +114,7 @@ << ", da = " << da << ", sp = " << sp << ", dp = " << dp - << ", tos = 0x" << std::hex << tos + << ", tos = 0x" << std::hex << (int) tos << " --> tftId = " << tftId; return oss.str (); }
--- a/src/netanim/bindings/modulegen__gcc_ILP32.py Fri May 18 10:30:14 2012 +0200 +++ b/src/netanim/bindings/modulegen__gcc_ILP32.py Tue May 29 10:42:17 2012 +0200 @@ -516,14 +516,18 @@ cls.add_constructor([param('ns3::AnimationInterface const &', 'arg0')]) ## animation-interface.h (module 'netanim'): ns3::AnimationInterface::AnimationInterface() [constructor] cls.add_constructor([]) - ## animation-interface.h (module 'netanim'): ns3::AnimationInterface::AnimationInterface(std::string const filename, bool usingXML=true) [constructor] - cls.add_constructor([param('std::string const', 'filename'), param('bool', 'usingXML', default_value='true')]) + ## animation-interface.h (module 'netanim'): ns3::AnimationInterface::AnimationInterface(std::string const filename, uint64_t maxPktsPerFile=100000, bool usingXML=true) [constructor] + cls.add_constructor([param('std::string const', 'filename'), param('uint64_t', 'maxPktsPerFile', default_value='100000'), param('bool', 'usingXML', default_value='true')]) ## animation-interface.h (module 'netanim'): ns3::AnimationInterface::AnimationInterface(uint16_t port, bool usingXML=true) [constructor] cls.add_constructor([param('uint16_t', 'port'), param('bool', 'usingXML', default_value='true')]) ## animation-interface.h (module 'netanim'): void ns3::AnimationInterface::EnablePacketMetadata(bool enable) [member function] cls.add_method('EnablePacketMetadata', 'void', [param('bool', 'enable')]) + ## animation-interface.h (module 'netanim'): uint64_t ns3::AnimationInterface::GetTracePktCount() [member function] + cls.add_method('GetTracePktCount', + 'uint64_t', + []) ## animation-interface.h (module 'netanim'): static bool ns3::AnimationInterface::IsInitialized() [member function] cls.add_method('IsInitialized', 'bool', @@ -588,10 +592,10 @@ cls.add_method('ShowAll802_11', 'void', [param('bool', 'showAll')]) - ## animation-interface.h (module 'netanim'): void ns3::AnimationInterface::StartAnimation() [member function] + ## animation-interface.h (module 'netanim'): void ns3::AnimationInterface::StartAnimation(bool restart=false) [member function] cls.add_method('StartAnimation', 'void', - []) + [param('bool', 'restart', default_value='false')]) ## animation-interface.h (module 'netanim'): void ns3::AnimationInterface::StopAnimation() [member function] cls.add_method('StopAnimation', 'void',
--- a/src/netanim/bindings/modulegen__gcc_LP64.py Fri May 18 10:30:14 2012 +0200 +++ b/src/netanim/bindings/modulegen__gcc_LP64.py Tue May 29 10:42:17 2012 +0200 @@ -516,14 +516,18 @@ cls.add_constructor([param('ns3::AnimationInterface const &', 'arg0')]) ## animation-interface.h (module 'netanim'): ns3::AnimationInterface::AnimationInterface() [constructor] cls.add_constructor([]) - ## animation-interface.h (module 'netanim'): ns3::AnimationInterface::AnimationInterface(std::string const filename, bool usingXML=true) [constructor] - cls.add_constructor([param('std::string const', 'filename'), param('bool', 'usingXML', default_value='true')]) + ## animation-interface.h (module 'netanim'): ns3::AnimationInterface::AnimationInterface(std::string const filename, uint64_t maxPktsPerFile=100000, bool usingXML=true) [constructor] + cls.add_constructor([param('std::string const', 'filename'), param('uint64_t', 'maxPktsPerFile', default_value='100000'), param('bool', 'usingXML', default_value='true')]) ## animation-interface.h (module 'netanim'): ns3::AnimationInterface::AnimationInterface(uint16_t port, bool usingXML=true) [constructor] cls.add_constructor([param('uint16_t', 'port'), param('bool', 'usingXML', default_value='true')]) ## animation-interface.h (module 'netanim'): void ns3::AnimationInterface::EnablePacketMetadata(bool enable) [member function] cls.add_method('EnablePacketMetadata', 'void', [param('bool', 'enable')]) + ## animation-interface.h (module 'netanim'): uint64_t ns3::AnimationInterface::GetTracePktCount() [member function] + cls.add_method('GetTracePktCount', + 'uint64_t', + []) ## animation-interface.h (module 'netanim'): static bool ns3::AnimationInterface::IsInitialized() [member function] cls.add_method('IsInitialized', 'bool', @@ -588,10 +592,10 @@ cls.add_method('ShowAll802_11', 'void', [param('bool', 'showAll')]) - ## animation-interface.h (module 'netanim'): void ns3::AnimationInterface::StartAnimation() [member function] + ## animation-interface.h (module 'netanim'): void ns3::AnimationInterface::StartAnimation(bool restart=false) [member function] cls.add_method('StartAnimation', 'void', - []) + [param('bool', 'restart', default_value='false')]) ## animation-interface.h (module 'netanim'): void ns3::AnimationInterface::StopAnimation() [member function] cls.add_method('StopAnimation', 'void',
--- a/src/netanim/doc/animation.rst Fri May 18 10:30:14 2012 +0200 +++ b/src/netanim/doc/animation.rst Tue May 29 10:42:17 2012 +0200 @@ -10,47 +10,11 @@ The NetAnim method is described in detail at http://www.nsnam.org/wiki/index.php/NetAnim. We will describe the NetAnim method briefly here. -AnimationInterface -******************* - -The class "AnimationInterface" under "src/netanim" uses underlying |ns3| trace sources -to construct a timestamped ASCII file in XML format that can be read by a standalone animator -named "NetAnim". - -Generating XML trace files for use in NetAnim -+++++++++++++++++++++++++++++++++++++++++++++ -Apply the following statements before the "Simulator::Run ()" statement::: - - AnimationInterface anim ("animation.xml") - -where "animation.xml" is any arbitrary file name. -It is important to ensure that your wscript includes the "netanim" module. -Example as in: src/netanim/examples/wscript. Also include the header -[#include "ns3/netanim-module.h"] in your test program - -The examples under "src/netanim/examples" illustrate this. The sample wscript is at -"src/netanim/examples/wscript". - -Lets take an example: "src/netanim/examples/star-animation.cc". To run the example::: - - ./waf --run "star-animation" - -This will generate an xml file "star-animation.xml" in the same directory. This XML file -contains the information required by the standalone animator "NetAnim" to produce the required -animation. - - -Parts of the XML -++++++++++++++++ -This is described in detail at http://www.nsnam.org/wiki/index.php/NetAnim#Parts_of_the_XML - NetAnim ******* -NetAnim is a stand-alone program which uses the custom trace files generated by -the animation interface to graphically display the simulation. NetAnim is based -on the multi-platform `Qt4 GUI toolkit <http://qt.nokia.com/>`_. -A screenshot of the NetAnim GUI is shown below. +NetAnim is a standalone, Qt4-based software executable that uses a trace file generated during +an |ns-3| simulation to display the topology and animate the packet flow between nodes. .. _anim-dumbbell: @@ -58,14 +22,270 @@ NetAnim GUI with dumbbell animation. -The NetAnim GUI provides play, pause, and record buttons. Play and pause start -and stop the simulation. The record button starts a series of screenshots of the -animator, which are written to the directory in which the trace file was run. -Two slider bars also exist. The top slider provides a "seek" functionality, -which allows a user to skip to any moment in the simulation. The bottom slider -changes the granularity of the time step for the animation. Finally, there is a -quit button to stop the simulation and quit the animator. +Methodology +=========== +The class ns3::AnimationInterface is responsible for the creation the trace XML file. +AnimationInterface uses the tracing infrastructure to track packet flows between nodes. +AnimationInterface registers itself as a trace hook for tx and rx events before the simulation +begins. When a packet is scheduled for transmission or reception, the corresponding tx and rx +trace hooks in AnimationInterface are called. When the rx hooks are called, AnimationInterface will be aware of the two endpoints between which a packet has flowed, and adds this information +to the trace file, in XML format along with the corresponding tx and rx timestamps. The XML format +will be discussed in a later section. It is important to note that AnimationInterface records a +packet only if the rx trace hooks are called. Every tx event must be matched by an rx event. + +Downloading NetAnim +=================== +If NetAnim is not already available in the |ns-3| package you downloaded, you can do the following + +Please ensure that you have installed mercurial. +The latest version of NetAnim can be downloaded using mercurial with the following command +:: + hg clone http://code.nsnam.org/jabraham3/netanim + + +Building NetAnim +================ +Prerequisites +~~~~~~~~~~~~~ +Qt4 (4.7 and over) is required to build NetAnim. This can be obtained using the following ways: + +For Debian/Ubuntu Linux distributions +:: + apt-get install qt4-dev-tools + +For Red Hat/Fedora based distribution +:: + yum install qt4 + yum install qt4-devel + +For Mac/OSX +:: + http://qt.nokia.com/downloads/ + +Build steps +~~~~~~~~~~~ + +To build NetAnim use the following commands +:: + cd netanim + make clean + qmake NetAnim.pro (For MAC Users: qmake -spec macx-g++ NetAnim.pro) + make + + + Note: qmake could be "qmake-qt4" in some systems + +This should create an executable named "NetAnim" in the same directory +:: + john@john-VirtualBox:~/netanim$ ls -l NetAnim + -rwxr-xr-x 1 john john 390395 2012-05-22 08:32 NetAnim + + +Usage +===== +Using NetAnim is a two-step process + +Step 1: Generate the animation XML trace file during simulation using "ns3::AnimationInterface" + in the |ns-3| code base. +Step 2: Load the XML trace file generated in Step 1 with the offline Qt4-based animator (NetAnim). + + +Step 1: Generate XML animation trace file +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +The class "AnimationInterface" under "src/netanim" uses underlying |ns3| trace sources +to construct a timestamped ASCII file in XML format. + +Examples are found under src/netanim/examples +Example +:: + ./waf -d debug configure --enable-examples + ./waf --run "dumbbell-animation" +The above will create an XML file dumbbell-animation.xml + +Mandatory +######### + +1. Ensure that your program's wscript includes the "netanim" module. An example of such a wscript is at src/netanim/examples/wscript. +2. Include the header [#include "ns3/netanim-module.h"] in your test program +3. Add the statement +:: + AnimationInterface anim ("animation.xml"); + where "animation.xml" is any arbitrary filename + + +[for versions before ns-3.13 you also have to use the line "anim.SetXMLOutput() to set the XML mode and also use anim.StartAnimation();] + + +Optional +######## +The following are optional but useful steps +:: + 1.anim.SetMobilityPollInterval (Seconds (1)); + +AnimationInterface records the position of all nodes every 250 ms by default. The statement above sets +the periodic interval at which AnimationInterface records the position of all nodes. If the nodes are +expected to move very little, it is useful to set a high mobility interval to avoid large XML files. +:: + 2. anim.SetConstantPosition (Ptr< Node > n, double x, double y); + +AnimationInterface requires that the position of all nodes be set. In ns-3 this is done by setting an associated MobilityModel. "SetConstantPosition" is a quick way to set the x-y coordinates of a node which is stationary. +:: + 3. anim.SetStartTime (Seconds(150)); and anim.SetStopTime (Seconds(150)); + +AnimationInterface can generate large XML files. The above statements restricts the window between which AnimationInterface does tracing. Restricting the window serves to focus only on relevant portions of the simulation and creating manageably small XML files +:: + 4. AnimationInterface anim ("animation.xml", 50000); + +Using the above constructor ensures that each animation XML trace file has only 50000 packets. For example, if AnimationInterface captures 150000 packets, using the above constructor splits the capture into 3 files + +animation.xml - containing the packet range 1-50000 + +animation.xml-1 - containing the packet range 50001-100000 + +animation.xml-2 - containing the packet range 100001-150000 +:: + 5. anim.EnablePacketMetadata (true); + +With the above statement, AnimationInterface records the meta-data of each packet in the xml trace file. Metadata can be used by NetAnim to provide better statistics and filter, along with providing some brief information about the packet such as TCP sequence number or source & destination IP address during packet animation. +CAUTION: Enabling this feature will result in larger XML trace files. +Please do NOT enable this feature when using Wimax links. + +Step 2: Loading the XML in NetAnim +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -For detailed instructions on installing "NetAnim" and loading the XML trace file +1. Assuming NetAnim was built, use the command "./NetAnim" to launch NetAnim. Please review the section "Building NetAnim" if NetAnim is not available. +2. When NetAnim is opened, click on the File open button at the top-left corner, select the XML file generated during Step 1. +3. Hit the green play button to begin animation. + +Essential settings of NetAnim +============================= + +Persist combobox +~~~~~~~~~~~~~~~~ +When packets are transmitted and received very quickly, they can be almost invisible. The persist time setting +allows the user to control the duration for which a packet should be visible on the animation canvas. + +Fast-forward button +~~~~~~~~~~~~~~~~~~~ +This setting is ON by default. With this setting ON, the animation progresses in simulation time rather than +wall-clock time. This means, if there were three intervals of time, A to B , B to C and C to D, and if all packets are transmitted and received only in the intervals A to B and C to D , while B to C is a +20 second idle period with no packet tranmission or reception or node mobility, NetAnim will skip over B to C, instantly without waiting for 20 seconds. The user can turn OFF Fast-forward when they want the animation to proceed like wall-clock time. + +Update-interval slider +~~~~~~~~~~~~~~~~~~~~~~ +If Fast-forward (discussed above) is turned OFF, the update-interval slider controls the rate at which +NetAnim refreshes the canvas screen. + +Precision button +~~~~~~~~~~~~~~~~ +This setting is turned OFF by default. When using purely point-to-point topologies precision can be turned ON, +to distinguish between small and large packets travelling on a link. For instance a small packet such as a +TCP ACK segment occupies only a small fraction of the length of the link , which provides a realistic animation +CAUTION: Precision should be turned ON only for completely point-to-point topologies. + +Sim-time spinbox +~~~~~~~~~~~~~~~~ +The Sim-time spinbox can be used to go forward or backward in simulation time. + + +Parts of the XML +================ +The XML trace files has the following main sections + +1. Topology + + - Nodes + - Links +2. packets (packets over wired-links) +3. wpackets (packets over wireless-links) + +XML tags +~~~~~~~~ +Nodes are identified by their unique Node id. The XML begins with the "information" element describing the rest of the elements + +1. <anim> element + +This is the XML root element. All other elements fall within this element + Attributes are: + lp = Logical Processor Id (Used for distributed simulations only) + +2. <topology> element + +This elements contains the Node and Link elements.It describes, the co-ordinates of the canvas used for animation. + Attributes are: + minX = minimum X coordinate of the animation canvas + minY = minimum Y coordinate of the animation canvas + maxX = maximum X coordinate of the animation canvas + maxY = maximum Y coordinate of the animation canvas + +Example +:: + <topology minX = "-6.42025" minY = "-6.48444" maxX = "186.187" maxY = "188.049"> + +3. <node> element + +This element describes each Node's Id and X,Y co-ordinate (position) + Attributes are: + id = Node Id + locX = X coordinate + locY = Y coordinate + +Example +:: + <node id = "8" locX = "107.599" locY = "96.9366" /> + +4. <link> element + +This element describes wired links between two nodes. + Attributes are: + fromId = From Node Id (first node id) + toId = To Node Id (second node id) + +Example +:: + <link fromId="0" toId="1"/> + +5. <packet> element + +This element describes a packet over wired links being transmitted at some node and received at another. The reception details are described in its associated rx element + Attributes are: + fromId = Node Id transmitting the packet + fbTx = First bit transmit time of the packet + lbTx = Last bit transmit time of the packet + +Example +:: + <packet fromId="1" fbTx="1" lbTx="1.000067199"><rx toLp="0" toId="0" fbRx="1.002" lbRx="1.002067199"/> + +A packet over wired-links from Node 1 was received at Node 0. The first bit of the packet was transmitted at the 1th second, the last bit was transmitted at the 1.000067199th second of the simulation Node 0 received the first bit of the packet at the 1.002th second and the last bit of the packet at the 1.002067199th second of the simulation +NOTE: A packet with fromId == toId is a dummy packet used internally by the AnimationInterface. Please ignore this packet + +6. <rx> element + +This element describes the reception of a packet at a node + Attributes are: + toId = Node Id receiving the packet + fbRx = First bit Reception Time of the packet + lbRx = Last bit Reception Time of the packet + +7. <wpacket> element + +This element describes a packet over wireless links being transmitted at some node and received at another. The reception details are described in its associated rx element + Attributes are: + fromId = Node Id transmitting the packet + fbTx = First bit transmit time of the packet + lbTx = Last bit transmit time of the packet + range = Range of the transmission + +Example +:: + <wpacket fromId = "20" fbTx = "0.003" lbTx = "0.003254" range = "59.68176982"> + <rx toLp="0" toId="32" fbRx="0.003000198" lbRx="0.003254198"/> + +A packet over wireless-links from Node 20 was received at Node 32. The first bit of the packet was transmitted at the 0.003th second, the last bit was transmitted at the 0.003254 second of the simulation Node 0 received the first bit of the packet at the 0.003000198 second and the last bit of the packet at the 0.003254198 second of the simulation + +Wiki +==== +For detailed instructions on installing "NetAnim", F.A.Qs and loading the XML trace file (mentioned earlier) using NetAnim please refer: http://www.nsnam.org/wiki/index.php/NetAnim
--- a/src/netanim/model/animation-interface.cc Fri May 18 10:30:14 2012 +0200 +++ b/src/netanim/model/animation-interface.cc Tue May 29 10:42:17 2012 +0200 @@ -63,33 +63,36 @@ std::map <uint32_t, std::string> AnimationInterface::nodeDescriptions; AnimationInterface::AnimationInterface () - : m_fHandle (STDOUT_FILENO), m_xml (false), mobilitypollinterval (Seconds(0.25)), - usingSockets (false), mport (0), outputfilename (""), - OutputFileSet (false), ServerPortSet (false), gAnimUid (0),randomPosition (true), + : m_fHandle (STDOUT_FILENO), m_xml (false), m_mobilityPollInterval (Seconds(0.25)), + m_usingSockets (false), m_port (0), m_outputFileName (""), + m_outputFileSet (false), m_serverPortSet (false), gAnimUid (0),m_randomPosition (true), m_writeCallback (0), m_started (false), - m_enablePacketMetadata (false), m_startTime (Seconds(0)), m_stopTime (Seconds(3600 * 1000)) + m_enablePacketMetadata (false), m_startTime (Seconds(0)), m_stopTime (Seconds(3600 * 1000)), + m_maxPktsPerFile (MAX_PKTS_PER_TRACE_FILE) { initialized = true; StartAnimation (); } -AnimationInterface::AnimationInterface (const std::string fn, bool usingXML) - : m_fHandle (STDOUT_FILENO), m_xml (usingXML), mobilitypollinterval (Seconds(0.25)), - usingSockets (false), mport (0), outputfilename (fn), - OutputFileSet (false), ServerPortSet (false), gAnimUid (0), randomPosition (true), +AnimationInterface::AnimationInterface (const std::string fn, uint64_t maxPktsPerFile, bool usingXML) + : m_fHandle (STDOUT_FILENO), m_xml (usingXML), m_mobilityPollInterval (Seconds(0.25)), + m_usingSockets (false), m_port (0), m_outputFileName (fn), + m_outputFileSet (false), m_serverPortSet (false), gAnimUid (0), m_randomPosition (true), m_writeCallback (0), m_started (false), - m_enablePacketMetadata (false), m_startTime (Seconds(0)), m_stopTime (Seconds(3600 * 1000)) + m_enablePacketMetadata (false), m_startTime (Seconds(0)), m_stopTime (Seconds(3600 * 1000)), + m_maxPktsPerFile (maxPktsPerFile), m_originalFileName (fn) { initialized = true; StartAnimation (); } AnimationInterface::AnimationInterface (const uint16_t port, bool usingXML) - : m_fHandle (STDOUT_FILENO), m_xml (usingXML), mobilitypollinterval (Seconds(0.25)), - usingSockets (true), mport (port), outputfilename (""), - OutputFileSet (false), ServerPortSet (false), gAnimUid (0), randomPosition (true), + : m_fHandle (STDOUT_FILENO), m_xml (usingXML), m_mobilityPollInterval (Seconds(0.25)), + m_usingSockets (true), m_port (port), m_outputFileName (""), + m_outputFileSet (false), m_serverPortSet (false), gAnimUid (0), m_randomPosition (true), m_writeCallback (0), m_started (false), - m_enablePacketMetadata (false), m_startTime (Seconds(0)), m_stopTime (Seconds(3600 * 1000)) + m_enablePacketMetadata (false), m_startTime (Seconds(0)), m_stopTime (Seconds(3600 * 1000)), + m_maxPktsPerFile (MAX_PKTS_PER_TRACE_FILE) { initialized = true; StartAnimation (); @@ -107,6 +110,22 @@ } +void AnimationInterface::StartNewTraceFile () +{ + static int i = 0; + std::ostringstream oss; + oss << i; + ++m_currentPktCount; + if (m_currentPktCount <= m_maxPktsPerFile) + { + return; + } + StopAnimation (); + m_outputFileName = m_originalFileName + "-" + oss.str (); + StartAnimation (true); + ++i; + +} void AnimationInterface::SetStartTime (Time t) { m_startTime = t; @@ -119,16 +138,17 @@ bool AnimationInterface::SetOutputFile (const std::string& fn) { - if (OutputFileSet) + if (m_outputFileSet) { return true; } if (fn == "") { m_fHandle = STDOUT_FILENO; - OutputFileSet = true; + m_outputFileSet = true; return true; } + NS_LOG_INFO ("Creating new trace file:" << fn.c_str ()); FILE* f = fopen (fn.c_str (), "w"); if (!f) { @@ -136,9 +156,9 @@ return false; // Can't open } m_fHandle = fileno (f); // Set the file handle - usingSockets = false; - outputfilename = fn; - OutputFileSet = true; + m_usingSockets = false; + m_outputFileName = fn; + m_outputFileSet = true; return true; } @@ -182,7 +202,7 @@ bool AnimationInterface::SetServerPort (uint16_t port) { #if defined(HAVE_SYS_SOCKET_H) && defined(HAVE_NETINET_IN_H) - if (ServerPortSet) + if (m_serverPortSet) { return true; } @@ -204,8 +224,8 @@ // set the linger socket option int t = 1; setsockopt (s, SOL_SOCKET, SO_LINGER, &t, sizeof(t)); - usingSockets = true; - ServerPortSet = true; + m_usingSockets = true; + m_serverPortSet = true; return true; #endif return false; // never reached unless the above is disabled @@ -214,33 +234,33 @@ bool AnimationInterface::WifiPacketIsPending (uint64_t AnimUid) { - return (pendingWifiPackets.find (AnimUid) != pendingWifiPackets.end ()); + return (m_pendingWifiPackets.find (AnimUid) != m_pendingWifiPackets.end ()); } bool AnimationInterface::CsmaPacketIsPending (uint64_t AnimUid) { - return (pendingCsmaPackets.find (AnimUid) != pendingCsmaPackets.end ()); + return (m_pendingCsmaPackets.find (AnimUid) != m_pendingCsmaPackets.end ()); } bool AnimationInterface::WimaxPacketIsPending (uint64_t AnimUid) { - return (pendingWimaxPackets.find (AnimUid) != pendingWimaxPackets.end ()); + return (m_pendingWimaxPackets.find (AnimUid) != m_pendingWimaxPackets.end ()); } bool AnimationInterface::LtePacketIsPending (uint64_t AnimUid) { - return (pendingLtePackets.find (AnimUid) != pendingLtePackets.end ()); + return (m_pendingLtePackets.find (AnimUid) != m_pendingLtePackets.end ()); } void AnimationInterface::SetMobilityPollInterval (Time t) { - mobilitypollinterval = t; + m_mobilityPollInterval = t; } void AnimationInterface::SetRandomPosition (bool setRandPos) { - randomPosition = setRandPos; + m_randomPosition = setRandPos; } Vector AnimationInterface::UpdatePosition (Ptr <Node> n) @@ -248,49 +268,49 @@ Ptr<MobilityModel> loc = n->GetObject<MobilityModel> (); if (loc) { - nodeLocation[n->GetId ()] = loc->GetPosition (); + m_nodeLocation[n->GetId ()] = loc->GetPosition (); } else { NS_LOG_UNCOND ( "AnimationInterface WARNING:Node:" << n->GetId () << " Does not have a mobility model. Use SetConstantPosition if it is stationary"); Vector deterministicVector (100,100,0); - Vector randomVector (UniformVariable (0, topo_maxX-topo_minX).GetValue (), UniformVariable (0, topo_maxY-topo_minY).GetValue (), 0); - if (randomPosition) + Vector randomVector (UniformVariable (0, m_topoMaxX - m_topoMinX).GetValue (), UniformVariable (0, m_topoMaxY - m_topoMinY).GetValue (), 0); + if (m_randomPosition) { - nodeLocation[n->GetId ()] = randomVector; + m_nodeLocation[n->GetId ()] = randomVector; } else { - nodeLocation[n->GetId ()] = deterministicVector; + m_nodeLocation[n->GetId ()] = deterministicVector; } } - return nodeLocation[n->GetId ()]; + return m_nodeLocation[n->GetId ()]; } Vector AnimationInterface::UpdatePosition (Ptr <Node> n, Vector v) { - nodeLocation[n->GetId ()] = v; + m_nodeLocation[n->GetId ()] = v; return v; } Vector AnimationInterface::GetPosition (Ptr <Node> n) { #ifdef NS_LOG - if (nodeLocation.find (n->GetId()) == nodeLocation.end ()) + if (m_nodeLocation.find (n->GetId()) == m_nodeLocation.end ()) { NS_FATAL_ERROR ("Node:" <<n->GetId() << " not found in Location table"); } #endif - return nodeLocation[n->GetId ()]; + return m_nodeLocation[n->GetId ()]; } void AnimationInterface::PurgePendingWifi () { - if (pendingWifiPackets.empty ()) + if (m_pendingWifiPackets.empty ()) return; std::vector <uint64_t> purgeList; - for (std::map<uint64_t, AnimPacketInfo>::iterator i = pendingWifiPackets.begin (); - i != pendingWifiPackets.end (); + for (std::map<uint64_t, AnimPacketInfo>::iterator i = m_pendingWifiPackets.begin (); + i != m_pendingWifiPackets.end (); ++i) { @@ -306,18 +326,18 @@ i != purgeList.end (); ++i) { - pendingWifiPackets.erase (*i); + m_pendingWifiPackets.erase (*i); } } void AnimationInterface::PurgePendingWimax () { - if (pendingWimaxPackets.empty ()) + if (m_pendingWimaxPackets.empty ()) return; std::vector <uint64_t> purgeList; - for (std::map<uint64_t, AnimPacketInfo>::iterator i = pendingWimaxPackets.begin (); - i != pendingWimaxPackets.end (); + for (std::map<uint64_t, AnimPacketInfo>::iterator i = m_pendingWimaxPackets.begin (); + i != m_pendingWimaxPackets.end (); ++i) { @@ -333,7 +353,7 @@ i != purgeList.end (); ++i) { - pendingWimaxPackets.erase (*i); + m_pendingWimaxPackets.erase (*i); } } @@ -341,11 +361,11 @@ void AnimationInterface::PurgePendingLte () { - if (pendingLtePackets.empty ()) + if (m_pendingLtePackets.empty ()) return; std::vector <uint64_t> purgeList; - for (std::map<uint64_t, AnimPacketInfo>::iterator i = pendingLtePackets.begin (); - i != pendingLtePackets.end (); + for (std::map<uint64_t, AnimPacketInfo>::iterator i = m_pendingLtePackets.begin (); + i != m_pendingLtePackets.end (); ++i) { @@ -361,17 +381,17 @@ i != purgeList.end (); ++i) { - pendingLtePackets.erase (*i); + m_pendingLtePackets.erase (*i); } } void AnimationInterface::PurgePendingCsma () { - if (pendingCsmaPackets.empty ()) + if (m_pendingCsmaPackets.empty ()) return; std::vector <uint64_t> purgeList; - for (std::map<uint64_t, AnimPacketInfo>::iterator i = pendingCsmaPackets.begin (); - i != pendingCsmaPackets.end (); + for (std::map<uint64_t, AnimPacketInfo>::iterator i = m_pendingCsmaPackets.begin (); + i != m_pendingCsmaPackets.end (); ++i) { @@ -387,37 +407,38 @@ i != purgeList.end (); ++i) { - pendingCsmaPackets.erase (*i); + m_pendingCsmaPackets.erase (*i); } } -void AnimationInterface::StartAnimation () +void AnimationInterface::StartAnimation (bool restart) { + m_currentPktCount = 0; m_started = true; - if (usingSockets) + if (m_usingSockets) { - SetServerPort (mport); + SetServerPort (m_port); } else { - SetOutputFile (outputfilename); + SetOutputFile (m_outputFileName); } // Find the min/max x/y for the xml topology element - topo_minX = -2; - topo_minY = -2; - topo_maxX = 2; - topo_maxY = 2; + m_topoMinX = -2; + m_topoMinY = -2; + m_topoMaxX = 2; + m_topoMaxY = 2; for (NodeList::Iterator i = NodeList::Begin (); i != NodeList::End (); ++i) { Ptr<Node> n = *i; NS_LOG_INFO ("Update Position for Node: " << n->GetId ()); Vector v = UpdatePosition (n); - topo_minX = std::min (topo_minX, v.x); - topo_minY = std::min (topo_minY, v.y); - topo_maxX = std::max (topo_maxX, v.x); - topo_maxY = std::max (topo_maxY, v.y); + m_topoMinX = std::min (m_topoMinX, v.x); + m_topoMinY = std::min (m_topoMinY, v.y); + m_topoMaxX = std::max (m_topoMaxX, v.x); + m_topoMaxY = std::max (m_topoMaxY, v.y); } AddMargin (); @@ -426,7 +447,7 @@ std::ostringstream oss; oss << GetXMLOpen_anim (0); oss << GetPreamble (); - oss << GetXMLOpen_topology (topo_minX, topo_minY, topo_maxX, topo_maxY); + oss << GetXMLOpen_topology (m_topoMinX, m_topoMinY, m_topoMaxX, m_topoMaxY); WriteN (m_fHandle, oss.str ()); } NS_LOG_INFO ("Setting topology for "<<NodeList::GetNNodes ()<<" Nodes"); @@ -497,13 +518,13 @@ } } } - if (m_xml) + if (m_xml && !restart) { WriteN (m_fHandle, GetXMLClose ("topology")); - Simulator::Schedule (mobilitypollinterval, &AnimationInterface::MobilityAutoCheck, this); + Simulator::Schedule (m_mobilityPollInterval, &AnimationInterface::MobilityAutoCheck, this); } - - ConnectCallbacks (); + if (!restart) + ConnectCallbacks (); } void AnimationInterface::ConnectCallbacks () @@ -553,7 +574,7 @@ { close (m_fHandle); } - OutputFileSet = false; + m_outputFileSet = false; m_fHandle = -1; } } @@ -575,14 +596,14 @@ void AnimationInterface::AddMargin () { // Compute width/height, and add a small margin - double w = topo_maxX - topo_minX; - double h = topo_maxY - topo_minY; - topo_minX -= w * 0.05; - topo_minY -= h * 0.05; - topo_maxX = topo_minX + w * 1.5; - topo_maxY = topo_minY + h * 1.5; - NS_LOG_INFO ("Added Canvas Margin:" << topo_minX << "," << - topo_minY << "," << topo_maxX << "," << topo_maxY); + double w = m_topoMaxX - m_topoMinX; + double h = m_topoMaxY - m_topoMinY; + m_topoMinX -= w * 0.05; + m_topoMinY -= h * 0.05; + m_topoMaxX = m_topoMinX + w * 1.5; + m_topoMaxY = m_topoMinY + h * 1.5; + NS_LOG_INFO ("Added Canvas Margin:" << m_topoMinX << "," << + m_topoMinY << "," << m_topoMaxX << "," << m_topoMaxY); } std::vector <Ptr <Node> > AnimationInterface::RecalcTopoBounds () @@ -618,17 +639,17 @@ void AnimationInterface::RecalcTopoBounds (Vector v) { - double oldminX = topo_minX; - double oldminY = topo_minY; - double oldmaxX = topo_maxX; - double oldmaxY = topo_maxY; - topo_minX = std::min (topo_minX, v.x); - topo_minY = std::min (topo_minY, v.y); - topo_maxX = std::max (topo_maxX, v.x); - topo_maxY = std::max (topo_maxY, v.y); + double oldminX = m_topoMinX; + double oldminY = m_topoMinY; + double oldmaxX = m_topoMaxX; + double oldmaxY = m_topoMaxY; + m_topoMinX = std::min (m_topoMinX, v.x); + m_topoMinY = std::min (m_topoMinY, v.y); + m_topoMaxX = std::max (m_topoMaxX, v.x); + m_topoMaxY = std::max (m_topoMaxY, v.y); - if ((topo_minX != oldminX) || (topo_minY != oldminY) || - (topo_maxX != oldmaxX) || (topo_maxY != oldmaxY)) + if ((m_topoMinX != oldminX) || (m_topoMinY != oldminY) || + (m_topoMaxX != oldmaxX) || (m_topoMaxY != oldmaxY)) { AddMargin (); } @@ -697,6 +718,8 @@ if (m_enablePacketMetadata) oss << GetXMLOpenClose_meta (GetPacketMetadata (p)); oss << GetXMLClose ("packet"); + StartNewTraceFile (); + ++m_currentPktCount; } else { @@ -727,25 +750,25 @@ void AnimationInterface::AddPendingWifiPacket (uint64_t AnimUid, AnimPacketInfo &pktinfo) { - pendingWifiPackets[AnimUid] = pktinfo; + m_pendingWifiPackets[AnimUid] = pktinfo; } void AnimationInterface::AddPendingWimaxPacket (uint64_t AnimUid, AnimPacketInfo &pktinfo) { NS_ASSERT (pktinfo.m_txnd); - pendingWimaxPackets[AnimUid] = pktinfo; + m_pendingWimaxPackets[AnimUid] = pktinfo; } void AnimationInterface::AddPendingLtePacket (uint64_t AnimUid, AnimPacketInfo &pktinfo) { NS_ASSERT (pktinfo.m_txnd); - pendingLtePackets[AnimUid] = pktinfo; + m_pendingLtePackets[AnimUid] = pktinfo; } void AnimationInterface::AddPendingCsmaPacket (uint64_t AnimUid, AnimPacketInfo &pktinfo) { NS_ASSERT (pktinfo.m_txnd); - pendingCsmaPackets[AnimUid] = pktinfo; + m_pendingCsmaPackets[AnimUid] = pktinfo; } uint64_t AnimationInterface::GetAnimUidFromPacket (Ptr <const Packet> p) @@ -814,7 +837,7 @@ uint64_t AnimUid = GetAnimUidFromPacket (p); NS_LOG_INFO ("TxDropTrace for packet:" << AnimUid); NS_ASSERT (WifiPacketIsPending (AnimUid) == true); - pendingWifiPackets.erase (pendingWifiPackets.find (AnimUid)); + m_pendingWifiPackets.erase (m_pendingWifiPackets.find (AnimUid)); } @@ -851,9 +874,9 @@ NS_LOG_WARN ("WifiPhyRxBegin: unknown Uid, but we are adding a wifi packet"); } // TODO: NS_ASSERT (WifiPacketIsPending (AnimUid) == true); - pendingWifiPackets[AnimUid].ProcessRxBegin (ndev, Simulator::Now ()); - pendingWifiPackets[AnimUid].ProcessRxEnd (ndev, Simulator::Now (), UpdatePosition (n)); - OutputWirelessPacket (p, pendingWifiPackets[AnimUid], pendingWifiPackets[AnimUid].GetRxInfo (ndev)); + m_pendingWifiPackets[AnimUid].ProcessRxBegin (ndev, Simulator::Now ()); + m_pendingWifiPackets[AnimUid].ProcessRxEnd (ndev, Simulator::Now (), UpdatePosition (n)); + OutputWirelessPacket (p, m_pendingWifiPackets[AnimUid], m_pendingWifiPackets[AnimUid].GetRxInfo (ndev)); } @@ -874,7 +897,7 @@ AddPendingWifiPacket (AnimUid, pktinfo); } // TODO: NS_ASSERT (WifiPacketIsPending (AnimUid) == true); - AnimPacketInfo& pktInfo = pendingWifiPackets[AnimUid]; + AnimPacketInfo& pktInfo = m_pendingWifiPackets[AnimUid]; pktInfo.ProcessRxEnd (ndev, Simulator::Now (), UpdatePosition (n)); AnimRxInfo pktrxInfo = pktInfo.GetRxInfo (ndev); if (pktrxInfo.IsPhyRxComplete ()) @@ -900,7 +923,7 @@ return; } // TODO: NS_ASSERT (WifiPacketIsPending (AnimUid) == true); - AnimPacketInfo& pktInfo = pendingWifiPackets[AnimUid]; + AnimPacketInfo& pktInfo = m_pendingWifiPackets[AnimUid]; AnimRxInfo pktrxInfo = pktInfo.GetRxInfo (ndev); if (pktrxInfo.IsPhyRxComplete ()) { @@ -944,7 +967,7 @@ uint64_t AnimUid = GetAnimUidFromPacket (p); NS_LOG_INFO ("WimaxRxTrace for packet:" << AnimUid); NS_ASSERT (WimaxPacketIsPending (AnimUid) == true); - AnimPacketInfo& pktInfo = pendingWimaxPackets[AnimUid]; + AnimPacketInfo& pktInfo = m_pendingWimaxPackets[AnimUid]; pktInfo.ProcessRxBegin (ndev, Simulator::Now ()); pktInfo.ProcessRxEnd (ndev, Simulator::Now () + Seconds (0.001), UpdatePosition (n)); //TODO 0.001 is used until Wimax implements RxBegin and RxEnd traces @@ -986,7 +1009,7 @@ NS_LOG_WARN ("LteRxTrace: unknown Uid"); return; } - AnimPacketInfo& pktInfo = pendingLtePackets[AnimUid]; + AnimPacketInfo& pktInfo = m_pendingLtePackets[AnimUid]; pktInfo.ProcessRxBegin (ndev, Simulator::Now ()); pktInfo.ProcessRxEnd (ndev, Simulator::Now () + Seconds (0.001), UpdatePosition (n)); //TODO 0.001 is used until Lte implements RxBegin and RxEnd traces @@ -1031,7 +1054,7 @@ NS_LOG_WARN ("Unknown Uid, but adding Csma Packet anyway"); } // TODO: NS_ASSERT (CsmaPacketIsPending (AnimUid) == true); - AnimPacketInfo& pktInfo = pendingCsmaPackets[AnimUid]; + AnimPacketInfo& pktInfo = m_pendingCsmaPackets[AnimUid]; pktInfo.m_lbTx = Simulator::Now ().GetSeconds (); } @@ -1050,8 +1073,8 @@ return; } // TODO: NS_ASSERT (CsmaPacketIsPending (AnimUid) == true); - AnimPacketInfo& pktInfo = pendingCsmaPackets[AnimUid]; - pendingCsmaPackets[AnimUid].ProcessRxBegin (ndev, Simulator::Now ()); + AnimPacketInfo& pktInfo = m_pendingCsmaPackets[AnimUid]; + m_pendingCsmaPackets[AnimUid].ProcessRxBegin (ndev, Simulator::Now ()); pktInfo.ProcessRxEnd (ndev, Simulator::Now (), UpdatePosition (n)); NS_LOG_INFO ("CsmaPhyRxEndTrace for packet:" << AnimUid); } @@ -1074,7 +1097,7 @@ return; } // TODO: NS_ASSERT (CsmaPacketIsPending (AnimUid) == true); - AnimPacketInfo& pktInfo = pendingCsmaPackets[AnimUid]; + AnimPacketInfo& pktInfo = m_pendingCsmaPackets[AnimUid]; AnimRxInfo pktrxInfo = pktInfo.GetRxInfo (ndev); if (pktrxInfo.IsPhyRxComplete ()) { @@ -1103,7 +1126,7 @@ UpdatePosition (n,v); RecalcTopoBounds (v); std::ostringstream oss; - oss << GetXMLOpen_topology (topo_minX,topo_minY,topo_maxX,topo_maxY); + oss << GetXMLOpen_topology (m_topoMinX, m_topoMinY, m_topoMaxX, m_topoMaxY); oss << GetXMLOpenClose_node (0,n->GetId (),v.x,v.y); oss << GetXMLClose ("topology"); WriteN (m_fHandle, oss.str ()); @@ -1131,7 +1154,7 @@ return; std::vector <Ptr <Node> > MovedNodes = RecalcTopoBounds (); std::ostringstream oss; - oss << GetXMLOpen_topology (topo_minX, topo_minY, topo_maxX, topo_maxY); + oss << GetXMLOpen_topology (m_topoMinX, m_topoMinY, m_topoMaxX, m_topoMaxY); for (uint32_t i = 0; i < MovedNodes.size (); i++) { Ptr <Node> n = MovedNodes [i]; @@ -1148,7 +1171,7 @@ PurgePendingWimax (); PurgePendingLte (); PurgePendingCsma (); - Simulator::Schedule (mobilitypollinterval, &AnimationInterface::MobilityAutoCheck, this); + Simulator::Schedule (m_mobilityPollInterval, &AnimationInterface::MobilityAutoCheck, this); } } @@ -1159,6 +1182,12 @@ return oss.str (); } +uint64_t AnimationInterface::GetTracePktCount () +{ + return m_currentPktCount; +} + + // Helper to output a wireless packet. // For now, only the XML interface is supported @@ -1204,6 +1233,7 @@ void AnimationInterface::OutputWirelessPacket (Ptr<const Packet> p, AnimPacketInfo &pktInfo, AnimRxInfo pktrxInfo) { + StartNewTraceFile (); NS_ASSERT (m_xml); std::ostringstream oss; uint32_t nodeId = 0; @@ -1226,6 +1256,7 @@ void AnimationInterface::OutputCsmaPacket (Ptr<const Packet> p, AnimPacketInfo &pktInfo, AnimRxInfo pktrxInfo) { + StartNewTraceFile (); NS_ASSERT (m_xml); std::ostringstream oss; NS_ASSERT (pktInfo.m_txnd);
--- a/src/netanim/model/animation-interface.h Fri May 18 10:30:14 2012 +0200 +++ b/src/netanim/model/animation-interface.h Tue May 29 10:42:17 2012 +0200 @@ -52,6 +52,8 @@ namespace ns3 { +#define MAX_PKTS_PER_TRACE_FILE 100000 + /** * \defgroup netanim Netanim * @@ -85,10 +87,16 @@ /** * \brief Constructor * \param filename The Filename for the trace file used by the Animator + * \param maxPktsPerFile The maximum number of packets per trace file. + AnimationInterface will create trace files with the following + filenames : filename, filename-1, filename-2..., filename-N + where each file contains packet info for 'maxPktPerFile' number of packets * \param usingXML Set to true if XML output traces are required * */ - AnimationInterface (const std::string filename, bool usingXML = true); + AnimationInterface (const std::string filename, + uint64_t maxPktsPerFile = MAX_PKTS_PER_TRACE_FILE, + bool usingXML = true); /** * \brief Constructor @@ -169,9 +177,10 @@ * on prior calls to SetOutputFile, SetServerPort, or SetInternalAnimation. * Then creates the callbacks needed for the animator to start processing * packets. - * + * + * \param restart True when restarting animation */ - void StartAnimation (); + void StartAnimation (bool restart = false); /** * \brief Closes the interface to the animator. @@ -269,6 +278,15 @@ void EnablePacketMetadata (bool enable); + /** + * + * \brief Get trace file packet count (This used only for testing) + * + * returns Number of packets recorded in the current trace file + * + */ + uint64_t GetTracePktCount (); + private: #ifndef WIN32 @@ -280,12 +298,21 @@ int WriteN (SOCKET, const char*, uint32_t); #endif bool m_xml; // True if xml format desired - Time mobilitypollinterval; - bool usingSockets; - uint16_t mport; - std::string outputfilename; - bool OutputFileSet; - bool ServerPortSet; + Time m_mobilityPollInterval; + bool m_usingSockets; + uint16_t m_port; + std::string m_outputFileName; + bool m_outputFileSet; + bool m_serverPortSet; + uint64_t gAnimUid ; // Packet unique identifier used by Animtion + bool m_randomPosition; + AnimWriteCallback m_writeCallback; + bool m_started; + bool m_enablePacketMetadata; + Time m_startTime; + Time m_stopTime; + uint64_t m_maxPktsPerFile; + std::string m_originalFileName; void DevTxTrace (std::string context, Ptr<const Packet> p, @@ -339,27 +366,26 @@ void OutputCsmaPacket (Ptr<const Packet> p, AnimPacketInfo& pktInfo, AnimRxInfo pktrxInfo); void MobilityAutoCheck (); - uint64_t gAnimUid ; // Packet unique identifier used by Animtion - std::map<uint64_t, AnimPacketInfo> pendingWifiPackets; + std::map<uint64_t, AnimPacketInfo> m_pendingWifiPackets; void AddPendingWifiPacket (uint64_t AnimUid, AnimPacketInfo&); bool WifiPacketIsPending (uint64_t AnimUid); - std::map<uint64_t, AnimPacketInfo> pendingWimaxPackets; + std::map<uint64_t, AnimPacketInfo> m_pendingWimaxPackets; void AddPendingWimaxPacket (uint64_t AnimUid, AnimPacketInfo&); bool WimaxPacketIsPending (uint64_t AnimUid); - std::map<uint64_t, AnimPacketInfo> pendingLtePackets; + std::map<uint64_t, AnimPacketInfo> m_pendingLtePackets; void AddPendingLtePacket (uint64_t AnimUid, AnimPacketInfo&); bool LtePacketIsPending (uint64_t AnimUid); - std::map<uint64_t, AnimPacketInfo> pendingCsmaPackets; + std::map<uint64_t, AnimPacketInfo> m_pendingCsmaPackets; void AddPendingCsmaPacket (uint64_t AnimUid, AnimPacketInfo&); bool CsmaPacketIsPending (uint64_t AnimUid); uint64_t GetAnimUidFromPacket (Ptr <const Packet>); - std::map<uint32_t, Vector> nodeLocation; + std::map<uint32_t, Vector> m_nodeLocation; Vector GetPosition (Ptr <Node> n); Vector UpdatePosition (Ptr <Node> n); Vector UpdatePosition (Ptr <Node> n, Vector v); @@ -376,14 +402,8 @@ void RecalcTopoBounds (Vector v); std::vector < Ptr <Node> > RecalcTopoBounds (); - bool randomPosition; - AnimWriteCallback m_writeCallback; void ConnectCallbacks (); - bool m_started; - bool m_enablePacketMetadata; - Time m_startTime; - Time m_stopTime; std::map <std::string, uint32_t> m_macToNodeIdMap; bool IsInTimeWindow (); @@ -393,14 +413,17 @@ Ptr <NetDevice> GetNetDeviceFromContext (std::string context); static std::map <uint32_t, std::string> nodeDescriptions; + uint64_t m_currentPktCount; + + void StartNewTraceFile(); // XML helpers std::string GetPreamble (void); // Topology element dimensions - double topo_minX; - double topo_minY; - double topo_maxX; - double topo_maxY; + double m_topoMinX; + double m_topoMinY; + double m_topoMaxX; + double m_topoMaxY; std::string GetPacketMetadata (Ptr<const Packet> p);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/netanim/test/examples-to-run.py Tue May 29 10:42:17 2012 +0200 @@ -0,0 +1,23 @@ +#! /usr/bin/env python +## -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*- + +# A list of C++ examples to run in order to ensure that they remain +# buildable and runnable over time. Each tuple in the list contains +# +# (example_name, do_run, do_valgrind_run). +# +# See test.py for more information. +cpp_examples = [ + ("dumbbell-animation", "True", "False"), + ("star-animation", "True", "False"), + ("grid-animation", "True", "False"), + ("wireless-animation", "True", "False"), +] + +# A list of Python examples to run in order to ensure that they remain +# runnable over time. Each tuple in the list contains +# +# (example_name, do_run). +# +# See test.py for more information. +python_examples = []
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/netanim/test/netanim-test.cc Tue May 29 10:42:17 2012 +0200 @@ -0,0 +1,119 @@ +/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */ +/* + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation; + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * Author: John Abraham <john.abraham@gatech.edu> + */ + +#include <iostream> +#include "unistd.h" + +#include "ns3/core-module.h" +#include "ns3/network-module.h" +#include "ns3/internet-module.h" +#include "ns3/point-to-point-module.h" +#include "ns3/netanim-module.h" +#include "ns3/applications-module.h" +#include "ns3/point-to-point-layout-module.h" + +namespace ns3 { + +class AnimationInterfaceTestCase : public TestCase +{ +public: + /** + * \brief Constructor. + */ + AnimationInterfaceTestCase (); + /** + * \brief Destructor. + */ + virtual + ~AnimationInterfaceTestCase (); + /** + * \brief Run unit tests for this class. + * \return false if all tests have passed, false otherwise + */ + virtual void + DoRun (void); + +}; + +AnimationInterfaceTestCase::AnimationInterfaceTestCase () : + TestCase ("Verify AnimationInterface") +{ +} + +AnimationInterfaceTestCase::~AnimationInterfaceTestCase () +{ +} +void +AnimationInterfaceTestCase::DoRun (void) +{ + NodeContainer nodes; + nodes.Create (2); + AnimationInterface::SetConstantPosition (nodes.Get (0), 0 , 10); + AnimationInterface::SetConstantPosition (nodes.Get (1), 1 , 10); + + PointToPointHelper pointToPoint; + pointToPoint.SetDeviceAttribute ("DataRate", StringValue ("5Mbps")); + pointToPoint.SetChannelAttribute ("Delay", StringValue ("2ms")); + + NetDeviceContainer devices; + devices = pointToPoint.Install (nodes); + + InternetStackHelper stack; + stack.Install (nodes); + + Ipv4AddressHelper address; + address.SetBase ("10.1.1.0", "255.255.255.0"); + + Ipv4InterfaceContainer interfaces = address.Assign (devices); + + UdpEchoServerHelper echoServer (9); + + ApplicationContainer serverApps = echoServer.Install (nodes.Get (1)); + serverApps.Start (Seconds (1.0)); + serverApps.Stop (Seconds (10.0)); + + UdpEchoClientHelper echoClient (interfaces.GetAddress (1), 9); + echoClient.SetAttribute ("MaxPackets", UintegerValue (100)); + echoClient.SetAttribute ("Interval", TimeValue (Seconds (1.0))); + echoClient.SetAttribute ("PacketSize", UintegerValue (1024)); + + ApplicationContainer clientApps = echoClient.Install (nodes.Get (0)); + clientApps.Start (Seconds (2.0)); + clientApps.Stop (Seconds (10.0)); + std::string traceFileName = "netanim-test.xml"; + AnimationInterface anim(traceFileName.c_str ()); + Simulator::Run (); + NS_TEST_ASSERT_MSG_EQ (anim.GetTracePktCount (), 32, "Expected 32 packets traced"); + FILE * fp = fopen (traceFileName.c_str (), "r"); + NS_TEST_ASSERT_MSG_NE (fp, 0, "Trace file was not created"); + fclose (fp); + unlink (traceFileName.c_str ()); + Simulator::Destroy (); +} + +static class AnimationInterfaceTestSuite : public TestSuite +{ +public: + AnimationInterfaceTestSuite () : + TestSuite ("animation-interface", UNIT) + { + AddTestCase (new AnimationInterfaceTestCase ()); + } +} g_animationInterfaceTestSuite; + +} // namespace ns3
--- a/src/netanim/wscript Fri May 18 10:30:14 2012 +0200 +++ b/src/netanim/wscript Tue May 29 10:42:17 2012 +0200 @@ -14,6 +14,10 @@ 'model/animation-interface.cc', 'helper/animation-interface-helper.cc', ] + netanim_test = bld.create_ns3_module_test_library('netanim') + netanim_test.source = [ + 'test/netanim-test.cc', + ] headers = bld.new_task_gen (features=['ns3header']) headers.module = 'netanim'
--- a/src/propagation/bindings/modulegen__gcc_ILP32.py Fri May 18 10:30:14 2012 +0200 +++ b/src/propagation/bindings/modulegen__gcc_ILP32.py Tue May 29 10:42:17 2012 +0200 @@ -34,6 +34,8 @@ module.add_class('ObjectBase', allow_subclassing=True, import_from_module='ns.core') ## object.h (module 'core'): ns3::ObjectDeleter [struct] module.add_class('ObjectDeleter', import_from_module='ns.core') + ## propagation-cache.h (module 'propagation'): ns3::PropagationCache<ns3::JakesProcess> [class] + module.add_class('PropagationCache', template_parameters=['ns3::JakesProcess']) ## random-variable.h (module 'core'): ns3::RandomVariable [class] module.add_class('RandomVariable', import_from_module='ns.core') ## random-variable.h (module 'core'): ns3::SeedManager [class] @@ -152,6 +154,8 @@ module.add_class('ItuR1411LosPropagationLossModel', parent=root_module['ns3::PropagationLossModel']) ## itu-r-1411-nlos-over-rooftop-propagation-loss-model.h (module 'propagation'): ns3::ItuR1411NlosOverRooftopPropagationLossModel [class] module.add_class('ItuR1411NlosOverRooftopPropagationLossModel', parent=root_module['ns3::PropagationLossModel']) + ## jakes-process.h (module 'propagation'): ns3::JakesProcess [class] + module.add_class('JakesProcess', parent=root_module['ns3::Object']) ## jakes-propagation-loss-model.h (module 'propagation'): ns3::JakesPropagationLossModel [class] module.add_class('JakesPropagationLossModel', parent=root_module['ns3::PropagationLossModel']) ## kun-2600-mhz-propagation-loss-model.h (module 'propagation'): ns3::Kun2600MhzPropagationLossModel [class] @@ -215,6 +219,7 @@ register_Ns3CallbackBase_methods(root_module, root_module['ns3::CallbackBase']) register_Ns3ObjectBase_methods(root_module, root_module['ns3::ObjectBase']) register_Ns3ObjectDeleter_methods(root_module, root_module['ns3::ObjectDeleter']) + register_Ns3PropagationCache__Ns3JakesProcess_methods(root_module, root_module['ns3::PropagationCache< ns3::JakesProcess >']) register_Ns3RandomVariable_methods(root_module, root_module['ns3::RandomVariable']) register_Ns3SeedManager_methods(root_module, root_module['ns3::SeedManager']) register_Ns3SequentialVariable_methods(root_module, root_module['ns3::SequentialVariable']) @@ -270,6 +275,7 @@ register_Ns3FriisPropagationLossModel_methods(root_module, root_module['ns3::FriisPropagationLossModel']) register_Ns3ItuR1411LosPropagationLossModel_methods(root_module, root_module['ns3::ItuR1411LosPropagationLossModel']) register_Ns3ItuR1411NlosOverRooftopPropagationLossModel_methods(root_module, root_module['ns3::ItuR1411NlosOverRooftopPropagationLossModel']) + register_Ns3JakesProcess_methods(root_module, root_module['ns3::JakesProcess']) register_Ns3JakesPropagationLossModel_methods(root_module, root_module['ns3::JakesPropagationLossModel']) register_Ns3Kun2600MhzPropagationLossModel_methods(root_module, root_module['ns3::Kun2600MhzPropagationLossModel']) register_Ns3LogDistancePropagationLossModel_methods(root_module, root_module['ns3::LogDistancePropagationLossModel']) @@ -421,6 +427,17 @@ is_static=True) return +def register_Ns3PropagationCache__Ns3JakesProcess_methods(root_module, cls): + ## propagation-cache.h (module 'propagation'): ns3::PropagationCache<ns3::JakesProcess>::PropagationCache(ns3::PropagationCache<ns3::JakesProcess> const & arg0) [copy constructor] + cls.add_constructor([param('ns3::PropagationCache< ns3::JakesProcess > const &', 'arg0')]) + ## propagation-cache.h (module 'propagation'): ns3::PropagationCache<ns3::JakesProcess>::PropagationCache() [constructor] + cls.add_constructor([]) + ## propagation-cache.h (module 'propagation'): ns3::Ptr<ns3::JakesProcess> ns3::PropagationCache<ns3::JakesProcess>::GetPathData(ns3::Ptr<ns3::MobilityModel const> a, ns3::Ptr<ns3::MobilityModel const> b, uint32_t modelUid) [member function] + cls.add_method('GetPathData', + 'ns3::Ptr< ns3::JakesProcess >', + [param('ns3::Ptr< ns3::MobilityModel const >', 'a'), param('ns3::Ptr< ns3::MobilityModel const >', 'b'), param('uint32_t', 'modelUid')]) + return + def register_Ns3RandomVariable_methods(root_module, cls): cls.add_output_stream_operator() ## random-variable.h (module 'core'): ns3::RandomVariable::RandomVariable() [constructor] @@ -1832,32 +1849,36 @@ is_const=True, visibility='private', is_virtual=True) return -def register_Ns3JakesPropagationLossModel_methods(root_module, cls): - ## jakes-propagation-loss-model.h (module 'propagation'): ns3::JakesPropagationLossModel::JakesPropagationLossModel() [constructor] +def register_Ns3JakesProcess_methods(root_module, cls): + ## jakes-process.h (module 'propagation'): ns3::JakesProcess::JakesProcess(ns3::JakesProcess const & arg0) [copy constructor] + cls.add_constructor([param('ns3::JakesProcess const &', 'arg0')]) + ## jakes-process.h (module 'propagation'): ns3::JakesProcess::JakesProcess() [constructor] cls.add_constructor([]) - ## jakes-propagation-loss-model.h (module 'propagation'): uint8_t ns3::JakesPropagationLossModel::GetNOscillators() const [member function] - cls.add_method('GetNOscillators', - 'uint8_t', + ## jakes-process.h (module 'propagation'): double ns3::JakesProcess::GetChannelGainDb() const [member function] + cls.add_method('GetChannelGainDb', + 'double', [], is_const=True) - ## jakes-propagation-loss-model.h (module 'propagation'): uint8_t ns3::JakesPropagationLossModel::GetNRays() const [member function] - cls.add_method('GetNRays', - 'uint8_t', + ## jakes-process.h (module 'propagation'): std::complex<double> ns3::JakesProcess::GetComplexGain() const [member function] + cls.add_method('GetComplexGain', + 'std::complex< double >', [], is_const=True) + ## jakes-process.h (module 'propagation'): static ns3::TypeId ns3::JakesProcess::GetTypeId() [member function] + cls.add_method('GetTypeId', + 'ns3::TypeId', + [], + is_static=True) + return + +def register_Ns3JakesPropagationLossModel_methods(root_module, cls): ## jakes-propagation-loss-model.h (module 'propagation'): static ns3::TypeId ns3::JakesPropagationLossModel::GetTypeId() [member function] cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True) - ## jakes-propagation-loss-model.h (module 'propagation'): void ns3::JakesPropagationLossModel::SetNOscillators(uint8_t nOscillators) [member function] - cls.add_method('SetNOscillators', - 'void', - [param('uint8_t', 'nOscillators')]) - ## jakes-propagation-loss-model.h (module 'propagation'): void ns3::JakesPropagationLossModel::SetNRays(uint8_t nRays) [member function] - cls.add_method('SetNRays', - 'void', - [param('uint8_t', 'nRays')]) + ## jakes-propagation-loss-model.h (module 'propagation'): ns3::JakesPropagationLossModel::JakesPropagationLossModel() [constructor] + cls.add_constructor([]) ## jakes-propagation-loss-model.h (module 'propagation'): double ns3::JakesPropagationLossModel::DoCalcRxPower(double txPowerDbm, ns3::Ptr<ns3::MobilityModel> a, ns3::Ptr<ns3::MobilityModel> b) const [member function] cls.add_method('DoCalcRxPower', 'double', @@ -1941,7 +1962,7 @@ cls.add_constructor([param('ns3::MobilityModel const &', 'arg0')]) ## mobility-model.h (module 'mobility'): ns3::MobilityModel::MobilityModel() [constructor] cls.add_constructor([]) - ## mobility-model.h (module 'mobility'): double ns3::MobilityModel::GetDistanceFrom(ns3::Ptr<const ns3::MobilityModel> position) const [member function] + ## mobility-model.h (module 'mobility'): double ns3::MobilityModel::GetDistanceFrom(ns3::Ptr<ns3::MobilityModel const> position) const [member function] cls.add_method('GetDistanceFrom', 'double', [param('ns3::Ptr< ns3::MobilityModel const >', 'position')], @@ -1951,7 +1972,7 @@ 'ns3::Vector', [], is_const=True) - ## mobility-model.h (module 'mobility'): double ns3::MobilityModel::GetRelativeSpeed(ns3::Ptr<const ns3::MobilityModel> other) const [member function] + ## mobility-model.h (module 'mobility'): double ns3::MobilityModel::GetRelativeSpeed(ns3::Ptr<ns3::MobilityModel const> other) const [member function] cls.add_method('GetRelativeSpeed', 'double', [param('ns3::Ptr< ns3::MobilityModel const >', 'other')],
--- a/src/propagation/bindings/modulegen__gcc_LP64.py Fri May 18 10:30:14 2012 +0200 +++ b/src/propagation/bindings/modulegen__gcc_LP64.py Tue May 29 10:42:17 2012 +0200 @@ -34,6 +34,8 @@ module.add_class('ObjectBase', allow_subclassing=True, import_from_module='ns.core') ## object.h (module 'core'): ns3::ObjectDeleter [struct] module.add_class('ObjectDeleter', import_from_module='ns.core') + ## propagation-cache.h (module 'propagation'): ns3::PropagationCache<ns3::JakesProcess> [class] + module.add_class('PropagationCache', template_parameters=['ns3::JakesProcess']) ## random-variable.h (module 'core'): ns3::RandomVariable [class] module.add_class('RandomVariable', import_from_module='ns.core') ## random-variable.h (module 'core'): ns3::SeedManager [class] @@ -152,6 +154,8 @@ module.add_class('ItuR1411LosPropagationLossModel', parent=root_module['ns3::PropagationLossModel']) ## itu-r-1411-nlos-over-rooftop-propagation-loss-model.h (module 'propagation'): ns3::ItuR1411NlosOverRooftopPropagationLossModel [class] module.add_class('ItuR1411NlosOverRooftopPropagationLossModel', parent=root_module['ns3::PropagationLossModel']) + ## jakes-process.h (module 'propagation'): ns3::JakesProcess [class] + module.add_class('JakesProcess', parent=root_module['ns3::Object']) ## jakes-propagation-loss-model.h (module 'propagation'): ns3::JakesPropagationLossModel [class] module.add_class('JakesPropagationLossModel', parent=root_module['ns3::PropagationLossModel']) ## kun-2600-mhz-propagation-loss-model.h (module 'propagation'): ns3::Kun2600MhzPropagationLossModel [class] @@ -215,6 +219,7 @@ register_Ns3CallbackBase_methods(root_module, root_module['ns3::CallbackBase']) register_Ns3ObjectBase_methods(root_module, root_module['ns3::ObjectBase']) register_Ns3ObjectDeleter_methods(root_module, root_module['ns3::ObjectDeleter']) + register_Ns3PropagationCache__Ns3JakesProcess_methods(root_module, root_module['ns3::PropagationCache< ns3::JakesProcess >']) register_Ns3RandomVariable_methods(root_module, root_module['ns3::RandomVariable']) register_Ns3SeedManager_methods(root_module, root_module['ns3::SeedManager']) register_Ns3SequentialVariable_methods(root_module, root_module['ns3::SequentialVariable']) @@ -270,6 +275,7 @@ register_Ns3FriisPropagationLossModel_methods(root_module, root_module['ns3::FriisPropagationLossModel']) register_Ns3ItuR1411LosPropagationLossModel_methods(root_module, root_module['ns3::ItuR1411LosPropagationLossModel']) register_Ns3ItuR1411NlosOverRooftopPropagationLossModel_methods(root_module, root_module['ns3::ItuR1411NlosOverRooftopPropagationLossModel']) + register_Ns3JakesProcess_methods(root_module, root_module['ns3::JakesProcess']) register_Ns3JakesPropagationLossModel_methods(root_module, root_module['ns3::JakesPropagationLossModel']) register_Ns3Kun2600MhzPropagationLossModel_methods(root_module, root_module['ns3::Kun2600MhzPropagationLossModel']) register_Ns3LogDistancePropagationLossModel_methods(root_module, root_module['ns3::LogDistancePropagationLossModel']) @@ -421,6 +427,17 @@ is_static=True) return +def register_Ns3PropagationCache__Ns3JakesProcess_methods(root_module, cls): + ## propagation-cache.h (module 'propagation'): ns3::PropagationCache<ns3::JakesProcess>::PropagationCache(ns3::PropagationCache<ns3::JakesProcess> const & arg0) [copy constructor] + cls.add_constructor([param('ns3::PropagationCache< ns3::JakesProcess > const &', 'arg0')]) + ## propagation-cache.h (module 'propagation'): ns3::PropagationCache<ns3::JakesProcess>::PropagationCache() [constructor] + cls.add_constructor([]) + ## propagation-cache.h (module 'propagation'): ns3::Ptr<ns3::JakesProcess> ns3::PropagationCache<ns3::JakesProcess>::GetPathData(ns3::Ptr<ns3::MobilityModel const> a, ns3::Ptr<ns3::MobilityModel const> b, uint32_t modelUid) [member function] + cls.add_method('GetPathData', + 'ns3::Ptr< ns3::JakesProcess >', + [param('ns3::Ptr< ns3::MobilityModel const >', 'a'), param('ns3::Ptr< ns3::MobilityModel const >', 'b'), param('uint32_t', 'modelUid')]) + return + def register_Ns3RandomVariable_methods(root_module, cls): cls.add_output_stream_operator() ## random-variable.h (module 'core'): ns3::RandomVariable::RandomVariable() [constructor] @@ -1832,32 +1849,36 @@ is_const=True, visibility='private', is_virtual=True) return -def register_Ns3JakesPropagationLossModel_methods(root_module, cls): - ## jakes-propagation-loss-model.h (module 'propagation'): ns3::JakesPropagationLossModel::JakesPropagationLossModel() [constructor] +def register_Ns3JakesProcess_methods(root_module, cls): + ## jakes-process.h (module 'propagation'): ns3::JakesProcess::JakesProcess(ns3::JakesProcess const & arg0) [copy constructor] + cls.add_constructor([param('ns3::JakesProcess const &', 'arg0')]) + ## jakes-process.h (module 'propagation'): ns3::JakesProcess::JakesProcess() [constructor] cls.add_constructor([]) - ## jakes-propagation-loss-model.h (module 'propagation'): uint8_t ns3::JakesPropagationLossModel::GetNOscillators() const [member function] - cls.add_method('GetNOscillators', - 'uint8_t', + ## jakes-process.h (module 'propagation'): double ns3::JakesProcess::GetChannelGainDb() const [member function] + cls.add_method('GetChannelGainDb', + 'double', [], is_const=True) - ## jakes-propagation-loss-model.h (module 'propagation'): uint8_t ns3::JakesPropagationLossModel::GetNRays() const [member function] - cls.add_method('GetNRays', - 'uint8_t', + ## jakes-process.h (module 'propagation'): std::complex<double> ns3::JakesProcess::GetComplexGain() const [member function] + cls.add_method('GetComplexGain', + 'std::complex< double >', [], is_const=True) + ## jakes-process.h (module 'propagation'): static ns3::TypeId ns3::JakesProcess::GetTypeId() [member function] + cls.add_method('GetTypeId', + 'ns3::TypeId', + [], + is_static=True) + return + +def register_Ns3JakesPropagationLossModel_methods(root_module, cls): ## jakes-propagation-loss-model.h (module 'propagation'): static ns3::TypeId ns3::JakesPropagationLossModel::GetTypeId() [member function] cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True) - ## jakes-propagation-loss-model.h (module 'propagation'): void ns3::JakesPropagationLossModel::SetNOscillators(uint8_t nOscillators) [member function] - cls.add_method('SetNOscillators', - 'void', - [param('uint8_t', 'nOscillators')]) - ## jakes-propagation-loss-model.h (module 'propagation'): void ns3::JakesPropagationLossModel::SetNRays(uint8_t nRays) [member function] - cls.add_method('SetNRays', - 'void', - [param('uint8_t', 'nRays')]) + ## jakes-propagation-loss-model.h (module 'propagation'): ns3::JakesPropagationLossModel::JakesPropagationLossModel() [constructor] + cls.add_constructor([]) ## jakes-propagation-loss-model.h (module 'propagation'): double ns3::JakesPropagationLossModel::DoCalcRxPower(double txPowerDbm, ns3::Ptr<ns3::MobilityModel> a, ns3::Ptr<ns3::MobilityModel> b) const [member function] cls.add_method('DoCalcRxPower', 'double', @@ -1941,7 +1962,7 @@ cls.add_constructor([param('ns3::MobilityModel const &', 'arg0')]) ## mobility-model.h (module 'mobility'): ns3::MobilityModel::MobilityModel() [constructor] cls.add_constructor([]) - ## mobility-model.h (module 'mobility'): double ns3::MobilityModel::GetDistanceFrom(ns3::Ptr<const ns3::MobilityModel> position) const [member function] + ## mobility-model.h (module 'mobility'): double ns3::MobilityModel::GetDistanceFrom(ns3::Ptr<ns3::MobilityModel const> position) const [member function] cls.add_method('GetDistanceFrom', 'double', [param('ns3::Ptr< ns3::MobilityModel const >', 'position')], @@ -1951,7 +1972,7 @@ 'ns3::Vector', [], is_const=True) - ## mobility-model.h (module 'mobility'): double ns3::MobilityModel::GetRelativeSpeed(ns3::Ptr<const ns3::MobilityModel> other) const [member function] + ## mobility-model.h (module 'mobility'): double ns3::MobilityModel::GetRelativeSpeed(ns3::Ptr<ns3::MobilityModel const> other) const [member function] cls.add_method('GetRelativeSpeed', 'double', [param('ns3::Ptr< ns3::MobilityModel const >', 'other')],
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/propagation/examples/jakes-propagation-model-example.cc Tue May 29 10:42:17 2012 +0200 @@ -0,0 +1,98 @@ +/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */ +/* + * Copyright (c) 2012 Telum (www.telum.ru) + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation; + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * Author: Kirill Andreev <andreev@telum.ru> + */ +#include "ns3/core-module.h" +#include "ns3/mobility-module.h" +#include "ns3/jakes-propagation-loss-model.h" +#include <vector> +#include <math.h> + +using namespace ns3; +/** + * \ingroup propagation + * \brief Constructs a JakesPropagationlossModel and print the loss value as a function of time into std::cout. + * Distribution and correlation statistics is compared woth a theoretical ones using R package (http://www.r-project.org/). + * Scripts are presented within comments. + */ +class JakesPropagationExample +{ +public: + JakesPropagationExample (); + ~JakesPropagationExample (); +private: + Ptr<PropagationLossModel> m_loss; + Ptr<MobilityModel> m_firstMobility; + Ptr<MobilityModel> m_secondMobility; + Time m_step; + EventId m_nextEvent; + void Next (); + +}; + +JakesPropagationExample::JakesPropagationExample () : + m_step (Seconds (0.0002)) //1/5000 part of the second +{ + m_loss = CreateObject<JakesPropagationLossModel> (); + m_firstMobility = CreateObject<ConstantPositionMobilityModel> (); + m_secondMobility = CreateObject<ConstantPositionMobilityModel> (); + m_firstMobility->SetPosition (Vector (0, 0, 0)); + m_secondMobility->SetPosition (Vector (10, 0, 0)); + m_nextEvent = Simulator::Schedule (m_step, &JakesPropagationExample::Next, this); +} + +JakesPropagationExample::~JakesPropagationExample () +{ +} + +void JakesPropagationExample::Next () +{ + m_nextEvent = Simulator::Schedule (m_step, &JakesPropagationExample::Next, this); + std::cout << Simulator::Now ().GetMilliSeconds () << " " << m_loss->CalcRxPower (0, m_firstMobility, m_secondMobility) << std::endl; +} + +int main (int argc, char *argv[]) +{ + Config::SetDefault ("ns3::JakesProcess::NumberOfOscillators", UintegerValue (100)); + CommandLine cmd; + cmd.Parse (argc, argv); + JakesPropagationExample example; + Simulator::Stop (Seconds (1000)); + Simulator::Run (); + Simulator::Destroy (); + /* + * R script for plotting a distribution: + data<-read.table ("data") + rayleigh<-(rnorm(1e6)^2+rnorm(1e6)^2)/2 + qqplot(10*log10(rayleigh), data$V2, main="QQ-plot for improved Jakes model", xlab="Reference Rayleigh distribution [power, dB]", ylab="Sum-of-sinusoids distribution [power, dB]", xlim=c(-45, 10), ylim=c(-45, 10)) + lines (c(-50, 50), c(-50, 50)) + abline (v=-50:50*2, h=-50:50*2, col="light grey") + */ + + /* + * R script to plot autocorrelation function: + # Read amplitude distribution: + data<-10^(read.table ("data")$V2/20) + x<-1:2000/10 + acf (data, lag.max=200, main="Autocorrelation function of the improved Jakes model", xlab="Time x200 microseconds ", ylab="Autocorrelation") + # If we have a delta T = 1/5000 part of the second and doppler freq = 80 Hz + lines (x, besselJ(x*80*2*pi/5000, 0)^2) + abline (h=0:10/10, col="light grey") + */ + return 0; +}
--- a/src/propagation/examples/main-propagation-loss.cc Fri May 18 10:30:14 2012 +0200 +++ b/src/propagation/examples/main-propagation-loss.cc Tue May 29 10:42:17 2012 +0200 @@ -249,7 +249,7 @@ Ptr<JakesPropagationLossModel> jakes = CreateObject<JakesPropagationLossModel> (); // doppler frequency shift for 5.15 GHz at 100 km/h - jakes->SetAttribute ("DopplerFreq", DoubleValue (477.9)); + Config::SetDefault ("ns3::JakesProcess::DopplerFrequencyHz", DoubleValue (477.9)); Gnuplot plot = TestDeterministicByTime (jakes, Seconds (0.001), Seconds (1.0)); plot.SetTitle ("ns3::JakesPropagationLossModel (with 477.9 Hz shift and 1 millisec resolution)"); @@ -260,7 +260,7 @@ Ptr<JakesPropagationLossModel> jakes = CreateObject<JakesPropagationLossModel> (); // doppler frequency shift for 5.15 GHz at 100 km/h - jakes->SetAttribute ("DopplerFreq", DoubleValue (477.9)); + Config::SetDefault ("ns3::JakesProcess::DopplerFrequencyHz", DoubleValue (477.9)); Gnuplot plot = TestDeterministicByTime (jakes, Seconds (0.0001), Seconds (0.1)); plot.SetTitle ("ns3::JakesPropagationLossModel (with 477.9 Hz shift and 0.1 millisec resolution)");
--- a/src/propagation/examples/wscript Fri May 18 10:30:14 2012 +0200 +++ b/src/propagation/examples/wscript Tue May 29 10:42:17 2012 +0200 @@ -8,4 +8,9 @@ ['core', 'mobility', 'config-store', 'tools', 'propagation']) obj.source = 'main-propagation-loss.cc' + obj = bld.create_ns3_program('jakes-propagation-model-example', + ['core', 'propagation']) + obj.source = 'jakes-propagation-model-example.cc' + +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/propagation/model/jakes-process.cc Tue May 29 10:42:17 2012 +0200 @@ -0,0 +1,134 @@ +/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */ +/* + * Copyright (c) 2012 Telum (www.telum.ru) + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation; + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * Author: Kirill Andreev <andreev@telum.ru>, Alexander Sofronov <sofronov@telum.ru> + */ + +#include "jakes-process.h" +#include "ns3/random-variable.h" +#include "ns3/simulator.h" +#include "ns3/double.h" +#include "ns3/uinteger.h" + +namespace ns3 { +const double JakesProcess::PI = 3.14159265358979323846; + +/// Represents a single oscillator +JakesProcess::Oscillator::Oscillator (std::complex<double> amplitude, double initialPhase, double omega) : + m_amplitude (amplitude), + m_phase (initialPhase), + m_omega (omega) +{} + +std::complex<double> +JakesProcess::Oscillator::GetValueAt (Time at) const +{ + return (m_amplitude * cos (at.GetSeconds () * m_omega + m_phase)); +} + +NS_OBJECT_ENSURE_REGISTERED (JakesProcess); + +TypeId +JakesProcess::GetTypeId () +{ + static TypeId tid = TypeId ("ns3::JakesProcess") + .SetParent<Object> () + .AddConstructor<JakesProcess> () + .AddAttribute ("DopplerFrequencyHz", "Corresponding doppler frequency[Hz]", + DoubleValue (80), + MakeDoubleAccessor (&JakesProcess::SetDopplerFrequencyHz), + MakeDoubleChecker<double> (0.0, 1e4)) + .AddAttribute ("NumberOfOscillators", "The number of oscillators", + UintegerValue (20), + MakeUintegerAccessor (&JakesProcess::SetNOscillators), + MakeUintegerChecker<unsigned int> (4, 1000)) + ; + return tid; +} + +void +JakesProcess::SetNOscillators (unsigned int nOscillators) +{ + m_nOscillators = nOscillators; + if (m_omegaDopplerMax != 0) + { + ConstructOscillators (); + } +} + +void +JakesProcess::SetDopplerFrequencyHz (double dopplerFrequencyHz) +{ + m_omegaDopplerMax = 2 * dopplerFrequencyHz * PI; + if (m_nOscillators != 0) + { + ConstructOscillators (); + } +} + +void +JakesProcess::ConstructOscillators () +{ + // Initial phase is common for all oscillators: + double phi = UniformVariable (-PI, PI).GetValue (); + // Theta is common for all oscillatoer: + double theta = UniformVariable (-PI, PI).GetValue (); + for (unsigned int i = 0; i < m_nOscillators; i++) + { + unsigned int n = i + 1; + /// 1. Rotation speed + /// 1a. Initiate \f[ \alpha_n = \frac{2\pi n - \pi + \theta}{4M}, n=1,2, \ldots,M\f], n is oscillatorNumber, M is m_nOscillators + double alpha = (2.0 * PI * n - PI + theta) / (4.0 * m_nOscillators); + /// 1b. Initiate rotation speed: + double omega = m_omegaDopplerMax * cos (alpha); + /// 2. Initiate complex amplitude: + double psi = UniformVariable (-PI, PI).GetValue (); + std::complex<double> amplitude = std::complex<double> (cos (psi), sin (psi)) * 2.0 / sqrt (m_nOscillators); + /// 3. Construct oscillator: + m_oscillators.push_back (Oscillator (amplitude, phi, omega)); + } +} + +JakesProcess::JakesProcess () : + m_omegaDopplerMax (0), + m_nOscillators (0) +{} + +JakesProcess::~JakesProcess() +{ + m_oscillators.clear (); +} + +std::complex<double> +JakesProcess::GetComplexGain () const +{ + std::complex<double> sumAplitude = std::complex<double> (0, 0); + for (unsigned int i = 0; i < m_oscillators.size (); i++) + { + sumAplitude += m_oscillators[i].GetValueAt (Now ()); + } + return sumAplitude; +} + +double +JakesProcess::GetChannelGainDb () const +{ + std::complex<double> complexGain = GetComplexGain (); + return (10 * log10 ((pow (complexGain.real (), 2) + pow (complexGain.imag (), 2)) / 2)); +} + +} // namespace ns3
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/propagation/model/jakes-process.h Tue May 29 10:42:17 2012 +0200 @@ -0,0 +1,92 @@ +/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */ +/* + * Copyright (c) 2012 Telum (www.telum.ru) + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation; + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * Author: Kirill Andreev <andreev@telum.ru>, Alexander Sofronov <sofronov@telum.ru> + */ +#ifndef DOPPLER_PROCESS_H +#define DOPPLER_PROCESS_H + +#include "ns3/object.h" +#include "ns3/nstime.h" +#include <complex> + +namespace ns3 +{ +/** + * \ingroup fading + * + * \brief Implementation for a single path Stationary Jakes propagation loss model. + * + * The Jakes propagation loss model implemented here is + * described in [1]. + * + * We consider one transmitter - receiver pair and calculate + * the complex coefficients for this case as follow: + * \f[ X(t)=X_c(t) + j X_s(t)\f] + * \f[ X_c(t) = \frac{2}{\sqrt{M}}\sum_{n=1}^{M}\cos(\psi_n)\cos(\omega_d t\cos(\alpha_n)+\phi_n)\f] + * \f[ X_s(t) = \frac{2}{\sqrt{M}}\sum_{n=1}^{M}\sin(\psi_n)\cos(\omega_d t\cos(\alpha_n)+\phi_n)\f] + * with + * \f[ \alpha_n = \frac{2\pi n - \pi + \theta}{4M}, n=1,2, \ldots,M\f] + * where + *\f$\theta\f$, \f$\phi\f$, and \f$\psi_n\f$ are statically independent and uniformly distributed over \f$[-\pi, \pi)\f$ for all \f$n\f$. + * + * + * [1] Y. R. Zheng and C. Xiao, "Simulation Models With Correct + * Statistical Properties for Rayleigh Fading Channel", IEEE + * Trans. on Communications, Vol. 51, pp 920-928, June 2003 + */ +class JakesProcess : public Object +{ +public: + static TypeId GetTypeId (void); + JakesProcess (); + virtual ~JakesProcess(); + std::complex<double> GetComplexGain () const; + /// Get Channel gain [dB] + double GetChannelGainDb () const; +private: + /// Represents a single oscillator + struct Oscillator + { + /// Initiate oscillator with complex amplitude, initial phase and rotation speed + Oscillator (std::complex<double> amplitude, double initialPhase, double omega); + // Get the complex amplitude at moment \param t + std::complex<double> GetValueAt (Time t) const; + /// Complex number \f[Re=\cos(\psi_n), Im = i\sin(\psi_n)] + std::complex<double> m_amplitude; + /// Phase \f[\phi_n] of the oscillator + double m_phase; + /// Rotation speed of the oscillator \f[\omega_d \cos(\alpha_n)] + double m_omega; + }; + /// PI Constant + static const double PI; +private: + void SetNOscillators (unsigned int nOscillators); + void SetDopplerFrequencyHz (double dopplerFrequencyHz); + void ConstructOscillators (); +private: + /// Vector of oscillators: + std::vector<Oscillator> m_oscillators; + ///\name Attributes: + ///\{ + double m_omegaDopplerMax; + unsigned int m_nOscillators; + ///\} +}; +} // namespace ns3 +#endif // DOPPLER_PROCESS_H
--- a/src/propagation/model/jakes-propagation-loss-model.cc Fri May 18 10:30:14 2012 +0200 +++ b/src/propagation/model/jakes-propagation-loss-model.cc Tue May 29 10:42:17 2012 +0200 @@ -1,9 +1,9 @@ /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */ /* - * Copyright (c) 2005,2006,2007 INRIA + * Copyright (c) 2012 Telum (www.telum.ru) * * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as + * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation; * * This program is distributed in the hope that it will be useful, @@ -15,246 +15,37 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * Author: Federico Maguolo <maguolof@dei.unipd.it> + * Author: Kirill Andreev <andreev@telum.ru> */ -#include "ns3/simulator.h" -#include "ns3/uinteger.h" -#include "ns3/double.h" -#include "ns3/random-variable.h" -#include "ns3/mobility-model.h" -#include "ns3/log.h" #include "jakes-propagation-loss-model.h" -#include <math.h> -NS_LOG_COMPONENT_DEFINE ("Jakes"); - -namespace ns3 { - +namespace ns3 +{ NS_OBJECT_ENSURE_REGISTERED (JakesPropagationLossModel); -class JakesPropagationLossModel::PathCoefficients -{ -public: - PathCoefficients (Ptr<const JakesPropagationLossModel> jakes, - Ptr<MobilityModel> receiver, - uint8_t nRays, - uint8_t nOscillators); - ~PathCoefficients (); - double GetLoss (Ptr<const JakesPropagationLossModel> jakes); - Ptr<MobilityModel> GetReceiver (void); -private: - void DoConstruct (Ptr<const JakesPropagationLossModel> jakes); - Ptr<MobilityModel> m_receiver; - uint8_t m_nOscillators; - uint8_t m_nRays; - double **m_phases; - Time m_lastUpdate; -}; - - -JakesPropagationLossModel::PathCoefficients::PathCoefficients (Ptr<const JakesPropagationLossModel> jakes, - Ptr<MobilityModel> receiver, - uint8_t nRays, - uint8_t nOscillators) - : m_receiver (receiver), - m_nOscillators (nOscillators), - m_nRays (nRays) -{ - DoConstruct (jakes); -} - -JakesPropagationLossModel::PathCoefficients::~PathCoefficients () -{ - for (uint8_t i = 0; i < m_nRays; i++) - { - delete [] m_phases[i]; - } - delete [] m_phases; -} +JakesPropagationLossModel::JakesPropagationLossModel() +{} -void -JakesPropagationLossModel::PathCoefficients::DoConstruct (Ptr<const JakesPropagationLossModel> jakes) -{ - m_phases = new double*[m_nRays]; - for (uint8_t i = 0; i < m_nRays; i++) - { - m_phases[i] = new double[m_nOscillators + 1]; - for (uint8_t j = 0; j <= m_nOscillators; j++) - { - m_phases[i][j] = 2.0 * JakesPropagationLossModel::PI * jakes->m_variable.GetValue (); - } - } - m_lastUpdate = Simulator::Now (); -} - -Ptr<MobilityModel> -JakesPropagationLossModel::PathCoefficients::GetReceiver () -{ - return m_receiver; -} - -double -JakesPropagationLossModel::PathCoefficients::GetLoss (Ptr<const JakesPropagationLossModel> jakes) -{ - uint16_t N = 4 * m_nOscillators + 2; - Time interval = Simulator::Now () - m_lastUpdate; - ComplexNumber coef= { 0.0, 0.0}; - ComplexNumber fading; - double norm = 0.0; - for (uint8_t i = 0; i < m_nRays; i++) - { - fading.real = 0.0; - fading.imag = 0.0; - for (uint8_t j = 0; j <= m_nOscillators; j++) - { - m_phases[i][j] += 2.0 * JakesPropagationLossModel::PI * - cos (2.0 * JakesPropagationLossModel::PI * j / N) * jakes->m_fd * interval.GetSeconds (); - m_phases[i][j] -= 2.0 * JakesPropagationLossModel::PI * - floor (m_phases[i][j] / 2.0 / JakesPropagationLossModel::PI); - fading.real += jakes->m_amp[j].real * cos (m_phases[i][j]); - fading.imag += jakes->m_amp[j].imag * cos (m_phases[i][j]); - norm += sqrt (pow (jakes->m_amp[j].real, 2) + pow (jakes->m_amp[j].imag, 2)); - } - coef.real += fading.real; - coef.imag += fading.imag; - } - m_lastUpdate = Simulator::Now (); - double k = sqrt (pow (coef.real, 2) + pow (coef.imag, 2)) / norm; - NS_LOG_DEBUG ("Jakes coef "<< k << " (" << 10 * log10 (k) << "dB)"); - return 10 * log10 (k); -} - -const double JakesPropagationLossModel::PI = 3.14159265358979323846; +JakesPropagationLossModel::~JakesPropagationLossModel() +{} TypeId -JakesPropagationLossModel::GetTypeId (void) +JakesPropagationLossModel::GetTypeId () { static TypeId tid = TypeId ("ns3::JakesPropagationLossModel") .SetParent<PropagationLossModel> () .AddConstructor<JakesPropagationLossModel> () - .AddAttribute ("NumberOfRaysPerPath", - "The number of rays to use by default for compute the fading coeficent for a given path (default is 1)", - UintegerValue (1), - MakeUintegerAccessor (&JakesPropagationLossModel::SetNRays, - &JakesPropagationLossModel::GetNRays), - MakeUintegerChecker<uint8_t> ()) - .AddAttribute ("NumberOfOscillatorsPerRay", - "The number of oscillators to use by default for compute the coeficent for a given ray of a given " - "path (default is 4)", - UintegerValue (4), - MakeUintegerAccessor (&JakesPropagationLossModel::SetNOscillators, - &JakesPropagationLossModel::GetNOscillators), - MakeUintegerChecker<uint8_t> ()) - .AddAttribute ("DopplerFreq", - "The doppler frequency in Hz (f_d = v / lambda = v * f / c), the default is 0)", - DoubleValue (0.0), - MakeDoubleAccessor (&JakesPropagationLossModel::m_fd), - MakeDoubleChecker<double> ()) - .AddAttribute ("Distribution", - "The distribution to choose the initial phases.", - RandomVariableValue (ConstantVariable (1.0)), - MakeRandomVariableAccessor (&JakesPropagationLossModel::m_variable), - MakeRandomVariableChecker ()) ; return tid; } -JakesPropagationLossModel::JakesPropagationLossModel () - : m_amp (0), - m_nRays (0), - m_nOscillators (0) -{ -} - -JakesPropagationLossModel::~JakesPropagationLossModel () -{ - delete [] m_amp; - for (PathsList::reverse_iterator i = m_paths.rbegin (); i != m_paths.rend (); i++) - { - PathsSet *ps = *i; - for (DestinationList::iterator r = ps->receivers.begin (); r != ps->receivers.end (); r++) - { - PathCoefficients *pc = *r; - delete pc; - } - ps->sender = 0; - ps->receivers.clear (); - delete ps; - } - m_paths.clear (); -} - -void -JakesPropagationLossModel::SetNRays (uint8_t nRays) -{ - m_nRays = nRays; -} - -void -JakesPropagationLossModel::SetNOscillators (uint8_t nOscillators) -{ - m_nOscillators = nOscillators; - delete [] m_amp; - uint16_t N = 4 * m_nOscillators + 2; - m_amp = new ComplexNumber[m_nOscillators + 1]; - m_amp[0].real = 2.0 * sqrt (2.0 / N) * cos (PI / 4.0); - m_amp[0].imag = 2.0 * sqrt (2.0 / N) * sin (PI / 4.0); - for (uint8_t i = 1; i <= m_nOscillators; i++) - { - double beta = PI * (double)i / m_nOscillators; - m_amp[i].real = 4.0 * cos (beta) / sqrt (N); - m_amp[i].imag = 4.0 * sin (beta) / sqrt (N); - } -} - -uint8_t -JakesPropagationLossModel::GetNRays (void) const -{ - return m_nRays; -} -uint8_t -JakesPropagationLossModel::GetNOscillators (void) const -{ - return m_nOscillators; -} - - -double +double JakesPropagationLossModel::DoCalcRxPower (double txPowerDbm, Ptr<MobilityModel> a, Ptr<MobilityModel> b) const { - PathsList::iterator i = m_paths.end (); - while (i != m_paths.begin ()) - { - i--; - PathsSet *ps = *i; - if (ps->sender == a) - { - m_paths.erase (i); - m_paths.push_back (ps); - for (DestinationList::iterator r = ps->receivers.begin (); r != ps->receivers.end (); r++) - { - PathCoefficients *pc = *r; - if (pc->GetReceiver () == b) - { - ps->receivers.erase (r); - ps->receivers.push_back (pc); - return txPowerDbm + pc->GetLoss (this); - } - } - PathCoefficients *pc = new PathCoefficients (this, b, m_nRays, m_nOscillators); - ps->receivers.push_back (pc); - return txPowerDbm + pc->GetLoss (this); - } - } - PathsSet *ps = new PathsSet; - ps->sender = a; - PathCoefficients *pc = new PathCoefficients (this, b, m_nRays, m_nOscillators); - ps->receivers.push_back (pc); - m_paths.push_back (ps); - return txPowerDbm + pc->GetLoss (this); + return txPowerDbm + m_propagationCache.GetPathData (a, b, 0 /**Spectrum model uid is not used in PropagationLossModel*/)->GetChannelGainDb (); } } // namespace ns3
--- a/src/propagation/model/jakes-propagation-loss-model.h Fri May 18 10:30:14 2012 +0200 +++ b/src/propagation/model/jakes-propagation-loss-model.h Tue May 29 10:42:17 2012 +0200 @@ -1,9 +1,9 @@ /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */ /* - * Copyright (c) 2005,2006,2007 INRIA + * Copyright (c) 2012 Telum (www.telum.ru) * * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as + * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation; * * This program is distributed in the hope that it will be useful, @@ -15,125 +15,41 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * Author: Federico Maguolo <maguolof@dei.unipd.it> + * Author: Kirill Andreev <andreev@telum.ru> */ -#ifndef PROPAGATION_JAKES_MODEL_H -#define PROPAGATION_JAKES_MODEL_H +#ifndef JAKES_STATIONARY_LOSS_MODEL_H +#define JAKES_STATIONARY_LOSS_MODEL_H -#include "ns3/nstime.h" -#include "propagation-loss-model.h" +#include "ns3/propagation-loss-model.h" +#include "ns3/propagation-cache.h" +#include "ns3/jakes-process.h" -namespace ns3 { - - +namespace ns3 +{ /** * \ingroup propagation * - * \brief a Jakes propagation loss model - * - * The Jakes propagation loss model implemented here is - * described in [1]. - * - * - * We call path the set of rays that depart from a given - * transmitter and arrive to a given receiver. For each ray - * The complex coefficient is compute as follow: - * \f[ u(t)=u_c(t) + j u_s(t)\f] - * \f[ u_c(t) = \frac{2}{\sqrt{N}}\sum_{n=0}^{M}a_n\cos(\omega_n t+\phi_n)\f] - * \f[ u_s(t) = \frac{2}{\sqrt{N}}\sum_{n=0}^{M}b_n\cos(\omega_n t+\phi_n)\f] - * where - * \f[ a_n=\left \{ \begin{array}{ll} - * \sqrt{2}\cos\beta_0 & n=0 \\ - * 2\cos\beta_n & n=1,2,\ldots,M - * \end{array} - * \right .\f] - * \f[ b_n=\left \{ \begin{array}{ll} - * \sqrt{2}\sin\beta_0 & n=0 \\ - * 2\sin\beta_n & n=1,2,\ldots,M - * \end{array} - * \right .\f] - * \f[ \beta_n=\left \{ \begin{array}{ll} - * \frac{\pi}{4} & n=0 \\ - * \frac{\pi n}{M} & n=1,2,\ldots,M - * \end{array} - * \right .\f] - * \f[ \omega_n=\left \{ \begin{array}{ll} - * 2\pi f_d & n=0 \\ - * 2\pi f_d \cos\frac{2\pi n}{N} & n=1,2,\ldots,M - * \end{array} - * \right .\f] - * - * The parameter \f$f_d\f$ is the doppler frequency and \f$N=4M+2\f$ where - * \f$M\f$ is the number of oscillators per ray. - * - * The attenuation coefficent of the path is the magnitude of the sum of - * all the ray coefficients. This attenuation coefficient could be greater than - * \f$1\f$, hence it is divide by \f$ \frac{2N_r}{\sqrt{N}} \sum_{n+0}^{M}\sqrt{a_n^2 +b_n^2}\f$ - * where \f$N_r\f$ is the number of rays. - * - * The initail phases \f$\phi_i\f$ are random and they are choosen according - * to a given distribution. - * - * [1] Y. R. Zheng and C. Xiao, "Simulation Models With Correct - * Statistical Properties for Rayleigh Fading Channel", IEEE - * Trans. on Communications, Vol. 51, pp 920-928, June 2003 + * \brief a jakes narrowband propagation model. + * Symmetrical cache for JakesProcess */ + class JakesPropagationLossModel : public PropagationLossModel { public: - static TypeId GetTypeId (void); + static TypeId GetTypeId (); JakesPropagationLossModel (); virtual ~JakesPropagationLossModel (); - /** - * \param nRays Number of rays per path - * - * Set the number of rays for each path - */ - void SetNRays (uint8_t nRays); - /** - * \param nOscillators Number of oscillators - * - * Set the number of oscillators to use to compute the ray coefficient - */ - void SetNOscillators (uint8_t nOscillators); - - uint8_t GetNRays (void) const; - uint8_t GetNOscillators (void) const; +private: + double DoCalcRxPower (double txPowerDbm, + Ptr<MobilityModel> a, + Ptr<MobilityModel> b) const; private: - JakesPropagationLossModel (const JakesPropagationLossModel &o); - JakesPropagationLossModel & operator = (const JakesPropagationLossModel &o); - void DoConstruct (void); - virtual double DoCalcRxPower (double txPowerDbm, - Ptr<MobilityModel> a, - Ptr<MobilityModel> b) const; - - class PathCoefficients; - struct ComplexNumber { - double real; - double imag; - }; - friend class PathCoefficents; - typedef std::vector<PathCoefficients *> DestinationList; - struct PathsSet { - Ptr<MobilityModel> sender; - DestinationList receivers; - }; - typedef std::vector<PathsSet *> PathsList; - - - static const double PI; - ComplexNumber* m_amp; - RandomVariable m_variable; - double m_fd; - mutable PathsList m_paths; - uint8_t m_nRays; - uint8_t m_nOscillators; + mutable PropagationCache<JakesProcess> m_propagationCache; }; } // namespace ns3 -#endif /* PROPAGATION_JAKES_MODEL_H */ +#endif /* JAKES_STATIONARY_LOSS_MODEL_H */ -
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/propagation/model/propagation-cache.h Tue May 29 10:42:17 2012 +0200 @@ -0,0 +1,86 @@ +/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */ +/* + * Copyright (c) 2012 Telum (www.telum.ru) + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation; + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * Author: Kirill Andreev <andreev@telum.ru> + */ +#ifndef PROPAGATION_CACHE_H_ +#define PROPAGATION_CACHE_H_ + +#include "ns3/mobility-model.h" +#include <map> + +namespace ns3 +{ +/** + * \ingroup propagation + * \brief Constructs a cache of objects, where each obect is responsible for a single propagation path loss calculations. + * Propagation path a-->b and b-->a is the same thing. Propagation path is identified by + * a couple of MobilityModels and a spectrum model UID + */ +template<class T> +class PropagationCache +{ +public: + PropagationCache () {}; + ~PropagationCache () {}; + Ptr<T> GetPathData (Ptr<const MobilityModel> a, Ptr<const MobilityModel> b, uint32_t modelUid) + { + PropagationPathIdentifier key = PropagationPathIdentifier (a, b, modelUid); + typename PathCache::iterator it = m_pathCache.find (key); + if (it == m_pathCache.end ()) + { + Ptr<T> newPath = CreateObject<T> (); + m_pathCache.insert (std::make_pair (key, newPath)); + return newPath; + } + return it->second; + }; +private: + /// Each path is identified by + struct PropagationPathIdentifier + { + PropagationPathIdentifier (Ptr<const MobilityModel> a, Ptr<const MobilityModel> b, uint32_t modelUid) : + m_srcMobility (a), m_dstMobility (b), m_spectrumModelUid (modelUid) + {}; + Ptr<const MobilityModel> m_srcMobility; + Ptr<const MobilityModel> m_dstMobility; + uint32_t m_spectrumModelUid; + bool operator < (const PropagationPathIdentifier & other) const + { + if (m_spectrumModelUid != other.m_spectrumModelUid) + { + return m_spectrumModelUid < other.m_spectrumModelUid; + } + /// Links are supposed to be symmetrical! + if (std::min (m_dstMobility, m_srcMobility) != std::min (other.m_dstMobility, other.m_srcMobility)) + { + return std::min (m_dstMobility, m_srcMobility) < std::min (other.m_dstMobility, other.m_srcMobility); + } + if (std::max (m_dstMobility, m_srcMobility) != std::max (other.m_dstMobility, other.m_srcMobility)) + { + return std::max (m_dstMobility, m_srcMobility) < std::max (other.m_dstMobility, other.m_srcMobility); + } + return false; + } + }; + typedef std::map<PropagationPathIdentifier, Ptr<T> > PathCache; +private: + PathCache m_pathCache; +}; +} // namespace ns3 + +#endif // PROPAGATION_CACHE_H_
--- a/src/propagation/wscript Fri May 18 10:30:14 2012 +0200 +++ b/src/propagation/wscript Tue May 29 10:42:17 2012 +0200 @@ -7,6 +7,7 @@ 'model/propagation-delay-model.cc', 'model/propagation-loss-model.cc', 'model/jakes-propagation-loss-model.cc', + 'model/jakes-process.cc', 'model/cost231-propagation-loss-model.cc', 'model/okumura-hata-propagation-loss-model.cc', 'model/itu-r-1411-los-propagation-loss-model.cc', @@ -29,6 +30,8 @@ 'model/propagation-delay-model.h', 'model/propagation-loss-model.h', 'model/jakes-propagation-loss-model.h', + 'model/jakes-process.h', + 'model/propagation-cache.h', 'model/cost231-propagation-loss-model.h', 'model/propagation-environment.h', 'model/okumura-hata-propagation-loss-model.h',
--- a/src/wifi/bindings/modulegen__gcc_ILP32.py Fri May 18 10:30:14 2012 +0200 +++ b/src/wifi/bindings/modulegen__gcc_ILP32.py Tue May 29 10:42:17 2012 +0200 @@ -158,6 +158,8 @@ module.add_enum('', ['DLT_NULL', 'DLT_EN10MB', 'DLT_PPP', 'DLT_RAW', 'DLT_IEEE802_11', 'DLT_PRISM_HEADER', 'DLT_IEEE802_11_RADIO'], outer_class=root_module['ns3::PcapHelper'], import_from_module='ns.network') ## trace-helper.h (module 'network'): ns3::PcapHelperForDevice [class] module.add_class('PcapHelperForDevice', allow_subclassing=True, import_from_module='ns.network') + ## propagation-cache.h (module 'propagation'): ns3::PropagationCache<ns3::JakesProcess> [class] + module.add_class('PropagationCache', import_from_module='ns.propagation', template_parameters=['ns3::JakesProcess']) ## random-variable.h (module 'core'): ns3::RandomVariable [class] module.add_class('RandomVariable', import_from_module='ns.core') ## minstrel-wifi-manager.h (module 'wifi'): ns3::RateInfo [struct] @@ -188,6 +190,10 @@ module.add_class('TraceSourceInformation', import_from_module='ns.core', outer_class=root_module['ns3::TypeId']) ## random-variable.h (module 'core'): ns3::UniformVariable [class] module.add_class('UniformVariable', import_from_module='ns.core', parent=root_module['ns3::RandomVariable']) + ## vector.h (module 'core'): ns3::Vector2D [class] + module.add_class('Vector2D', import_from_module='ns.core') + ## vector.h (module 'core'): ns3::Vector3D [class] + module.add_class('Vector3D', import_from_module='ns.core') ## random-variable.h (module 'core'): ns3::WeibullVariable [class] module.add_class('WeibullVariable', import_from_module='ns.core', parent=root_module['ns3::RandomVariable']) ## wifi-helper.h (module 'wifi'): ns3::WifiHelper [class] @@ -440,6 +446,8 @@ module.add_class('ItuR1411LosPropagationLossModel', import_from_module='ns.propagation', parent=root_module['ns3::PropagationLossModel']) ## itu-r-1411-nlos-over-rooftop-propagation-loss-model.h (module 'propagation'): ns3::ItuR1411NlosOverRooftopPropagationLossModel [class] module.add_class('ItuR1411NlosOverRooftopPropagationLossModel', import_from_module='ns.propagation', parent=root_module['ns3::PropagationLossModel']) + ## jakes-process.h (module 'propagation'): ns3::JakesProcess [class] + module.add_class('JakesProcess', import_from_module='ns.propagation', parent=root_module['ns3::Object']) ## jakes-propagation-loss-model.h (module 'propagation'): ns3::JakesPropagationLossModel [class] module.add_class('JakesPropagationLossModel', import_from_module='ns.propagation', parent=root_module['ns3::PropagationLossModel']) ## kun-2600-mhz-propagation-loss-model.h (module 'propagation'): ns3::Kun2600MhzPropagationLossModel [class] @@ -458,6 +466,8 @@ module.add_class('MgtBeaconHeader', parent=root_module['ns3::MgtProbeResponseHeader']) ## minstrel-wifi-manager.h (module 'wifi'): ns3::MinstrelWifiManager [class] module.add_class('MinstrelWifiManager', parent=root_module['ns3::WifiRemoteStationManager']) + ## mobility-model.h (module 'mobility'): ns3::MobilityModel [class] + module.add_class('MobilityModel', import_from_module='ns.mobility', parent=root_module['ns3::Object']) ## msdu-aggregator.h (module 'wifi'): ns3::MsduAggregator [class] module.add_class('MsduAggregator', parent=root_module['ns3::Object']) ## propagation-loss-model.h (module 'propagation'): ns3::NakagamiPropagationLossModel [class] @@ -512,6 +522,14 @@ module.add_class('TypeIdValue', import_from_module='ns.core', parent=root_module['ns3::AttributeValue']) ## uinteger.h (module 'core'): ns3::UintegerValue [class] module.add_class('UintegerValue', import_from_module='ns.core', parent=root_module['ns3::AttributeValue']) + ## vector.h (module 'core'): ns3::Vector2DChecker [class] + module.add_class('Vector2DChecker', import_from_module='ns.core', parent=root_module['ns3::AttributeChecker']) + ## vector.h (module 'core'): ns3::Vector2DValue [class] + module.add_class('Vector2DValue', import_from_module='ns.core', parent=root_module['ns3::AttributeValue']) + ## vector.h (module 'core'): ns3::Vector3DChecker [class] + module.add_class('Vector3DChecker', import_from_module='ns.core', parent=root_module['ns3::AttributeChecker']) + ## vector.h (module 'core'): ns3::Vector3DValue [class] + module.add_class('Vector3DValue', import_from_module='ns.core', parent=root_module['ns3::AttributeValue']) ## wifi-channel.h (module 'wifi'): ns3::WifiChannel [class] module.add_class('WifiChannel', parent=root_module['ns3::Channel']) ## wifi-mode.h (module 'wifi'): ns3::WifiModeChecker [class] @@ -542,15 +560,27 @@ typehandlers.add_type_alias('__gnu_cxx::__normal_iterator< ns3::WifiMode const *, std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > > >', 'ns3::WifiModeListIterator') typehandlers.add_type_alias('__gnu_cxx::__normal_iterator< ns3::WifiMode const *, std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > > >*', 'ns3::WifiModeListIterator*') typehandlers.add_type_alias('__gnu_cxx::__normal_iterator< ns3::WifiMode const *, std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > > >&', 'ns3::WifiModeListIterator&') + typehandlers.add_type_alias('ns3::Vector3D', 'ns3::Vector') + typehandlers.add_type_alias('ns3::Vector3D*', 'ns3::Vector*') + typehandlers.add_type_alias('ns3::Vector3D&', 'ns3::Vector&') + module.add_typedef(root_module['ns3::Vector3D'], 'Vector') typehandlers.add_type_alias('std::vector< ns3::RateInfo, std::allocator< ns3::RateInfo > >', 'ns3::MinstrelRate') typehandlers.add_type_alias('std::vector< ns3::RateInfo, std::allocator< ns3::RateInfo > >*', 'ns3::MinstrelRate*') typehandlers.add_type_alias('std::vector< ns3::RateInfo, std::allocator< ns3::RateInfo > >&', 'ns3::MinstrelRate&') typehandlers.add_type_alias('std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > >', 'ns3::WifiModeList') typehandlers.add_type_alias('std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > >*', 'ns3::WifiModeList*') typehandlers.add_type_alias('std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > >&', 'ns3::WifiModeList&') + typehandlers.add_type_alias('ns3::Vector3DValue', 'ns3::VectorValue') + typehandlers.add_type_alias('ns3::Vector3DValue*', 'ns3::VectorValue*') + typehandlers.add_type_alias('ns3::Vector3DValue&', 'ns3::VectorValue&') + module.add_typedef(root_module['ns3::Vector3DValue'], 'VectorValue') typehandlers.add_type_alias('std::vector< std::vector< unsigned int, std::allocator< unsigned int > >, std::allocator< std::vector< unsigned int, std::allocator< unsigned int > > > >', 'ns3::SampleRate') typehandlers.add_type_alias('std::vector< std::vector< unsigned int, std::allocator< unsigned int > >, std::allocator< std::vector< unsigned int, std::allocator< unsigned int > > > >*', 'ns3::SampleRate*') typehandlers.add_type_alias('std::vector< std::vector< unsigned int, std::allocator< unsigned int > >, std::allocator< std::vector< unsigned int, std::allocator< unsigned int > > > >&', 'ns3::SampleRate&') + typehandlers.add_type_alias('ns3::Vector3DChecker', 'ns3::VectorChecker') + typehandlers.add_type_alias('ns3::Vector3DChecker*', 'ns3::VectorChecker*') + typehandlers.add_type_alias('ns3::Vector3DChecker&', 'ns3::VectorChecker&') + module.add_typedef(root_module['ns3::Vector3DChecker'], 'VectorChecker') ## Register a nested module for the namespace FatalImpl @@ -624,6 +654,7 @@ register_Ns3PcapFile_methods(root_module, root_module['ns3::PcapFile']) register_Ns3PcapHelper_methods(root_module, root_module['ns3::PcapHelper']) register_Ns3PcapHelperForDevice_methods(root_module, root_module['ns3::PcapHelperForDevice']) + register_Ns3PropagationCache__Ns3JakesProcess_methods(root_module, root_module['ns3::PropagationCache< ns3::JakesProcess >']) register_Ns3RandomVariable_methods(root_module, root_module['ns3::RandomVariable']) register_Ns3RateInfo_methods(root_module, root_module['ns3::RateInfo']) register_Ns3SeedManager_methods(root_module, root_module['ns3::SeedManager']) @@ -638,6 +669,8 @@ register_Ns3TypeIdAttributeInformation_methods(root_module, root_module['ns3::TypeId::AttributeInformation']) register_Ns3TypeIdTraceSourceInformation_methods(root_module, root_module['ns3::TypeId::TraceSourceInformation']) register_Ns3UniformVariable_methods(root_module, root_module['ns3::UniformVariable']) + register_Ns3Vector2D_methods(root_module, root_module['ns3::Vector2D']) + register_Ns3Vector3D_methods(root_module, root_module['ns3::Vector3D']) register_Ns3WeibullVariable_methods(root_module, root_module['ns3::WeibullVariable']) register_Ns3WifiHelper_methods(root_module, root_module['ns3::WifiHelper']) register_Ns3WifiMacHelper_methods(root_module, root_module['ns3::WifiMacHelper']) @@ -749,6 +782,7 @@ register_Ns3Ipv6PrefixValue_methods(root_module, root_module['ns3::Ipv6PrefixValue']) register_Ns3ItuR1411LosPropagationLossModel_methods(root_module, root_module['ns3::ItuR1411LosPropagationLossModel']) register_Ns3ItuR1411NlosOverRooftopPropagationLossModel_methods(root_module, root_module['ns3::ItuR1411NlosOverRooftopPropagationLossModel']) + register_Ns3JakesProcess_methods(root_module, root_module['ns3::JakesProcess']) register_Ns3JakesPropagationLossModel_methods(root_module, root_module['ns3::JakesPropagationLossModel']) register_Ns3Kun2600MhzPropagationLossModel_methods(root_module, root_module['ns3::Kun2600MhzPropagationLossModel']) register_Ns3LogDistancePropagationLossModel_methods(root_module, root_module['ns3::LogDistancePropagationLossModel']) @@ -758,6 +792,7 @@ register_Ns3MatrixPropagationLossModel_methods(root_module, root_module['ns3::MatrixPropagationLossModel']) register_Ns3MgtBeaconHeader_methods(root_module, root_module['ns3::MgtBeaconHeader']) register_Ns3MinstrelWifiManager_methods(root_module, root_module['ns3::MinstrelWifiManager']) + register_Ns3MobilityModel_methods(root_module, root_module['ns3::MobilityModel']) register_Ns3MsduAggregator_methods(root_module, root_module['ns3::MsduAggregator']) register_Ns3NakagamiPropagationLossModel_methods(root_module, root_module['ns3::NakagamiPropagationLossModel']) register_Ns3NetDevice_methods(root_module, root_module['ns3::NetDevice']) @@ -784,6 +819,10 @@ register_Ns3TypeIdChecker_methods(root_module, root_module['ns3::TypeIdChecker']) register_Ns3TypeIdValue_methods(root_module, root_module['ns3::TypeIdValue']) register_Ns3UintegerValue_methods(root_module, root_module['ns3::UintegerValue']) + register_Ns3Vector2DChecker_methods(root_module, root_module['ns3::Vector2DChecker']) + register_Ns3Vector2DValue_methods(root_module, root_module['ns3::Vector2DValue']) + register_Ns3Vector3DChecker_methods(root_module, root_module['ns3::Vector3DChecker']) + register_Ns3Vector3DValue_methods(root_module, root_module['ns3::Vector3DValue']) register_Ns3WifiChannel_methods(root_module, root_module['ns3::WifiChannel']) register_Ns3WifiModeChecker_methods(root_module, root_module['ns3::WifiModeChecker']) register_Ns3WifiModeValue_methods(root_module, root_module['ns3::WifiModeValue']) @@ -3292,6 +3331,17 @@ is_pure_virtual=True, is_virtual=True) return +def register_Ns3PropagationCache__Ns3JakesProcess_methods(root_module, cls): + ## propagation-cache.h (module 'propagation'): ns3::PropagationCache<ns3::JakesProcess>::PropagationCache(ns3::PropagationCache<ns3::JakesProcess> const & arg0) [copy constructor] + cls.add_constructor([param('ns3::PropagationCache< ns3::JakesProcess > const &', 'arg0')]) + ## propagation-cache.h (module 'propagation'): ns3::PropagationCache<ns3::JakesProcess>::PropagationCache() [constructor] + cls.add_constructor([]) + ## propagation-cache.h (module 'propagation'): ns3::Ptr<ns3::JakesProcess> ns3::PropagationCache<ns3::JakesProcess>::GetPathData(ns3::Ptr<ns3::MobilityModel const> a, ns3::Ptr<ns3::MobilityModel const> b, uint32_t modelUid) [member function] + cls.add_method('GetPathData', + 'ns3::Ptr< ns3::JakesProcess >', + [param('ns3::Ptr< ns3::MobilityModel const >', 'a'), param('ns3::Ptr< ns3::MobilityModel const >', 'b'), param('uint32_t', 'modelUid')]) + return + def register_Ns3RandomVariable_methods(root_module, cls): cls.add_output_stream_operator() ## random-variable.h (module 'core'): ns3::RandomVariable::RandomVariable() [constructor] @@ -3809,6 +3859,36 @@ [param('double', 's'), param('double', 'l')]) return +def register_Ns3Vector2D_methods(root_module, cls): + cls.add_output_stream_operator() + ## vector.h (module 'core'): ns3::Vector2D::Vector2D(ns3::Vector2D const & arg0) [copy constructor] + cls.add_constructor([param('ns3::Vector2D const &', 'arg0')]) + ## vector.h (module 'core'): ns3::Vector2D::Vector2D(double _x, double _y) [constructor] + cls.add_constructor([param('double', '_x'), param('double', '_y')]) + ## vector.h (module 'core'): ns3::Vector2D::Vector2D() [constructor] + cls.add_constructor([]) + ## vector.h (module 'core'): ns3::Vector2D::x [variable] + cls.add_instance_attribute('x', 'double', is_const=False) + ## vector.h (module 'core'): ns3::Vector2D::y [variable] + cls.add_instance_attribute('y', 'double', is_const=False) + return + +def register_Ns3Vector3D_methods(root_module, cls): + cls.add_output_stream_operator() + ## vector.h (module 'core'): ns3::Vector3D::Vector3D(ns3::Vector3D const & arg0) [copy constructor] + cls.add_constructor([param('ns3::Vector3D const &', 'arg0')]) + ## vector.h (module 'core'): ns3::Vector3D::Vector3D(double _x, double _y, double _z) [constructor] + cls.add_constructor([param('double', '_x'), param('double', '_y'), param('double', '_z')]) + ## vector.h (module 'core'): ns3::Vector3D::Vector3D() [constructor] + cls.add_constructor([]) + ## vector.h (module 'core'): ns3::Vector3D::x [variable] + cls.add_instance_attribute('x', 'double', is_const=False) + ## vector.h (module 'core'): ns3::Vector3D::y [variable] + cls.add_instance_attribute('y', 'double', is_const=False) + ## vector.h (module 'core'): ns3::Vector3D::z [variable] + cls.add_instance_attribute('z', 'double', is_const=False) + return + def register_Ns3WeibullVariable_methods(root_module, cls): ## random-variable.h (module 'core'): ns3::WeibullVariable::WeibullVariable(ns3::WeibullVariable const & arg0) [copy constructor] cls.add_constructor([param('ns3::WeibullVariable const &', 'arg0')]) @@ -9225,32 +9305,36 @@ is_const=True, visibility='private', is_virtual=True) return +def register_Ns3JakesProcess_methods(root_module, cls): + ## jakes-process.h (module 'propagation'): ns3::JakesProcess::JakesProcess(ns3::JakesProcess const & arg0) [copy constructor] + cls.add_constructor([param('ns3::JakesProcess const &', 'arg0')]) + ## jakes-process.h (module 'propagation'): ns3::JakesProcess::JakesProcess() [constructor] + cls.add_constructor([]) + ## jakes-process.h (module 'propagation'): double ns3::JakesProcess::GetChannelGainDb() const [member function] + cls.add_method('GetChannelGainDb', + 'double', + [], + is_const=True) + ## jakes-process.h (module 'propagation'): std::complex<double> ns3::JakesProcess::GetComplexGain() const [member function] + cls.add_method('GetComplexGain', + 'std::complex< double >', + [], + is_const=True) + ## jakes-process.h (module 'propagation'): static ns3::TypeId ns3::JakesProcess::GetTypeId() [member function] + cls.add_method('GetTypeId', + 'ns3::TypeId', + [], + is_static=True) + return + def register_Ns3JakesPropagationLossModel_methods(root_module, cls): - ## jakes-propagation-loss-model.h (module 'propagation'): ns3::JakesPropagationLossModel::JakesPropagationLossModel() [constructor] - cls.add_constructor([]) - ## jakes-propagation-loss-model.h (module 'propagation'): uint8_t ns3::JakesPropagationLossModel::GetNOscillators() const [member function] - cls.add_method('GetNOscillators', - 'uint8_t', - [], - is_const=True) - ## jakes-propagation-loss-model.h (module 'propagation'): uint8_t ns3::JakesPropagationLossModel::GetNRays() const [member function] - cls.add_method('GetNRays', - 'uint8_t', - [], - is_const=True) ## jakes-propagation-loss-model.h (module 'propagation'): static ns3::TypeId ns3::JakesPropagationLossModel::GetTypeId() [member function] cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True) - ## jakes-propagation-loss-model.h (module 'propagation'): void ns3::JakesPropagationLossModel::SetNOscillators(uint8_t nOscillators) [member function] - cls.add_method('SetNOscillators', - 'void', - [param('uint8_t', 'nOscillators')]) - ## jakes-propagation-loss-model.h (module 'propagation'): void ns3::JakesPropagationLossModel::SetNRays(uint8_t nRays) [member function] - cls.add_method('SetNRays', - 'void', - [param('uint8_t', 'nRays')]) + ## jakes-propagation-loss-model.h (module 'propagation'): ns3::JakesPropagationLossModel::JakesPropagationLossModel() [constructor] + cls.add_constructor([]) ## jakes-propagation-loss-model.h (module 'propagation'): double ns3::JakesPropagationLossModel::DoCalcRxPower(double txPowerDbm, ns3::Ptr<ns3::MobilityModel> a, ns3::Ptr<ns3::MobilityModel> b) const [member function] cls.add_method('DoCalcRxPower', 'double', @@ -9594,6 +9678,62 @@ is_const=True, visibility='private', is_virtual=True) return +def register_Ns3MobilityModel_methods(root_module, cls): + ## mobility-model.h (module 'mobility'): ns3::MobilityModel::MobilityModel(ns3::MobilityModel const & arg0) [copy constructor] + cls.add_constructor([param('ns3::MobilityModel const &', 'arg0')]) + ## mobility-model.h (module 'mobility'): ns3::MobilityModel::MobilityModel() [constructor] + cls.add_constructor([]) + ## mobility-model.h (module 'mobility'): double ns3::MobilityModel::GetDistanceFrom(ns3::Ptr<ns3::MobilityModel const> position) const [member function] + cls.add_method('GetDistanceFrom', + 'double', + [param('ns3::Ptr< ns3::MobilityModel const >', 'position')], + is_const=True) + ## mobility-model.h (module 'mobility'): ns3::Vector ns3::MobilityModel::GetPosition() const [member function] + cls.add_method('GetPosition', + 'ns3::Vector', + [], + is_const=True) + ## mobility-model.h (module 'mobility'): double ns3::MobilityModel::GetRelativeSpeed(ns3::Ptr<ns3::MobilityModel const> other) const [member function] + cls.add_method('GetRelativeSpeed', + 'double', + [param('ns3::Ptr< ns3::MobilityModel const >', 'other')], + is_const=True) + ## mobility-model.h (module 'mobility'): static ns3::TypeId ns3::MobilityModel::GetTypeId() [member function] + cls.add_method('GetTypeId', + 'ns3::TypeId', + [], + is_static=True) + ## mobility-model.h (module 'mobility'): ns3::Vector ns3::MobilityModel::GetVelocity() const [member function] + cls.add_method('GetVelocity', + 'ns3::Vector', + [], + is_const=True) + ## mobility-model.h (module 'mobility'): void ns3::MobilityModel::SetPosition(ns3::Vector const & position) [member function] + cls.add_method('SetPosition', + 'void', + [param('ns3::Vector const &', 'position')]) + ## mobility-model.h (module 'mobility'): void ns3::MobilityModel::NotifyCourseChange() const [member function] + cls.add_method('NotifyCourseChange', + 'void', + [], + is_const=True, visibility='protected') + ## mobility-model.h (module 'mobility'): ns3::Vector ns3::MobilityModel::DoGetPosition() const [member function] + cls.add_method('DoGetPosition', + 'ns3::Vector', + [], + is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True) + ## mobility-model.h (module 'mobility'): ns3::Vector ns3::MobilityModel::DoGetVelocity() const [member function] + cls.add_method('DoGetVelocity', + 'ns3::Vector', + [], + is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True) + ## mobility-model.h (module 'mobility'): void ns3::MobilityModel::DoSetPosition(ns3::Vector const & position) [member function] + cls.add_method('DoSetPosition', + 'void', + [param('ns3::Vector const &', 'position')], + is_pure_virtual=True, visibility='private', is_virtual=True) + return + def register_Ns3MsduAggregator_methods(root_module, cls): ## msdu-aggregator.h (module 'wifi'): ns3::MsduAggregator::MsduAggregator() [constructor] cls.add_constructor([]) @@ -10869,6 +11009,86 @@ [param('uint64_t const &', 'value')]) return +def register_Ns3Vector2DChecker_methods(root_module, cls): + ## vector.h (module 'core'): ns3::Vector2DChecker::Vector2DChecker() [constructor] + cls.add_constructor([]) + ## vector.h (module 'core'): ns3::Vector2DChecker::Vector2DChecker(ns3::Vector2DChecker const & arg0) [copy constructor] + cls.add_constructor([param('ns3::Vector2DChecker const &', 'arg0')]) + return + +def register_Ns3Vector2DValue_methods(root_module, cls): + ## vector.h (module 'core'): ns3::Vector2DValue::Vector2DValue() [constructor] + cls.add_constructor([]) + ## vector.h (module 'core'): ns3::Vector2DValue::Vector2DValue(ns3::Vector2DValue const & arg0) [copy constructor] + cls.add_constructor([param('ns3::Vector2DValue const &', 'arg0')]) + ## vector.h (module 'core'): ns3::Vector2DValue::Vector2DValue(ns3::Vector2D const & value) [constructor] + cls.add_constructor([param('ns3::Vector2D const &', 'value')]) + ## vector.h (module 'core'): ns3::Ptr<ns3::AttributeValue> ns3::Vector2DValue::Copy() const [member function] + cls.add_method('Copy', + 'ns3::Ptr< ns3::AttributeValue >', + [], + is_const=True, is_virtual=True) + ## vector.h (module 'core'): bool ns3::Vector2DValue::DeserializeFromString(std::string value, ns3::Ptr<ns3::AttributeChecker const> checker) [member function] + cls.add_method('DeserializeFromString', + 'bool', + [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], + is_virtual=True) + ## vector.h (module 'core'): ns3::Vector2D ns3::Vector2DValue::Get() const [member function] + cls.add_method('Get', + 'ns3::Vector2D', + [], + is_const=True) + ## vector.h (module 'core'): std::string ns3::Vector2DValue::SerializeToString(ns3::Ptr<ns3::AttributeChecker const> checker) const [member function] + cls.add_method('SerializeToString', + 'std::string', + [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], + is_const=True, is_virtual=True) + ## vector.h (module 'core'): void ns3::Vector2DValue::Set(ns3::Vector2D const & value) [member function] + cls.add_method('Set', + 'void', + [param('ns3::Vector2D const &', 'value')]) + return + +def register_Ns3Vector3DChecker_methods(root_module, cls): + ## vector.h (module 'core'): ns3::Vector3DChecker::Vector3DChecker() [constructor] + cls.add_constructor([]) + ## vector.h (module 'core'): ns3::Vector3DChecker::Vector3DChecker(ns3::Vector3DChecker const & arg0) [copy constructor] + cls.add_constructor([param('ns3::Vector3DChecker const &', 'arg0')]) + return + +def register_Ns3Vector3DValue_methods(root_module, cls): + ## vector.h (module 'core'): ns3::Vector3DValue::Vector3DValue() [constructor] + cls.add_constructor([]) + ## vector.h (module 'core'): ns3::Vector3DValue::Vector3DValue(ns3::Vector3DValue const & arg0) [copy constructor] + cls.add_constructor([param('ns3::Vector3DValue const &', 'arg0')]) + ## vector.h (module 'core'): ns3::Vector3DValue::Vector3DValue(ns3::Vector3D const & value) [constructor] + cls.add_constructor([param('ns3::Vector3D const &', 'value')]) + ## vector.h (module 'core'): ns3::Ptr<ns3::AttributeValue> ns3::Vector3DValue::Copy() const [member function] + cls.add_method('Copy', + 'ns3::Ptr< ns3::AttributeValue >', + [], + is_const=True, is_virtual=True) + ## vector.h (module 'core'): bool ns3::Vector3DValue::DeserializeFromString(std::string value, ns3::Ptr<ns3::AttributeChecker const> checker) [member function] + cls.add_method('DeserializeFromString', + 'bool', + [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], + is_virtual=True) + ## vector.h (module 'core'): ns3::Vector3D ns3::Vector3DValue::Get() const [member function] + cls.add_method('Get', + 'ns3::Vector3D', + [], + is_const=True) + ## vector.h (module 'core'): std::string ns3::Vector3DValue::SerializeToString(ns3::Ptr<ns3::AttributeChecker const> checker) const [member function] + cls.add_method('SerializeToString', + 'std::string', + [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], + is_const=True, is_virtual=True) + ## vector.h (module 'core'): void ns3::Vector3DValue::Set(ns3::Vector3D const & value) [member function] + cls.add_method('Set', + 'void', + [param('ns3::Vector3D const &', 'value')]) + return + def register_Ns3WifiChannel_methods(root_module, cls): ## wifi-channel.h (module 'wifi'): ns3::WifiChannel::WifiChannel() [constructor] cls.add_constructor([])
--- a/src/wifi/bindings/modulegen__gcc_LP64.py Fri May 18 10:30:14 2012 +0200 +++ b/src/wifi/bindings/modulegen__gcc_LP64.py Tue May 29 10:42:17 2012 +0200 @@ -158,6 +158,8 @@ module.add_enum('', ['DLT_NULL', 'DLT_EN10MB', 'DLT_PPP', 'DLT_RAW', 'DLT_IEEE802_11', 'DLT_PRISM_HEADER', 'DLT_IEEE802_11_RADIO'], outer_class=root_module['ns3::PcapHelper'], import_from_module='ns.network') ## trace-helper.h (module 'network'): ns3::PcapHelperForDevice [class] module.add_class('PcapHelperForDevice', allow_subclassing=True, import_from_module='ns.network') + ## propagation-cache.h (module 'propagation'): ns3::PropagationCache<ns3::JakesProcess> [class] + module.add_class('PropagationCache', import_from_module='ns.propagation', template_parameters=['ns3::JakesProcess']) ## random-variable.h (module 'core'): ns3::RandomVariable [class] module.add_class('RandomVariable', import_from_module='ns.core') ## minstrel-wifi-manager.h (module 'wifi'): ns3::RateInfo [struct] @@ -188,6 +190,10 @@ module.add_class('TraceSourceInformation', import_from_module='ns.core', outer_class=root_module['ns3::TypeId']) ## random-variable.h (module 'core'): ns3::UniformVariable [class] module.add_class('UniformVariable', import_from_module='ns.core', parent=root_module['ns3::RandomVariable']) + ## vector.h (module 'core'): ns3::Vector2D [class] + module.add_class('Vector2D', import_from_module='ns.core') + ## vector.h (module 'core'): ns3::Vector3D [class] + module.add_class('Vector3D', import_from_module='ns.core') ## random-variable.h (module 'core'): ns3::WeibullVariable [class] module.add_class('WeibullVariable', import_from_module='ns.core', parent=root_module['ns3::RandomVariable']) ## wifi-helper.h (module 'wifi'): ns3::WifiHelper [class] @@ -440,6 +446,8 @@ module.add_class('ItuR1411LosPropagationLossModel', import_from_module='ns.propagation', parent=root_module['ns3::PropagationLossModel']) ## itu-r-1411-nlos-over-rooftop-propagation-loss-model.h (module 'propagation'): ns3::ItuR1411NlosOverRooftopPropagationLossModel [class] module.add_class('ItuR1411NlosOverRooftopPropagationLossModel', import_from_module='ns.propagation', parent=root_module['ns3::PropagationLossModel']) + ## jakes-process.h (module 'propagation'): ns3::JakesProcess [class] + module.add_class('JakesProcess', import_from_module='ns.propagation', parent=root_module['ns3::Object']) ## jakes-propagation-loss-model.h (module 'propagation'): ns3::JakesPropagationLossModel [class] module.add_class('JakesPropagationLossModel', import_from_module='ns.propagation', parent=root_module['ns3::PropagationLossModel']) ## kun-2600-mhz-propagation-loss-model.h (module 'propagation'): ns3::Kun2600MhzPropagationLossModel [class] @@ -458,6 +466,8 @@ module.add_class('MgtBeaconHeader', parent=root_module['ns3::MgtProbeResponseHeader']) ## minstrel-wifi-manager.h (module 'wifi'): ns3::MinstrelWifiManager [class] module.add_class('MinstrelWifiManager', parent=root_module['ns3::WifiRemoteStationManager']) + ## mobility-model.h (module 'mobility'): ns3::MobilityModel [class] + module.add_class('MobilityModel', import_from_module='ns.mobility', parent=root_module['ns3::Object']) ## msdu-aggregator.h (module 'wifi'): ns3::MsduAggregator [class] module.add_class('MsduAggregator', parent=root_module['ns3::Object']) ## propagation-loss-model.h (module 'propagation'): ns3::NakagamiPropagationLossModel [class] @@ -512,6 +522,14 @@ module.add_class('TypeIdValue', import_from_module='ns.core', parent=root_module['ns3::AttributeValue']) ## uinteger.h (module 'core'): ns3::UintegerValue [class] module.add_class('UintegerValue', import_from_module='ns.core', parent=root_module['ns3::AttributeValue']) + ## vector.h (module 'core'): ns3::Vector2DChecker [class] + module.add_class('Vector2DChecker', import_from_module='ns.core', parent=root_module['ns3::AttributeChecker']) + ## vector.h (module 'core'): ns3::Vector2DValue [class] + module.add_class('Vector2DValue', import_from_module='ns.core', parent=root_module['ns3::AttributeValue']) + ## vector.h (module 'core'): ns3::Vector3DChecker [class] + module.add_class('Vector3DChecker', import_from_module='ns.core', parent=root_module['ns3::AttributeChecker']) + ## vector.h (module 'core'): ns3::Vector3DValue [class] + module.add_class('Vector3DValue', import_from_module='ns.core', parent=root_module['ns3::AttributeValue']) ## wifi-channel.h (module 'wifi'): ns3::WifiChannel [class] module.add_class('WifiChannel', parent=root_module['ns3::Channel']) ## wifi-mode.h (module 'wifi'): ns3::WifiModeChecker [class] @@ -542,15 +560,27 @@ typehandlers.add_type_alias('__gnu_cxx::__normal_iterator< ns3::WifiMode const *, std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > > >', 'ns3::WifiModeListIterator') typehandlers.add_type_alias('__gnu_cxx::__normal_iterator< ns3::WifiMode const *, std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > > >*', 'ns3::WifiModeListIterator*') typehandlers.add_type_alias('__gnu_cxx::__normal_iterator< ns3::WifiMode const *, std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > > >&', 'ns3::WifiModeListIterator&') + typehandlers.add_type_alias('ns3::Vector3D', 'ns3::Vector') + typehandlers.add_type_alias('ns3::Vector3D*', 'ns3::Vector*') + typehandlers.add_type_alias('ns3::Vector3D&', 'ns3::Vector&') + module.add_typedef(root_module['ns3::Vector3D'], 'Vector') typehandlers.add_type_alias('std::vector< ns3::RateInfo, std::allocator< ns3::RateInfo > >', 'ns3::MinstrelRate') typehandlers.add_type_alias('std::vector< ns3::RateInfo, std::allocator< ns3::RateInfo > >*', 'ns3::MinstrelRate*') typehandlers.add_type_alias('std::vector< ns3::RateInfo, std::allocator< ns3::RateInfo > >&', 'ns3::MinstrelRate&') typehandlers.add_type_alias('std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > >', 'ns3::WifiModeList') typehandlers.add_type_alias('std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > >*', 'ns3::WifiModeList*') typehandlers.add_type_alias('std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > >&', 'ns3::WifiModeList&') + typehandlers.add_type_alias('ns3::Vector3DValue', 'ns3::VectorValue') + typehandlers.add_type_alias('ns3::Vector3DValue*', 'ns3::VectorValue*') + typehandlers.add_type_alias('ns3::Vector3DValue&', 'ns3::VectorValue&') + module.add_typedef(root_module['ns3::Vector3DValue'], 'VectorValue') typehandlers.add_type_alias('std::vector< std::vector< unsigned int, std::allocator< unsigned int > >, std::allocator< std::vector< unsigned int, std::allocator< unsigned int > > > >', 'ns3::SampleRate') typehandlers.add_type_alias('std::vector< std::vector< unsigned int, std::allocator< unsigned int > >, std::allocator< std::vector< unsigned int, std::allocator< unsigned int > > > >*', 'ns3::SampleRate*') typehandlers.add_type_alias('std::vector< std::vector< unsigned int, std::allocator< unsigned int > >, std::allocator< std::vector< unsigned int, std::allocator< unsigned int > > > >&', 'ns3::SampleRate&') + typehandlers.add_type_alias('ns3::Vector3DChecker', 'ns3::VectorChecker') + typehandlers.add_type_alias('ns3::Vector3DChecker*', 'ns3::VectorChecker*') + typehandlers.add_type_alias('ns3::Vector3DChecker&', 'ns3::VectorChecker&') + module.add_typedef(root_module['ns3::Vector3DChecker'], 'VectorChecker') ## Register a nested module for the namespace FatalImpl @@ -624,6 +654,7 @@ register_Ns3PcapFile_methods(root_module, root_module['ns3::PcapFile']) register_Ns3PcapHelper_methods(root_module, root_module['ns3::PcapHelper']) register_Ns3PcapHelperForDevice_methods(root_module, root_module['ns3::PcapHelperForDevice']) + register_Ns3PropagationCache__Ns3JakesProcess_methods(root_module, root_module['ns3::PropagationCache< ns3::JakesProcess >']) register_Ns3RandomVariable_methods(root_module, root_module['ns3::RandomVariable']) register_Ns3RateInfo_methods(root_module, root_module['ns3::RateInfo']) register_Ns3SeedManager_methods(root_module, root_module['ns3::SeedManager']) @@ -638,6 +669,8 @@ register_Ns3TypeIdAttributeInformation_methods(root_module, root_module['ns3::TypeId::AttributeInformation']) register_Ns3TypeIdTraceSourceInformation_methods(root_module, root_module['ns3::TypeId::TraceSourceInformation']) register_Ns3UniformVariable_methods(root_module, root_module['ns3::UniformVariable']) + register_Ns3Vector2D_methods(root_module, root_module['ns3::Vector2D']) + register_Ns3Vector3D_methods(root_module, root_module['ns3::Vector3D']) register_Ns3WeibullVariable_methods(root_module, root_module['ns3::WeibullVariable']) register_Ns3WifiHelper_methods(root_module, root_module['ns3::WifiHelper']) register_Ns3WifiMacHelper_methods(root_module, root_module['ns3::WifiMacHelper']) @@ -749,6 +782,7 @@ register_Ns3Ipv6PrefixValue_methods(root_module, root_module['ns3::Ipv6PrefixValue']) register_Ns3ItuR1411LosPropagationLossModel_methods(root_module, root_module['ns3::ItuR1411LosPropagationLossModel']) register_Ns3ItuR1411NlosOverRooftopPropagationLossModel_methods(root_module, root_module['ns3::ItuR1411NlosOverRooftopPropagationLossModel']) + register_Ns3JakesProcess_methods(root_module, root_module['ns3::JakesProcess']) register_Ns3JakesPropagationLossModel_methods(root_module, root_module['ns3::JakesPropagationLossModel']) register_Ns3Kun2600MhzPropagationLossModel_methods(root_module, root_module['ns3::Kun2600MhzPropagationLossModel']) register_Ns3LogDistancePropagationLossModel_methods(root_module, root_module['ns3::LogDistancePropagationLossModel']) @@ -758,6 +792,7 @@ register_Ns3MatrixPropagationLossModel_methods(root_module, root_module['ns3::MatrixPropagationLossModel']) register_Ns3MgtBeaconHeader_methods(root_module, root_module['ns3::MgtBeaconHeader']) register_Ns3MinstrelWifiManager_methods(root_module, root_module['ns3::MinstrelWifiManager']) + register_Ns3MobilityModel_methods(root_module, root_module['ns3::MobilityModel']) register_Ns3MsduAggregator_methods(root_module, root_module['ns3::MsduAggregator']) register_Ns3NakagamiPropagationLossModel_methods(root_module, root_module['ns3::NakagamiPropagationLossModel']) register_Ns3NetDevice_methods(root_module, root_module['ns3::NetDevice']) @@ -784,6 +819,10 @@ register_Ns3TypeIdChecker_methods(root_module, root_module['ns3::TypeIdChecker']) register_Ns3TypeIdValue_methods(root_module, root_module['ns3::TypeIdValue']) register_Ns3UintegerValue_methods(root_module, root_module['ns3::UintegerValue']) + register_Ns3Vector2DChecker_methods(root_module, root_module['ns3::Vector2DChecker']) + register_Ns3Vector2DValue_methods(root_module, root_module['ns3::Vector2DValue']) + register_Ns3Vector3DChecker_methods(root_module, root_module['ns3::Vector3DChecker']) + register_Ns3Vector3DValue_methods(root_module, root_module['ns3::Vector3DValue']) register_Ns3WifiChannel_methods(root_module, root_module['ns3::WifiChannel']) register_Ns3WifiModeChecker_methods(root_module, root_module['ns3::WifiModeChecker']) register_Ns3WifiModeValue_methods(root_module, root_module['ns3::WifiModeValue']) @@ -3292,6 +3331,17 @@ is_pure_virtual=True, is_virtual=True) return +def register_Ns3PropagationCache__Ns3JakesProcess_methods(root_module, cls): + ## propagation-cache.h (module 'propagation'): ns3::PropagationCache<ns3::JakesProcess>::PropagationCache(ns3::PropagationCache<ns3::JakesProcess> const & arg0) [copy constructor] + cls.add_constructor([param('ns3::PropagationCache< ns3::JakesProcess > const &', 'arg0')]) + ## propagation-cache.h (module 'propagation'): ns3::PropagationCache<ns3::JakesProcess>::PropagationCache() [constructor] + cls.add_constructor([]) + ## propagation-cache.h (module 'propagation'): ns3::Ptr<ns3::JakesProcess> ns3::PropagationCache<ns3::JakesProcess>::GetPathData(ns3::Ptr<ns3::MobilityModel const> a, ns3::Ptr<ns3::MobilityModel const> b, uint32_t modelUid) [member function] + cls.add_method('GetPathData', + 'ns3::Ptr< ns3::JakesProcess >', + [param('ns3::Ptr< ns3::MobilityModel const >', 'a'), param('ns3::Ptr< ns3::MobilityModel const >', 'b'), param('uint32_t', 'modelUid')]) + return + def register_Ns3RandomVariable_methods(root_module, cls): cls.add_output_stream_operator() ## random-variable.h (module 'core'): ns3::RandomVariable::RandomVariable() [constructor] @@ -3809,6 +3859,36 @@ [param('double', 's'), param('double', 'l')]) return +def register_Ns3Vector2D_methods(root_module, cls): + cls.add_output_stream_operator() + ## vector.h (module 'core'): ns3::Vector2D::Vector2D(ns3::Vector2D const & arg0) [copy constructor] + cls.add_constructor([param('ns3::Vector2D const &', 'arg0')]) + ## vector.h (module 'core'): ns3::Vector2D::Vector2D(double _x, double _y) [constructor] + cls.add_constructor([param('double', '_x'), param('double', '_y')]) + ## vector.h (module 'core'): ns3::Vector2D::Vector2D() [constructor] + cls.add_constructor([]) + ## vector.h (module 'core'): ns3::Vector2D::x [variable] + cls.add_instance_attribute('x', 'double', is_const=False) + ## vector.h (module 'core'): ns3::Vector2D::y [variable] + cls.add_instance_attribute('y', 'double', is_const=False) + return + +def register_Ns3Vector3D_methods(root_module, cls): + cls.add_output_stream_operator() + ## vector.h (module 'core'): ns3::Vector3D::Vector3D(ns3::Vector3D const & arg0) [copy constructor] + cls.add_constructor([param('ns3::Vector3D const &', 'arg0')]) + ## vector.h (module 'core'): ns3::Vector3D::Vector3D(double _x, double _y, double _z) [constructor] + cls.add_constructor([param('double', '_x'), param('double', '_y'), param('double', '_z')]) + ## vector.h (module 'core'): ns3::Vector3D::Vector3D() [constructor] + cls.add_constructor([]) + ## vector.h (module 'core'): ns3::Vector3D::x [variable] + cls.add_instance_attribute('x', 'double', is_const=False) + ## vector.h (module 'core'): ns3::Vector3D::y [variable] + cls.add_instance_attribute('y', 'double', is_const=False) + ## vector.h (module 'core'): ns3::Vector3D::z [variable] + cls.add_instance_attribute('z', 'double', is_const=False) + return + def register_Ns3WeibullVariable_methods(root_module, cls): ## random-variable.h (module 'core'): ns3::WeibullVariable::WeibullVariable(ns3::WeibullVariable const & arg0) [copy constructor] cls.add_constructor([param('ns3::WeibullVariable const &', 'arg0')]) @@ -9225,32 +9305,36 @@ is_const=True, visibility='private', is_virtual=True) return +def register_Ns3JakesProcess_methods(root_module, cls): + ## jakes-process.h (module 'propagation'): ns3::JakesProcess::JakesProcess(ns3::JakesProcess const & arg0) [copy constructor] + cls.add_constructor([param('ns3::JakesProcess const &', 'arg0')]) + ## jakes-process.h (module 'propagation'): ns3::JakesProcess::JakesProcess() [constructor] + cls.add_constructor([]) + ## jakes-process.h (module 'propagation'): double ns3::JakesProcess::GetChannelGainDb() const [member function] + cls.add_method('GetChannelGainDb', + 'double', + [], + is_const=True) + ## jakes-process.h (module 'propagation'): std::complex<double> ns3::JakesProcess::GetComplexGain() const [member function] + cls.add_method('GetComplexGain', + 'std::complex< double >', + [], + is_const=True) + ## jakes-process.h (module 'propagation'): static ns3::TypeId ns3::JakesProcess::GetTypeId() [member function] + cls.add_method('GetTypeId', + 'ns3::TypeId', + [], + is_static=True) + return + def register_Ns3JakesPropagationLossModel_methods(root_module, cls): - ## jakes-propagation-loss-model.h (module 'propagation'): ns3::JakesPropagationLossModel::JakesPropagationLossModel() [constructor] - cls.add_constructor([]) - ## jakes-propagation-loss-model.h (module 'propagation'): uint8_t ns3::JakesPropagationLossModel::GetNOscillators() const [member function] - cls.add_method('GetNOscillators', - 'uint8_t', - [], - is_const=True) - ## jakes-propagation-loss-model.h (module 'propagation'): uint8_t ns3::JakesPropagationLossModel::GetNRays() const [member function] - cls.add_method('GetNRays', - 'uint8_t', - [], - is_const=True) ## jakes-propagation-loss-model.h (module 'propagation'): static ns3::TypeId ns3::JakesPropagationLossModel::GetTypeId() [member function] cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True) - ## jakes-propagation-loss-model.h (module 'propagation'): void ns3::JakesPropagationLossModel::SetNOscillators(uint8_t nOscillators) [member function] - cls.add_method('SetNOscillators', - 'void', - [param('uint8_t', 'nOscillators')]) - ## jakes-propagation-loss-model.h (module 'propagation'): void ns3::JakesPropagationLossModel::SetNRays(uint8_t nRays) [member function] - cls.add_method('SetNRays', - 'void', - [param('uint8_t', 'nRays')]) + ## jakes-propagation-loss-model.h (module 'propagation'): ns3::JakesPropagationLossModel::JakesPropagationLossModel() [constructor] + cls.add_constructor([]) ## jakes-propagation-loss-model.h (module 'propagation'): double ns3::JakesPropagationLossModel::DoCalcRxPower(double txPowerDbm, ns3::Ptr<ns3::MobilityModel> a, ns3::Ptr<ns3::MobilityModel> b) const [member function] cls.add_method('DoCalcRxPower', 'double', @@ -9594,6 +9678,62 @@ is_const=True, visibility='private', is_virtual=True) return +def register_Ns3MobilityModel_methods(root_module, cls): + ## mobility-model.h (module 'mobility'): ns3::MobilityModel::MobilityModel(ns3::MobilityModel const & arg0) [copy constructor] + cls.add_constructor([param('ns3::MobilityModel const &', 'arg0')]) + ## mobility-model.h (module 'mobility'): ns3::MobilityModel::MobilityModel() [constructor] + cls.add_constructor([]) + ## mobility-model.h (module 'mobility'): double ns3::MobilityModel::GetDistanceFrom(ns3::Ptr<ns3::MobilityModel const> position) const [member function] + cls.add_method('GetDistanceFrom', + 'double', + [param('ns3::Ptr< ns3::MobilityModel const >', 'position')], + is_const=True) + ## mobility-model.h (module 'mobility'): ns3::Vector ns3::MobilityModel::GetPosition() const [member function] + cls.add_method('GetPosition', + 'ns3::Vector', + [], + is_const=True) + ## mobility-model.h (module 'mobility'): double ns3::MobilityModel::GetRelativeSpeed(ns3::Ptr<ns3::MobilityModel const> other) const [member function] + cls.add_method('GetRelativeSpeed', + 'double', + [param('ns3::Ptr< ns3::MobilityModel const >', 'other')], + is_const=True) + ## mobility-model.h (module 'mobility'): static ns3::TypeId ns3::MobilityModel::GetTypeId() [member function] + cls.add_method('GetTypeId', + 'ns3::TypeId', + [], + is_static=True) + ## mobility-model.h (module 'mobility'): ns3::Vector ns3::MobilityModel::GetVelocity() const [member function] + cls.add_method('GetVelocity', + 'ns3::Vector', + [], + is_const=True) + ## mobility-model.h (module 'mobility'): void ns3::MobilityModel::SetPosition(ns3::Vector const & position) [member function] + cls.add_method('SetPosition', + 'void', + [param('ns3::Vector const &', 'position')]) + ## mobility-model.h (module 'mobility'): void ns3::MobilityModel::NotifyCourseChange() const [member function] + cls.add_method('NotifyCourseChange', + 'void', + [], + is_const=True, visibility='protected') + ## mobility-model.h (module 'mobility'): ns3::Vector ns3::MobilityModel::DoGetPosition() const [member function] + cls.add_method('DoGetPosition', + 'ns3::Vector', + [], + is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True) + ## mobility-model.h (module 'mobility'): ns3::Vector ns3::MobilityModel::DoGetVelocity() const [member function] + cls.add_method('DoGetVelocity', + 'ns3::Vector', + [], + is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True) + ## mobility-model.h (module 'mobility'): void ns3::MobilityModel::DoSetPosition(ns3::Vector const & position) [member function] + cls.add_method('DoSetPosition', + 'void', + [param('ns3::Vector const &', 'position')], + is_pure_virtual=True, visibility='private', is_virtual=True) + return + def register_Ns3MsduAggregator_methods(root_module, cls): ## msdu-aggregator.h (module 'wifi'): ns3::MsduAggregator::MsduAggregator() [constructor] cls.add_constructor([]) @@ -10869,6 +11009,86 @@ [param('uint64_t const &', 'value')]) return +def register_Ns3Vector2DChecker_methods(root_module, cls): + ## vector.h (module 'core'): ns3::Vector2DChecker::Vector2DChecker() [constructor] + cls.add_constructor([]) + ## vector.h (module 'core'): ns3::Vector2DChecker::Vector2DChecker(ns3::Vector2DChecker const & arg0) [copy constructor] + cls.add_constructor([param('ns3::Vector2DChecker const &', 'arg0')]) + return + +def register_Ns3Vector2DValue_methods(root_module, cls): + ## vector.h (module 'core'): ns3::Vector2DValue::Vector2DValue() [constructor] + cls.add_constructor([]) + ## vector.h (module 'core'): ns3::Vector2DValue::Vector2DValue(ns3::Vector2DValue const & arg0) [copy constructor] + cls.add_constructor([param('ns3::Vector2DValue const &', 'arg0')]) + ## vector.h (module 'core'): ns3::Vector2DValue::Vector2DValue(ns3::Vector2D const & value) [constructor] + cls.add_constructor([param('ns3::Vector2D const &', 'value')]) + ## vector.h (module 'core'): ns3::Ptr<ns3::AttributeValue> ns3::Vector2DValue::Copy() const [member function] + cls.add_method('Copy', + 'ns3::Ptr< ns3::AttributeValue >', + [], + is_const=True, is_virtual=True) + ## vector.h (module 'core'): bool ns3::Vector2DValue::DeserializeFromString(std::string value, ns3::Ptr<ns3::AttributeChecker const> checker) [member function] + cls.add_method('DeserializeFromString', + 'bool', + [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], + is_virtual=True) + ## vector.h (module 'core'): ns3::Vector2D ns3::Vector2DValue::Get() const [member function] + cls.add_method('Get', + 'ns3::Vector2D', + [], + is_const=True) + ## vector.h (module 'core'): std::string ns3::Vector2DValue::SerializeToString(ns3::Ptr<ns3::AttributeChecker const> checker) const [member function] + cls.add_method('SerializeToString', + 'std::string', + [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], + is_const=True, is_virtual=True) + ## vector.h (module 'core'): void ns3::Vector2DValue::Set(ns3::Vector2D const & value) [member function] + cls.add_method('Set', + 'void', + [param('ns3::Vector2D const &', 'value')]) + return + +def register_Ns3Vector3DChecker_methods(root_module, cls): + ## vector.h (module 'core'): ns3::Vector3DChecker::Vector3DChecker() [constructor] + cls.add_constructor([]) + ## vector.h (module 'core'): ns3::Vector3DChecker::Vector3DChecker(ns3::Vector3DChecker const & arg0) [copy constructor] + cls.add_constructor([param('ns3::Vector3DChecker const &', 'arg0')]) + return + +def register_Ns3Vector3DValue_methods(root_module, cls): + ## vector.h (module 'core'): ns3::Vector3DValue::Vector3DValue() [constructor] + cls.add_constructor([]) + ## vector.h (module 'core'): ns3::Vector3DValue::Vector3DValue(ns3::Vector3DValue const & arg0) [copy constructor] + cls.add_constructor([param('ns3::Vector3DValue const &', 'arg0')]) + ## vector.h (module 'core'): ns3::Vector3DValue::Vector3DValue(ns3::Vector3D const & value) [constructor] + cls.add_constructor([param('ns3::Vector3D const &', 'value')]) + ## vector.h (module 'core'): ns3::Ptr<ns3::AttributeValue> ns3::Vector3DValue::Copy() const [member function] + cls.add_method('Copy', + 'ns3::Ptr< ns3::AttributeValue >', + [], + is_const=True, is_virtual=True) + ## vector.h (module 'core'): bool ns3::Vector3DValue::DeserializeFromString(std::string value, ns3::Ptr<ns3::AttributeChecker const> checker) [member function] + cls.add_method('DeserializeFromString', + 'bool', + [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], + is_virtual=True) + ## vector.h (module 'core'): ns3::Vector3D ns3::Vector3DValue::Get() const [member function] + cls.add_method('Get', + 'ns3::Vector3D', + [], + is_const=True) + ## vector.h (module 'core'): std::string ns3::Vector3DValue::SerializeToString(ns3::Ptr<ns3::AttributeChecker const> checker) const [member function] + cls.add_method('SerializeToString', + 'std::string', + [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], + is_const=True, is_virtual=True) + ## vector.h (module 'core'): void ns3::Vector3DValue::Set(ns3::Vector3D const & value) [member function] + cls.add_method('Set', + 'void', + [param('ns3::Vector3D const &', 'value')]) + return + def register_Ns3WifiChannel_methods(root_module, cls): ## wifi-channel.h (module 'wifi'): ns3::WifiChannel::WifiChannel() [constructor] cls.add_constructor([])