0
2
1
1 |
/* -*- C++ -*- |
|
2 |
* |
|
3 |
* This file is a part of LEMON, a generic C++ optimization library |
|
4 |
* |
|
5 |
* Copyright (C) 2003-2008 |
|
6 |
* Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport |
|
7 |
* (Egervary Research Group on Combinatorial Optimization, EGRES). |
|
8 |
* |
|
9 |
* Permission to use, modify and distribute this software is granted |
|
10 |
* provided that this copyright notice appears in all copies. For |
|
11 |
* precise terms see the accompanying LICENSE file. |
|
12 |
* |
|
13 |
* This software is provided "AS IS" with no warranty of any kind, |
|
14 |
* express or implied, and with no claim as to its suitability for any |
|
15 |
* purpose. |
|
16 |
* |
|
17 |
*/ |
|
18 |
|
|
19 |
#ifndef LEMON_MATH_H |
|
20 |
#define LEMON_MATH_H |
|
21 |
|
|
22 |
///\ingroup misc |
|
23 |
///\file |
|
24 |
///\brief Some extensions to the standard \c cmath library. |
|
25 |
/// |
|
26 |
///Some extensions to the standard \c cmath library. |
|
27 |
/// |
|
28 |
///This file includes the standard math library (cmath). |
|
29 |
|
|
30 |
#include<cmath> |
|
31 |
|
|
32 |
namespace lemon { |
|
33 |
|
|
34 |
/// \addtogroup misc |
|
35 |
/// @{ |
|
36 |
|
|
37 |
/// The Euler constant |
|
38 |
const long double E = 2.7182818284590452353602874713526625L; |
|
39 |
/// log_2(e) |
|
40 |
const long double LOG2E = 1.4426950408889634073599246810018921L; |
|
41 |
/// log_10(e) |
|
42 |
const long double LOG10E = 0.4342944819032518276511289189166051L; |
|
43 |
/// ln(2) |
|
44 |
const long double LN2 = 0.6931471805599453094172321214581766L; |
|
45 |
/// ln(10) |
|
46 |
const long double LN10 = 2.3025850929940456840179914546843642L; |
|
47 |
/// pi |
|
48 |
const long double PI = 3.1415926535897932384626433832795029L; |
|
49 |
/// pi/2 |
|
50 |
const long double PI_2 = 1.5707963267948966192313216916397514L; |
|
51 |
/// pi/4 |
|
52 |
const long double PI_4 = 0.7853981633974483096156608458198757L; |
|
53 |
/// sqrt(2) |
|
54 |
const long double SQRT2 = 1.4142135623730950488016887242096981L; |
|
55 |
/// 1/sqrt(2) |
|
56 |
const long double SQRT1_2 = 0.7071067811865475244008443621048490L; |
|
57 |
|
|
58 |
|
|
59 |
/// @} |
|
60 |
|
|
61 |
} //namespace lemon |
|
62 |
|
|
63 |
#endif //LEMON_TOLERANCE_H |
... | ... |
@@ -14,12 +14,13 @@ |
14 | 14 |
lemon_libemon_la_CXXFLAGS = $(GLPK_CFLAGS) $(CPLEX_CFLAGS) $(SOPLEX_CXXFLAGS) |
15 | 15 |
lemon_libemon_la_LDFLAGS = $(GLPK_LIBS) $(CPLEX_LIBS) $(SOPLEX_LIBS) |
16 | 16 |
|
17 | 17 |
lemon_HEADERS += \ |
18 | 18 |
lemon/dim2.h \ |
19 | 19 |
lemon/maps.h \ |
20 |
lemon/math.h \ |
|
20 | 21 |
lemon/random.h \ |
21 | 22 |
lemon/list_graph.h \ |
22 | 23 |
lemon/tolerance.h |
23 | 24 |
|
24 | 25 |
bits_HEADERS += \ |
25 | 26 |
lemon/bits/alteration_notifier.h \ |
... | ... |
@@ -64,15 +64,16 @@ |
64 | 64 |
|
65 | 65 |
#include <algorithm> |
66 | 66 |
#include <iterator> |
67 | 67 |
#include <vector> |
68 | 68 |
|
69 | 69 |
#include <ctime> |
70 |
#include <cmath> |
|
71 | 70 |
|
71 |
#include <lemon/math.h> |
|
72 | 72 |
#include <lemon/dim2.h> |
73 |
|
|
73 | 74 |
///\ingroup misc |
74 | 75 |
///\file |
75 | 76 |
///\brief Mersenne Twister random number generator |
76 | 77 |
|
77 | 78 |
namespace lemon { |
78 | 79 |
|
... | ... |
@@ -756,13 +757,13 @@ |
756 | 757 |
///\param theta scale parameter |
757 | 758 |
/// |
758 | 759 |
double gamma(double k,double theta=1.0) |
759 | 760 |
{ |
760 | 761 |
double xi,nu; |
761 | 762 |
const double delta = k-std::floor(k); |
762 |
const double v0= |
|
763 |
const double v0=E/(E-delta); |
|
763 | 764 |
do { |
764 | 765 |
double V0=1.0-real<double>(); |
765 | 766 |
double V1=1.0-real<double>(); |
766 | 767 |
double V2=1.0-real<double>(); |
767 | 768 |
if(V2<=v0) |
768 | 769 |
{ |
0 comments (0 inline)