dSFMT.h

Go to the documentation of this file.
00001 
00031 #ifndef DSFMT_H
00032 #define DSFMT_H
00033 
00034 #include <stdio.h>
00035 
00036 #if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)
00037   #include <inttypes.h>
00038 #elif defined(_MSC_VER) || defined(__BORLANDC__)
00039   typedef unsigned int uint32_t;
00040   typedef unsigned long long uint64_t;
00041   #define inline __inline
00042 #else
00043   #include <inttypes.h>
00044   #if defined(__GNUC__)
00045     #define inline __inline__
00046   #else
00047     #define inline
00048   #endif
00049 #endif
00050 
00051 #ifndef PRIu64
00052   #if defined(_MSC_VER) || defined(__BORLANDC__)
00053     #define PRIu64 "I64u"
00054     #define PRIx64 "I64x"
00055   #else
00056     #define PRIu64 "llu"
00057     #define PRIx64 "llx"
00058   #endif
00059 #endif
00060 
00061 #ifndef UINT64_C
00062   #define UINT64_C(v) (v ## ULL) 
00063 #endif
00064 
00065 inline double genrand_close1_open2(void);
00066 #if defined(__GNUC__)
00067 inline static double genrand_close_open(void) __attribute__((always_inline));
00068 inline static double genrand_open_close(void) __attribute__((always_inline));
00069 inline static double genrand_open_open(void) __attribute__((always_inline));
00070 #elif defined(_MSC_VER) && _MSC_VER >= 1200
00071 __forceinline static double genrand_close_open(void);
00072 __forceinline static double genrand_open_close(void);
00073 __forceinline static double genrand_open_open(void);
00074 #else
00075 inline static double genrand_close_open(void);
00076 inline static double genrand_open_close(void);
00077 inline static double genrand_open_open(void);
00078 #endif
00079 
00080 void fill_array_open_close(double array[], int size);
00081 void fill_array_close_open(double array[], int size);
00082 void fill_array_open_open(double array[], int size);
00083 void fill_array_close1_open2(double array[], int size);
00084 const char *get_idstring(void);
00085 int get_min_array_size(void);
00086 void init_gen_rand(uint32_t seed);
00087 void init_by_array(uint32_t init_key[], int key_length);
00088 
00096 inline static double genrand_close_open(void) {
00097     return genrand_close1_open2() - 1.0;
00098 }
00099 
00107 inline static double genrand_open_close(void) {
00108     return 2.0 - genrand_close1_open2();
00109 }
00110 
00118 inline static double genrand_open_open(void) {
00119     union {
00120         uint64_t u;
00121         double d;
00122     } conv;
00123 
00124     conv.d = genrand_close1_open2();
00125     conv.u |= 1;
00126     return conv.d - 1.0;
00127 }
00128 
00129 #endif /* DSFMT_H */

Generated on Wed Aug 22 16:08:11 2007 for dSFMT by  doxygen 1.4.7