src/simulator/high-precision.cc
author Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
Thu, 25 Feb 2010 14:17:21 +0100
changeset 6068 a2127017ecb4
parent 5770 bb1eea10412f
child 6404 5e271cbf9d16
permissions -rw-r--r--
merge with HEAD
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
153
22c3d53dbae3 Add HighPrecision class used for external Time bookkeeping
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     1
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
22c3d53dbae3 Add HighPrecision class used for external Time bookkeeping
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     2
/*
22c3d53dbae3 Add HighPrecision class used for external Time bookkeeping
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     3
 * Copyright (c) 2006 INRIA
22c3d53dbae3 Add HighPrecision class used for external Time bookkeeping
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     4
 *
22c3d53dbae3 Add HighPrecision class used for external Time bookkeeping
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
22c3d53dbae3 Add HighPrecision class used for external Time bookkeeping
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     6
 * it under the terms of the GNU General Public License version 2 as
22c3d53dbae3 Add HighPrecision class used for external Time bookkeeping
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     7
 * published by the Free Software Foundation;
22c3d53dbae3 Add HighPrecision class used for external Time bookkeeping
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     8
 *
22c3d53dbae3 Add HighPrecision class used for external Time bookkeeping
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
22c3d53dbae3 Add HighPrecision class used for external Time bookkeeping
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
22c3d53dbae3 Add HighPrecision class used for external Time bookkeeping
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
22c3d53dbae3 Add HighPrecision class used for external Time bookkeeping
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    12
 * GNU General Public License for more details.
22c3d53dbae3 Add HighPrecision class used for external Time bookkeeping
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    13
 *
22c3d53dbae3 Add HighPrecision class used for external Time bookkeeping
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    14
 * You should have received a copy of the GNU General Public License
22c3d53dbae3 Add HighPrecision class used for external Time bookkeeping
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    15
 * along with this program; if not, write to the Free Software
22c3d53dbae3 Add HighPrecision class used for external Time bookkeeping
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    16
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
22c3d53dbae3 Add HighPrecision class used for external Time bookkeeping
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    17
 *
22c3d53dbae3 Add HighPrecision class used for external Time bookkeeping
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    18
 * Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
22c3d53dbae3 Add HighPrecision class used for external Time bookkeeping
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    19
 */
22c3d53dbae3 Add HighPrecision class used for external Time bookkeeping
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    20
#include "high-precision.h"
22c3d53dbae3 Add HighPrecision class used for external Time bookkeeping
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    21
154
9ef3700452c7 add ns3 namespace to HighPrecision class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 153
diff changeset
    22
#include <cmath>
286
57e6a2006962 convert use of <cassert> to "ns3/assert.h"
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 170
diff changeset
    23
#include "ns3/assert.h"
154
9ef3700452c7 add ns3 namespace to HighPrecision class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 153
diff changeset
    24
9ef3700452c7 add ns3 namespace to HighPrecision class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 153
diff changeset
    25
9ef3700452c7 add ns3 namespace to HighPrecision class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 153
diff changeset
    26
namespace ns3 {
9ef3700452c7 add ns3 namespace to HighPrecision class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 153
diff changeset
    27
155
cf4d45ad2da9 add Abs/Max/Min non-member functions
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 154
diff changeset
    28
HighPrecision Abs (HighPrecision const &value)
cf4d45ad2da9 add Abs/Max/Min non-member functions
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 154
diff changeset
    29
{
cf4d45ad2da9 add Abs/Max/Min non-member functions
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 154
diff changeset
    30
  if (value.Compare (HighPrecision::Zero ()) <= 0)
cf4d45ad2da9 add Abs/Max/Min non-member functions
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 154
diff changeset
    31
    {
170
9f68cb694f40 implement 128 bit arithmetic with cairo's internal types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 168
diff changeset
    32
      HighPrecision v = HighPrecision::Zero ();
9f68cb694f40 implement 128 bit arithmetic with cairo's internal types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 168
diff changeset
    33
      v.Sub (value);
9f68cb694f40 implement 128 bit arithmetic with cairo's internal types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 168
diff changeset
    34
      return v;
155
cf4d45ad2da9 add Abs/Max/Min non-member functions
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 154
diff changeset
    35
    }
cf4d45ad2da9 add Abs/Max/Min non-member functions
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 154
diff changeset
    36
  else
cf4d45ad2da9 add Abs/Max/Min non-member functions
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 154
diff changeset
    37
    {
cf4d45ad2da9 add Abs/Max/Min non-member functions
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 154
diff changeset
    38
      return value;
cf4d45ad2da9 add Abs/Max/Min non-member functions
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 154
diff changeset
    39
    }
cf4d45ad2da9 add Abs/Max/Min non-member functions
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 154
diff changeset
    40
}
cf4d45ad2da9 add Abs/Max/Min non-member functions
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 154
diff changeset
    41
154
9ef3700452c7 add ns3 namespace to HighPrecision class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 153
diff changeset
    42
}; /* namespace ns3 */