src/simulator/int64x64-double.h
author Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
Wed, 25 Aug 2010 10:44:21 +0200
changeset 7039 c3854df95603
parent 7032 src/simulator/uint64x64-double.h@17d4c8f349d6
permissions -rw-r--r--
rename
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
7039
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 7032
diff changeset
     1
#ifndef INT64X64_DOUBLE_H
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 7032
diff changeset
     2
#define INT64X64_DOUBLE_H
7032
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     3
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     4
#include <iostream>
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     5
#include <math.h>
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     6
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     7
namespace ns3 {
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     8
7039
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 7032
diff changeset
     9
class int64x64_t
7032
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    10
{
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    11
public:
7039
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 7032
diff changeset
    12
  inline int64x64_t ()
7032
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    13
    : _v (0) {}
7039
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 7032
diff changeset
    14
  explicit inline int64x64_t (double v)
7032
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    15
    : _v (v) {}
7039
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 7032
diff changeset
    16
  explicit inline int64x64_t (int v)
7032
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    17
    : _v (v) {}
7039
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 7032
diff changeset
    18
  explicit inline int64x64_t (long int v)
7032
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    19
    : _v (v) {}
7039
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 7032
diff changeset
    20
  explicit inline int64x64_t (long long int v)
7032
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    21
    : _v (v) {}
7039
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 7032
diff changeset
    22
  inline int64x64_t (int64_t hi, uint64_t lo)
7032
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    23
    : _v (hi) {/* XXX */}
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    24
7039
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 7032
diff changeset
    25
  inline int64x64_t (const int64x64_t &o)
7032
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    26
    : _v (o._v) {}
7039
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 7032
diff changeset
    27
  inline int64x64_t &operator = (const int64x64_t &o)
7032
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    28
    {
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    29
      _v = o._v;
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    30
      return *this;
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    31
    }
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    32
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    33
  inline double GetDouble (void) const
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    34
  {
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    35
    return _v;
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    36
  }
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    37
  inline int64_t GetHigh (void) const
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    38
  {
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    39
    return (int64_t)floor (_v);
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    40
  }
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    41
  inline uint64_t GetLow (void) const
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    42
  {
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    43
    // XXX
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    44
    return 0;
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    45
  }
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    46
7039
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 7032
diff changeset
    47
  inline void MulByInvert (const int64x64_t &o)
7032
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    48
  {
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    49
    _v *= o._v;
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    50
  }
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    51
7039
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 7032
diff changeset
    52
  static inline int64x64_t Invert (uint64_t v)
7032
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    53
  {
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    54
    double d = v;
7039
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 7032
diff changeset
    55
    return int64x64_t (1/d);
7032
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    56
  }
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    57
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    58
private:
7039
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 7032
diff changeset
    59
  friend bool operator == (const int64x64_t &lhs, const int64x64_t &rhs);
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 7032
diff changeset
    60
  friend bool operator != (const int64x64_t &lhs, const int64x64_t &rhs);
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 7032
diff changeset
    61
  friend bool operator <= (const int64x64_t &lhs, const int64x64_t &rhs);
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 7032
diff changeset
    62
  friend bool operator >= (const int64x64_t &lhs, const int64x64_t &rhs);
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 7032
diff changeset
    63
  friend bool operator < (const int64x64_t &lhs, const int64x64_t &rhs);
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 7032
diff changeset
    64
  friend bool operator > (const int64x64_t &lhs, const int64x64_t &rhs);
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 7032
diff changeset
    65
  friend int64x64_t &operator += (int64x64_t &lhs, const int64x64_t &rhs);
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 7032
diff changeset
    66
  friend int64x64_t &operator -= (int64x64_t &lhs, const int64x64_t &rhs);
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 7032
diff changeset
    67
  friend int64x64_t &operator *= (int64x64_t &lhs, const int64x64_t &rhs);
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 7032
diff changeset
    68
  friend int64x64_t &operator /= (int64x64_t &lhs, const int64x64_t &rhs);
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 7032
diff changeset
    69
  friend int64x64_t operator + (const int64x64_t &lhs, const int64x64_t &rhs);
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 7032
diff changeset
    70
  friend int64x64_t operator - (const int64x64_t &lhs, const int64x64_t &rhs);
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 7032
diff changeset
    71
  friend int64x64_t operator * (const int64x64_t &lhs, const int64x64_t &rhs);
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 7032
diff changeset
    72
  friend int64x64_t operator / (const int64x64_t &lhs, const int64x64_t &rhs);
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 7032
diff changeset
    73
  friend int64x64_t operator + (const int64x64_t &lhs);
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 7032
diff changeset
    74
  friend int64x64_t operator - (const int64x64_t &lhs);
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 7032
diff changeset
    75
  friend int64x64_t operator ! (const int64x64_t &lhs);
7032
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    76
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    77
  double _v;
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    78
};
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    79
7039
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 7032
diff changeset
    80
inline bool operator == (const int64x64_t &lhs, const int64x64_t &rhs)
7032
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    81
{
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    82
  return lhs._v == rhs._v;
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    83
}
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    84
7039
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 7032
diff changeset
    85
inline bool operator != (const int64x64_t &lhs, const int64x64_t &rhs)
7032
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    86
{
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    87
  return lhs._v != rhs._v;
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    88
}
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    89
7039
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 7032
diff changeset
    90
inline bool operator <= (const int64x64_t &lhs, const int64x64_t &rhs)
7032
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    91
{
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    92
  return lhs._v <= rhs._v;
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    93
}
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    94
7039
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 7032
diff changeset
    95
inline bool operator >= (const int64x64_t &lhs, const int64x64_t &rhs)
7032
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    96
{
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    97
  return lhs._v >= rhs._v;
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    98
}
7039
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 7032
diff changeset
    99
inline bool operator < (const int64x64_t &lhs, const int64x64_t &rhs)
7032
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   100
{
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   101
  return lhs._v < rhs._v;
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   102
}
7039
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 7032
diff changeset
   103
inline bool operator > (const int64x64_t &lhs, const int64x64_t &rhs)
7032
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   104
{
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   105
  return lhs._v > rhs._v;
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   106
}
7039
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 7032
diff changeset
   107
inline int64x64_t &operator += (int64x64_t &lhs, const int64x64_t &rhs)
7032
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   108
{
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   109
  double tmp = lhs._v;
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   110
  tmp += rhs._v;
7039
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 7032
diff changeset
   111
  lhs = int64x64_t (tmp);
7032
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   112
  return lhs;
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   113
}
7039
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 7032
diff changeset
   114
inline int64x64_t &operator -= (int64x64_t &lhs, const int64x64_t &rhs)
7032
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   115
{
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   116
  double tmp = lhs._v;
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   117
  tmp -= rhs._v;
7039
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 7032
diff changeset
   118
  lhs = int64x64_t (tmp);
7032
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   119
  return lhs;
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   120
}
7039
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 7032
diff changeset
   121
inline int64x64_t &operator *= (int64x64_t &lhs, const int64x64_t &rhs)
7032
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   122
{
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   123
  double tmp = lhs._v;
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   124
  tmp *= rhs._v;
7039
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 7032
diff changeset
   125
  lhs = int64x64_t (tmp);
7032
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   126
  return lhs;
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   127
}
7039
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 7032
diff changeset
   128
inline int64x64_t &operator /= (int64x64_t &lhs, const int64x64_t &rhs)
7032
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   129
{
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   130
  double tmp = lhs._v;
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   131
  tmp /= rhs._v;
7039
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 7032
diff changeset
   132
  lhs = int64x64_t (tmp);
7032
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   133
  return lhs;
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   134
}
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   135
7039
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 7032
diff changeset
   136
inline int64x64_t operator + (const int64x64_t &lhs)
7032
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   137
{
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   138
  return lhs;
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   139
}
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   140
7039
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 7032
diff changeset
   141
inline int64x64_t operator - (const int64x64_t &lhs)
7032
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   142
{
7039
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 7032
diff changeset
   143
  return int64x64_t (-lhs._v);
7032
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   144
}
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   145
7039
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 7032
diff changeset
   146
inline int64x64_t operator ! (const int64x64_t &lhs)
7032
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   147
{
7039
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 7032
diff changeset
   148
  return int64x64_t (!lhs._v);
7032
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   149
}
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   150
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   151
} // namespace ns3
17d4c8f349d6 split out uint64x64 type, optimize
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   152
7039
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 7032
diff changeset
   153
#endif /* INT64X64_DOUBLE_H */