00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 #if !defined(RANDOM_HPP)
00015 #define RANDOM_HPP "$Id: Random.hpp 6489 2008-11-10 21:37:47Z ckarney $"
00016
00017
00018 #if defined(_MSC_VER)
00019 #define WINDOWS 1
00020
00021 #pragma warning (disable: 4290)
00022 #else
00023 #define WINDOWS 0
00024 #endif
00025
00026 #if defined(__sparc)
00027 #define SUN 1
00028 #else
00029 #define SUN 0
00030 #endif
00031
00032 #if WINDOWS
00033 typedef unsigned uint32_t;
00034 typedef unsigned long long uint64_t;
00035 #else
00036 #include <stdint.h>
00037 #endif
00038
00039
00040
00041 #define RANDOM_U32_T uint32_t
00042
00043
00044
00045 #define RANDOM_U64_T uint64_t
00046
00047 #if defined(__GNUC__)
00048
00049 #define RCSID_DECL(x) namespace \
00050 { char VAR_ ## x [] __attribute__((unused)) = x; }
00051 #else
00052
00053
00054
00055 #define RCSID_DECL(x) namespace { char VAR_ ## x [] = x; }
00056 #endif
00057
00058 #if !defined(HAVE_SSE2)
00059 #define HAVE_SSE2 0
00060 #endif
00061
00062 #if !defined(HAVE_ALTIVEC)
00063
00064
00065
00066
00067
00068
00069
00070
00071 #define HAVE_ALTIVEC 0
00072 #endif
00073
00074 #if !defined(HAVE_BOOST_SERIALIZATION)
00075
00076
00077
00078 #define HAVE_BOOST_SERIALIZATION 0
00079 #endif
00080
00081 #if !defined(RANDOM_LEGACY)
00082
00083
00084
00085 #define RANDOM_LEGACY 0
00086 #endif
00087
00088
00089
00090
00091
00092
00093 #if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ == 0
00094 #define RANDOM_POWERTABLE 0
00095 #else
00096
00097 #define RANDOM_POWERTABLE 1
00098 #endif
00099
00100 #if WINDOWS
00101 #define RANDOM_LONGDOUBLEPREC 53
00102 #elif SUN
00103 #define RANDOM_LONGDOUBLEPREC 113
00104 #else
00105
00106
00107
00108
00109 #define RANDOM_LONGDOUBLEPREC __LDBL_MANT_DIG__
00110 #endif
00111
00112 #if !defined(STATIC_ASSERT)
00113 #if defined(HAVE_STATIC_ASSERT)
00114 #define STATIC_ASSERT static_assert
00115 #else
00116
00117
00118
00119 #define STATIC_ASSERT(cond,reason) { enum{ STATIC_ASSERT_ENUM = 1/int(cond) }; }
00120 #endif
00121 #endif
00122
00123
00124
00125
00126 #define RANDOM_HASDENORM(RealType) 1
00127
00128 #include "RandomLib/RandomCanonical.hpp"
00129
00130 namespace RandomLib {
00131
00132 #if !defined(DEFAULT_GENERATOR)
00133 #define DEFAULT_GENERATOR SRandomGenerator32
00134 #endif
00135
00136
00137
00138
00139
00140 typedef DEFAULT_GENERATOR RandomGenerator;
00141
00142
00143
00144
00145 typedef RandomCanonical<RandomGenerator> Random;
00146
00147 }
00148
00149 #endif // RANDOM_HPP