00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef COMMUN_HPP
00024 #define COMMUN_HPP
00025 #include <complex>
00033 namespace Fractale
00034 {
00035
00036
00045 struct Random
00046 {
00047 unsigned long long u,v,w;
00052 Random(unsigned long long j = 0)
00053 : v(4101842887655102017LL),
00054 w(1)
00055 {
00056 u = j ^ v; generateUInt64();
00057 v = u; generateUInt64();
00058 w = v; generateUInt64();
00059 }
00064 unsigned long long generateUInt64()
00065 {
00066 u = u * 2862933555777941757LL + 7046029254386353087LL;
00067 v ^= v >> 17; v ^= v << 31; v ^= v >> 8;
00068 w = 4294957665U*(w & 0xffffffff) + (w >> 32);
00069 unsigned long long x = u ^ (u << 21); x ^= x >> 35; x ^= x << 4;
00070 return (x + v) ^ w;
00071 }
00072
00077 double generateDouble()
00078 {
00079 return 5.42101086242752217E-20 * generateUInt64();
00080 }
00085 unsigned int generateUInt32()
00086 {
00087 return (unsigned int)generateUInt64();
00088 }
00089 };
00090
00091
00095 struct zone
00096 {
00097 double x;
00098 double y;
00099 double h;
00100 double l;
00101 unsigned int imgH;
00102 unsigned int imgL;
00108 zone(double x = 0.,double y =0.,double h = 0., double l = 0.,unsigned int imgH = 0,unsigned int imgL = 0)
00109 :x(x),y(y),h(h),l(l),imgH(imgH),imgL(imgL)
00110 {
00111 }
00116 zone(const zone &z)
00117 :x(z.x), y(z.y), h(z.h), l(z.l), imgH(z.imgH), imgL(z.imgL)
00118 {}
00119 };
00120
00126 typedef std::complex<double> point;
00127
00128 }
00129 #endif