A Discrete-Event Network Simulator
API
int64x64-128.h File Reference

Declaration of the ns3::int64x64_t type using a native int128_t type. More...

#include "ns3/core-config.h"
#include <stdint.h>
#include <cmath>
+ Include dependency graph for int64x64-128.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  ns3::int64x64_t
 High precision numerical type, implementing Q64.64 fixed precision. More...
 

Namespaces

 ns3
 Every class exported by the ns3 library is enclosed in the ns3 namespace.
 

Macros

#define HP_MAX_64   (std::pow (2.0L, 64))
 Floating point value of HP_MASK_LO + 1. More...
 
#define INT64X64_128_H
 Use uint128_t for int64x64_t implementation. More...
 

Typedefs

typedef __int128_t int128_t
 Some compilers do not have this defined, so we define it. More...
 
typedef __uint128_t uint128_t
 Some compilers do not have this defined, so we define it. More...
 

Detailed Description

Declaration of the ns3::int64x64_t type using a native int128_t type.

Definition in file int64x64-128.h.

Macro Definition Documentation

◆ HP_MAX_64

#define HP_MAX_64   (std::pow (2.0L, 64))

Floating point value of HP_MASK_LO + 1.

We really want:

static const long double HP_MAX_64 = std:pow (2.0L, 64);
#define HP_MAX_64
Floating point value of HP_MASK_LO + 1.
Definition: int64x64-128.h:76

but we can't call functions in const definitions.

We could make this a static and initialize in int64x64-128.cc or int64x64.cc, but this requires handling static initialization order when most of the implementation is inline. Instead, we resort to this define.

Definition at line 76 of file int64x64-128.h.