From 588469bf0d631a3bf9ce058cf78c818a5db9b86b Mon Sep 17 00:00:00 2001 From: Vaibhav Arcot Date: Wed, 11 Sep 2019 02:32:23 -0400 Subject: [PATCH 01/34] Finished cpu version and naive version (stream) of stream_compaction subproblem --- .../stream_compaction/CMakeLists.txt | 2 +- .../stream_compaction/cpu.cu | 47 +++++++++++++++---- .../stream_compaction/cpu.h | 2 +- .../stream_compaction/naive.cu | 42 ++++++++++++++++- 4 files changed, 80 insertions(+), 13 deletions(-) diff --git a/Project2-Stream-Compaction/stream_compaction/CMakeLists.txt b/Project2-Stream-Compaction/stream_compaction/CMakeLists.txt index cdbef77..e31ca3c 100644 --- a/Project2-Stream-Compaction/stream_compaction/CMakeLists.txt +++ b/Project2-Stream-Compaction/stream_compaction/CMakeLists.txt @@ -13,5 +13,5 @@ set(SOURCE_FILES cuda_add_library(stream_compaction ${SOURCE_FILES} - OPTIONS -arch=sm_20 + OPTIONS -arch=sm_30 ) diff --git a/Project2-Stream-Compaction/stream_compaction/cpu.cu b/Project2-Stream-Compaction/stream_compaction/cpu.cu index a2d3e6c..97097f1 100644 --- a/Project2-Stream-Compaction/stream_compaction/cpu.cu +++ b/Project2-Stream-Compaction/stream_compaction/cpu.cu @@ -1,6 +1,6 @@ #include #include "cpu.h" - +#include #include "common.h" namespace StreamCompaction { @@ -17,10 +17,15 @@ namespace StreamCompaction { * For performance analysis, this is supposed to be a simple for loop. * (Optional) For better understanding before starting moving to GPU, you can simulate your GPU scan in this function first. */ - void scan(int n, int *odata, const int *idata) { - timer().startCpuTimer(); - // TODO - timer().endCpuTimer(); + void scan(int n, int *odata, const int *idata, const bool time/* = true*/) { + (time == true)?timer().startCpuTimer():0; + int running_total = 0; + for (int i = 0; i < n-1; i++) { // n-1 because we want exclusive not inclusive so last element isn't added + running_total += idata[i]; // n-1 adds for n size + odata[i+1] = running_total; + } + (time == true) ? timer().endCpuTimer() : 0; + } /** @@ -30,9 +35,15 @@ namespace StreamCompaction { */ int compactWithoutScan(int n, int *odata, const int *idata) { timer().startCpuTimer(); - // TODO + int count = 0; + int odata_pos = 0; + for (int i = 0; i < n; i++) + if (idata[i] != 0) { + count++; + odata[++odata_pos] = idata[i]; + } timer().endCpuTimer(); - return -1; + return count; } /** @@ -42,9 +53,27 @@ namespace StreamCompaction { */ int compactWithScan(int n, int *odata, const int *idata) { timer().startCpuTimer(); - // TODO + // Step 1, mark each cell with 1/0 if it has a element or not (super easy to parallelize) + int* scan_data = new int[n](); + int* mask = new int[n](); + for (int i = 0; i < n; i++) { + if (idata[i]) + mask[i] = 1; + else + mask[i] = 0; + } + // scan the mask array (can be done in parallel by using a balanced binary tree) + scan(n, scan_data, mask, false); + // Scatter array (go to each position and copy the value) (super easy to parallelize) + for (int i = 0; i < n - 1; i++) { + if (idata[i]) + odata[scan_data[i] + 1] = idata[i]; + } + int res = scan_data[n - 1]; + delete scan_data; + delete mask; timer().endCpuTimer(); - return -1; + return res; } } } diff --git a/Project2-Stream-Compaction/stream_compaction/cpu.h b/Project2-Stream-Compaction/stream_compaction/cpu.h index 236ce11..5d4ae1e 100644 --- a/Project2-Stream-Compaction/stream_compaction/cpu.h +++ b/Project2-Stream-Compaction/stream_compaction/cpu.h @@ -6,7 +6,7 @@ namespace StreamCompaction { namespace CPU { StreamCompaction::Common::PerformanceTimer& timer(); - void scan(int n, int *odata, const int *idata); + void scan(int n, int *odata, const int *idata, const bool time = true); int compactWithoutScan(int n, int *odata, const int *idata); diff --git a/Project2-Stream-Compaction/stream_compaction/naive.cu b/Project2-Stream-Compaction/stream_compaction/naive.cu index 4308876..ea20be5 100644 --- a/Project2-Stream-Compaction/stream_compaction/naive.cu +++ b/Project2-Stream-Compaction/stream_compaction/naive.cu @@ -2,6 +2,8 @@ #include #include "common.h" #include "naive.h" +#include +#define checkCUDAErrorWithLine(msg) checkCUDAError(msg, __LINE__) namespace StreamCompaction { namespace Naive { @@ -12,13 +14,49 @@ namespace StreamCompaction { return timer; } // TODO: __global__ - + __global__ void naive_parallel_scan(int n, int *odata, const int *idata, int d) { + int index = blockDim.x * blockIdx.x + threadIdx.x; + if (index > n) + return; + if (index >= powf(2,d-1)) + odata[index] = idata[index - (int)powf(2,d - 1)] + idata[index]; // todo figure out why this doesnt work with non powers of 2 + else + odata[index] = idata[index]; + } + __global__ void right_shift(int n, int *odata, const int *idata) { + int index = blockDim.x * blockIdx.x + threadIdx.x; + if (index > n) + return; + if (index == 0) + odata[index] = 0; + else + odata[index] = idata[index - 1]; + } /** * Performs prefix-sum (aka scan) on idata, storing the result into odata. */ void scan(int n, int *odata, const int *idata) { timer().startGpuTimer(); - // TODO + int blocksize = 128; + int blocks = (n + blocksize - 1) / blocksize; + // allocate data + int *dev_odata, *dev_odata_2; + cudaMalloc((void**)&dev_odata, n * sizeof(int)); + cudaMalloc((void**)&dev_odata_2, n * sizeof(int)); + // copy data over + cudaMemcpy(dev_odata, idata, n*sizeof(int), cudaMemcpyHostToDevice); + checkCUDAErrorWithLine("memcpy back failed!"); + for (int d = 1; d <= ceil(log2(n)); d++) { + naive_parallel_scan <<> > (n, dev_odata_2, dev_odata, d); + checkCUDAErrorWithLine("copy fn failed!"); + std::swap(dev_odata, dev_odata_2); + } + right_shift << > > (n, dev_odata_2, dev_odata); + cudaMemcpy(odata, dev_odata_2, n*sizeof(int), cudaMemcpyDeviceToHost); + checkCUDAErrorWithLine("memcpy back failed!"); + cudaFree(dev_odata); + cudaFree(dev_odata_2); + // create buffer timer().endGpuTimer(); } } From 424e10f4b037e11976b19da8c87dc368fe690504 Mon Sep 17 00:00:00 2001 From: Vaibhav Arcot Date: Wed, 11 Sep 2019 23:58:34 -0400 Subject: [PATCH 02/34] Finished Stream compact base assignment. Todo change pow to shift (seems much much faster) --- Project2-Stream-Compaction/src/main.cpp | 4 +- .../stream_compaction/efficient.cu | 164 ++++++++++++++---- .../stream_compaction/naive.cu | 24 +-- 3 files changed, 149 insertions(+), 43 deletions(-) diff --git a/Project2-Stream-Compaction/src/main.cpp b/Project2-Stream-Compaction/src/main.cpp index d016553..f3be59c 100644 --- a/Project2-Stream-Compaction/src/main.cpp +++ b/Project2-Stream-Compaction/src/main.cpp @@ -13,7 +13,7 @@ #include #include "testing_helpers.hpp" -const int SIZE = 1 << 8; // feel free to change the size of array +const int SIZE = 1 << 17; // feel free to change the size of array const int NPOT = SIZE - 3; // Non-Power-Of-Two int *a = new int[SIZE]; int *b = new int[SIZE]; @@ -78,7 +78,7 @@ int main(int argc, char* argv[]) { printDesc("work-efficient scan, non-power-of-two"); StreamCompaction::Efficient::scan(NPOT, c, a); printElapsedTime(StreamCompaction::Efficient::timer().getGpuElapsedTimeForPreviousOperation(), "(CUDA Measured)"); - //printArray(NPOT, c, true); + printArray(NPOT, c, true); printCmpResult(NPOT, b, c); zeroArray(SIZE, c); diff --git a/Project2-Stream-Compaction/stream_compaction/efficient.cu b/Project2-Stream-Compaction/stream_compaction/efficient.cu index 2db346e..edd5732 100644 --- a/Project2-Stream-Compaction/stream_compaction/efficient.cu +++ b/Project2-Stream-Compaction/stream_compaction/efficient.cu @@ -2,39 +2,141 @@ #include #include "common.h" #include "efficient.h" +#define checkCUDAErrorWithLine(msg) checkCUDAError(msg, __LINE__) namespace StreamCompaction { - namespace Efficient { - using StreamCompaction::Common::PerformanceTimer; - PerformanceTimer& timer() - { - static PerformanceTimer timer; - return timer; - } + namespace Efficient { + int block_size = 128; + using StreamCompaction::Common::PerformanceTimer; + PerformanceTimer& timer() + { + static PerformanceTimer timer; + return timer; + } + /*2 scan phases, see (link)[https://developer.nvidia.com/gpugems/GPUGems3/gpugems3_ch39.html] for more details*/ + __global__ void reduce_parallel(int n, int *data, int d) { + int index = (blockDim.x * blockIdx.x + threadIdx.x)*(int)powf(2, d + 1); + if (index >= n ) + return; + data[index + (int)powf(2, d + 1) - 1] += data[index + (int)powf(2, d) - 1]; + } - /** - * Performs prefix-sum (aka scan) on idata, storing the result into odata. - */ - void scan(int n, int *odata, const int *idata) { - timer().startGpuTimer(); - // TODO - timer().endGpuTimer(); - } + __global__ void downsweep_parallel(int n, int *data, int d) { + int int_2dp1 = (int)powf(2, d + 1); + int int_2d = (int)powf(2, d); + int index = (blockDim.x * blockIdx.x + threadIdx.x)*int_2dp1; + if (index >= n) + return; + int t = data[index + int_2d - 1]; + data[index + int_2d - 1] = data[index + int_2dp1 - 1]; + data[index + (int)int_2dp1 - 1] += t; + } + /** + * Performs prefix-sum (aka scan) on idata, storing the result into odata. + */ + void scan(int n, int *odata, const int *idata) { + timer().startGpuTimer(); + // allocate pointers to memory and copy data over + int *dev_odata; + int blocks = 0; + int closest_pow2 = pow(2, ilog2ceil(n)); + cudaMalloc((void**)&dev_odata, closest_pow2 * sizeof(int)); + checkCUDAErrorWithLine("malloc failed!"); + cudaMemcpy(dev_odata, idata, closest_pow2 * sizeof(int), cudaMemcpyHostToDevice); + checkCUDAErrorWithLine("memcpy failed!"); + // reduce phase + //ceil(log2(n) - 1) - 1 // so we dont need to do the last round of computation because we zero it anyway + for (int d = 0; d <= ilog2ceil(closest_pow2) - 2; d++) { + // compute number of threads to spawn + blocks = ceil((pow(2, ceil(log2(closest_pow2 / pow(2, d + 1)))) + block_size - 1) / block_size); + reduce_parallel <<>> (closest_pow2, dev_odata, d); + checkCUDAErrorWithLine("reduce phase failed!"); + } + // down-sweep phase + // zero last value + cudaMemset(dev_odata + (closest_pow2 - 1), 0, 1 * sizeof(int)); + for (int d = ceil(log2(closest_pow2) - 1); d >= 0; d--) { + blocks = ceil((pow(2, ceil(log2(closest_pow2 / pow(2, d + 1)))) + block_size - 1) / block_size); + downsweep_parallel <<>> (closest_pow2, dev_odata, d); + checkCUDAErrorWithLine("downsweep phase failed!"); + } + //read data back + cudaMemcpy(odata, dev_odata, n * sizeof(int), cudaMemcpyDeviceToHost); + checkCUDAErrorWithLine("memcpy back failed!"); + timer().endGpuTimer(); + } - /** - * Performs stream compaction on idata, storing the result into odata. - * All zeroes are discarded. - * - * @param n The number of elements in idata. - * @param odata The array into which to store elements. - * @param idata The array of elements to compact. - * @returns The number of elements remaining after compaction. - */ - int compact(int n, int *odata, const int *idata) { - timer().startGpuTimer(); - // TODO - timer().endGpuTimer(); - return -1; - } - } + void dev_scan(int n, int *dev_odata) { + // allocate pointers to memory and copy data over + int blocks; + // reduce phase + for (int d = 0; d <= ilog2ceil(n) - 2; d++) { + // compute number of threads to spawn + blocks = ceil((pow(2, ceil(log2(n / pow(2, d + 1)))) + block_size - 1) / block_size); + reduce_parallel << > > (n, dev_odata, d); + checkCUDAErrorWithLine("reduce phase failed!"); + } + // down-sweep phase + // zero last value + cudaMemset(dev_odata + (n - 1), 0, 1 * sizeof(int)); + for (int d = ceil(log2(n) - 1); d >= 0; d--) { + blocks = ceil((pow(2, ceil(log2(n / pow(2, d + 1)))) + block_size - 1) / block_size); + downsweep_parallel << > > (n, dev_odata, d); + checkCUDAErrorWithLine("downsweep phase failed!"); + } + } + + __global__ void mask_gen(int n, const int *data, int *mask) { + int index = (blockDim.x * blockIdx.x + threadIdx.x); + if (index >= n) + return; + mask[index] = (data[index] != 0) ? 1 : 0; + } + + __global__ void scatter(int n, int* dev_mask, int *dev_data, int *dev_odata) { + int index = (blockDim.x * blockIdx.x + threadIdx.x); + if (index >= n) + return; + if (dev_data[index] != 0) + dev_odata[dev_mask[index] + 1] = dev_data[index]; + } + /** + * Performs stream compaction on idata, storing the result into odata. + * All zeroes are discarded. + * + * @param n The number of elements in idata. + * @param odata The array into which to store elements. + * @param idata The array of elements to compact. + * @returns The number of elements remaining after compaction. + */ + int compact(int n, int *odata, const int *idata) { + timer().startGpuTimer(); + int closest_pow2 = pow(2, ilog2ceil(n)); + int *dev_idata, *dev_odata, *dev_mask; + int blocks = ceil((closest_pow2 + block_size - 1) / block_size); + cudaMalloc((void**)&dev_idata, closest_pow2 * sizeof(int)); + cudaMalloc((void**)&dev_odata, closest_pow2 * sizeof(int)); + cudaMalloc((void**)&dev_mask, closest_pow2 * sizeof(int)); + // copy over idata + cudaMemcpy(dev_idata, idata, n * sizeof(int), cudaMemcpyHostToDevice); + checkCUDAErrorWithLine("mask gen failed!"); + mask_gen <<>> (n, dev_idata, dev_mask); + checkCUDAErrorWithLine("mask gen failed!"); + // scan the mask array (can be done in parallel by using a balanced binary tree) + dev_scan(closest_pow2, dev_mask); + checkCUDAErrorWithLine("dev scan failed!"); + // Scatter array (go to each position and copy the value) (super easy to parallelize) + scatter << > > (n, dev_mask, dev_idata, dev_odata); + checkCUDAErrorWithLine("scatter failed!"); + //read data back + cudaMemcpy(odata, dev_mask, n * sizeof(int), cudaMemcpyDeviceToHost); + int res = odata[n - 1]; + cudaMemcpy(odata, dev_odata, n * sizeof(int), cudaMemcpyDeviceToHost); + cudaFree(dev_odata); + cudaFree(dev_idata); + cudaFree(dev_mask); + timer().endGpuTimer(); + return res; + } + } } diff --git a/Project2-Stream-Compaction/stream_compaction/naive.cu b/Project2-Stream-Compaction/stream_compaction/naive.cu index ea20be5..090cda8 100644 --- a/Project2-Stream-Compaction/stream_compaction/naive.cu +++ b/Project2-Stream-Compaction/stream_compaction/naive.cu @@ -16,21 +16,21 @@ namespace StreamCompaction { // TODO: __global__ __global__ void naive_parallel_scan(int n, int *odata, const int *idata, int d) { int index = blockDim.x * blockIdx.x + threadIdx.x; - if (index > n) + if (index >= n) return; - if (index >= powf(2,d-1)) - odata[index] = idata[index - (int)powf(2,d - 1)] + idata[index]; // todo figure out why this doesnt work with non powers of 2 + if (index >= d) + odata[index] = idata[index - d] + idata[index]; // todo figure out why this doesnt work with non powers of 2 else odata[index] = idata[index]; } - __global__ void right_shift(int n, int *odata, const int *idata) { + __global__ void right_shift(int n, int *odata, const int *idata, int amount) { int index = blockDim.x * blockIdx.x + threadIdx.x; if (index > n) return; - if (index == 0) + if (index < amount) odata[index] = 0; else - odata[index] = idata[index - 1]; + odata[index] = idata[index - amount]; } /** * Performs prefix-sum (aka scan) on idata, storing the result into odata. @@ -42,16 +42,20 @@ namespace StreamCompaction { // allocate data int *dev_odata, *dev_odata_2; cudaMalloc((void**)&dev_odata, n * sizeof(int)); + checkCUDAErrorWithLine("malloc failed!"); cudaMalloc((void**)&dev_odata_2, n * sizeof(int)); + checkCUDAErrorWithLine("malloc failed!"); // copy data over cudaMemcpy(dev_odata, idata, n*sizeof(int), cudaMemcpyHostToDevice); - checkCUDAErrorWithLine("memcpy back failed!"); - for (int d = 1; d <= ceil(log2(n)); d++) { + checkCUDAErrorWithLine("memcpy failed!"); + int uppper_limit = 1 << ilog2ceil(n); + for (int d = 1; d <= uppper_limit; d<<=1) { naive_parallel_scan <<> > (n, dev_odata_2, dev_odata, d); - checkCUDAErrorWithLine("copy fn failed!"); + checkCUDAErrorWithLine("fn failed!"); std::swap(dev_odata, dev_odata_2); } - right_shift << > > (n, dev_odata_2, dev_odata); + right_shift << > > (n, dev_odata_2, dev_odata, 1); + checkCUDAErrorWithLine("right shift failed failed!"); cudaMemcpy(odata, dev_odata_2, n*sizeof(int), cudaMemcpyDeviceToHost); checkCUDAErrorWithLine("memcpy back failed!"); cudaFree(dev_odata); From caf1e12caa6e4f803b2bff276c0fcc1c10dd474b Mon Sep 17 00:00:00 2001 From: Vaibhav Arcot Date: Thu, 12 Sep 2019 02:51:16 -0400 Subject: [PATCH 03/34] Finished Stream compaction (without extra credit) --- Project2-Stream-Compaction/src/main.cpp | 2 +- .../stream_compaction/common.cu | 13 ++- .../stream_compaction/efficient.cu | 79 +++++++++---------- .../stream_compaction/thrust.cu | 12 ++- 4 files changed, 58 insertions(+), 48 deletions(-) diff --git a/Project2-Stream-Compaction/src/main.cpp b/Project2-Stream-Compaction/src/main.cpp index f3be59c..85a51d1 100644 --- a/Project2-Stream-Compaction/src/main.cpp +++ b/Project2-Stream-Compaction/src/main.cpp @@ -13,7 +13,7 @@ #include #include "testing_helpers.hpp" -const int SIZE = 1 << 17; // feel free to change the size of array +const int SIZE = 1 << 20; // feel free to change the size of array const int NPOT = SIZE - 3; // Non-Power-Of-Two int *a = new int[SIZE]; int *b = new int[SIZE]; diff --git a/Project2-Stream-Compaction/stream_compaction/common.cu b/Project2-Stream-Compaction/stream_compaction/common.cu index 2ed6d63..9d58341 100644 --- a/Project2-Stream-Compaction/stream_compaction/common.cu +++ b/Project2-Stream-Compaction/stream_compaction/common.cu @@ -23,7 +23,10 @@ namespace StreamCompaction { * which map to 0 will be removed, and elements which map to 1 will be kept. */ __global__ void kernMapToBoolean(int n, int *bools, const int *idata) { - // TODO + int index = (blockDim.x * blockIdx.x + threadIdx.x); + if (index >= n) + return; + bools[index] = (bool)idata[index]; } /** @@ -32,7 +35,13 @@ namespace StreamCompaction { */ __global__ void kernScatter(int n, int *odata, const int *idata, const int *bools, const int *indices) { - // TODO + int index = (blockDim.x * blockIdx.x + threadIdx.x); + if (index >= n - 1) + return; + if (bools[index]) + odata[indices[index] + 1] = idata[index]; + if (index == 0) + odata[index] = 0; } } diff --git a/Project2-Stream-Compaction/stream_compaction/efficient.cu b/Project2-Stream-Compaction/stream_compaction/efficient.cu index edd5732..5ff2194 100644 --- a/Project2-Stream-Compaction/stream_compaction/efficient.cu +++ b/Project2-Stream-Compaction/stream_compaction/efficient.cu @@ -2,6 +2,7 @@ #include #include "common.h" #include "efficient.h" +#include #define checkCUDAErrorWithLine(msg) checkCUDAError(msg, __LINE__) namespace StreamCompaction { @@ -15,21 +16,21 @@ namespace StreamCompaction { } /*2 scan phases, see (link)[https://developer.nvidia.com/gpugems/GPUGems3/gpugems3_ch39.html] for more details*/ __global__ void reduce_parallel(int n, int *data, int d) { - int index = (blockDim.x * blockIdx.x + threadIdx.x)*(int)powf(2, d + 1); + int tmp_d = 1 << (d + 1); + int index = (blockDim.x * blockIdx.x + threadIdx.x)*tmp_d; if (index >= n ) return; - data[index + (int)powf(2, d + 1) - 1] += data[index + (int)powf(2, d) - 1]; + data[index + tmp_d - 1] += data[index + (tmp_d>>1) - 1]; } __global__ void downsweep_parallel(int n, int *data, int d) { - int int_2dp1 = (int)powf(2, d + 1); - int int_2d = (int)powf(2, d); - int index = (blockDim.x * blockIdx.x + threadIdx.x)*int_2dp1; + int new_d = 1<<(d + 1); + int index = (blockDim.x * blockIdx.x + threadIdx.x)*new_d; if (index >= n) return; - int t = data[index + int_2d - 1]; - data[index + int_2d - 1] = data[index + int_2dp1 - 1]; - data[index + (int)int_2dp1 - 1] += t; + int t = data[index + (new_d>>1) - 1]; + data[index + (new_d>>1) - 1] = data[index + new_d - 1]; + data[index + new_d - 1] += t; } /** * Performs prefix-sum (aka scan) on idata, storing the result into odata. @@ -39,16 +40,16 @@ namespace StreamCompaction { // allocate pointers to memory and copy data over int *dev_odata; int blocks = 0; - int closest_pow2 = pow(2, ilog2ceil(n)); + int closest_pow2 = 1<>> (closest_pow2, dev_odata, d); checkCUDAErrorWithLine("reduce phase failed!"); } @@ -56,7 +57,7 @@ namespace StreamCompaction { // zero last value cudaMemset(dev_odata + (closest_pow2 - 1), 0, 1 * sizeof(int)); for (int d = ceil(log2(closest_pow2) - 1); d >= 0; d--) { - blocks = ceil((pow(2, ceil(log2(closest_pow2 / pow(2, d + 1)))) + block_size - 1) / block_size); + blocks = ceil((closest_pow2 / (1 << (d + 1)) + block_size - 1) / block_size); downsweep_parallel <<>> (closest_pow2, dev_odata, d); checkCUDAErrorWithLine("downsweep phase failed!"); } @@ -66,40 +67,29 @@ namespace StreamCompaction { timer().endGpuTimer(); } + /*Copy of scan but only works with cuda pointers*/ void dev_scan(int n, int *dev_odata) { // allocate pointers to memory and copy data over - int blocks; + int blocks = 0; + int closest_pow2 = 1 << ilog2ceil(n); // reduce phase - for (int d = 0; d <= ilog2ceil(n) - 2; d++) { + // so we dont need to do the last round of computation because we zero it anyway + for (int d = 0; d <= ilog2ceil(closest_pow2) - 2; d++) { // compute number of threads to spawn - blocks = ceil((pow(2, ceil(log2(n / pow(2, d + 1)))) + block_size - 1) / block_size); - reduce_parallel << > > (n, dev_odata, d); + blocks = (closest_pow2 / (1 << (d + 1)) + block_size - 1) / block_size; + reduce_parallel << > > (closest_pow2, dev_odata, d); checkCUDAErrorWithLine("reduce phase failed!"); } // down-sweep phase // zero last value - cudaMemset(dev_odata + (n - 1), 0, 1 * sizeof(int)); - for (int d = ceil(log2(n) - 1); d >= 0; d--) { - blocks = ceil((pow(2, ceil(log2(n / pow(2, d + 1)))) + block_size - 1) / block_size); - downsweep_parallel << > > (n, dev_odata, d); + cudaMemset(dev_odata + (closest_pow2 - 1), 0, 1 * sizeof(int)); + for (int d = ceil(log2(closest_pow2) - 1); d >= 0; d--) { + blocks = (closest_pow2 / (1 << (d + 1)) + block_size - 1) / block_size; + downsweep_parallel << > > (closest_pow2, dev_odata, d); checkCUDAErrorWithLine("downsweep phase failed!"); } } - __global__ void mask_gen(int n, const int *data, int *mask) { - int index = (blockDim.x * blockIdx.x + threadIdx.x); - if (index >= n) - return; - mask[index] = (data[index] != 0) ? 1 : 0; - } - - __global__ void scatter(int n, int* dev_mask, int *dev_data, int *dev_odata) { - int index = (blockDim.x * blockIdx.x + threadIdx.x); - if (index >= n) - return; - if (dev_data[index] != 0) - dev_odata[dev_mask[index] + 1] = dev_data[index]; - } /** * Performs stream compaction on idata, storing the result into odata. * All zeroes are discarded. @@ -111,30 +101,35 @@ namespace StreamCompaction { */ int compact(int n, int *odata, const int *idata) { timer().startGpuTimer(); - int closest_pow2 = pow(2, ilog2ceil(n)); - int *dev_idata, *dev_odata, *dev_mask; + int closest_pow2 = 1<>> (n, dev_idata, dev_mask); + Common::kernMapToBoolean <<> > (n, dev_mask, dev_idata); checkCUDAErrorWithLine("mask gen failed!"); // scan the mask array (can be done in parallel by using a balanced binary tree) - dev_scan(closest_pow2, dev_mask); + cudaMemcpy(dev_indices, dev_mask, closest_pow2 * sizeof(int), cudaMemcpyDeviceToDevice); + dev_scan(closest_pow2, dev_indices); checkCUDAErrorWithLine("dev scan failed!"); - // Scatter array (go to each position and copy the value) (super easy to parallelize) - scatter << > > (n, dev_mask, dev_idata, dev_odata); + // Scatter array (go to each position and copy the value) + Common::kernScatter<<> > (closest_pow2, dev_odata, dev_idata, dev_mask, dev_indices); + checkCUDAErrorWithLine("scatter failed!"); //read data back - cudaMemcpy(odata, dev_mask, n * sizeof(int), cudaMemcpyDeviceToHost); - int res = odata[n - 1]; + int res; + cudaMemcpy(&res, dev_indices + n - 1, sizeof(int), cudaMemcpyDeviceToHost); + res = idata[n - 1] ? res + 1 : res; cudaMemcpy(odata, dev_odata, n * sizeof(int), cudaMemcpyDeviceToHost); cudaFree(dev_odata); cudaFree(dev_idata); cudaFree(dev_mask); + cudaFree(dev_indices); timer().endGpuTimer(); return res; } diff --git a/Project2-Stream-Compaction/stream_compaction/thrust.cu b/Project2-Stream-Compaction/stream_compaction/thrust.cu index 1def45e..471b39f 100644 --- a/Project2-Stream-Compaction/stream_compaction/thrust.cu +++ b/Project2-Stream-Compaction/stream_compaction/thrust.cu @@ -19,9 +19,15 @@ namespace StreamCompaction { */ void scan(int n, int *odata, const int *idata) { timer().startGpuTimer(); - // TODO use `thrust::exclusive_scan` - // example: for device_vectors dv_in and dv_out: - // thrust::exclusive_scan(dv_in.begin(), dv_in.end(), dv_out.begin()); + int *dev_odata, *dev_idata; + cudaMalloc((void**)&dev_odata, n * sizeof(int)); + cudaMalloc((void**)&dev_idata, n * sizeof(int)); + cudaMemcpy(dev_idata, idata, n * sizeof(int), cudaMemcpyHostToDevice); + thrust::device_ptr dv_in(dev_idata); + thrust::device_ptr dv_out(dev_odata); + thrust::exclusive_scan(dv_in, dv_in + n, dv_out); + cudaMemcpy(odata, dev_odata, sizeof(int) * n, cudaMemcpyDeviceToHost); + cudaFree(dev_odata); timer().endGpuTimer(); } } From 58e386e9af256900d8677efd123201d98147898a Mon Sep 17 00:00:00 2001 From: Vaibhav Arcot Date: Fri, 13 Sep 2019 00:22:44 -0400 Subject: [PATCH 04/34] Finished shared memory scan and by extension speedup code enough to beat cpu (if we exclude time to cpoy data over) --- Project2-Stream-Compaction/src/main.cpp | 68 +++++---- .../stream_compaction/efficient.cu | 130 +++++++++++++++++- .../stream_compaction/efficient.h | 5 + .../stream_compaction/naive.cu | 2 +- 4 files changed, 174 insertions(+), 31 deletions(-) diff --git a/Project2-Stream-Compaction/src/main.cpp b/Project2-Stream-Compaction/src/main.cpp index 85a51d1..a5c6d24 100644 --- a/Project2-Stream-Compaction/src/main.cpp +++ b/Project2-Stream-Compaction/src/main.cpp @@ -13,7 +13,7 @@ #include #include "testing_helpers.hpp" -const int SIZE = 1 << 20; // feel free to change the size of array +const int SIZE = 1 << 25; // feel free to change the size of array const int NPOT = SIZE - 3; // Non-Power-Of-Two int *a = new int[SIZE]; int *b = new int[SIZE]; @@ -47,12 +47,12 @@ int main(int argc, char* argv[]) { printArray(NPOT, b, true); printCmpResult(NPOT, b, c); - zeroArray(SIZE, c); - printDesc("naive scan, power-of-two"); - StreamCompaction::Naive::scan(SIZE, c, a); - printElapsedTime(StreamCompaction::Naive::timer().getGpuElapsedTimeForPreviousOperation(), "(CUDA Measured)"); - //printArray(SIZE, c, true); - printCmpResult(SIZE, b, c); + //zeroArray(SIZE, c); + //printDesc("naive scan, power-of-two"); + //StreamCompaction::Naive::scan(SIZE, c, a); + //printElapsedTime(StreamCompaction::Naive::timer().getGpuElapsedTimeForPreviousOperation(), "(CUDA Measured)"); + ////printArray(SIZE, c, true); + //printCmpResult(SIZE, b, c); /* For bug-finding only: Array of 1s to help find bugs in stream compaction or scan onesArray(SIZE, c); @@ -60,26 +60,40 @@ int main(int argc, char* argv[]) { StreamCompaction::Naive::scan(SIZE, c, a); printArray(SIZE, c, true); */ - zeroArray(SIZE, c); - printDesc("naive scan, non-power-of-two"); - StreamCompaction::Naive::scan(NPOT, c, a); - printElapsedTime(StreamCompaction::Naive::timer().getGpuElapsedTimeForPreviousOperation(), "(CUDA Measured)"); - //printArray(SIZE, c, true); - printCmpResult(NPOT, b, c); - - zeroArray(SIZE, c); - printDesc("work-efficient scan, power-of-two"); - StreamCompaction::Efficient::scan(SIZE, c, a); - printElapsedTime(StreamCompaction::Efficient::timer().getGpuElapsedTimeForPreviousOperation(), "(CUDA Measured)"); - //printArray(SIZE, c, true); - printCmpResult(SIZE, b, c); - - zeroArray(SIZE, c); - printDesc("work-efficient scan, non-power-of-two"); - StreamCompaction::Efficient::scan(NPOT, c, a); - printElapsedTime(StreamCompaction::Efficient::timer().getGpuElapsedTimeForPreviousOperation(), "(CUDA Measured)"); - printArray(NPOT, c, true); - printCmpResult(NPOT, b, c); + //zeroArray(SIZE, c); + //printDesc("naive scan, non-power-of-two"); + //StreamCompaction::Naive::scan(NPOT, c, a); + //printElapsedTime(StreamCompaction::Naive::timer().getGpuElapsedTimeForPreviousOperation(), "(CUDA Measured)"); + ////printArray(SIZE, c, true); + //printCmpResult(NPOT, b, c); + + //zeroArray(SIZE, c); + //printDesc("work-efficient scan, power-of-two"); + //StreamCompaction::Efficient::scan(SIZE, c, a); + //printElapsedTime(StreamCompaction::Efficient::timer().getGpuElapsedTimeForPreviousOperation(), "(CUDA Measured)"); + ////printArray(SIZE, c, true); + //printCmpResult(SIZE, b, c); + + //zeroArray(SIZE, c); + //printDesc("work-efficient scan, non-power-of-two"); + //StreamCompaction::Efficient::scan(NPOT, c, a); + //printElapsedTime(StreamCompaction::Efficient::timer().getGpuElapsedTimeForPreviousOperation(), "(CUDA Measured)"); + //// printArray(NPOT, c, true); + //printCmpResult(NPOT, b, c); + + zeroArray(SIZE, c); + printDesc("Shared memory scan, power-of-two"); + StreamCompaction::SharedMemory::scan(SIZE, c, a); + printElapsedTime(StreamCompaction::SharedMemory::timer().getGpuElapsedTimeForPreviousOperation(), "(CUDA Measured)"); + //printArray(SIZE, c, true); + printCmpResult(SIZE, b, c); + + zeroArray(SIZE, c); + printDesc("Shared memory scan, non power-of-two"); + StreamCompaction::SharedMemory::scan(NPOT, c, a); + printElapsedTime(StreamCompaction::SharedMemory::timer().getGpuElapsedTimeForPreviousOperation(), "(CUDA Measured)"); + //printArray(SIZE, c, true); + printCmpResult(NPOT, b, c); zeroArray(SIZE, c); printDesc("thrust scan, power-of-two"); diff --git a/Project2-Stream-Compaction/stream_compaction/efficient.cu b/Project2-Stream-Compaction/stream_compaction/efficient.cu index 5ff2194..82a4d95 100644 --- a/Project2-Stream-Compaction/stream_compaction/efficient.cu +++ b/Project2-Stream-Compaction/stream_compaction/efficient.cu @@ -3,12 +3,15 @@ #include "common.h" #include "efficient.h" #include +#include #define checkCUDAErrorWithLine(msg) checkCUDAError(msg, __LINE__) + namespace StreamCompaction { + #define block_size 256 + using StreamCompaction::Common::PerformanceTimer; + namespace Efficient { - int block_size = 128; - using StreamCompaction::Common::PerformanceTimer; PerformanceTimer& timer() { static PerformanceTimer timer; @@ -43,7 +46,7 @@ namespace StreamCompaction { int closest_pow2 = 1<> NUM_BANKS + (n) >> (2 * LOG_NUM_BANKS)) + __global__ void dev_scan(int n, int *dev_odata, int *dev_idata, int *dev_block_sum) + { + /* Extriemly heavly based on https://developer.nvidia.com/gpugems/GPUGems3/gpugems3_ch39.html + Main change is to use block_size instead of n and then put the sums of each block into a new array and scaning the array + */ + // Declare Share Memory + __shared__ int temp[block_size + NUM_BANKS]; + int thid = threadIdx.x; + int bid = blockIdx.x; + int scan_offset = bid * block_size; + int offset = 1; // to make this an exclusive scan + int ai = thid<<1; + int bi = ai + 1; + int bankOffsetA = CONFLICT_FREE_OFFSET(ai); + int bankOffsetB = CONFLICT_FREE_OFFSET(bi); + temp[ai + bankOffsetA] = dev_idata[ai + scan_offset]; + temp[bi + bankOffsetB] = dev_idata[bi + scan_offset]; + for (int d = block_size >> 1; d > 0; d >>= 1) // build sum in place up the tree + { + __syncthreads(); + if (thid < d) + { + int ai = offset * ((thid<<1) + 1) - 1; + int bi = offset * ((thid << 1) + 2) - 1; + ai += CONFLICT_FREE_OFFSET(ai); + bi += CONFLICT_FREE_OFFSET(bi); + temp[bi] += temp[ai]; + } + offset<<=1; + } + __syncthreads(); + if (thid == 0) { + // place final sums of each block into extra array + dev_block_sum[bid] = temp[block_size - 1 + CONFLICT_FREE_OFFSET(block_size - 1)]; + // zero last x cells because we are going to shift them when we do the downsweep + temp[block_size - 1 + CONFLICT_FREE_OFFSET(block_size - 1)] = 0; + } + // downsweep + for (int d = 1; d < block_size; d<<=1) // traverse down tree & build scan + { + offset >>= 1; + __syncthreads(); + if (thid < d) + { + int ai = offset * ((thid << 1) + 1) - 1; + int bi = offset * ((thid << 1) + 2) - 1; + ai += CONFLICT_FREE_OFFSET(ai); + bi += CONFLICT_FREE_OFFSET(bi); + float t = temp[ai]; + temp[ai] = temp[bi]; + temp[bi] += t; + } + } + __syncthreads(); + dev_odata[ai + scan_offset] = temp[ai + bankOffsetA]; + dev_odata[bi + scan_offset] = temp[bi + bankOffsetB]; + } + __global__ void add_offset(int n, int *data, int *dev_block_offset) { + int bid = blockIdx.x; + int index = blockDim.x * bid + threadIdx.x; + if (index >= n) + return; + // add value to current section + if (bid != 0) // to save a bunch of useless reads and write + data[index] += dev_block_offset[bid]; + } + void scan(int n, int *odata, int *idata) { + timer().startGpuTimer(); + // allocate pointers to memory and copy data over + int *dev_odata, *dev_idata, *dev_block_sum, *dev_block_offset; + int *block_sum, *block_offset; + int closest_pow2 = 1 << ilog2ceil(n); + int blocks = ceil((closest_pow2 + block_size - 1) / block_size); + // allocate buffers + cudaMalloc((void**)&dev_odata, closest_pow2 * sizeof(int)); + cudaMalloc((void**)&dev_idata, closest_pow2 * sizeof(int)); + // allocate block global buffers + cudaMalloc((void**)&dev_block_sum, blocks * sizeof(int)); // each block gets 1 number to fill in + cudaMalloc((void**)&dev_block_offset, blocks * sizeof(int)); + // cpu scan buffers + block_sum = new int[blocks](); + block_offset = new int[blocks](); + checkCUDAErrorWithLine("malloc failed!"); + // copy over raw data + cudaMemcpy(dev_idata, idata, n * sizeof(int), cudaMemcpyHostToDevice); + checkCUDAErrorWithLine("memcpy failed!"); + // large prescan, pre alloc shared memory + dev_scan<<> 1)>>>(closest_pow2, dev_odata, dev_idata, dev_block_sum); + checkCUDAErrorWithLine("prescan fn failed!"); + // cpu scan the remaining blocks, because otherwise it could become recursive for large numbers + cudaMemcpy(block_sum, dev_block_sum, blocks * sizeof(int), cudaMemcpyDeviceToHost); + checkCUDAErrorWithLine("memcpy to cpu failed!"); + StreamCompaction::CPU::scan(blocks, block_offset, block_sum); + // copy data back over to cuda + cudaMemcpy(dev_block_offset, block_offset, blocks * sizeof(int), cudaMemcpyHostToDevice); + checkCUDAErrorWithLine("memcpy from cpu failed!"); + // add dev_block_offset to each block + add_offset <<>> (n, dev_odata, dev_block_offset); + checkCUDAErrorWithLine("add_offset fn failed!"); + cudaMemcpy(odata, dev_odata, n * sizeof(int), cudaMemcpyDeviceToHost); + checkCUDAErrorWithLine("memcpy back failed!"); + // free memory + cudaFree(dev_odata); + cudaFree(dev_idata); + cudaFree(dev_block_sum); + cudaFree(dev_block_offset); + delete block_sum; + delete block_offset; + timer().endGpuTimer(); + } + } } diff --git a/Project2-Stream-Compaction/stream_compaction/efficient.h b/Project2-Stream-Compaction/stream_compaction/efficient.h index 803cb4f..125eb40 100644 --- a/Project2-Stream-Compaction/stream_compaction/efficient.h +++ b/Project2-Stream-Compaction/stream_compaction/efficient.h @@ -10,4 +10,9 @@ namespace StreamCompaction { int compact(int n, int *odata, const int *idata); } + namespace SharedMemory { + StreamCompaction::Common::PerformanceTimer& timer(); + + void scan(int n, int *odata, int *idata); + } } diff --git a/Project2-Stream-Compaction/stream_compaction/naive.cu b/Project2-Stream-Compaction/stream_compaction/naive.cu index 090cda8..df9dad4 100644 --- a/Project2-Stream-Compaction/stream_compaction/naive.cu +++ b/Project2-Stream-Compaction/stream_compaction/naive.cu @@ -25,7 +25,7 @@ namespace StreamCompaction { } __global__ void right_shift(int n, int *odata, const int *idata, int amount) { int index = blockDim.x * blockIdx.x + threadIdx.x; - if (index > n) + if (index >= n) return; if (index < amount) odata[index] = 0; From a1e4fc1afc815c40829a37da7006055929a3c756 Mon Sep 17 00:00:00 2001 From: Vaibhav Arcot Date: Fri, 13 Sep 2019 01:45:04 -0400 Subject: [PATCH 05/34] First version of radix sort. TODO check version --- .../build/stream_compaction/radix.cu | 61 +++++++++++++++++++ .../stream_compaction/CMakeLists.txt | 2 + .../stream_compaction/efficient.cu | 36 +++++++++++ .../stream_compaction/efficient.h | 1 + 4 files changed, 100 insertions(+) create mode 100644 Project2-Stream-Compaction/build/stream_compaction/radix.cu diff --git a/Project2-Stream-Compaction/build/stream_compaction/radix.cu b/Project2-Stream-Compaction/build/stream_compaction/radix.cu new file mode 100644 index 0000000..2148a44 --- /dev/null +++ b/Project2-Stream-Compaction/build/stream_compaction/radix.cu @@ -0,0 +1,61 @@ +#include +#include +#include "radix.h" +#include "stream_compaction/efficient.h" +#include "common.h" + + +namespace Sorting { + namespace Radix { + #define block_size 128 + __global__ void mask_generation(int n, int *dev_mask, int *dev_idata, int bitmask) { + int index = blockDim.x * blockIdx.x + threadIdx.x; + if (index >= n) + return; + dev_mask[index] = !((bool)(dev_idata[index] & bitmask)); + } + __global__ void true_index_generation(int n, int *dev_t, int *dev_f, int total_falses) { + int index = blockDim.x * blockIdx.x + threadIdx.x; + if (index >= n) + return; + dev_t[index] = index - dev_f[index] + total_falses; + } + __global__ void reshuffle_mask(int n, int *dev_odata, int *dev_idata, int *dev_t, int *dev_f, int mask) { + int index = blockDim.x * blockIdx.x + threadIdx.x; + if (index >= n) + return; + int data = dev_idata[index]; + if ((bool)(data & mask)) + dev_odata[dev_t[index]] = data; + else + dev_odata[dev_f[index]] = data; + } + void sort(int n, int *odata, int *idata) { + int loop_count = std::numeric_limits::digits; + int mask = 1, total_falses, tmp; + int blocks = ceil((n + block_size - 1) / block_size); + int *dev_data, *dev_f, *dev_t, *dev_data2; + int *dev_mask; + cudaMalloc((void**)dev_data, n*sizeof(int)); + cudaMalloc((void**)dev_data2, n * sizeof(int)); + cudaMalloc((void**)dev_mask, n * sizeof(int)); + cudaMalloc((void**)dev_f, n * sizeof(int)); + // copy over idata + cudaMemcpy(dev_data, idata, n * sizeof(int), cudaMemcpyHostToDevice); + for (int i = 0; i < loop_count; i++, mask <<= 1) { + mask_generation <<>> (n, dev_mask, dev_data, mask); + // scan to get false position indices + StreamCompaction::SharedMemory::dev_scan(n, dev_f, dev_mask); + cudaMemcpy(&total_falses, dev_f + n - 1, sizeof(int), cudaMemcpyDeviceToHost); + cudaMemcpy(&tmp, dev_mask + n - 1, sizeof(int), cudaMemcpyDeviceToHost); + total_falses += tmp; + // compute true position indices + true_index_generation <<>> (n, dev_t, dev_f, total_falses); + // reshuffle data using correct positions + reshuffle_mask << > > (n, dev_data2, dev_data, dev_t, dev_f, mask); + // copy data2 over to data + cudaMemcpy(dev_data, dev_data2, n * sizeof(int), cudaMemcpyDeviceToDevice); + } + } + } +} \ No newline at end of file diff --git a/Project2-Stream-Compaction/stream_compaction/CMakeLists.txt b/Project2-Stream-Compaction/stream_compaction/CMakeLists.txt index e31ca3c..f73d90d 100644 --- a/Project2-Stream-Compaction/stream_compaction/CMakeLists.txt +++ b/Project2-Stream-Compaction/stream_compaction/CMakeLists.txt @@ -9,6 +9,8 @@ set(SOURCE_FILES "efficient.cu" "thrust.h" "thrust.cu" + "radix.h" + "radix.cu" ) cuda_add_library(stream_compaction diff --git a/Project2-Stream-Compaction/stream_compaction/efficient.cu b/Project2-Stream-Compaction/stream_compaction/efficient.cu index 82a4d95..d33099e 100644 --- a/Project2-Stream-Compaction/stream_compaction/efficient.cu +++ b/Project2-Stream-Compaction/stream_compaction/efficient.cu @@ -257,5 +257,41 @@ namespace StreamCompaction { delete block_offset; timer().endGpuTimer(); } + void dev_scan(int n, int *dev_odata, int *dev_idata) { + timer().startGpuTimer(); + // allocate pointers to memory and copy data over + int *dev_block_sum, *dev_block_offset; + int *block_sum, *block_offset; + int closest_pow2 = 1 << ilog2ceil(n); + int blocks = ceil((closest_pow2 + block_size - 1) / block_size); + // allocate buffers + // allocate block global buffers + cudaMalloc((void**)&dev_block_sum, blocks * sizeof(int)); // each block gets 1 number to fill in + cudaMalloc((void**)&dev_block_offset, blocks * sizeof(int)); + // cpu scan buffers + block_sum = new int[blocks](); + block_offset = new int[blocks](); + checkCUDAErrorWithLine("malloc failed!"); + // copy over raw data + // large prescan, pre alloc shared memory + dev_scan << > 1) >> > (n, dev_odata, dev_idata, dev_block_sum); //todo maybe change back n to closest_pow2 + checkCUDAErrorWithLine("prescan fn failed!"); + // cpu scan the remaining blocks, because otherwise it could become recursive for large numbers + cudaMemcpy(block_sum, dev_block_sum, blocks * sizeof(int), cudaMemcpyDeviceToHost); + checkCUDAErrorWithLine("memcpy to cpu failed!"); + StreamCompaction::CPU::scan(blocks, block_offset, block_sum); + // copy data back over to cuda + cudaMemcpy(dev_block_offset, block_offset, blocks * sizeof(int), cudaMemcpyHostToDevice); + checkCUDAErrorWithLine("memcpy from cpu failed!"); + // add dev_block_offset to each block + add_offset << > > (n, dev_odata, dev_block_offset); + checkCUDAErrorWithLine("add_offset fn failed!"); + // free memory + cudaFree(dev_block_sum); + cudaFree(dev_block_offset); + delete block_sum; + delete block_offset; + timer().endGpuTimer(); + } } } diff --git a/Project2-Stream-Compaction/stream_compaction/efficient.h b/Project2-Stream-Compaction/stream_compaction/efficient.h index 125eb40..049eff0 100644 --- a/Project2-Stream-Compaction/stream_compaction/efficient.h +++ b/Project2-Stream-Compaction/stream_compaction/efficient.h @@ -14,5 +14,6 @@ namespace StreamCompaction { StreamCompaction::Common::PerformanceTimer& timer(); void scan(int n, int *odata, int *idata); + void dev_scan(int n, int *odata, int *idata); } } From a50718eec0a2b3ac85f189ec9ad8d2b541724671 Mon Sep 17 00:00:00 2001 From: Vaibhav Arcot Date: Fri, 13 Sep 2019 01:51:37 -0400 Subject: [PATCH 06/34] moved radix sort to src file --- .../{build => }/stream_compaction/radix.cu | 0 Project2-Stream-Compaction/stream_compaction/radix.h | 9 +++++++++ 2 files changed, 9 insertions(+) rename Project2-Stream-Compaction/{build => }/stream_compaction/radix.cu (100%) create mode 100644 Project2-Stream-Compaction/stream_compaction/radix.h diff --git a/Project2-Stream-Compaction/build/stream_compaction/radix.cu b/Project2-Stream-Compaction/stream_compaction/radix.cu similarity index 100% rename from Project2-Stream-Compaction/build/stream_compaction/radix.cu rename to Project2-Stream-Compaction/stream_compaction/radix.cu diff --git a/Project2-Stream-Compaction/stream_compaction/radix.h b/Project2-Stream-Compaction/stream_compaction/radix.h new file mode 100644 index 0000000..37cc9cf --- /dev/null +++ b/Project2-Stream-Compaction/stream_compaction/radix.h @@ -0,0 +1,9 @@ +#pragma once + +#include "common.h" + +namespace Sorting { + namespace Radix { + void sort(int n, int *odata, int *idata); + } +} From 5754c223b9500322d7b85109dd72ec5b87245cdf Mon Sep 17 00:00:00 2001 From: Vaibhav Arcot Date: Fri, 13 Sep 2019 02:02:19 -0400 Subject: [PATCH 07/34] Working version of radix sort. TODO implement checks on output --- Project2-Stream-Compaction/src/main.cpp | 74 ++++++++++--------- .../stream_compaction/radix.cu | 34 +++++++-- .../stream_compaction/radix.h | 2 +- 3 files changed, 67 insertions(+), 43 deletions(-) diff --git a/Project2-Stream-Compaction/src/main.cpp b/Project2-Stream-Compaction/src/main.cpp index a5c6d24..af87bd6 100644 --- a/Project2-Stream-Compaction/src/main.cpp +++ b/Project2-Stream-Compaction/src/main.cpp @@ -11,9 +11,10 @@ #include #include #include +#include #include "testing_helpers.hpp" - -const int SIZE = 1 << 25; // feel free to change the size of array +#define max_value 50 +const int SIZE = 1 << 4; // feel free to change the size of array const int NPOT = SIZE - 3; // Non-Power-Of-Two int *a = new int[SIZE]; int *b = new int[SIZE]; @@ -27,7 +28,7 @@ int main(int argc, char* argv[]) { printf("** SCAN TESTS **\n"); printf("****************\n"); - genArray(SIZE - 1, a, 50); // Leave a 0 at the end to test that edge case + genArray(SIZE - 1, a, max_value); // Leave a 0 at the end to test that edge case a[SIZE - 1] = 0; printArray(SIZE, a, true); @@ -47,39 +48,33 @@ int main(int argc, char* argv[]) { printArray(NPOT, b, true); printCmpResult(NPOT, b, c); - //zeroArray(SIZE, c); - //printDesc("naive scan, power-of-two"); - //StreamCompaction::Naive::scan(SIZE, c, a); - //printElapsedTime(StreamCompaction::Naive::timer().getGpuElapsedTimeForPreviousOperation(), "(CUDA Measured)"); - ////printArray(SIZE, c, true); - //printCmpResult(SIZE, b, c); - - /* For bug-finding only: Array of 1s to help find bugs in stream compaction or scan - onesArray(SIZE, c); - printDesc("1s array for finding bugs"); - StreamCompaction::Naive::scan(SIZE, c, a); - printArray(SIZE, c, true); */ - - //zeroArray(SIZE, c); - //printDesc("naive scan, non-power-of-two"); - //StreamCompaction::Naive::scan(NPOT, c, a); - //printElapsedTime(StreamCompaction::Naive::timer().getGpuElapsedTimeForPreviousOperation(), "(CUDA Measured)"); - ////printArray(SIZE, c, true); - //printCmpResult(NPOT, b, c); - - //zeroArray(SIZE, c); - //printDesc("work-efficient scan, power-of-two"); - //StreamCompaction::Efficient::scan(SIZE, c, a); - //printElapsedTime(StreamCompaction::Efficient::timer().getGpuElapsedTimeForPreviousOperation(), "(CUDA Measured)"); - ////printArray(SIZE, c, true); - //printCmpResult(SIZE, b, c); - - //zeroArray(SIZE, c); - //printDesc("work-efficient scan, non-power-of-two"); - //StreamCompaction::Efficient::scan(NPOT, c, a); - //printElapsedTime(StreamCompaction::Efficient::timer().getGpuElapsedTimeForPreviousOperation(), "(CUDA Measured)"); - //// printArray(NPOT, c, true); - //printCmpResult(NPOT, b, c); + zeroArray(SIZE, c); + printDesc("naive scan, power-of-two"); + StreamCompaction::Naive::scan(SIZE, c, a); + printElapsedTime(StreamCompaction::Naive::timer().getGpuElapsedTimeForPreviousOperation(), "(CUDA Measured)"); + //printArray(SIZE, c, true); + printCmpResult(SIZE, b, c); + + zeroArray(SIZE, c); + printDesc("naive scan, non-power-of-two"); + StreamCompaction::Naive::scan(NPOT, c, a); + printElapsedTime(StreamCompaction::Naive::timer().getGpuElapsedTimeForPreviousOperation(), "(CUDA Measured)"); + //printArray(SIZE, c, true); + printCmpResult(NPOT, b, c); + + zeroArray(SIZE, c); + printDesc("work-efficient scan, power-of-two"); + StreamCompaction::Efficient::scan(SIZE, c, a); + printElapsedTime(StreamCompaction::Efficient::timer().getGpuElapsedTimeForPreviousOperation(), "(CUDA Measured)"); + //printArray(SIZE, c, true); + printCmpResult(SIZE, b, c); + + zeroArray(SIZE, c); + printDesc("work-efficient scan, non-power-of-two"); + StreamCompaction::Efficient::scan(NPOT, c, a); + printElapsedTime(StreamCompaction::Efficient::timer().getGpuElapsedTimeForPreviousOperation(), "(CUDA Measured)"); + // printArray(NPOT, c, true); + printCmpResult(NPOT, b, c); zeroArray(SIZE, c); printDesc("Shared memory scan, power-of-two"); @@ -161,6 +156,13 @@ int main(int argc, char* argv[]) { //printArray(count, c, true); printCmpLenResult(count, expectedNPOT, b, c); + // radix sort tests + zeroArray(SIZE, c); + printDesc("radix sort, power-of-two"); + Sorting::Radix::sort(SIZE, c, a, max_value); + printArray(SIZE, c, true); + printElapsedTime(StreamCompaction::Thrust::timer().getGpuElapsedTimeForPreviousOperation(), "(CUDA Measured)"); + system("pause"); // stop Win32 console from closing on exit delete[] a; delete[] b; diff --git a/Project2-Stream-Compaction/stream_compaction/radix.cu b/Project2-Stream-Compaction/stream_compaction/radix.cu index 2148a44..579c9a7 100644 --- a/Project2-Stream-Compaction/stream_compaction/radix.cu +++ b/Project2-Stream-Compaction/stream_compaction/radix.cu @@ -30,16 +30,30 @@ namespace Sorting { else dev_odata[dev_f[index]] = data; } - void sort(int n, int *odata, int *idata) { - int loop_count = std::numeric_limits::digits; + int countBits(int n) + { + int count = 0; + // While loop will run until we get n = 0 + while (n) + { + count++; + // We are shifting n to right by 1 + // place as explained above + n = n >> 1; + } + return count; + } + void sort(int n, int *odata, int *idata, int max_value) { + int loop_count = countBits(max_value);//std::numeric_limits::digits; int mask = 1, total_falses, tmp; int blocks = ceil((n + block_size - 1) / block_size); int *dev_data, *dev_f, *dev_t, *dev_data2; int *dev_mask; - cudaMalloc((void**)dev_data, n*sizeof(int)); - cudaMalloc((void**)dev_data2, n * sizeof(int)); - cudaMalloc((void**)dev_mask, n * sizeof(int)); - cudaMalloc((void**)dev_f, n * sizeof(int)); + cudaMalloc((void**)&dev_data, n*sizeof(int)); + cudaMalloc((void**)&dev_data2, n * sizeof(int)); + cudaMalloc((void**)&dev_mask, n * sizeof(int)); + cudaMalloc((void**)&dev_f, n * sizeof(int)); + cudaMalloc((void**)&dev_t, n * sizeof(int)); // copy over idata cudaMemcpy(dev_data, idata, n * sizeof(int), cudaMemcpyHostToDevice); for (int i = 0; i < loop_count; i++, mask <<= 1) { @@ -56,6 +70,14 @@ namespace Sorting { // copy data2 over to data cudaMemcpy(dev_data, dev_data2, n * sizeof(int), cudaMemcpyDeviceToDevice); } + // we are done sorting, copy back + cudaMemcpy(odata, dev_data, n * sizeof(int), cudaMemcpyDeviceToHost); + // free everything + cudaFree(dev_data); + cudaFree(dev_data2); + cudaFree(dev_mask); + cudaFree(dev_f); + cudaFree(dev_t); } } } \ No newline at end of file diff --git a/Project2-Stream-Compaction/stream_compaction/radix.h b/Project2-Stream-Compaction/stream_compaction/radix.h index 37cc9cf..d95f871 100644 --- a/Project2-Stream-Compaction/stream_compaction/radix.h +++ b/Project2-Stream-Compaction/stream_compaction/radix.h @@ -4,6 +4,6 @@ namespace Sorting { namespace Radix { - void sort(int n, int *odata, int *idata); + void sort(int n, int *odata, int *idata, int max_value); } } From 312aff026ad3f1be2ef6989874ec1b59fb3da421 Mon Sep 17 00:00:00 2001 From: Vaibhav Arcot Date: Fri, 13 Sep 2019 02:20:48 -0400 Subject: [PATCH 08/34] Finished test cases for radix sort. TODO collect data and finish readme.md for subproject 1 --- Project2-Stream-Compaction/src/main.cpp | 37 ++++++++++++++++--- .../src/testing_helpers.hpp | 1 + .../stream_compaction/cpu.cu | 4 +- .../stream_compaction/efficient.cu | 8 ++-- .../stream_compaction/radix.cu | 8 ++++ .../stream_compaction/radix.h | 1 + 6 files changed, 47 insertions(+), 12 deletions(-) diff --git a/Project2-Stream-Compaction/src/main.cpp b/Project2-Stream-Compaction/src/main.cpp index af87bd6..022fc5b 100644 --- a/Project2-Stream-Compaction/src/main.cpp +++ b/Project2-Stream-Compaction/src/main.cpp @@ -12,9 +12,12 @@ #include #include #include +#include #include "testing_helpers.hpp" -#define max_value 50 -const int SIZE = 1 << 4; // feel free to change the size of array +#define max_value_scan 50 +#define max_value_compaction 4 +#define max_value_sorting 500 +const int SIZE = 1<<15; // feel free to change the size of array const int NPOT = SIZE - 3; // Non-Power-Of-Two int *a = new int[SIZE]; int *b = new int[SIZE]; @@ -28,7 +31,7 @@ int main(int argc, char* argv[]) { printf("** SCAN TESTS **\n"); printf("****************\n"); - genArray(SIZE - 1, a, max_value); // Leave a 0 at the end to test that edge case + genArray(SIZE - 1, a, 50); // Leave a 0 at the end to test that edge case a[SIZE - 1] = 0; printArray(SIZE, a, true); @@ -111,7 +114,7 @@ int main(int argc, char* argv[]) { // Compaction tests - genArray(SIZE - 1, a, 4); // Leave a 0 at the end to test that edge case + genArray(SIZE - 1, a, max_value_compaction); // Leave a 0 at the end to test that edge case a[SIZE - 1] = 0; printArray(SIZE, a, true); @@ -156,15 +159,37 @@ int main(int argc, char* argv[]) { //printArray(count, c, true); printCmpLenResult(count, expectedNPOT, b, c); + // radix sort tests + genArray(SIZE - 1, a, max_value_sorting); // Leave a 0 at the end to test that edge case + a[SIZE - 1] = 0; + printArray(SIZE, a, true); + // generate 2 ground truths using thrust sort (one for powers of 2 and the other one for non powers of 2) + int *gt_pot = new int[SIZE](); + std::memcpy(gt_pot, a, SIZE * sizeof(int)); + thrust::sort(gt_pot, gt_pot + SIZE); + int *gt_npot = new int[NPOT](); + std::memcpy(gt_npot, a, NPOT * sizeof(int)); + thrust::sort(gt_npot, gt_npot + NPOT); + zeroArray(SIZE, c); printDesc("radix sort, power-of-two"); - Sorting::Radix::sort(SIZE, c, a, max_value); + Sorting::Radix::sort(SIZE, c, a, max_value_sorting); printArray(SIZE, c, true); - printElapsedTime(StreamCompaction::Thrust::timer().getGpuElapsedTimeForPreviousOperation(), "(CUDA Measured)"); + printCmpResult(SIZE, c, gt_pot); + printElapsedTime(Sorting::Radix::timer().getGpuElapsedTimeForPreviousOperation(), "(CUDA Measured)"); + + zeroArray(SIZE, c); + printDesc("radix sort, power-of-two"); + Sorting::Radix::sort(NPOT, c, a, max_value_sorting); + printArray(NPOT, c, true); + printCmpResult(NPOT, c, gt_npot); + printElapsedTime(Sorting::Radix::timer().getGpuElapsedTimeForPreviousOperation(), "(CUDA Measured)"); system("pause"); // stop Win32 console from closing on exit delete[] a; delete[] b; delete[] c; + delete[] gt_pot; + delete[] gt_npot; } diff --git a/Project2-Stream-Compaction/src/testing_helpers.hpp b/Project2-Stream-Compaction/src/testing_helpers.hpp index b28a8d2..33fade8 100644 --- a/Project2-Stream-Compaction/src/testing_helpers.hpp +++ b/Project2-Stream-Compaction/src/testing_helpers.hpp @@ -37,6 +37,7 @@ void printCmpLenResult(int n, int expN, T *a, T *b) { cmpArrays(n, a, b) ? "FAIL VALUE" : "passed"); } + void zeroArray(int n, int *a) { for (int i = 0; i < n; i++) { a[i] = 0; diff --git a/Project2-Stream-Compaction/stream_compaction/cpu.cu b/Project2-Stream-Compaction/stream_compaction/cpu.cu index 97097f1..5fc7233 100644 --- a/Project2-Stream-Compaction/stream_compaction/cpu.cu +++ b/Project2-Stream-Compaction/stream_compaction/cpu.cu @@ -70,8 +70,8 @@ namespace StreamCompaction { odata[scan_data[i] + 1] = idata[i]; } int res = scan_data[n - 1]; - delete scan_data; - delete mask; + delete[] scan_data; + delete[] mask; timer().endCpuTimer(); return res; } diff --git a/Project2-Stream-Compaction/stream_compaction/efficient.cu b/Project2-Stream-Compaction/stream_compaction/efficient.cu index d33099e..96165d4 100644 --- a/Project2-Stream-Compaction/stream_compaction/efficient.cu +++ b/Project2-Stream-Compaction/stream_compaction/efficient.cu @@ -253,8 +253,8 @@ namespace StreamCompaction { cudaFree(dev_idata); cudaFree(dev_block_sum); cudaFree(dev_block_offset); - delete block_sum; - delete block_offset; + delete[] block_sum; + delete[] block_offset; timer().endGpuTimer(); } void dev_scan(int n, int *dev_odata, int *dev_idata) { @@ -289,8 +289,8 @@ namespace StreamCompaction { // free memory cudaFree(dev_block_sum); cudaFree(dev_block_offset); - delete block_sum; - delete block_offset; + delete[] block_sum; + delete[] block_offset; timer().endGpuTimer(); } } diff --git a/Project2-Stream-Compaction/stream_compaction/radix.cu b/Project2-Stream-Compaction/stream_compaction/radix.cu index 579c9a7..32ab8ef 100644 --- a/Project2-Stream-Compaction/stream_compaction/radix.cu +++ b/Project2-Stream-Compaction/stream_compaction/radix.cu @@ -44,6 +44,7 @@ namespace Sorting { return count; } void sort(int n, int *odata, int *idata, int max_value) { + timer().startGpuTimer(); int loop_count = countBits(max_value);//std::numeric_limits::digits; int mask = 1, total_falses, tmp; int blocks = ceil((n + block_size - 1) / block_size); @@ -78,6 +79,13 @@ namespace Sorting { cudaFree(dev_mask); cudaFree(dev_f); cudaFree(dev_t); + timer().endGpuTimer(); + } + using StreamCompaction::Common::PerformanceTimer; + PerformanceTimer& timer() + { + static PerformanceTimer timer; + return timer; } } } \ No newline at end of file diff --git a/Project2-Stream-Compaction/stream_compaction/radix.h b/Project2-Stream-Compaction/stream_compaction/radix.h index d95f871..50ea6e0 100644 --- a/Project2-Stream-Compaction/stream_compaction/radix.h +++ b/Project2-Stream-Compaction/stream_compaction/radix.h @@ -4,6 +4,7 @@ namespace Sorting { namespace Radix { + StreamCompaction::Common::PerformanceTimer& timer(); void sort(int n, int *odata, int *idata, int max_value); } } From c40fb9ecd51a5d4f8f6c9c37bd7933969220a6ae Mon Sep 17 00:00:00 2001 From: Vaibhav Arcot Date: Sat, 14 Sep 2019 15:24:59 -0400 Subject: [PATCH 09/34] Skeleton code for NN; reformatted P1; Adds data generation code (todo finish) --- Project2-Character-Recognition/CMakeLists.txt | 3 + .../character_recognition/CMakeLists.txt | 2 +- .../character_recognition/mlp.cu | 182 +++++++++++++++-- .../character_recognition/mlp.h | 31 +++ Project2-Character-Recognition/src/main.cpp | 186 +++++------------- Project2-Stream-Compaction/CMakeLists.txt | 12 ++ Project2-Stream-Compaction/src/data_gen.cpp | 71 +++++++ Project2-Stream-Compaction/src/main.cpp | 12 +- .../src/testing_helpers.hpp | 24 +-- .../stream_compaction/common.cu | 8 +- .../stream_compaction/common.h | 10 +- .../stream_compaction/cpu.cu | 20 +- .../stream_compaction/cpu.h | 6 +- .../stream_compaction/efficient.cu | 78 ++++---- .../stream_compaction/efficient.h | 8 +- .../stream_compaction/naive.cu | 16 +- .../stream_compaction/naive.h | 2 +- .../stream_compaction/radix.cu | 19 +- .../stream_compaction/radix.h | 2 +- .../stream_compaction/thrust.cu | 2 +- .../stream_compaction/thrust.h | 2 +- 21 files changed, 433 insertions(+), 263 deletions(-) create mode 100644 Project2-Stream-Compaction/src/data_gen.cpp diff --git a/Project2-Character-Recognition/CMakeLists.txt b/Project2-Character-Recognition/CMakeLists.txt index 09e9198..d1a3746 100644 --- a/Project2-Character-Recognition/CMakeLists.txt +++ b/Project2-Character-Recognition/CMakeLists.txt @@ -22,6 +22,7 @@ if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") endif() include_directories(.) +link_directories(${CUDA_TOOLKIT_ROOT_DIR}/lib/x64) add_subdirectory(character_recognition) cuda_add_executable(${CMAKE_PROJECT_NAME} @@ -32,4 +33,6 @@ cuda_add_executable(${CMAKE_PROJECT_NAME} target_link_libraries(${CMAKE_PROJECT_NAME} character_recognition ${CORELIBS} + cublas + curand ) diff --git a/Project2-Character-Recognition/character_recognition/CMakeLists.txt b/Project2-Character-Recognition/character_recognition/CMakeLists.txt index 7446175..01edd01 100644 --- a/Project2-Character-Recognition/character_recognition/CMakeLists.txt +++ b/Project2-Character-Recognition/character_recognition/CMakeLists.txt @@ -7,5 +7,5 @@ set(SOURCE_FILES cuda_add_library(character_recognition ${SOURCE_FILES} - OPTIONS -arch=sm_20 + OPTIONS -arch=sm_30 ) diff --git a/Project2-Character-Recognition/character_recognition/mlp.cu b/Project2-Character-Recognition/character_recognition/mlp.cu index 5a3ed7f..01b88d1 100644 --- a/Project2-Character-Recognition/character_recognition/mlp.cu +++ b/Project2-Character-Recognition/character_recognition/mlp.cu @@ -2,26 +2,168 @@ #include #include "common.h" #include "mlp.h" +#include +#include +#include +#include +// kernals namespace CharacterRecognition { - using Common::PerformanceTimer; - PerformanceTimer& timer() - { - static PerformanceTimer timer; - return timer; - } - - // TODO: __global__ - - /** - * Example of use case (follow how you did it in stream compaction) - */ - /*void scan(int n, int *odata, const int *idata) { - timer().startGpuTimer(); - // TODO - timer().endGpuTimer(); - } - */ - - // TODO: implement required elements for MLP sections 1 and 2 here + using Common::PerformanceTimer; + PerformanceTimer& timer() + { + static PerformanceTimer timer; + return timer; + } + + __global__ void bias_addition(int n, float *A, float *B, float *C) { + int index = threadIdx.x + (blockIdx.x * blockDim.x); + if (index >= n) + return; + C[index] = A[index] + B[index]; + } + + __global__ void relu_activation(int n, float *A, float *C) { + int index = threadIdx.x + (blockIdx.x * blockDim.x); + if (index >= n) + return; + C[index] = max(0.0f, A[index]); + } + + __global__ void softmax_activation(int n, float *A, float *C, float exp_sum) { + int index = threadIdx.x + (blockIdx.x * blockDim.x); + if (index >= n) + return; + C[index] = expf(A[index]) / exp_sum; + } + + + __global__ void scan(int n, float *data, int d) {// function to get sum (for softmax layer) + int tmp_d = 1 << (d + 1); + int index = (blockDim.x * blockIdx.x + threadIdx.x)*tmp_d; + if (index >= n) + return; + data[index + tmp_d - 1] += data[index + (tmp_d >> 1) - 1]; + } + + __global__ void exp_copy(int n, float *odata, float *idata) {// kernal to copy exp(idata[i]) to odata[i] + int index = (blockDim.x * blockIdx.x + threadIdx.x); + if (index >= n) + return; + odata[index] = expf(idata[index]); + } + + void Net::GPU_fill_rand(float *A, int size, int std) { + // Create a pseudo-random number generator + curandGenerator_t prng; + curandCreateGenerator(&prng, CURAND_RNG_PSEUDO_DEFAULT); + + // Set the seed for the random number generator using the system clock + curandSetPseudoRandomGeneratorSeed(prng, (unsigned long long) clock()); + + // Fill the array with random numbers on the device + curandGenerateNormal(prng, A, size, 0, std); + } + + + Net::Net(int n, vector layers) : input_size(n), layer_sizes(layers) { + // layers = {98, 52, 52} + layers.insert(layers.begin(), n); + float *dev_w, *dev_b, *dev_g, *dev_a; + for (int i = 0; i < layers.size() - 1; i++) { + cudaMalloc((void**)&dev_w, (layers[i] * layers[i + 1]) * sizeof(float)); + cudaMalloc((void**)&dev_b, (layers[i + 1]) * sizeof(float)); + // initilize w, b using gaussian distribution + GPU_fill_rand(dev_w, layers[i] * layers[i + 1], 2.0f / layers[i]); // henormal initilization + GPU_fill_rand(dev_b, layers[i + 1], 0); // zero initilizaton is fine for biases + // push into vector + w.push_back(dev_w); + b.push_back(dev_b); + // int results + cudaMalloc((void**)&dev_g, (layers[i + 1]) * sizeof(float)); + cudaMalloc((void**)&dev_a, (layers[i + 1]) * sizeof(float)); + g.push_back(dev_g); + a.push_back(dev_a); + } + // initilizaton cublas handle + cublasCreate(&handle); + } + + // C(m,n) = A(m,k) * B(k,n) + void Net::gpu_blas_mmul(const float *A, const float *B, float *C, const int m, const int k, const int n) { + int lda = m, ldb = k, ldc = m; + const float alf = 1; + const float bet = 0; + const float *alpha = &alf; + const float *beta = &bet; + // Do the actual multiplication + cublasSgemm(handle, CUBLAS_OP_N, CUBLAS_OP_N, m, n, k, alpha, A, lda, B, ldb, beta, C, ldc); + } + + + float* Net::forward(float *data, int n) { + float res[classes]; + assert(n == input_size); + for (int i = 0; i < layer_sizes.size(); i++) { + // clear g, a for this layer + cudaMemset(g[i], 0, layer_sizes[i] * sizeof(float)); + checkCUDAErrorWithLine("Cuda memset failed!"); + cudaMemset(a[i], 0, layer_sizes[i] * sizeof(float)); + checkCUDAErrorWithLine("Cuda memset failed!"); + // matrix multiplication + if (!i) { // first iteration, so a[i] hasn't been set yet + gpu_blas_mmul(data, w[i], g[i], 1, input_size, layer_sizes[i]); + } + else { + gpu_blas_mmul(data, a[i-1], g[i], 1, layer_sizes[i-1], layer_sizes[i]); + } + // bias addition + blocks = ceil((layer_sizes[i] + block_size - 1) / block_size); + bias_addition << > > (layer_sizes[i], g[i], b[i], g[i]); // put result back into g[i] + checkCUDAErrorWithLine("bias addition failed!"); + if (i != layer_sizes.size() - 1) { + // relu activation + relu_activation << > > (layer_sizes[i], g[i], a[i]); + checkCUDAErrorWithLine("relu failed!"); + } + else { + exp_copy << > > (layer_sizes[i], a[i], g[i]); + checkCUDAErrorWithLine("exp copy failed!"); + // modified scan to get the exponential sum of all elements (P1 of assignment used!!) + int closest_pow2 = 1 << ilog2ceil(layer_sizes[i]); + int blocks_scan; + for (int d = 0; d <= ilog2ceil(closest_pow2) - 1; d++) { + // compute number of threads to spawn + blocks = ceil((closest_pow2 / (1 << (d + 1)) + block_size - 1) / block_size); + scan<<>> (closest_pow2, a[i], d); + checkCUDAErrorWithLine("scan failed!"); + } + // softmax activation + float exp_sum; + cudaMemcpy(&exp_sum, a[i] + layer_sizes[i] - 1, sizeof(float), cudaMemcpyDeviceToHost); + checkCUDAErrorWithLine("Cuda memcpy failed!"); + softmax_activation << > > (layer_sizes[i], g[i], a[i], exp_sum); + checkCUDAErrorWithLine("softmax failed!"); + } + } + cudaMemcpy(res, a[layer_sizes.size() - 1], classes * sizeof(float), cudaMemcpyDeviceToHost); + checkCUDAErrorWithLine("Cuda res memcpy failed!"); + return res; + } + + + Net::~Net() { + // free weights and biases + for (auto x : w) + cudaFree(x); + for (auto x : b) + cudaFree(x); + // intermediate values + for (auto x : g) + cudaFree(x); + for (auto x : a) + cudaFree(x); + // clean culbas hand + cublasDestroy(handle); + } } diff --git a/Project2-Character-Recognition/character_recognition/mlp.h b/Project2-Character-Recognition/character_recognition/mlp.h index 2096228..9f73e1b 100644 --- a/Project2-Character-Recognition/character_recognition/mlp.h +++ b/Project2-Character-Recognition/character_recognition/mlp.h @@ -1,9 +1,40 @@ #pragma once #include "common.h" +#include +#include +#include +using namespace std; +#define checkCUDAErrorWithLine(msg) checkCUDAError(msg, __LINE__) + namespace CharacterRecognition { Common::PerformanceTimer& timer(); +#define classes 52 + class Net { + // cublas + cublasHandle_t handle; + vector w; + vector b; + // intermediate results + vector g; + vector a; + const static int block_size = 128; + int blocks; + int input_size, layer_count; + vector layer_sizes; + // helperfunctions for the class + // Fill the array A(nr_rows_A, nr_cols_A) with random numbers on GPU + void GPU_fill_rand(float *A, int size, int std); + // multiplication of matrices + void gpu_blas_mmul(const float *A, const float *B, float *C, const int m, const int k, const int n); + public: + Net(int n, vector layers); // creates weight matrixs + float* forward(float *data, int n); // returns class + float backprop(int *output, int* ); // returns loss + ~Net(); // to delete the weights + }; // TODO: implement required elements for MLP sections 1 and 2 here } +// From P1 of this assignment, shared memory scan (modified to use exponents of values diff --git a/Project2-Character-Recognition/src/main.cpp b/Project2-Character-Recognition/src/main.cpp index 11dd534..1b1d111 100644 --- a/Project2-Character-Recognition/src/main.cpp +++ b/Project2-Character-Recognition/src/main.cpp @@ -1,8 +1,8 @@ /** * @file main.cpp * @brief Stream compaction test program - * @authors Kai Ninomiya - * @date 2015 + * @authors Vaibhav Arcot + * @date 2019 * @copyright University of Pennsylvania */ @@ -10,143 +10,49 @@ #include #include #include "testing_helpers.hpp" - -const int SIZE = 1 << 8; // feel free to change the size of array -const int NPOT = SIZE - 3; // Non-Power-Of-Two -int *a = new int[SIZE]; -int *b = new int[SIZE]; -int *c = new int[SIZE]; - +#include +//#include +#include +//#include + +using namespace std; +//int image_read(string path) { +// cv::Mat image = cv::imread(path.c_str(), 0); +// if (!image.data) // Check for invalid input +// { +// cout << "Could not open or find the image" << std::endl; +// return -1; +// } +// // 1d array!!! +// uchar * arr = image.isContinuous() ? image.data : image.clone().data; +// uint length = image.total()*image.channels(); +// return length; +//} + +void read_directory(const std::string& name, vector& v) +{ + std::string pattern(name); + pattern.append("\\*"); + WIN32_FIND_DATA data; + HANDLE hFind; + if ((hFind = FindFirstFile(pattern.c_str(), &data)) != INVALID_HANDLE_VALUE) { + do { + // todo take only file names with bmp/img + v.push_back(data.cFileName); + } while (FindNextFile(hFind, &data) != 0); + FindClose(hFind); + } +} int main(int argc, char* argv[]) { - // Scan tests - - printf("\n"); - printf("****************\n"); - printf("** SCAN TESTS **\n"); - printf("****************\n"); - - genArray(SIZE - 1, a, 50); // Leave a 0 at the end to test that edge case - a[SIZE - 1] = 0; - printArray(SIZE, a, true); - - // initialize b using StreamCompaction::CPU::scan you implement - // We use b for further comparison. Make sure your StreamCompaction::CPU::scan is correct. - // At first all cases passed because b && c are all zeroes. - zeroArray(SIZE, b); - printDesc("cpu scan, power-of-two"); - StreamCompaction::CPU::scan(SIZE, b, a); - printElapsedTime(StreamCompaction::CPU::timer().getCpuElapsedTimeForPreviousOperation(), "(std::chrono Measured)"); - printArray(SIZE, b, true); - - zeroArray(SIZE, c); - printDesc("cpu scan, non-power-of-two"); - StreamCompaction::CPU::scan(NPOT, c, a); - printElapsedTime(StreamCompaction::CPU::timer().getCpuElapsedTimeForPreviousOperation(), "(std::chrono Measured)"); - printArray(NPOT, b, true); - printCmpResult(NPOT, b, c); - - zeroArray(SIZE, c); - printDesc("naive scan, power-of-two"); - StreamCompaction::Naive::scan(SIZE, c, a); - printElapsedTime(StreamCompaction::Naive::timer().getGpuElapsedTimeForPreviousOperation(), "(CUDA Measured)"); - //printArray(SIZE, c, true); - printCmpResult(SIZE, b, c); - - /* For bug-finding only: Array of 1s to help find bugs in stream compaction or scan - onesArray(SIZE, c); - printDesc("1s array for finding bugs"); - StreamCompaction::Naive::scan(SIZE, c, a); - printArray(SIZE, c, true); */ - - zeroArray(SIZE, c); - printDesc("naive scan, non-power-of-two"); - StreamCompaction::Naive::scan(NPOT, c, a); - printElapsedTime(StreamCompaction::Naive::timer().getGpuElapsedTimeForPreviousOperation(), "(CUDA Measured)"); - //printArray(SIZE, c, true); - printCmpResult(NPOT, b, c); - - zeroArray(SIZE, c); - printDesc("work-efficient scan, power-of-two"); - StreamCompaction::Efficient::scan(SIZE, c, a); - printElapsedTime(StreamCompaction::Efficient::timer().getGpuElapsedTimeForPreviousOperation(), "(CUDA Measured)"); - //printArray(SIZE, c, true); - printCmpResult(SIZE, b, c); - - zeroArray(SIZE, c); - printDesc("work-efficient scan, non-power-of-two"); - StreamCompaction::Efficient::scan(NPOT, c, a); - printElapsedTime(StreamCompaction::Efficient::timer().getGpuElapsedTimeForPreviousOperation(), "(CUDA Measured)"); - //printArray(NPOT, c, true); - printCmpResult(NPOT, b, c); - - zeroArray(SIZE, c); - printDesc("thrust scan, power-of-two"); - StreamCompaction::Thrust::scan(SIZE, c, a); - printElapsedTime(StreamCompaction::Thrust::timer().getGpuElapsedTimeForPreviousOperation(), "(CUDA Measured)"); - //printArray(SIZE, c, true); - printCmpResult(SIZE, b, c); - - zeroArray(SIZE, c); - printDesc("thrust scan, non-power-of-two"); - StreamCompaction::Thrust::scan(NPOT, c, a); - printElapsedTime(StreamCompaction::Thrust::timer().getGpuElapsedTimeForPreviousOperation(), "(CUDA Measured)"); - //printArray(NPOT, c, true); - printCmpResult(NPOT, b, c); - - printf("\n"); - printf("*****************************\n"); - printf("** STREAM COMPACTION TESTS **\n"); - printf("*****************************\n"); - - // Compaction tests - - genArray(SIZE - 1, a, 4); // Leave a 0 at the end to test that edge case - a[SIZE - 1] = 0; - printArray(SIZE, a, true); - - int count, expectedCount, expectedNPOT; - - // initialize b using StreamCompaction::CPU::compactWithoutScan you implement - // We use b for further comparison. Make sure your StreamCompaction::CPU::compactWithoutScan is correct. - zeroArray(SIZE, b); - printDesc("cpu compact without scan, power-of-two"); - count = StreamCompaction::CPU::compactWithoutScan(SIZE, b, a); - printElapsedTime(StreamCompaction::CPU::timer().getCpuElapsedTimeForPreviousOperation(), "(std::chrono Measured)"); - expectedCount = count; - printArray(count, b, true); - printCmpLenResult(count, expectedCount, b, b); - - zeroArray(SIZE, c); - printDesc("cpu compact without scan, non-power-of-two"); - count = StreamCompaction::CPU::compactWithoutScan(NPOT, c, a); - printElapsedTime(StreamCompaction::CPU::timer().getCpuElapsedTimeForPreviousOperation(), "(std::chrono Measured)"); - expectedNPOT = count; - printArray(count, c, true); - printCmpLenResult(count, expectedNPOT, b, c); - - zeroArray(SIZE, c); - printDesc("cpu compact with scan"); - count = StreamCompaction::CPU::compactWithScan(SIZE, c, a); - printElapsedTime(StreamCompaction::CPU::timer().getCpuElapsedTimeForPreviousOperation(), "(std::chrono Measured)"); - printArray(count, c, true); - printCmpLenResult(count, expectedCount, b, c); - - zeroArray(SIZE, c); - printDesc("work-efficient compact, power-of-two"); - count = StreamCompaction::Efficient::compact(SIZE, c, a); - printElapsedTime(StreamCompaction::Efficient::timer().getGpuElapsedTimeForPreviousOperation(), "(CUDA Measured)"); - //printArray(count, c, true); - printCmpLenResult(count, expectedCount, b, c); - - zeroArray(SIZE, c); - printDesc("work-efficient compact, non-power-of-two"); - count = StreamCompaction::Efficient::compact(NPOT, c, a); - printElapsedTime(StreamCompaction::Efficient::timer().getGpuElapsedTimeForPreviousOperation(), "(CUDA Measured)"); - //printArray(count, c, true); - printCmpLenResult(count, expectedNPOT, b, c); - - system("pause"); // stop Win32 console from closing on exit - delete[] a; - delete[] b; - delete[] c; + // test read dir + /*string path = R"(..\data-set\)"; + vector files; + read_directory(path, files); + for (auto x : files) + cout << x << endl;*/ + // test forward pass + CharacterRecognition::Net nn(196, { 98, 52, 52 }); + float data[196] = { 0 }; + auto x = nn.forward(data, 196); + return 0; } diff --git a/Project2-Stream-Compaction/CMakeLists.txt b/Project2-Stream-Compaction/CMakeLists.txt index aad00c7..f592ecd 100644 --- a/Project2-Stream-Compaction/CMakeLists.txt +++ b/Project2-Stream-Compaction/CMakeLists.txt @@ -22,6 +22,7 @@ if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") endif() include_directories(.) +link_directories(${CUDA_TOOLKIT_ROOT_DIR}/lib/x64) add_subdirectory(stream_compaction) cuda_add_executable(${CMAKE_PROJECT_NAME} @@ -29,6 +30,17 @@ cuda_add_executable(${CMAKE_PROJECT_NAME} ) target_link_libraries(${CMAKE_PROJECT_NAME} + stream_compaction + ${CORELIBS} + cublas + curand + ) + +cuda_add_executable(${CMAKE_PROJECT_NAME}_datagen + "src/data_gen.cpp" + ) + +target_link_libraries(${CMAKE_PROJECT_NAME}_datagen stream_compaction ${CORELIBS} ) diff --git a/Project2-Stream-Compaction/src/data_gen.cpp b/Project2-Stream-Compaction/src/data_gen.cpp new file mode 100644 index 0000000..7eb8e2f --- /dev/null +++ b/Project2-Stream-Compaction/src/data_gen.cpp @@ -0,0 +1,71 @@ +/** + * @file data_gen.cpp + * @brief Stream compaction data gen program + * @authors Vaibhav Arcot + * @date 2019 + * @copyright University of Pennsylvania + */ + +#include +#include +#include +#include +#include +#include +#include +#include "testing_helpers.hpp" +#define max_value_scan 50 +#define max_value_compaction 4 +#define max_value_sorting 500 +const unsigned long int SIZE = 1 << 29; // feel free to change the size of array +const unsigned long unsigned long int NPOT = SIZE - 3; // Non-Power-Of-Two +int *a = new int[SIZE]; +int *b = new int[SIZE]; +int *c = new int[SIZE]; + +int main(int argc, char* argv[]) { + // Scan tests + + printf("\n"); + printf("****************\n"); + printf("** SCAN TESTS **\n"); + printf("****************\n"); + + genArray(SIZE - 1, a, 50); // Leave a 0 at the end to test that edge case + a[SIZE - 1] = 0; + printArray(SIZE, a, true); + + // initialize b using StreamCompaction::CPU::compactWithoutScan you implement + // We use b for further comparison. Make sure your StreamCompaction::CPU::compactWithoutScan is correct. + zeroArray(SIZE, b); + printDesc("cpu scan, power-of-two"); + StreamCompaction::CPU::scan(SIZE, b, a); + printElapsedTime(StreamCompaction::CPU::timer().getCpuElapsedTimeForPreviousOperation(), "(std::chrono Measured)"); + printArray(SIZE, b, true); + + try { + zeroArray(SIZE, c); + printDesc("naive scan, power-of-two"); + StreamCompaction::Efficient::scan(SIZE, c, a); + printElapsedTime(StreamCompaction::Efficient::timer().getGpuElapsedTimeForPreviousOperation(), "(CUDA Measured)"); + //printArray(SIZE, c, true); + printCmpResult(SIZE, b, c); + } + catch (...) { + std::cout << "Failed to compute, but not dead yet"< template -int cmpArrays(int n, T *a, T *b) { - for (int i = 0; i < n; i++) { +int cmpArrays(unsigned long int n, T *a, T *b) { + for (unsigned long int i = 0; i < n; i++) { if (a[i] != b[i]) { printf(" a[%d] = %d, b[%d] = %d\n", i, a[i], i, b[i]); return 1; @@ -22,13 +22,13 @@ void printDesc(const char *desc) { } template -void printCmpResult(int n, T *a, T *b) { +void printCmpResult(unsigned long int n, T *a, T *b) { printf(" %s \n", cmpArrays(n, a, b) ? "FAIL VALUE" : "passed"); } template -void printCmpLenResult(int n, int expN, T *a, T *b) { +void printCmpLenResult(unsigned long int n, unsigned long int expN, T *a, T *b) { if (n != expN) { printf(" expected %d elements, got %d\n", expN, n); } @@ -38,29 +38,29 @@ void printCmpLenResult(int n, int expN, T *a, T *b) { } -void zeroArray(int n, int *a) { - for (int i = 0; i < n; i++) { +void zeroArray(unsigned long int n, int *a) { + for (unsigned long int i = 0; i < n; i++) { a[i] = 0; } } -void onesArray(int n, int *a) { - for (int i = 0; i < n; i++) { +void onesArray(unsigned long int n, int *a) { + for (unsigned long int i = 0; i < n; i++) { a[i] = 1; } } -void genArray(int n, int *a, int maxval) { +void genArray(unsigned long int n, int *a, int maxval) { srand(time(nullptr)); - for (int i = 0; i < n; i++) { + for (unsigned long int i = 0; i < n; i++) { a[i] = rand() % maxval; } } -void printArray(int n, int *a, bool abridged = false) { +void printArray(unsigned long int n, int *a, bool abridged = false) { printf(" [ "); - for (int i = 0; i < n; i++) { + for (unsigned long int i = 0; i < n; i++) { if (abridged && i + 2 == 15 && n > 16) { i = n - 2; printf("... "); diff --git a/Project2-Stream-Compaction/stream_compaction/common.cu b/Project2-Stream-Compaction/stream_compaction/common.cu index 9d58341..55d3723 100644 --- a/Project2-Stream-Compaction/stream_compaction/common.cu +++ b/Project2-Stream-Compaction/stream_compaction/common.cu @@ -22,8 +22,8 @@ namespace StreamCompaction { * Maps an array to an array of 0s and 1s for stream compaction. Elements * which map to 0 will be removed, and elements which map to 1 will be kept. */ - __global__ void kernMapToBoolean(int n, int *bools, const int *idata) { - int index = (blockDim.x * blockIdx.x + threadIdx.x); + __global__ void kernMapToBoolean(unsigned long int n, int *bools, const int *idata) { + unsigned long int index = (blockDim.x * blockIdx.x + threadIdx.x); if (index >= n) return; bools[index] = (bool)idata[index]; @@ -33,9 +33,9 @@ namespace StreamCompaction { * Performs scatter on an array. That is, for each element in idata, * if bools[idx] == 1, it copies idata[idx] to odata[indices[idx]]. */ - __global__ void kernScatter(int n, int *odata, + __global__ void kernScatter(unsigned long int n, int *odata, const int *idata, const int *bools, const int *indices) { - int index = (blockDim.x * blockIdx.x + threadIdx.x); + unsigned long int index = (blockDim.x * blockIdx.x + threadIdx.x); if (index >= n - 1) return; if (bools[index]) diff --git a/Project2-Stream-Compaction/stream_compaction/common.h b/Project2-Stream-Compaction/stream_compaction/common.h index 996997e..a891c55 100644 --- a/Project2-Stream-Compaction/stream_compaction/common.h +++ b/Project2-Stream-Compaction/stream_compaction/common.h @@ -18,23 +18,23 @@ */ void checkCUDAErrorFn(const char *msg, const char *file = NULL, int line = -1); -inline int ilog2(int x) { - int lg = 0; +inline int ilog2(unsigned long int x) { + unsigned long int lg = 0; while (x >>= 1) { ++lg; } return lg; } -inline int ilog2ceil(int x) { +inline int ilog2ceil(unsigned long int x) { return x == 1 ? 0 : ilog2(x - 1) + 1; } namespace StreamCompaction { namespace Common { - __global__ void kernMapToBoolean(int n, int *bools, const int *idata); + __global__ void kernMapToBoolean(unsigned long int n, int *bools, const int *idata); - __global__ void kernScatter(int n, int *odata, + __global__ void kernScatter(unsigned long int n, int *odata, const int *idata, const int *bools, const int *indices); /** diff --git a/Project2-Stream-Compaction/stream_compaction/cpu.cu b/Project2-Stream-Compaction/stream_compaction/cpu.cu index 5fc7233..10d11de 100644 --- a/Project2-Stream-Compaction/stream_compaction/cpu.cu +++ b/Project2-Stream-Compaction/stream_compaction/cpu.cu @@ -17,10 +17,10 @@ namespace StreamCompaction { * For performance analysis, this is supposed to be a simple for loop. * (Optional) For better understanding before starting moving to GPU, you can simulate your GPU scan in this function first. */ - void scan(int n, int *odata, const int *idata, const bool time/* = true*/) { + void scan(unsigned long int n, int *odata, const int *idata, const bool time/* = true*/) { (time == true)?timer().startCpuTimer():0; - int running_total = 0; - for (int i = 0; i < n-1; i++) { // n-1 because we want exclusive not inclusive so last element isn't added + unsigned long int running_total = 0; // assumes only positive values + for (unsigned long int i = 0; i < n-1; i++) { // n-1 because we want exclusive not inclusive so last element isn't added running_total += idata[i]; // n-1 adds for n size odata[i+1] = running_total; } @@ -33,11 +33,11 @@ namespace StreamCompaction { * * @returns the number of elements remaining after compaction. */ - int compactWithoutScan(int n, int *odata, const int *idata) { + unsigned long int compactWithoutScan(unsigned long int n, int *odata, const int *idata) { timer().startCpuTimer(); - int count = 0; - int odata_pos = 0; - for (int i = 0; i < n; i++) + unsigned long int count = 0; + unsigned long int odata_pos = 0; + for (unsigned long int i = 0; i < n; i++) if (idata[i] != 0) { count++; odata[++odata_pos] = idata[i]; @@ -51,12 +51,12 @@ namespace StreamCompaction { * * @returns the number of elements remaining after compaction. */ - int compactWithScan(int n, int *odata, const int *idata) { + unsigned long int compactWithScan(unsigned long int n, int *odata, const int *idata) { timer().startCpuTimer(); // Step 1, mark each cell with 1/0 if it has a element or not (super easy to parallelize) int* scan_data = new int[n](); int* mask = new int[n](); - for (int i = 0; i < n; i++) { + for (unsigned long int i = 0; i < n; i++) { if (idata[i]) mask[i] = 1; else @@ -65,7 +65,7 @@ namespace StreamCompaction { // scan the mask array (can be done in parallel by using a balanced binary tree) scan(n, scan_data, mask, false); // Scatter array (go to each position and copy the value) (super easy to parallelize) - for (int i = 0; i < n - 1; i++) { + for (unsigned long int i = 0; i < n - 1; i++) { if (idata[i]) odata[scan_data[i] + 1] = idata[i]; } diff --git a/Project2-Stream-Compaction/stream_compaction/cpu.h b/Project2-Stream-Compaction/stream_compaction/cpu.h index 5d4ae1e..bdd6f45 100644 --- a/Project2-Stream-Compaction/stream_compaction/cpu.h +++ b/Project2-Stream-Compaction/stream_compaction/cpu.h @@ -6,10 +6,10 @@ namespace StreamCompaction { namespace CPU { StreamCompaction::Common::PerformanceTimer& timer(); - void scan(int n, int *odata, const int *idata, const bool time = true); + void scan(unsigned long int n, int *odata, const int *idata, const bool time = true); - int compactWithoutScan(int n, int *odata, const int *idata); + unsigned long int compactWithoutScan(unsigned long int n, int *odata, const int *idata); - int compactWithScan(int n, int *odata, const int *idata); + unsigned long int compactWithScan(unsigned long int n, int *odata, const int *idata); } } diff --git a/Project2-Stream-Compaction/stream_compaction/efficient.cu b/Project2-Stream-Compaction/stream_compaction/efficient.cu index 96165d4..050c4de 100644 --- a/Project2-Stream-Compaction/stream_compaction/efficient.cu +++ b/Project2-Stream-Compaction/stream_compaction/efficient.cu @@ -18,17 +18,17 @@ namespace StreamCompaction { return timer; } /*2 scan phases, see (link)[https://developer.nvidia.com/gpugems/GPUGems3/gpugems3_ch39.html] for more details*/ - __global__ void reduce_parallel(int n, int *data, int d) { - int tmp_d = 1 << (d + 1); - int index = (blockDim.x * blockIdx.x + threadIdx.x)*tmp_d; + __global__ void reduce_parallel(unsigned long int n, int *data, int d) { + unsigned long int tmp_d = 1 << (d + 1); + unsigned long int index = (blockDim.x * blockIdx.x + threadIdx.x)*tmp_d; if (index >= n ) return; data[index + tmp_d - 1] += data[index + (tmp_d>>1) - 1]; } - __global__ void downsweep_parallel(int n, int *data, int d) { - int new_d = 1<<(d + 1); - int index = (blockDim.x * blockIdx.x + threadIdx.x)*new_d; + __global__ void downsweep_parallel(unsigned long int n, int *data, int d) { + unsigned long int new_d = 1<<(d + 1); + unsigned long int index = (blockDim.x * blockIdx.x + threadIdx.x)*new_d; if (index >= n) return; int t = data[index + (new_d>>1) - 1]; @@ -38,12 +38,12 @@ namespace StreamCompaction { /** * Performs prefix-sum (aka scan) on idata, storing the result into odata. */ - void scan(int n, int *odata, const int *idata) { + void scan(unsigned long int n, int *odata, const int *idata) { timer().startGpuTimer(); // allocate pointers to memory and copy data over int *dev_odata; - int blocks = 0; - int closest_pow2 = 1<= 0; d--) { + for (int d = ilog2ceil(closest_pow2) - 1; d >= 0; d--) { blocks = ceil((closest_pow2 / (1 << (d + 1)) + block_size - 1) / block_size); downsweep_parallel <<>> (closest_pow2, dev_odata, d); checkCUDAErrorWithLine("downsweep phase failed!"); @@ -71,10 +71,10 @@ namespace StreamCompaction { } /*Copy of scan but only works with cuda pointers*/ - void dev_scan(int n, int *dev_odata) { + void dev_scan(unsigned long int n, int *dev_odata) { // allocate pointers to memory and copy data over - int blocks = 0; - int closest_pow2 = 1 << ilog2ceil(n); + unsigned long int blocks = 0; + unsigned long int closest_pow2 = 1 << ilog2ceil(n); // reduce phase // so we dont need to do the last round of computation because we zero it anyway for (int d = 0; d <= ilog2ceil(closest_pow2) - 2; d++) { @@ -102,11 +102,11 @@ namespace StreamCompaction { * @param idata The array of elements to compact. * @returns The number of elements remaining after compaction. */ - int compact(int n, int *odata, const int *idata) { + unsigned long int compact(unsigned long int n, int *odata, const int *idata) { timer().startGpuTimer(); - int closest_pow2 = 1<> NUM_BANKS + (n) >> (2 * LOG_NUM_BANKS)) - __global__ void dev_scan(int n, int *dev_odata, int *dev_idata, int *dev_block_sum) + __global__ void dev_scan(unsigned long int n, int *dev_odata, int *dev_idata, int *dev_block_sum) { /* Extriemly heavly based on https://developer.nvidia.com/gpugems/GPUGems3/gpugems3_ch39.html Main change is to use block_size instead of n and then put the sums of each block into a new array and scaning the array */ // Declare Share Memory __shared__ int temp[block_size + NUM_BANKS]; - int thid = threadIdx.x; - int bid = blockIdx.x; - int scan_offset = bid * block_size; + unsigned long int thid = threadIdx.x; + unsigned long int bid = blockIdx.x; + unsigned long int scan_offset = bid * block_size; int offset = 1; // to make this an exclusive scan - int ai = thid<<1; - int bi = ai + 1; - int bankOffsetA = CONFLICT_FREE_OFFSET(ai); - int bankOffsetB = CONFLICT_FREE_OFFSET(bi); + unsigned long int ai = thid<<1; + unsigned long int bi = ai + 1; + unsigned long int bankOffsetA = CONFLICT_FREE_OFFSET(ai); + unsigned long int bankOffsetB = CONFLICT_FREE_OFFSET(bi); temp[ai + bankOffsetA] = dev_idata[ai + scan_offset]; temp[bi + bankOffsetB] = dev_idata[bi + scan_offset]; - for (int d = block_size >> 1; d > 0; d >>= 1) // build sum in place up the tree + for (unsigned long int d = block_size >> 1; d > 0; d >>= 1) // build sum in place up the tree { __syncthreads(); if (thid < d) { - int ai = offset * ((thid<<1) + 1) - 1; - int bi = offset * ((thid << 1) + 2) - 1; + unsigned long int ai = offset * ((thid<<1) + 1) - 1; + unsigned long int bi = offset * ((thid << 1) + 2) - 1; ai += CONFLICT_FREE_OFFSET(ai); bi += CONFLICT_FREE_OFFSET(bi); temp[bi] += temp[ai]; @@ -185,14 +185,14 @@ namespace StreamCompaction { temp[block_size - 1 + CONFLICT_FREE_OFFSET(block_size - 1)] = 0; } // downsweep - for (int d = 1; d < block_size; d<<=1) // traverse down tree & build scan + for (unsigned long int d = 1; d < block_size; d<<=1) // traverse down tree & build scan { offset >>= 1; __syncthreads(); if (thid < d) { - int ai = offset * ((thid << 1) + 1) - 1; - int bi = offset * ((thid << 1) + 2) - 1; + unsigned long int ai = offset * ((thid << 1) + 1) - 1; + unsigned long int bi = offset * ((thid << 1) + 2) - 1; ai += CONFLICT_FREE_OFFSET(ai); bi += CONFLICT_FREE_OFFSET(bi); float t = temp[ai]; @@ -204,22 +204,22 @@ namespace StreamCompaction { dev_odata[ai + scan_offset] = temp[ai + bankOffsetA]; dev_odata[bi + scan_offset] = temp[bi + bankOffsetB]; } - __global__ void add_offset(int n, int *data, int *dev_block_offset) { - int bid = blockIdx.x; - int index = blockDim.x * bid + threadIdx.x; + __global__ void add_offset(unsigned long int n, int *data, int *dev_block_offset) { + unsigned long int bid = blockIdx.x; + unsigned long int index = blockDim.x * bid + threadIdx.x; if (index >= n) return; // add value to current section if (bid != 0) // to save a bunch of useless reads and write data[index] += dev_block_offset[bid]; } - void scan(int n, int *odata, int *idata) { + void scan(unsigned long int n, int *odata, int *idata) { timer().startGpuTimer(); // allocate pointers to memory and copy data over int *dev_odata, *dev_idata, *dev_block_sum, *dev_block_offset; int *block_sum, *block_offset; - int closest_pow2 = 1 << ilog2ceil(n); - int blocks = ceil((closest_pow2 + block_size - 1) / block_size); + unsigned long int closest_pow2 = 1 << ilog2ceil(n); + unsigned long int blocks = ceil((closest_pow2 + block_size - 1) / block_size); // allocate buffers cudaMalloc((void**)&dev_odata, closest_pow2 * sizeof(int)); cudaMalloc((void**)&dev_idata, closest_pow2 * sizeof(int)); @@ -257,13 +257,13 @@ namespace StreamCompaction { delete[] block_offset; timer().endGpuTimer(); } - void dev_scan(int n, int *dev_odata, int *dev_idata) { + void dev_scan(unsigned long int n, int *dev_odata, int *dev_idata) { timer().startGpuTimer(); // allocate pointers to memory and copy data over int *dev_block_sum, *dev_block_offset; int *block_sum, *block_offset; - int closest_pow2 = 1 << ilog2ceil(n); - int blocks = ceil((closest_pow2 + block_size - 1) / block_size); + unsigned long int closest_pow2 = 1 << ilog2ceil(n); + unsigned long int blocks = ceil((closest_pow2 + block_size - 1) / block_size); // allocate buffers // allocate block global buffers cudaMalloc((void**)&dev_block_sum, blocks * sizeof(int)); // each block gets 1 number to fill in diff --git a/Project2-Stream-Compaction/stream_compaction/efficient.h b/Project2-Stream-Compaction/stream_compaction/efficient.h index 049eff0..cb6b687 100644 --- a/Project2-Stream-Compaction/stream_compaction/efficient.h +++ b/Project2-Stream-Compaction/stream_compaction/efficient.h @@ -6,14 +6,14 @@ namespace StreamCompaction { namespace Efficient { StreamCompaction::Common::PerformanceTimer& timer(); - void scan(int n, int *odata, const int *idata); + void scan(unsigned long int n, int *odata, const int *idata); - int compact(int n, int *odata, const int *idata); + unsigned long int compact(unsigned long int n, int *odata, const int *idata); } namespace SharedMemory { StreamCompaction::Common::PerformanceTimer& timer(); - void scan(int n, int *odata, int *idata); - void dev_scan(int n, int *odata, int *idata); + void scan(unsigned long int n, int *odata, int *idata); + void dev_scan(unsigned long int n, int *odata, int *idata); } } diff --git a/Project2-Stream-Compaction/stream_compaction/naive.cu b/Project2-Stream-Compaction/stream_compaction/naive.cu index df9dad4..7359187 100644 --- a/Project2-Stream-Compaction/stream_compaction/naive.cu +++ b/Project2-Stream-Compaction/stream_compaction/naive.cu @@ -14,8 +14,8 @@ namespace StreamCompaction { return timer; } // TODO: __global__ - __global__ void naive_parallel_scan(int n, int *odata, const int *idata, int d) { - int index = blockDim.x * blockIdx.x + threadIdx.x; + __global__ void naive_parallel_scan(unsigned long int n, int *odata, const int *idata, int d) { + unsigned long int index = blockDim.x * blockIdx.x + threadIdx.x; if (index >= n) return; if (index >= d) @@ -23,8 +23,8 @@ namespace StreamCompaction { else odata[index] = idata[index]; } - __global__ void right_shift(int n, int *odata, const int *idata, int amount) { - int index = blockDim.x * blockIdx.x + threadIdx.x; + __global__ void right_shift(unsigned long int n, int *odata, const int *idata, int amount) { + unsigned long int index = blockDim.x * blockIdx.x + threadIdx.x; if (index >= n) return; if (index < amount) @@ -35,10 +35,10 @@ namespace StreamCompaction { /** * Performs prefix-sum (aka scan) on idata, storing the result into odata. */ - void scan(int n, int *odata, const int *idata) { + void scan(unsigned long int n, int *odata, const int *idata) { timer().startGpuTimer(); int blocksize = 128; - int blocks = (n + blocksize - 1) / blocksize; + unsigned long int blocks = (n + blocksize - 1) / blocksize; // allocate data int *dev_odata, *dev_odata_2; cudaMalloc((void**)&dev_odata, n * sizeof(int)); @@ -48,8 +48,8 @@ namespace StreamCompaction { // copy data over cudaMemcpy(dev_odata, idata, n*sizeof(int), cudaMemcpyHostToDevice); checkCUDAErrorWithLine("memcpy failed!"); - int uppper_limit = 1 << ilog2ceil(n); - for (int d = 1; d <= uppper_limit; d<<=1) { + unsigned long int uppper_limit = 1 << ilog2ceil(n); + for (unsigned long int d = 1; d <= uppper_limit; d<<=1) { naive_parallel_scan <<> > (n, dev_odata_2, dev_odata, d); checkCUDAErrorWithLine("fn failed!"); std::swap(dev_odata, dev_odata_2); diff --git a/Project2-Stream-Compaction/stream_compaction/naive.h b/Project2-Stream-Compaction/stream_compaction/naive.h index 37dcb06..44453e9 100644 --- a/Project2-Stream-Compaction/stream_compaction/naive.h +++ b/Project2-Stream-Compaction/stream_compaction/naive.h @@ -6,6 +6,6 @@ namespace StreamCompaction { namespace Naive { StreamCompaction::Common::PerformanceTimer& timer(); - void scan(int n, int *odata, const int *idata); + void scan(unsigned long int n, int *odata, const int *idata); } } diff --git a/Project2-Stream-Compaction/stream_compaction/radix.cu b/Project2-Stream-Compaction/stream_compaction/radix.cu index 32ab8ef..c31d14d 100644 --- a/Project2-Stream-Compaction/stream_compaction/radix.cu +++ b/Project2-Stream-Compaction/stream_compaction/radix.cu @@ -8,20 +8,20 @@ namespace Sorting { namespace Radix { #define block_size 128 - __global__ void mask_generation(int n, int *dev_mask, int *dev_idata, int bitmask) { - int index = blockDim.x * blockIdx.x + threadIdx.x; + __global__ void mask_generation(unsigned long int n, int *dev_mask, int *dev_idata, int bitmask) { + unsigned long int index = blockDim.x * blockIdx.x + threadIdx.x; if (index >= n) return; dev_mask[index] = !((bool)(dev_idata[index] & bitmask)); } - __global__ void true_index_generation(int n, int *dev_t, int *dev_f, int total_falses) { - int index = blockDim.x * blockIdx.x + threadIdx.x; + __global__ void true_index_generation(unsigned long int n, int *dev_t, int *dev_f, int total_falses) { + unsigned long int index = blockDim.x * blockIdx.x + threadIdx.x; if (index >= n) return; dev_t[index] = index - dev_f[index] + total_falses; } - __global__ void reshuffle_mask(int n, int *dev_odata, int *dev_idata, int *dev_t, int *dev_f, int mask) { - int index = blockDim.x * blockIdx.x + threadIdx.x; + __global__ void reshuffle_mask(unsigned long int n, int *dev_odata, int *dev_idata, int *dev_t, int *dev_f, int mask) { + unsigned long int index = blockDim.x * blockIdx.x + threadIdx.x; if (index >= n) return; int data = dev_idata[index]; @@ -43,11 +43,12 @@ namespace Sorting { } return count; } - void sort(int n, int *odata, int *idata, int max_value) { + void sort(unsigned long int n, int *odata, int *idata, int max_value) { timer().startGpuTimer(); int loop_count = countBits(max_value);//std::numeric_limits::digits; - int mask = 1, total_falses, tmp; - int blocks = ceil((n + block_size - 1) / block_size); + int mask = 1; + unsigned long int total_falses, tmp; + unsigned long int blocks = ceil((n + block_size - 1) / block_size); int *dev_data, *dev_f, *dev_t, *dev_data2; int *dev_mask; cudaMalloc((void**)&dev_data, n*sizeof(int)); diff --git a/Project2-Stream-Compaction/stream_compaction/radix.h b/Project2-Stream-Compaction/stream_compaction/radix.h index 50ea6e0..e6578fb 100644 --- a/Project2-Stream-Compaction/stream_compaction/radix.h +++ b/Project2-Stream-Compaction/stream_compaction/radix.h @@ -5,6 +5,6 @@ namespace Sorting { namespace Radix { StreamCompaction::Common::PerformanceTimer& timer(); - void sort(int n, int *odata, int *idata, int max_value); + void sort(unsigned long int n, int *odata, int *idata, int max_value); } } diff --git a/Project2-Stream-Compaction/stream_compaction/thrust.cu b/Project2-Stream-Compaction/stream_compaction/thrust.cu index 471b39f..99b09cc 100644 --- a/Project2-Stream-Compaction/stream_compaction/thrust.cu +++ b/Project2-Stream-Compaction/stream_compaction/thrust.cu @@ -17,7 +17,7 @@ namespace StreamCompaction { /** * Performs prefix-sum (aka scan) on idata, storing the result into odata. */ - void scan(int n, int *odata, const int *idata) { + void scan(unsigned long int n, int *odata, const int *idata) { timer().startGpuTimer(); int *dev_odata, *dev_idata; cudaMalloc((void**)&dev_odata, n * sizeof(int)); diff --git a/Project2-Stream-Compaction/stream_compaction/thrust.h b/Project2-Stream-Compaction/stream_compaction/thrust.h index fe98206..be4879c 100644 --- a/Project2-Stream-Compaction/stream_compaction/thrust.h +++ b/Project2-Stream-Compaction/stream_compaction/thrust.h @@ -6,6 +6,6 @@ namespace StreamCompaction { namespace Thrust { StreamCompaction::Common::PerformanceTimer& timer(); - void scan(int n, int *odata, const int *idata); + void scan(unsigned long int n, int *odata, const int *idata); } } From e868e4890022a8b26940e004f3f0636d0fd33a16 Mon Sep 17 00:00:00 2001 From: Vaibhav Arcot Date: Sat, 14 Sep 2019 18:41:39 -0400 Subject: [PATCH 10/34] Finished simple forward pass --- .../character_recognition/mlp.cu | 86 +++++++++++++++---- .../character_recognition/mlp.h | 4 +- Project2-Character-Recognition/src/main.cpp | 14 ++- 3 files changed, 81 insertions(+), 23 deletions(-) diff --git a/Project2-Character-Recognition/character_recognition/mlp.cu b/Project2-Character-Recognition/character_recognition/mlp.cu index 01b88d1..28974c8 100644 --- a/Project2-Character-Recognition/character_recognition/mlp.cu +++ b/Project2-Character-Recognition/character_recognition/mlp.cu @@ -6,6 +6,7 @@ #include #include #include +#include // kernals namespace CharacterRecognition { @@ -16,6 +17,18 @@ namespace CharacterRecognition { return timer; } + void printCuda(float *a1, int n, string name) { + float *print_a = new float[n]; + cout << name.c_str() << endl; + cout << "{" << endl; + cudaMemcpy(print_a, a1, n * sizeof(float), cudaMemcpyDeviceToHost); + for (int i = 0; i < n; i++) { + cout << "\t" << print_a[i] << endl; + } + cout << "}" << endl; + delete[]print_a; + } + __global__ void bias_addition(int n, float *A, float *B, float *C) { int index = threadIdx.x + (blockIdx.x * blockDim.x); if (index >= n) @@ -53,13 +66,34 @@ namespace CharacterRecognition { odata[index] = expf(idata[index]); } - void Net::GPU_fill_rand(float *A, int size, int std) { + __global__ void gpu_matrix_mult(float *a, float *b, float *c, int m, int n, int k) + { + int row = blockIdx.y * blockDim.y + threadIdx.y; + int col = blockIdx.x * blockDim.x + threadIdx.x; + int sum = 0; + if (col < k && row < m) + { + for (int i = 0; i < n; i++) + { + sum += a[row * n + i] * b[i * k + col]; + } + c[row * k + col] = sum; + } + } + __global__ void fill_data(int n, float *data, float val) { + int index = (blockDim.x * blockIdx.x + threadIdx.x); + if (index >= n) + return; + data[index] = val; + } + + void Net::GPU_fill_rand(float *A, int size, float std) { // Create a pseudo-random number generator curandGenerator_t prng; curandCreateGenerator(&prng, CURAND_RNG_PSEUDO_DEFAULT); // Set the seed for the random number generator using the system clock - curandSetPseudoRandomGeneratorSeed(prng, (unsigned long long) clock()); + curandSetPseudoRandomGeneratorSeed(prng, clock()); // Fill the array with random numbers on the device curandGenerateNormal(prng, A, size, 0, std); @@ -70,12 +104,14 @@ namespace CharacterRecognition { // layers = {98, 52, 52} layers.insert(layers.begin(), n); float *dev_w, *dev_b, *dev_g, *dev_a; + int blocks; for (int i = 0; i < layers.size() - 1; i++) { cudaMalloc((void**)&dev_w, (layers[i] * layers[i + 1]) * sizeof(float)); cudaMalloc((void**)&dev_b, (layers[i + 1]) * sizeof(float)); // initilize w, b using gaussian distribution - GPU_fill_rand(dev_w, layers[i] * layers[i + 1], 2.0f / layers[i]); // henormal initilization - GPU_fill_rand(dev_b, layers[i + 1], 0); // zero initilizaton is fine for biases + GPU_fill_rand(dev_w, layers[i] * layers[i + 1], 2.0 / layers[i]); // henormal initilization + printCuda(dev_w, layers[i] * layers[i + 1], "W fresh"); + GPU_fill_rand(dev_b, layers[i + 1], 0.1f); // zero initilizaton is fine for biases // push into vector w.push_back(dev_w); b.push_back(dev_b); @@ -100,25 +136,33 @@ namespace CharacterRecognition { cublasSgemm(handle, CUBLAS_OP_N, CUBLAS_OP_N, m, n, k, alpha, A, lda, B, ldb, beta, C, ldc); } + float* Net::forward(float *data, int n) { - float res[classes]; + float *res = new float[classes](); assert(n == input_size); + float *dev_data; + cudaMalloc((void**)&dev_data, n * sizeof(float)); + cudaMemcpy(dev_data, data, n * sizeof(float), cudaMemcpyHostToDevice); for (int i = 0; i < layer_sizes.size(); i++) { + blocks = ceil((layer_sizes[i] + block_size - 1) / block_size); // clear g, a for this layer cudaMemset(g[i], 0, layer_sizes[i] * sizeof(float)); checkCUDAErrorWithLine("Cuda memset failed!"); cudaMemset(a[i], 0, layer_sizes[i] * sizeof(float)); checkCUDAErrorWithLine("Cuda memset failed!"); + int block_size_tmp = 16; + int col_blocks = (1 + block_size_tmp - 1) / block_size_tmp, row_col = (layer_sizes[i]+ block_size_tmp - 1)/ block_size_tmp; // matrix multiplication if (!i) { // first iteration, so a[i] hasn't been set yet - gpu_blas_mmul(data, w[i], g[i], 1, input_size, layer_sizes[i]); + gpu_blas_mmul(dev_data, w[i], g[i], 1, input_size, layer_sizes[i]); + checkCUDAErrorWithLine("gpu mult failed!"); } else { - gpu_blas_mmul(data, a[i-1], g[i], 1, layer_sizes[i-1], layer_sizes[i]); + gpu_blas_mmul(a[i - 1], w[i], g[i], 1, layer_sizes[i-1], layer_sizes[i]); + checkCUDAErrorWithLine("gpu mult failed!"); } // bias addition - blocks = ceil((layer_sizes[i] + block_size - 1) / block_size); bias_addition << > > (layer_sizes[i], g[i], b[i], g[i]); // put result back into g[i] checkCUDAErrorWithLine("bias addition failed!"); if (i != layer_sizes.size() - 1) { @@ -129,18 +173,24 @@ namespace CharacterRecognition { else { exp_copy << > > (layer_sizes[i], a[i], g[i]); checkCUDAErrorWithLine("exp copy failed!"); + // todo optimize this later + float *tmp = new float[layer_sizes[i]]; + float exp_sum = 0; + cudaMemcpy(tmp, a[i], layer_sizes[i] * sizeof(float), cudaMemcpyDeviceToHost); + for (int pos = 0; pos < layer_sizes[i]; pos++) + exp_sum += tmp[pos]; + delete[] tmp; // modified scan to get the exponential sum of all elements (P1 of assignment used!!) - int closest_pow2 = 1 << ilog2ceil(layer_sizes[i]); - int blocks_scan; - for (int d = 0; d <= ilog2ceil(closest_pow2) - 1; d++) { - // compute number of threads to spawn - blocks = ceil((closest_pow2 / (1 << (d + 1)) + block_size - 1) / block_size); - scan<<>> (closest_pow2, a[i], d); - checkCUDAErrorWithLine("scan failed!"); - } + //int closest_pow2 = 1 << ilog2ceil(layer_sizes[i]); + //int blocks_scan; + //for (int d = 0; d <= ilog2ceil(closest_pow2) - 1; d++) { + // // compute number of threads to spawn + // blocks_scan = ceil((closest_pow2 / (1 << (d + 1)) + block_size - 1) / block_size); + // scan<<>>(closest_pow2, a[i], d); + // checkCUDAErrorWithLine("scan failed!"); + //} + //cudaMemcpy(&exp_sum, a[i] + closest_pow2 - 1, sizeof(float), cudaMemcpyDeviceToHost); // softmax activation - float exp_sum; - cudaMemcpy(&exp_sum, a[i] + layer_sizes[i] - 1, sizeof(float), cudaMemcpyDeviceToHost); checkCUDAErrorWithLine("Cuda memcpy failed!"); softmax_activation << > > (layer_sizes[i], g[i], a[i], exp_sum); checkCUDAErrorWithLine("softmax failed!"); diff --git a/Project2-Character-Recognition/character_recognition/mlp.h b/Project2-Character-Recognition/character_recognition/mlp.h index 9f73e1b..d0a72bf 100644 --- a/Project2-Character-Recognition/character_recognition/mlp.h +++ b/Project2-Character-Recognition/character_recognition/mlp.h @@ -10,7 +10,7 @@ using namespace std; namespace CharacterRecognition { Common::PerformanceTimer& timer(); -#define classes 52 +#define classes 5 class Net { // cublas cublasHandle_t handle; @@ -26,7 +26,7 @@ namespace CharacterRecognition { // helperfunctions for the class // Fill the array A(nr_rows_A, nr_cols_A) with random numbers on GPU - void GPU_fill_rand(float *A, int size, int std); + void GPU_fill_rand(float *A, int size, float std); // multiplication of matrices void gpu_blas_mmul(const float *A, const float *B, float *C, const int m, const int k, const int n); public: diff --git a/Project2-Character-Recognition/src/main.cpp b/Project2-Character-Recognition/src/main.cpp index 1b1d111..e65390d 100644 --- a/Project2-Character-Recognition/src/main.cpp +++ b/Project2-Character-Recognition/src/main.cpp @@ -15,6 +15,7 @@ #include //#include +#define classes 5 using namespace std; //int image_read(string path) { // cv::Mat image = cv::imread(path.c_str(), 0); @@ -51,8 +52,15 @@ int main(int argc, char* argv[]) { for (auto x : files) cout << x << endl;*/ // test forward pass - CharacterRecognition::Net nn(196, { 98, 52, 52 }); - float data[196] = { 0 }; - auto x = nn.forward(data, 196); + CharacterRecognition::Net nn(5, {classes}); + float data[classes] = {1, 1, 1, 1, 1}; + auto x = nn.forward(data, 5); + float sum = 0; + for (int i = 0; i < classes; i++) { + cout << x[i] << ", " << endl; + sum += x[i]; + } + cout << sum << endl; + delete[] x; return 0; } From c5c6316725e3f5fc4a31835e8c7313aca4b9b9d0 Mon Sep 17 00:00:00 2001 From: Vaibhav Arcot Date: Sun, 15 Sep 2019 01:30:04 -0400 Subject: [PATCH 11/34] Finished data_gen v1 for stream compaction --- Project2-Stream-Compaction/src/data_gen.cpp | 122 ++++++++++++-------- 1 file changed, 77 insertions(+), 45 deletions(-) diff --git a/Project2-Stream-Compaction/src/data_gen.cpp b/Project2-Stream-Compaction/src/data_gen.cpp index 7eb8e2f..a011f45 100644 --- a/Project2-Stream-Compaction/src/data_gen.cpp +++ b/Project2-Stream-Compaction/src/data_gen.cpp @@ -14,58 +14,90 @@ #include #include #include "testing_helpers.hpp" +#include +#include +using namespace std; + #define max_value_scan 50 #define max_value_compaction 4 #define max_value_sorting 500 -const unsigned long int SIZE = 1 << 29; // feel free to change the size of array -const unsigned long unsigned long int NPOT = SIZE - 3; // Non-Power-Of-Two -int *a = new int[SIZE]; -int *b = new int[SIZE]; -int *c = new int[SIZE]; +#define cpu_scan false +#define naive_scan true +#define efficient_scan true +#define shared_mem_scan true +#define thrust_scan true +#define pow_2 true -int main(int argc, char* argv[]) { - // Scan tests +void csv_write(float time, unsigned long long size, string file_name){ + std::ofstream outfile; + outfile.open(file_name, std::ios_base::app); + outfile < Date: Sun, 15 Sep 2019 01:35:57 -0400 Subject: [PATCH 12/34] Fixed memory leaks in stream_compaction gpu code; Fixed data type bugs in data_gen --- Project2-Stream-Compaction/src/data_gen.cpp | 6 +++--- Project2-Stream-Compaction/stream_compaction/cpu.cu | 3 +-- Project2-Stream-Compaction/stream_compaction/efficient.cu | 2 ++ Project2-Stream-Compaction/stream_compaction/thrust.cu | 1 + 4 files changed, 7 insertions(+), 5 deletions(-) diff --git a/Project2-Stream-Compaction/src/data_gen.cpp b/Project2-Stream-Compaction/src/data_gen.cpp index a011f45..d45173e 100644 --- a/Project2-Stream-Compaction/src/data_gen.cpp +++ b/Project2-Stream-Compaction/src/data_gen.cpp @@ -49,8 +49,8 @@ int main(int argc, char* argv[]) { else SIZE = (1 << (pow)) - 3; // Non-Power-Of-Two int *a = new int[SIZE]; - long long *b = new long long[SIZE]; - long long *c = new long long[SIZE]; + int *b = new int[SIZE]; + int *c = new int[SIZE]; genArray(SIZE - 1, a, 50); // Leave a 0 at the end to test that edge case a[SIZE - 1] = 0; // get time @@ -58,7 +58,7 @@ int main(int argc, char* argv[]) { // set solution if (cpu_scan) { zeroArray(SIZE, b); - StreamCompaction::CPU::scan(SIZE, b, b); + StreamCompaction::CPU::scan(SIZE, b, a); time = StreamCompaction::CPU::timer().getCpuElapsedTimeForPreviousOperation(); csv_write(time, SIZE, "cpu.csv"); cout << "CPU:"; printArray(SIZE, b, true); diff --git a/Project2-Stream-Compaction/stream_compaction/cpu.cu b/Project2-Stream-Compaction/stream_compaction/cpu.cu index 10d11de..8016313 100644 --- a/Project2-Stream-Compaction/stream_compaction/cpu.cu +++ b/Project2-Stream-Compaction/stream_compaction/cpu.cu @@ -2,7 +2,7 @@ #include "cpu.h" #include #include "common.h" - +// function (in this file) assume zeroed memory namespace StreamCompaction { namespace CPU { using StreamCompaction::Common::PerformanceTimer; @@ -11,7 +11,6 @@ namespace StreamCompaction { static PerformanceTimer timer; return timer; } - /** * CPU scan (prefix sum). * For performance analysis, this is supposed to be a simple for loop. diff --git a/Project2-Stream-Compaction/stream_compaction/efficient.cu b/Project2-Stream-Compaction/stream_compaction/efficient.cu index 050c4de..a61ac58 100644 --- a/Project2-Stream-Compaction/stream_compaction/efficient.cu +++ b/Project2-Stream-Compaction/stream_compaction/efficient.cu @@ -46,6 +46,7 @@ namespace StreamCompaction { unsigned long int closest_pow2 = 1< Date: Sun, 15 Sep 2019 10:20:45 -0400 Subject: [PATCH 13/34] Added data to generate plots; Reformated lines --- .../data_pow2_overflow/cpu.csv | 755 ++++++++++++++++++ .../data_pow2_overflow/eff.csv | 727 +++++++++++++++++ .../data_pow2_overflow/naive.csv | 728 +++++++++++++++++ .../data_pow2_overflow/shared_mem.csv | 754 +++++++++++++++++ .../data_pow2_overflow/thrust.csv | 753 +++++++++++++++++ Project2-Stream-Compaction/src/data_gen.cpp | 10 +- Project2-Stream-Compaction/src/main.cpp | 6 +- .../stream_compaction/common.cu | 8 +- .../stream_compaction/common.h | 10 +- .../stream_compaction/cpu.cu | 20 +- .../stream_compaction/cpu.h | 6 +- .../stream_compaction/efficient.cu | 76 +- .../stream_compaction/efficient.h | 8 +- .../stream_compaction/naive.cu | 16 +- .../stream_compaction/naive.h | 2 +- .../stream_compaction/radix.cu | 18 +- .../stream_compaction/radix.h | 2 +- .../stream_compaction/thrust.cu | 4 +- .../stream_compaction/thrust.h | 2 +- 19 files changed, 3812 insertions(+), 93 deletions(-) create mode 100644 Project2-Stream-Compaction/data_pow2_overflow/cpu.csv create mode 100644 Project2-Stream-Compaction/data_pow2_overflow/eff.csv create mode 100644 Project2-Stream-Compaction/data_pow2_overflow/naive.csv create mode 100644 Project2-Stream-Compaction/data_pow2_overflow/shared_mem.csv create mode 100644 Project2-Stream-Compaction/data_pow2_overflow/thrust.csv diff --git a/Project2-Stream-Compaction/data_pow2_overflow/cpu.csv b/Project2-Stream-Compaction/data_pow2_overflow/cpu.csv new file mode 100644 index 0000000..9e45d3d --- /dev/null +++ b/Project2-Stream-Compaction/data_pow2_overflow/cpu.csv @@ -0,0 +1,755 @@ +16,0.0001 +32,0.0001 +64,0.0002 +128,0.0002 +256,0.0007 +512,0.0004 +1024,0.0007 +2048,0.0013 +4096,0.0045 +8192,0.005 +16384,0.01 +32768,0.0199 +65536,0.0409 +131072,0.0795 +262144,1.201 +524288,3.098 +1048576,4.9876 +2097152,9.9742 +4194304,20.7836 +8388608,41.5035 +16777216,84.8359 +33554432,164.927 +67108864,325.222 +134217728,647.691 +268435456,1257.6 +536870912,2541.75 +1073741824,5348.85 +16,0.0001 +32,0.0001 +64,0.0003 +128,0.0005 +256,0.0003 +512,0.0009 +1024,0.0007 +2048,0.0013 +4096,0.0025 +8192,0.005 +16384,0.0098 +32768,0.0357 +65536,0.039 +131072,0.105 +262144,1.3416 +524288,2.4566 +1048576,5.1133 +2097152,9.5614 +4194304,20.3729 +8388608,40.4034 +16777216,78.5244 +33554432,159.026 +67108864,309.227 +134217728,629.641 +268435456,1242.77 +536870912,2483.12 +1073741824,5079.82 +16,0.0001 +32,0.0002 +64,0.0002 +128,0.0002 +256,0.0005 +512,0.0009 +1024,0.0006 +2048,0.0029 +4096,0.0025 +8192,0.0049 +16384,0.0108 +32768,0.021 +65536,0.0388 +131072,0.0773 +262144,1.2317 +524288,2.6499 +1048576,5.0116 +2097152,9.5241 +4194304,20.4527 +8388608,38.3068 +16777216,78.7618 +33554432,156.262 +67108864,309.742 +134217728,641.473 +268435456,1270.43 +536870912,2460.45 +1073741824,5298.45 +16,0.0001 +32,0.0001 +64,0.0002 +128,0.0002 +256,0.0002 +512,0.0009 +1024,0.0017 +2048,0.0148 +4096,0.0025 +8192,0.005 +16384,0.0096 +32768,0.0196 +65536,0.0554 +131072,0.0818 +262144,1.2001 +524288,2.494 +1048576,4.9255 +2097152,10.2203 +4194304,20.1102 +8388608,39.6946 +16777216,82.7561 +33554432,168.444 +67108864,314.184 +134217728,623.203 +268435456,1242.12 +536870912,2505.09 +1073741824,5245.73 +16,0.0001 +32,0.0002 +64,0.0001 +128,0.0002 +256,0.0003 +512,0.0004 +1024,0.0007 +2048,0.0025 +4096,0.0024 +8192,0.0049 +16384,0.0099 +32768,0.0348 +65536,0.0401 +131072,0.0945 +262144,1.2004 +524288,2.5119 +1048576,4.6867 +2097152,9.7891 +4194304,21.2881 +8388608,41.2862 +16777216,80.4827 +33554432,155.017 +67108864,318.027 +134217728,630.797 +268435456,1258.82 +536870912,2484.31 +1073741824,5086.43 +16,0.0001 +32,0.0001 +64,0.0001 +128,0.0002 +256,0.0006 +512,0.0004 +1024,0.0007 +2048,0.0013 +4096,0.0025 +8192,0.0048 +16384,0.0101 +32768,0.0201 +65536,0.04 +131072,0.083 +262144,1.2004 +524288,2.3623 +1048576,5.0825 +2097152,11.2514 +4194304,19.286 +8388608,37.7656 +16777216,76.2316 +33554432,158.208 +67108864,314.052 +134217728,643.106 +268435456,1259.39 +536870912,2472.97 +1073741824,4947.89 +16,0.0001 +32,0.0001 +64,0.0002 +128,0.0002 +256,0.0006 +512,0.0009 +1024,0.0007 +2048,0.0014 +4096,0.0025 +8192,0.0048 +16384,0.0098 +32768,0.0466 +65536,0.0676 +131072,0.0779 +262144,1.2015 +524288,2.7505 +1048576,4.6942 +2097152,10.2244 +4194304,19.6819 +8388608,37.1655 +16777216,81.7867 +33554432,155.885 +67108864,321.348 +134217728,631.069 +268435456,1249.11 +536870912,2472.91 +1073741824,5004.6 +16,0.0001 +32,0.0002 +64,0.0003 +128,0.0002 +256,0.0002 +512,0.0006 +1024,0.0007 +2048,0.0013 +4096,0.0024 +8192,0.005 +16384,0.0098 +32768,0.0196 +65536,0.0384 +131072,0.1373 +262144,1.216 +524288,2.4078 +1048576,4.9465 +2097152,10.2418 +4194304,22.3594 +8388608,39.6115 +16777216,79.9811 +33554432,156.626 +67108864,304.052 +134217728,638.928 +268435456,1267.79 +536870912,2483.59 +1073741824,4976.12 +16,0.0001 +32,0.0001 +64,0.0001 +128,0.0003 +256,0.0004 +512,0.0004 +1024,0.0017 +2048,0.0013 +4096,0.0026 +8192,0.005 +16384,0.0097 +32768,0.0199 +65536,0.0393 +131072,0.0837 +262144,1.5723 +524288,2.4061 +1048576,5.1202 +2097152,9.4984 +4194304,20.4595 +8388608,40.6213 +16777216,79.8082 +33554432,160.545 +67108864,315.617 +134217728,625.655 +268435456,1256.93 +536870912,2495.11 +1073741824,4967.56 +16,0.0001 +32,0.0002 +64,0.0002 +128,0.0002 +256,0.0005 +512,0.0004 +1024,0.0007 +2048,0.0013 +4096,0.0024 +8192,0.005 +16384,0.0095 +32768,0.0202 +65536,0.0733 +131072,0.079 +262144,1.2054 +524288,2.4075 +1048576,4.8141 +2097152,10.5714 +4194304,19.5533 +8388608,38.5973 +16777216,78.8482 +33554432,161.965 +67108864,302.766 +134217728,626.128 +268435456,1266.42 +536870912,2474.12 +1073741824,4986.26 +16,0.0002 +32,0.0001 +64,0.0001 +128,0.0001 +256,0.0006 +512,0.0003 +1024,0.0007 +2048,0.0013 +4096,0.0024 +8192,0.0049 +16384,0.0098 +32768,0.0213 +65536,0.0392 +131072,0.0786 +262144,1.4821 +524288,2.4081 +1048576,5.9493 +2097152,9.3227 +4194304,19.6329 +8388608,39.9316 +16777216,75.7683 +33554432,153.444 +67108864,313.333 +134217728,617.716 +268435456,1245.72 +536870912,2460.47 +1073741824,4988.33 +16,0.0002 +32,0.0001 +64,0.0001 +128,0.0004 +256,0.0002 +512,0.0004 +1024,0.0007 +2048,0.0013 +4096,0.0024 +8192,0.0048 +16384,0.0098 +32768,0.0199 +65536,0.0385 +131072,0.0896 +262144,1.423 +524288,2.3615 +1048576,5.1127 +2097152,11.6592 +4194304,19.9998 +8388608,41.4534 +16777216,77.0724 +33554432,156.654 +67108864,310.023 +134217728,648.386 +268435456,1281.3 +536870912,2491.8 +1073741824,4993.91 +16,0 +32,0.0001 +64,0.0001 +128,0.0003 +256,0.0003 +512,0.0004 +1024,0.0007 +2048,0.0014 +4096,0.0042 +8192,0.0074 +16384,0.0101 +32768,0.0199 +65536,0.0414 +131072,0.0844 +262144,1.6409 +524288,2.7313 +1048576,5.3879 +2097152,9.9011 +4194304,21.4386 +8388608,42.3438 +16777216,79.4451 +33554432,151.446 +67108864,318.342 +134217728,615.801 +268435456,1240.17 +536870912,2472.51 +1073741824,4964.54 +16,0.0002 +32,0.0003 +64,0.0001 +128,0.0002 +256,0.0002 +512,0.0007 +1024,0.0202 +2048,0.0025 +4096,0.0043 +8192,0.0048 +16384,0.0197 +32768,0.0209 +65536,0.0448 +131072,0.1088 +262144,1.215 +524288,2.7858 +1048576,4.7721 +2097152,10.4045 +4194304,20.6814 +8388608,42.8115 +16777216,79.655 +33554432,151.583 +67108864,325.869 +134217728,625.939 +268435456,1251.57 +536870912,2467.93 +1073741824,4971.62 +16,0.0001 +32,0.0001 +64,0.0001 +128,0.0001 +256,0.0003 +512,0.0004 +1024,0.0006 +2048,0.0013 +4096,0.0025 +8192,0.0049 +16384,0.0239 +32768,0.0196 +65536,0.0384 +131072,0.086 +262144,1.3546 +524288,2.4565 +1048576,5.2145 +2097152,10.3876 +4194304,21.0302 +8388608,38.2945 +16777216,79.5467 +33554432,156.822 +67108864,314.959 +134217728,654.029 +268435456,1248.73 +536870912,2473.12 +1073741824,4963.97 +16,0.0001 +32,0.0002 +64,0.0002 +128,0.0002 +256,0.0002 +512,0.0004 +1024,0.0007 +2048,0.0021 +4096,0.0025 +8192,0.0049 +16384,0.0099 +32768,0.0428 +65536,0.0383 +131072,0.0789 +262144,1.203 +524288,2.3731 +1048576,5.0198 +2097152,9.7397 +4194304,22.1107 +8388608,41.1061 +16777216,82.8011 +33554432,153.421 +67108864,313.449 +134217728,623.934 +268435456,1240.21 +536870912,2450.39 +1073741824,4978.59 +16,0.0001 +32,0.0001 +64,0.0004 +128,0.0003 +256,0.0002 +512,0.0004 +1024,0.0006 +2048,0.0012 +4096,0.0024 +8192,0.0048 +16384,0.01 +32768,0.0544 +65536,0.0392 +131072,0.0782 +262144,1.2067 +524288,2.4152 +1048576,4.9613 +2097152,9.4712 +4194304,20.1244 +8388608,38.7711 +16777216,87.9347 +33554432,157.089 +67108864,312.711 +134217728,627.175 +268435456,1289.2 +536870912,2469.83 +1073741824,4928.19 +16,0.0001 +32,0.0001 +64,0.0002 +128,0.0003 +256,0.0002 +512,0.0004 +1024,0.0007 +2048,0.0012 +4096,0.0046 +8192,0.0303 +16384,0.0097 +32768,0.0357 +65536,0.0699 +131072,0.0812 +262144,1.2002 +524288,2.4641 +1048576,4.8132 +2097152,9.3447 +4194304,19.1907 +8388608,39.4884 +16777216,79.5487 +33554432,161.617 +67108864,312.861 +134217728,622.453 +268435456,1243.82 +536870912,2481.56 +1073741824,4931.42 +16,0.0001 +32,0.0001 +64,0.0001 +128,0.0002 +256,0.0004 +512,0.0008 +1024,0.0007 +2048,0.0012 +4096,0.0024 +8192,0.0048 +16384,0.0096 +32768,0.0198 +65536,0.0389 +131072,0.1057 +262144,1.2989 +524288,2.4451 +1048576,4.8229 +2097152,9.5166 +4194304,19.9574 +8388608,40.1179 +16777216,75.7069 +33554432,157.614 +67108864,315.768 +134217728,622.99 +268435456,1235.31 +536870912,2470.9 +1073741824,4944.16 +16,0.0001 +32,0.0001 +64,0.0001 +128,0.0002 +256,0.0003 +512,0.0004 +1024,0.0012 +2048,0.0155 +4096,0.0026 +8192,0.0052 +16384,0.0286 +32768,0.0196 +65536,0.0389 +131072,0.0779 +262144,1.2344 +524288,2.4215 +1048576,5.0857 +2097152,9.4877 +4194304,18.9795 +8388608,40.1097 +16777216,76.5426 +33554432,152.15 +67108864,310.861 +134217728,628.504 +268435456,1239.53 +536870912,2487.66 +1073741824,4919.63 +16,0.0001 +32,0.0001 +64,0.0001 +128,0.0002 +256,0.0004 +512,0.0004 +1024,0.0007 +2048,0.0012 +4096,0.0024 +8192,0.0049 +16384,0.0179 +32768,0.0196 +65536,0.0696 +131072,0.0813 +262144,1.2369 +524288,2.8688 +1048576,4.8949 +2097152,11.4096 +4194304,20.8154 +8388608,38.9855 +16777216,75.1228 +33554432,155.599 +67108864,305.275 +134217728,614.611 +268435456,1239.76 +536870912,2467.96 +1073741824,4924.22 +16,0.0001 +32,0.0001 +64,0.0002 +128,0.0002 +256,0.0002 +512,0.0004 +1024,0.0007 +2048,0.0013 +4096,0.0046 +8192,0.0049 +16384,0.0101 +32768,0.0414 +65536,0.0384 +131072,0.077 +262144,1.2126 +524288,2.4508 +1048576,4.9076 +2097152,9.4328 +4194304,19.6174 +8388608,38.0719 +16777216,78.3668 +33554432,155.2 +67108864,306.955 +134217728,616.551 +268435456,1276.69 +536870912,2483.47 +1073741824,4941.65 +16,0.0001 +32,0.0001 +64,0.0002 +128,0.0002 +256,0.0003 +512,0.0003 +1024,0.0017 +2048,0.0013 +4096,0.0025 +8192,0.0235 +16384,0.0097 +32768,0.0385 +65536,0.0377 +131072,0.0876 +262144,1.2362 +524288,2.8676 +1048576,5.046 +2097152,9.4496 +4194304,19.6876 +8388608,37.1965 +16777216,75.2385 +33554432,155.54 +67108864,309.974 +134217728,619.277 +268435456,1242.52 +536870912,2482.54 +1073741824,4935.81 +16,0.0001 +32,0.0002 +64,0.0001 +128,0.0002 +256,0.0007 +512,0.0004 +1024,0.0006 +2048,0.0013 +4096,0.016 +8192,0.005 +16384,0.0105 +32768,0.0214 +65536,0.0382 +131072,0.0785 +262144,1.2014 +524288,2.4298 +1048576,4.8184 +2097152,10.121 +4194304,20.0471 +8388608,39.0134 +16777216,76.4518 +33554432,158.195 +67108864,309.337 +134217728,623.814 +268435456,1233.61 +536870912,2468.47 +1073741824,4922.41 +16,0.0001 +32,0.0001 +64,0.0003 +128,0.0004 +256,0.0002 +512,0.0004 +1024,0.0007 +2048,0.0012 +4096,0.0025 +8192,0.005 +16384,0.0097 +32768,0.0198 +65536,0.0398 +131072,0.0777 +262144,1.3193 +524288,2.3412 +1048576,4.8811 +2097152,9.5116 +4194304,20.5709 +8388608,39.7812 +16777216,75.7704 +33554432,152.218 +67108864,315.124 +134217728,621.638 +268435456,1234.91 +536870912,2477.46 +1073741824,4928.76 +16,0.0001 +32,0.0001 +64,0.0001 +128,0.0003 +256,0.0004 +512,0.0004 +1024,0.0007 +2048,0.0013 +4096,0.0157 +8192,0.005 +16384,0.0103 +32768,0.0332 +65536,0.0535 +131072,0.0784 +262144,1.2005 +524288,2.5337 +1048576,4.8972 +2097152,9.5407 +4194304,21.7232 +8388608,38.4641 +16777216,77.2462 +33554432,155.923 +67108864,304.533 +134217728,613.346 +268435456,1241.15 +536870912,2475.63 +1073741824,4934.1 +16,0.0001 +32,0.0001 +64,0.0002 +128,0.0003 +256,0.0004 +512,0.0007 +1024,0.0007 +2048,0.0012 +4096,0.0052 +8192,0.0048 +16384,0.0118 +32768,0.0197 +65536,0.0391 +131072,0.0883 +262144,1.3238 +524288,2.4366 +1048576,5.7096 +2097152,10.1249 +4194304,21.2978 +8388608,38.5028 +16777216,78.2257 +33554432,154.318 +67108864,307.18 +134217728,618.57 +268435456,1227.83 +536870912,2486.03 +1073741824,4934.87 +16,0.0001 +32,0.0001 +64,0.0001 +128,0.0002 +256,0.0004 +512,0.0004 +1024,0.0007 +2048,0.0013 +4096,0.0025 +8192,0.005 +16384,0.0169 +32768,0.0345 +65536,0.0385 +131072,0.0782 +262144,1.308 +524288,2.4789 +1048576,4.8817 +2097152,9.7901 +4194304,18.9506 +8388608,39.1004 +16777216,77.8582 +33554432,155.453 +67108864,308.38 +134217728,619.328 +268435456,1241.51 +536870912,2478.34 diff --git a/Project2-Stream-Compaction/data_pow2_overflow/eff.csv b/Project2-Stream-Compaction/data_pow2_overflow/eff.csv new file mode 100644 index 0000000..5612d4b --- /dev/null +++ b/Project2-Stream-Compaction/data_pow2_overflow/eff.csv @@ -0,0 +1,727 @@ +16,0.501728 +32,0.579584 +64,0.474144 +128,0.52736 +256,0.60416 +512,0.550912 +1024,1.20016 +2048,0.725984 +4096,0.813088 +8192,0.772096 +16384,0.812 +32768,1.12538 +65536,1.16016 +131072,1.63741 +262144,2.62042 +524288,4.11344 +1048576,8.16227 +2097152,15.9242 +4194304,30.0329 +8388608,58.1683 +16777216,115.291 +33554432,228.399 +67108864,449.542 +134217728,919.502 +268435456,1817.63 +536870912,3691.26 +16,0.769024 +32,0.683008 +64,0.638976 +128,0.584704 +256,0.724992 +512,0.912384 +1024,0.859136 +2048,0.892928 +4096,0.87552 +8192,0.920576 +16384,0.955392 +32768,1.09568 +65536,1.34963 +131072,1.80736 +262144,2.65933 +524288,4.39501 +1048576,7.79571 +2097152,15.3027 +4194304,29.655 +8388608,56.5012 +16777216,112.724 +33554432,222.932 +67108864,463.368 +134217728,928.035 +268435456,1842.95 +536870912,3618.4 +16,0.82944 +32,0.888832 +64,0.846848 +128,0.728064 +256,0.848896 +512,0.750592 +1024,0.797696 +2048,0.755712 +4096,1.13152 +8192,0.832512 +16384,0.990208 +32768,1.04038 +65536,1.27078 +131072,1.64659 +262144,2.50266 +524288,4.26496 +1048576,8.15411 +2097152,16.469 +4194304,30.9443 +8388608,56.4849 +16777216,113.758 +33554432,221.909 +67108864,456.858 +134217728,923.531 +268435456,1884.83 +536870912,3633.14 +16,0.833536 +32,0.818176 +64,0.841728 +128,0.841728 +256,0.806912 +512,0.816128 +1024,0.828416 +2048,0.678912 +4096,1.11206 +8192,0.975872 +16384,1.05165 +32768,1.28512 +65536,1.2759 +131072,1.97939 +262144,2.64602 +524288,4.16563 +1048576,8.29235 +2097152,17.0619 +4194304,29.4871 +8388608,57.6225 +16777216,114.751 +33554432,232.777 +67108864,455.224 +134217728,907.029 +268435456,1854.17 +536870912,3680.25 +16,0.78336 +32,1.52064 +64,0.684032 +128,0.779264 +256,1.1049 +512,1.49197 +1024,1.03936 +2048,0.83968 +4096,1.02912 +8192,1.11411 +16384,0.927744 +32768,1.24109 +65536,1.51962 +131072,1.73466 +262144,2.44736 +524288,4.41549 +1048576,7.99846 +2097152,15.1521 +4194304,29.8742 +8388608,57.3143 +16777216,112.634 +33554432,228.826 +67108864,446.761 +134217728,923.816 +268435456,1825.71 +536870912,3732.8 +16,0.939008 +32,0.869376 +64,0.968704 +128,0.761856 +256,0.843776 +512,0.760832 +1024,0.883712 +2048,0.792576 +4096,0.877568 +8192,0.896 +16384,0.934912 +32768,1.31379 +65536,1.97837 +131072,1.68755 +262144,2.79347 +524288,4.94285 +1048576,8.69478 +2097152,14.7241 +4194304,29.0734 +8388608,59.4534 +16777216,111.823 +33554432,222.572 +67108864,461.103 +134217728,920.567 +268435456,1855.34 +536870912,3615.07 +16,1.54317 +32,0.828416 +64,0.83968 +128,0.83968 +256,0.78336 +512,0.812032 +1024,0.812032 +2048,0.80896 +4096,1.21856 +8192,0.795648 +16384,1.03014 +32768,1.30253 +65536,1.2329 +131072,1.85037 +262144,2.57229 +524288,4.08986 +1048576,7.80186 +2097152,16.0379 +4194304,30.3258 +8388608,58.3158 +16777216,112.821 +33554432,220.364 +67108864,458.672 +134217728,918.668 +268435456,1854.19 +536870912,3641.5 +16,0.681984 +32,0.770048 +64,0.764928 +128,0.764928 +256,0.786432 +512,0.989184 +1024,0.87552 +2048,0.935936 +4096,0.951296 +8192,1.22778 +16384,0.904192 +32768,1.20013 +65536,1.4551 +131072,2.3255 +262144,2.6921 +524288,4.08986 +1048576,8.26266 +2097152,15.9181 +4194304,28.6853 +8388608,56.3712 +16777216,113.063 +33554432,227.651 +67108864,456.378 +134217728,907.055 +268435456,1844.68 +536870912,3682.68 +16,0.684032 +32,0.820224 +64,0.718848 +128,0.799744 +256,1.4377 +512,0.925696 +1024,0.786432 +2048,0.940032 +4096,0.881664 +8192,0.892928 +16384,1.00147 +32768,1.03117 +65536,1.98451 +131072,2.05619 +262144,2.91226 +524288,4.82611 +1048576,8.0087 +2097152,15.0569 +4194304,29.5813 +8388608,56.9702 +16777216,110.756 +33554432,225.796 +67108864,448.569 +134217728,917.784 +268435456,1814.1 +536870912,3706.49 +16,0.889856 +32,0.764928 +64,0.877568 +128,0.852992 +256,0.927744 +512,1.05165 +1024,0.980992 +2048,0.80384 +4096,0.933888 +8192,0.861184 +16384,1.03424 +32768,1.19808 +65536,1.38138 +131072,1.62714 +262144,2.58458 +524288,4.1216 +1048576,8.03021 +2097152,14.9524 +4194304,29.5813 +8388608,56.6897 +16777216,111.003 +33554432,224.259 +67108864,457.815 +134217728,928.072 +268435456,1836.65 +536870912,3600.29 +16,0.644096 +32,1.05677 +64,0.683008 +128,0.688128 +256,0.813056 +512,0.907264 +1024,1.11309 +2048,0.843776 +4096,0.816128 +8192,0.940032 +16384,1.05984 +32768,1.4848 +65536,1.75923 +131072,1.75309 +262144,2.54566 +524288,4.12262 +1048576,7.95136 +2097152,14.7487 +4194304,30.4896 +8388608,58.1151 +16777216,114.682 +33554432,223.833 +67108864,457.898 +134217728,932.462 +268435456,1856.7 +536870912,3632.16 +16,1.01888 +32,0.74752 +64,1.61485 +128,0.831488 +256,0.750592 +512,1.57389 +1024,0.80384 +2048,0.858112 +4096,1.27693 +8192,0.896 +16384,0.838656 +32768,1.63635 +65536,1.19603 +131072,1.65274 +262144,2.64397 +524288,4.52301 +1048576,8.3753 +2097152,15.358 +4194304,30.4722 +8388608,55.3574 +16777216,112.953 +33554432,228.006 +67108864,456.25 +134217728,908.634 +268435456,1841 +536870912,3689.34 +16,0.77824 +32,0.80896 +64,0.807936 +128,1.74797 +256,0.770048 +512,0.780288 +1024,0.745472 +2048,0.799744 +4096,0.896 +8192,0.863232 +16384,0.869376 +32768,1.35885 +65536,1.33837 +131072,2.24768 +262144,2.49651 +524288,4.19533 +1048576,7.99642 +2097152,15.4819 +4194304,30.7651 +8388608,57.6317 +16777216,111.502 +33554432,227.141 +67108864,446.893 +134217728,923.486 +268435456,1814.58 +536870912,3708.02 +16,0.66048 +32,0.663552 +64,0.69632 +128,0.704512 +256,0.751616 +512,0.681984 +1024,0.863232 +2048,0.852992 +4096,0.813056 +8192,0.85504 +16384,1.58106 +32768,1.0537 +65536,1.2247 +131072,2.44326 +262144,2.63987 +524288,4.05914 +1048576,8.33126 +2097152,16.2253 +4194304,29.8629 +8388608,58.6516 +16777216,112.366 +33554432,223.384 +67108864,463.292 +134217728,937.406 +268435456,1843.17 +536870912,3598.4 +16,0.787456 +32,1.1049 +64,0.88576 +128,0.766976 +256,0.800768 +512,0.74752 +1024,0.806912 +2048,0.818176 +4096,0.914432 +8192,1.19194 +16384,0.976896 +32768,1.08339 +65536,1.22778 +131072,1.71827 +262144,2.91942 +524288,4.09293 +1048576,8.22067 +2097152,15.7317 +4194304,30.507 +8388608,58.3547 +16777216,114.132 +33554432,219.187 +67108864,456.125 +134217728,922.487 +268435456,1850.1 +536870912,3645.96 +16,1.3568 +32,0.748544 +64,0.515072 +128,0.791552 +256,0.78848 +512,1.1264 +1024,0.828416 +2048,0.864256 +4096,0.801792 +8192,0.817152 +16384,0.800768 +32768,1.19091 +65536,1.20525 +131072,1.90566 +262144,2.53542 +524288,4.72781 +1048576,8.2944 +2097152,15.6682 +4194304,28.5542 +8388608,54.8332 +16777216,111.574 +33554432,227.14 +67108864,452.946 +134217728,916.864 +268435456,1840.79 +536870912,3670.41 +16,0.713728 +32,0.657408 +64,0.674816 +128,0.873472 +256,0.715776 +512,0.83456 +1024,0.613376 +2048,0.894976 +4096,0.995328 +8192,0.953344 +16384,0.874496 +32768,1.07725 +65536,1.18886 +131072,1.93638 +262144,2.6839 +524288,4.23629 +1048576,8.28826 +2097152,16.2529 +4194304,29.353 +8388608,56.0476 +16777216,111.103 +33554432,226.993 +67108864,448.245 +134217728,910.765 +268435456,1811.89 +536870912,3686.72 +16,0.826368 +32,0.733184 +64,0.837632 +128,0.698368 +256,0.8448 +512,0.78848 +1024,0.815104 +2048,0.838656 +4096,0.84992 +8192,0.941056 +16384,0.91648 +32768,1.03936 +65536,1.34246 +131072,1.96301 +262144,2.4873 +524288,4.14925 +1048576,8.28621 +2097152,14.7057 +4194304,29.0775 +8388608,56.3323 +16777216,111.903 +33554432,221.468 +67108864,457.52 +134217728,927.165 +268435456,1836.23 +536870912,3587.68 +16,0.618496 +32,0.717824 +64,0.777216 +128,0.861184 +256,0.827392 +512,0.876544 +1024,0.81408 +2048,0.785408 +4096,0.82944 +8192,0.898048 +16384,0.96768 +32768,1.13357 +65536,1.67936 +131072,1.72134 +262144,2.50675 +524288,4.07347 +1048576,8.32205 +2097152,15.5494 +4194304,29.8598 +8388608,58.9394 +16777216,113.337 +33554432,222.13 +67108864,463.532 +134217728,916.65 +268435456,1853.78 +536870912,3626.46 +16,0.720896 +32,0.78848 +64,0.684032 +128,0.786432 +256,0.699392 +512,0.76288 +1024,0.842752 +2048,1.14691 +4096,0.920576 +8192,0.878592 +16384,1.05267 +32768,1.05574 +65536,1.70189 +131072,1.72544 +262144,2.4535 +524288,4.74522 +1048576,7.80288 +2097152,15.3293 +4194304,29.0386 +8388608,56.4224 +16777216,116.291 +33554432,229.072 +67108864,456.76 +134217728,910.389 +268435456,1838.71 +536870912,3673.71 +16,0.735232 +32,0.729088 +64,0.626688 +128,1.85446 +256,0.8192 +512,0.86016 +1024,0.90624 +2048,0.980992 +4096,0.846848 +8192,1.1223 +16384,1.03322 +32768,1.16429 +65536,1.30867 +131072,1.79814 +262144,3.08326 +524288,4.20762 +1048576,7.72506 +2097152,15.1706 +4194304,28.9403 +8388608,55.1598 +16777216,110.479 +33554432,226.793 +67108864,448.248 +134217728,916.514 +268435456,1819.95 +536870912,3711.88 +16,0.77312 +32,0.833536 +64,0.765952 +128,0.674816 +256,0.802816 +512,0.736256 +1024,0.832512 +2048,0.900096 +4096,1.01274 +8192,0.918528 +16384,0.868352 +32768,1.02912 +65536,1.29229 +131072,1.78893 +262144,2.67674 +524288,4.41856 +1048576,8.10189 +2097152,15.7399 +4194304,29.2915 +8388608,58.4858 +16777216,110.87 +33554432,227.797 +67108864,460.929 +134217728,921.014 +268435456,1839.81 +536870912,3590.48 +16,0.676864 +32,0.7936 +64,0.73216 +128,0.771072 +256,0.792576 +512,0.836608 +1024,0.753664 +2048,0.801792 +4096,0.821248 +8192,0.907264 +16384,0.950272 +32768,1.10592 +65536,1.24826 +131072,1.66912 +262144,2.50163 +524288,4.09088 +1048576,8.47053 +2097152,15.5331 +4194304,29.3632 +8388608,55.7097 +16777216,113.024 +33554432,221.001 +67108864,456.576 +134217728,917.876 +268435456,1843.94 +536870912,3628.28 +16,0.647168 +32,0.684032 +64,0.539648 +128,0.529408 +256,0.743424 +512,0.758784 +1024,0.72192 +2048,0.84992 +4096,0.797696 +8192,0.854016 +16384,0.889856 +32768,0.975872 +65536,1.3568 +131072,1.69677 +262144,2.5856 +524288,4.31411 +1048576,8.23194 +2097152,15.359 +4194304,28.6976 +8388608,55.8479 +16777216,112.417 +33554432,229.461 +67108864,453.462 +134217728,906.691 +268435456,1839.56 +536870912,3692.3 +16,0.748544 +32,0.93184 +64,0.77824 +128,0.7936 +256,0.787456 +512,0.777216 +1024,0.851968 +2048,0.845824 +4096,0.852992 +8192,1.00966 +16384,0.958464 +32768,1.23085 +65536,1.31379 +131072,1.7367 +262144,2.52314 +524288,4.66125 +1048576,8.57395 +2097152,15.8044 +4194304,28.8911 +8388608,57.9615 +16777216,110.923 +33554432,225.208 +67108864,447.297 +134217728,919.329 +268435456,1812.15 +536870912,3696.18 +16,0.656384 +32,0.825344 +64,0.809984 +128,0.785408 +256,0.668672 +512,0.661504 +1024,1.07008 +2048,0.734208 +4096,0.894976 +8192,1.67731 +16384,0.969728 +32768,1.65478 +65536,1.39469 +131072,2.13299 +262144,2.7904 +524288,4.64998 +1048576,8.12134 +2097152,14.7087 +4194304,28.6065 +8388608,58.4684 +16777216,113.143 +33554432,223.527 +67108864,465.061 +134217728,923.717 +268435456,1830.86 +536870912,3587 +16,0.731136 +32,0.863232 +64,0.77312 +128,0.794624 +256,0.751616 +512,0.673792 +1024,0.980992 +2048,0.815104 +4096,0.892928 +8192,1.05574 +16384,0.992256 +32768,1.04448 +65536,1.20627 +131072,1.77459 +262144,2.54362 +524288,4.79232 +1048576,8.19098 +2097152,15.8802 +4194304,30.7333 +8388608,56.2432 +16777216,112.08 +33554432,221.441 +67108864,457.765 +134217728,917.674 +268435456,1856.04 +536870912,3628.67 +16,0.692224 +32,0.837632 +64,0.80896 +128,0.812032 +256,0.999424 +512,1.13664 +1024,0.75264 +2048,0.775168 +4096,0.812032 +8192,0.841728 +16384,0.891904 +32768,1.1049 +65536,1.20627 +131072,1.81965 +262144,2.66138 +524288,4.15232 +1048576,7.82541 +2097152,15.2822 +4194304,28.1508 +8388608,54.7994 +16777216,112.366 +33554432,230.204 +67108864,452.938 +134217728,912.668 +268435456,1832.4 diff --git a/Project2-Stream-Compaction/data_pow2_overflow/naive.csv b/Project2-Stream-Compaction/data_pow2_overflow/naive.csv new file mode 100644 index 0000000..b5b0668 --- /dev/null +++ b/Project2-Stream-Compaction/data_pow2_overflow/naive.csv @@ -0,0 +1,728 @@ +16,0.568288 +32,1.83706 +64,0.441344 +128,0.445408 +256,0.482304 +512,0.588832 +1024,0.532512 +2048,0.625664 +4096,0.562176 +8192,1.05574 +16384,0.987136 +32768,1.00963 +65536,0.927744 +131072,1.33328 +262144,2.24771 +524288,4.9152 +1048576,7.86022 +2097152,15.5207 +4194304,30.3299 +8388608,59.8303 +16777216,118.696 +33554432,246.218 +67108864,474.355 +134217728,939.984 +268435456,1906.23 +536870912,3877.03 +16,0.4864 +32,0.651264 +64,0.493568 +128,0.520192 +256,0.68608 +512,0.66048 +1024,0.69632 +2048,0.668672 +4096,0.651264 +8192,1.00454 +16384,0.90624 +32768,0.90624 +65536,1.21139 +131072,1.61178 +262144,2.432 +524288,4.49536 +1048576,8.16026 +2097152,15.4245 +4194304,31.9058 +8388608,57.2703 +16777216,115.14 +33554432,231.568 +67108864,473.264 +134217728,936.482 +268435456,1885.07 +536870912,3806.84 +16,0.656384 +32,0.622592 +64,0.73728 +128,0.749568 +256,0.805888 +512,0.646144 +1024,0.632832 +2048,0.710656 +4096,0.722944 +8192,0.718848 +16384,1.15302 +32768,1.01274 +65536,1.06394 +131072,1.44998 +262144,3.19386 +524288,4.27315 +1048576,8.92006 +2097152,15.445 +4194304,29.3437 +8388608,58.5114 +16777216,115.524 +33554432,230.422 +67108864,464.502 +134217728,939.131 +268435456,1910.65 +536870912,4005.35 +16,0.678912 +32,0.717824 +64,0.67072 +128,0.643072 +256,0.572416 +512,0.71168 +1024,0.805888 +2048,0.647168 +4096,0.755712 +8192,0.904192 +16384,0.739328 +32768,0.975872 +65536,1.25747 +131072,1.63226 +262144,2.46477 +524288,4.72269 +1048576,8.12026 +2097152,15.316 +4194304,29.5834 +8388608,57.5631 +16777216,115.272 +33554432,233.089 +67108864,465.003 +134217728,940.858 +268435456,1889.03 +536870912,3850.7 +16,0.8192 +32,0.49664 +64,0.607232 +128,1.05165 +256,0.733184 +512,0.735232 +1024,1.0025 +2048,0.661504 +4096,0.722944 +8192,0.607232 +16384,0.857088 +32768,0.785408 +65536,1.05267 +131072,1.48378 +262144,2.2231 +524288,4.25574 +1048576,8.01382 +2097152,16.5632 +4194304,30.2397 +8388608,57.7915 +16777216,114.613 +33554432,232.286 +67108864,470.854 +134217728,937.821 +268435456,1895.12 +536870912,3815.89 +16,0.571392 +32,0.434176 +64,0.553984 +128,1.37523 +256,0.653312 +512,0.746496 +1024,0.740352 +2048,1.09056 +4096,0.745472 +8192,0.779264 +16384,0.774144 +32768,0.806912 +65536,1.11514 +131072,1.64864 +262144,2.36442 +524288,4.30899 +1048576,8.64973 +2097152,16.1874 +4194304,30.8265 +8388608,57.4894 +16777216,113.783 +33554432,228.291 +67108864,465.702 +134217728,934.44 +268435456,1897.3 +536870912,3802.56 +16,0.507904 +32,0.50688 +64,0.781312 +128,0.648192 +256,0.68096 +512,0.576512 +1024,0.6144 +2048,0.613376 +4096,0.75776 +8192,0.746496 +16384,0.658432 +32768,0.927744 +65536,1.20934 +131072,1.54726 +262144,2.55078 +524288,4.72678 +1048576,8.8617 +2097152,15.3876 +4194304,29.1707 +8388608,57.3962 +16777216,115.693 +33554432,229.418 +67108864,464.325 +134217728,939.581 +268435456,1888.49 +536870912,3798.46 +16,0.620544 +32,0.6656 +64,0.636928 +128,0.694272 +256,0.68096 +512,0.685056 +1024,0.64 +2048,0.891904 +4096,0.751616 +8192,0.623616 +16384,1.01683 +32768,0.960512 +65536,1.14688 +131072,1.64762 +262144,2.93171 +524288,4.49331 +1048576,8.8617 +2097152,15.0067 +4194304,29.5311 +8388608,58.4643 +16777216,113.7 +33554432,230.513 +67108864,464.954 +134217728,934.345 +268435456,1880.97 +536870912,3781.11 +16,0.64 +32,0.549888 +64,0.596992 +128,0.681984 +256,0.63488 +512,0.46592 +1024,0.698368 +2048,0.73216 +4096,0.75776 +8192,0.795648 +16384,0.826368 +32768,0.789504 +65536,1.00454 +131072,1.57389 +262144,2.39718 +524288,4.41754 +1048576,7.9872 +2097152,15.7696 +4194304,29.7708 +8388608,58.2226 +16777216,116.271 +33554432,231.39 +67108864,464.026 +134217728,936.081 +268435456,1886.9 +536870912,3790.98 +16,0.575488 +32,0.638976 +64,0.64 +128,0.628736 +256,1.04346 +512,0.623616 +1024,0.720896 +2048,0.651264 +4096,0.868352 +8192,0.709536 +16384,0.815104 +32768,0.850944 +65536,0.956416 +131072,1.32096 +262144,2.23846 +524288,4.60595 +1048576,7.7865 +2097152,16.7066 +4194304,29.9459 +8388608,57.4771 +16777216,115.929 +33554432,230.071 +67108864,463.261 +134217728,936.62 +268435456,1881.36 +536870912,3795.84 +16,0.431104 +32,0.566272 +64,0.438272 +128,0.49152 +256,0.743424 +512,0.702464 +1024,0.544768 +2048,0.672768 +4096,0.642048 +8192,0.843776 +16384,0.815104 +32768,0.79872 +65536,1.18579 +131072,1.59437 +262144,2.44019 +524288,5.04115 +1048576,8.31488 +2097152,15.6641 +4194304,29.7667 +8388608,58.028 +16777216,115.112 +33554432,231.55 +67108864,465.803 +134217728,942.306 +268435456,1887.36 +536870912,3789.96 +16,0.59904 +32,0.689152 +64,0.567296 +128,0.703488 +256,0.572416 +512,0.611328 +1024,0.78336 +2048,0.67072 +4096,0.73728 +8192,0.866304 +16384,0.833536 +32768,0.930816 +65536,1.73261 +131072,1.60051 +262144,2.27738 +524288,4.23424 +1048576,8.55245 +2097152,15.2033 +4194304,29.2915 +8388608,58.3864 +16777216,114.557 +33554432,231.906 +67108864,466.66 +134217728,939.44 +268435456,1889.26 +536870912,3809.81 +16,0.623616 +32,0.499712 +64,0.566272 +128,0.651264 +256,0.658432 +512,0.800768 +1024,0.699392 +2048,0.620544 +4096,0.70144 +8192,0.915456 +16384,0.676864 +32768,1.12435 +65536,1.52269 +131072,1.49914 +262144,2.34902 +524288,4.33869 +1048576,7.82541 +2097152,15.3027 +4194304,29.7544 +8388608,56.4511 +16777216,113.114 +33554432,231.999 +67108864,464.351 +134217728,935.449 +268435456,1882.83 +536870912,3782.87 +16,0.658432 +32,0.677888 +64,0.579584 +128,0.621568 +256,0.683008 +512,0.611328 +1024,0.54784 +2048,0.698368 +4096,0.797696 +8192,0.754688 +16384,0.641024 +32768,0.809984 +65536,1.20723 +131072,1.6599 +262144,2.50163 +524288,4.69504 +1048576,8.44698 +2097152,16.1382 +4194304,30.0032 +8388608,57.1546 +16777216,113.417 +33554432,232.288 +67108864,462.586 +134217728,939.264 +268435456,1883.05 +536870912,3785.33 +16,0.592896 +32,0.692224 +64,0.717824 +128,0.653312 +256,0.661504 +512,0.677888 +1024,0.62976 +2048,0.6144 +4096,0.718848 +8192,0.72704 +16384,0.777216 +32768,0.899072 +65536,1.01683 +131072,1.68653 +262144,2.27226 +524288,4.43597 +1048576,8.13158 +2097152,14.8019 +4194304,30.1937 +8388608,57.5877 +16777216,114.74 +33554432,233.361 +67108864,466.324 +134217728,936.186 +268435456,1877.76 +536870912,3784.23 +16,0.646144 +32,0.49664 +64,0.500736 +128,0.463872 +256,0.692224 +512,0.671744 +1024,0.6912 +2048,0.755712 +4096,0.95744 +8192,0.644096 +16384,0.666624 +32768,0.734208 +65536,0.979968 +131072,1.58618 +262144,2.304 +524288,4.49331 +1048576,8.50739 +2097152,15.4153 +4194304,30.0124 +8388608,59.8047 +16777216,115.109 +33554432,230.175 +67108864,465.113 +134217728,940.253 +268435456,1871.47 +536870912,3779.63 +16,0.466944 +32,0.577536 +64,0.649216 +128,0.539648 +256,0.681984 +512,0.649216 +1024,0.802816 +2048,0.671744 +4096,0.82432 +8192,0.828416 +16384,0.705536 +32768,0.858112 +65536,1.08237 +131072,1.41312 +262144,2.17907 +524288,4.50765 +1048576,8.37837 +2097152,15.3559 +4194304,30.3391 +8388608,58.3332 +16777216,113.931 +33554432,230.265 +67108864,469.319 +134217728,934.627 +268435456,1874.57 +536870912,3798.54 +16,0.64 +32,0.480256 +64,0.673792 +128,0.442368 +256,0.800768 +512,0.73728 +1024,0.726016 +2048,0.884736 +4096,0.81408 +8192,0.845824 +16384,0.698368 +32768,0.8448 +65536,1.82272 +131072,1.51245 +262144,2.19341 +524288,4.46259 +1048576,7.86432 +2097152,14.6391 +4194304,29.694 +8388608,57.5099 +16777216,115.57 +33554432,230.705 +67108864,469.59 +134217728,941.062 +268435456,1886 +536870912,3771.62 +16,0.466944 +32,0.420864 +64,0.643072 +128,0.58368 +256,0.791552 +512,0.668672 +1024,0.602112 +2048,0.785408 +4096,0.749568 +8192,0.985088 +16384,0.811008 +32768,0.782336 +65536,1.04755 +131072,1.46125 +262144,2.27328 +524288,4.50355 +1048576,8.38554 +2097152,15.0671 +4194304,30.8244 +8388608,56.7214 +16777216,113.965 +33554432,230.951 +67108864,464.174 +134217728,934.404 +268435456,1877.56 +536870912,3776.63 +16,0.505856 +32,0.585728 +64,0.520192 +128,0.643072 +256,0.707584 +512,0.702464 +1024,0.695296 +2048,0.709632 +4096,0.692224 +8192,0.797696 +16384,0.842752 +32768,0.991232 +65536,1.17965 +131072,1.52269 +262144,2.65318 +524288,4.62541 +1048576,8.24627 +2097152,15.1675 +4194304,28.6986 +8388608,56.8771 +16777216,117.518 +33554432,230.626 +67108864,465.151 +134217728,934.519 +268435456,1883.04 +536870912,3773.48 +16,0.538624 +32,0.62464 +64,0.570368 +128,0.470016 +256,0.487424 +512,0.676864 +1024,0.648192 +2048,0.612352 +4096,0.786432 +8192,0.854016 +16384,0.710656 +32768,0.876544 +65536,1.32915 +131072,1.35475 +262144,2.3767 +524288,4.61619 +1048576,7.85101 +2097152,15.6733 +4194304,28.8594 +8388608,59.266 +16777216,116.006 +33554432,229.633 +67108864,464.417 +134217728,955.661 +268435456,1889.23 +536870912,3768.78 +16,0.5376 +32,0.467968 +64,0.71168 +128,0.616448 +256,0.699392 +512,0.600064 +1024,0.718848 +2048,0.585728 +4096,0.775168 +8192,0.728064 +16384,0.945152 +32768,0.840704 +65536,1.16326 +131072,1.84934 +262144,2.29376 +524288,4.1513 +1048576,7.9616 +2097152,16.044 +4194304,29.2096 +8388608,58.3916 +16777216,117.37 +33554432,228.709 +67108864,463.687 +134217728,938.432 +268435456,1865.95 +536870912,3783.44 +16,0.546816 +32,0.668672 +64,0.86528 +128,0.585728 +256,0.59904 +512,0.673792 +1024,0.555008 +2048,0.674816 +4096,0.693248 +8192,0.982016 +16384,0.684032 +32768,0.822272 +65536,0.965632 +131072,1.50733 +262144,2.5815 +524288,4.35405 +1048576,8.22989 +2097152,15.5597 +4194304,30.2735 +8388608,59.0029 +16777216,114.074 +33554432,229.052 +67108864,462.386 +134217728,934.963 +268435456,1881.41 +536870912,3772.99 +16,0.446464 +32,0.490496 +64,0.44032 +128,0.494592 +256,0.745472 +512,0.745472 +1024,0.695296 +2048,1.33939 +4096,0.61952 +8192,0.77824 +16384,0.743424 +32768,0.862208 +65536,1.03526 +131072,1.46842 +262144,2.33574 +524288,4.89062 +1048576,8.23808 +2097152,15.6938 +4194304,30.3534 +8388608,58.2707 +16777216,114.126 +33554432,234.282 +67108864,470.796 +134217728,936.87 +268435456,1881.01 +536870912,3765.27 +16,0.59904 +32,0.717824 +64,0.618496 +128,0.65536 +256,0.66048 +512,0.806912 +1024,0.690176 +2048,0.748544 +4096,0.809984 +8192,1.43667 +16384,0.763904 +32768,0.76288 +65536,1.02195 +131072,1.536 +262144,2.42269 +524288,4.49331 +1048576,8.08858 +2097152,14.7395 +4194304,30.4712 +8388608,57.428 +16777216,115.153 +33554432,231.174 +67108864,464.07 +134217728,939.176 +268435456,1884.53 +536870912,3779.48 +16,0.438272 +32,0.618496 +64,0.658432 +128,0.534528 +256,0.512 +512,0.531456 +1024,0.688128 +2048,0.71168 +4096,0.80384 +8192,0.782336 +16384,0.729088 +32768,0.94208 +65536,1.23494 +131072,1.38854 +262144,2.37363 +524288,4.43904 +1048576,7.8807 +2097152,16.3011 +4194304,30.164 +8388608,59.2589 +16777216,114.622 +33554432,229.712 +67108864,465.78 +134217728,935.852 +268435456,1874.76 +536870912,3784.38 +16,0.70144 +32,0.610304 +64,0.628736 +128,0.490496 +256,0.533504 +512,0.519168 +1024,0.689152 +2048,0.60416 +4096,0.751616 +8192,1.2288 +16384,0.800768 +32768,0.794624 +65536,1.08032 +131072,1.51859 +262144,2.27226 +524288,4.44211 +1048576,7.91347 +2097152,14.9238 +4194304,30.7507 +8388608,58.0352 +16777216,118.416 +33554432,229.218 +67108864,464.693 +134217728,934.472 +268435456,1884.95 +536870912,3775.24 +16,0.453632 +32,0.510976 +64,0.970752 +128,0.658432 +256,0.512 +512,0.591872 +1024,0.695296 +2048,0.631808 +4096,0.728064 +8192,0.93184 +16384,0.837632 +32768,0.86528 +65536,1.03731 +131072,1.52474 +262144,2.39411 +524288,4.53939 +1048576,7.82029 +2097152,15.2146 +4194304,29.5793 +8388608,56.7009 +16777216,113.332 +33554432,232.496 +67108864,469.313 +134217728,936.669 +268435456,1875.85 +536870912,3803.71 diff --git a/Project2-Stream-Compaction/data_pow2_overflow/shared_mem.csv b/Project2-Stream-Compaction/data_pow2_overflow/shared_mem.csv new file mode 100644 index 0000000..33e0b50 --- /dev/null +++ b/Project2-Stream-Compaction/data_pow2_overflow/shared_mem.csv @@ -0,0 +1,754 @@ +16,0.770048 +32,0.710656 +64,0.538624 +128,0.830464 +256,0.731104 +512,0.608256 +1024,0.751616 +2048,0.633888 +4096,0.707584 +8192,0.724992 +16384,0.840736 +32768,0.894976 +65536,1.03014 +131072,3.78163 +262144,2.30605 +524288,4.47389 +1048576,8.08752 +2097152,14.3985 +4194304,28.4457 +8388608,55.2673 +16777216,112.259 +33554432,215.843 +67108864,428.085 +134217728,863.616 +268435456,1707.98 +536870912,3425.61 +1073741824,6960.56 +16,0.64512 +32,0.715776 +64,0.561152 +128,0.700416 +256,1.02912 +512,0.734208 +1024,0.811008 +2048,0.832512 +4096,0.784384 +8192,0.980992 +16384,0.845824 +32768,0.908288 +65536,1.05165 +131072,1.58618 +262144,2.84877 +524288,4.93261 +1048576,7.71072 +2097152,14.6647 +4194304,28.1272 +8388608,54.8239 +16777216,105.636 +33554432,219.388 +67108864,426.417 +134217728,859.37 +268435456,1736.52 +536870912,3456.87 +1073741824,6979.25 +16,1.08134 +32,0.827392 +64,0.840704 +128,0.744448 +256,0.708608 +512,0.720896 +1024,2.0695 +2048,0.715776 +4096,0.693248 +8192,1.24006 +16384,0.80384 +32768,0.987136 +65536,0.965632 +131072,1.63328 +262144,3.23891 +524288,4.63974 +1048576,8.00563 +2097152,15.2279 +4194304,28.1477 +8388608,54.5495 +16777216,105.205 +33554432,212.649 +67108864,439.126 +134217728,858.261 +268435456,1753.34 +536870912,3567.7 +1073741824,6895.56 +16,0.928768 +32,0.787456 +64,0.891904 +128,0.751616 +256,0.733184 +512,0.832512 +1024,0.86016 +2048,0.78848 +4096,0.79872 +8192,0.828416 +16384,0.872448 +32768,0.879616 +65536,1.20218 +131072,1.54214 +262144,3.15802 +524288,4.18406 +1048576,7.84179 +2097152,14.8982 +4194304,27.9716 +8388608,55.5356 +16777216,106.169 +33554432,214.48 +67108864,426.617 +134217728,855.351 +268435456,1720.56 +536870912,3442.78 +1073741824,6974.63 +16,0.95744 +32,0.886784 +64,0.830464 +128,0.730112 +256,0.948224 +512,0.856064 +1024,0.92672 +2048,0.823296 +4096,0.818176 +8192,0.750592 +16384,0.760832 +32768,0.837632 +65536,1.01581 +131072,1.42234 +262144,2.82317 +524288,4.43187 +1048576,8.22067 +2097152,15.1572 +4194304,28.1416 +8388608,54.8833 +16777216,105.774 +33554432,220.239 +67108864,428.276 +134217728,856.264 +268435456,1727.06 +536870912,3452.75 +1073741824,6962.23 +16,0.898048 +32,0.934912 +64,1.17146 +128,0.874496 +256,0.801792 +512,0.758784 +1024,0.771072 +2048,0.802816 +4096,0.797696 +8192,0.968704 +16384,1.11411 +32768,0.929792 +65536,1.37728 +131072,1.50118 +262144,2.8713 +524288,4.29568 +1048576,8.59136 +2097152,15.2259 +4194304,29.1308 +8388608,55.5325 +16777216,105.755 +33554432,213.662 +67108864,428.605 +134217728,861.007 +268435456,1708.57 +536870912,3444.78 +1073741824,6937.47 +16,0.731136 +32,0.898048 +64,0.90624 +128,0.884736 +256,0.902144 +512,1.05779 +1024,1.0752 +2048,0.805824 +4096,0.730112 +8192,0.786432 +16384,0.823296 +32768,0.948224 +65536,0.966656 +131072,1.61178 +262144,2.51392 +524288,4.23936 +1048576,8.3241 +2097152,15.1808 +4194304,27.8456 +8388608,55.4066 +16777216,107.875 +33554432,213.356 +67108864,430.195 +134217728,853.846 +268435456,1721.23 +536870912,3431.98 +1073741824,6876.25 +16,0.712704 +32,0.733184 +64,0.83456 +128,0.79872 +256,0.77824 +512,0.78848 +1024,0.756736 +2048,0.8192 +4096,0.792576 +8192,0.817152 +16384,0.749568 +32768,0.95744 +65536,1.152 +131072,1.5575 +262144,2.9225 +524288,4.63053 +1048576,8.20941 +2097152,14.9545 +4194304,27.3654 +8388608,54.5413 +16777216,105.859 +33554432,214.428 +67108864,428.942 +134217728,855.782 +268435456,1723.38 +536870912,3445 +1073741824,6893.81 +16,0.769024 +32,0.797696 +64,0.989184 +128,0.734208 +256,0.821248 +512,1.664 +1024,0.748544 +2048,0.709632 +4096,0.728064 +8192,0.708608 +16384,0.771072 +32768,0.9728 +65536,1.2759 +131072,1.55238 +262144,2.63373 +524288,4.43187 +1048576,8.13466 +2097152,14.5009 +4194304,27.9808 +8388608,54.2996 +16777216,106.609 +33554432,212.862 +67108864,426.805 +134217728,857.587 +268435456,1725.75 +536870912,3444.49 +1073741824,6868.94 +16,1.8473 +32,0.882688 +64,0.910336 +128,0.88576 +256,0.902144 +512,0.766976 +1024,0.73216 +2048,0.77104 +4096,0.781312 +8192,0.838656 +16384,0.986112 +32768,0.9472 +65536,1.1817 +131072,1.44282 +262144,2.45555 +524288,4.59366 +1048576,7.9657 +2097152,14.4722 +4194304,26.9793 +8388608,54.3775 +16777216,107.455 +33554432,213.297 +67108864,426.702 +134217728,851.324 +268435456,1715.26 +536870912,3446.47 +1073741824,6869.24 +16,0.699392 +32,0.65536 +64,0.820224 +128,0.723968 +256,0.78848 +512,0.695296 +1024,1.23802 +2048,0.71168 +4096,1.27181 +8192,0.830464 +16384,0.869376 +32768,0.985088 +65536,1.27488 +131072,2.05005 +262144,2.61018 +524288,4.77389 +1048576,7.76192 +2097152,14.6493 +4194304,28.4672 +8388608,54.4287 +16777216,105.227 +33554432,212.759 +67108864,432.059 +134217728,861.433 +268435456,1719.78 +536870912,3445.69 +1073741824,6863.24 +16,0.800768 +32,0.847872 +64,0.781312 +128,0.856064 +256,0.88064 +512,0.927744 +1024,0.805888 +2048,0.809984 +4096,0.816128 +8192,0.80896 +16384,0.770048 +32768,0.898048 +65536,1.0752 +131072,1.53395 +262144,2.55283 +524288,4.4288 +1048576,7.86125 +2097152,14.8439 +4194304,28.5952 +8388608,55.7332 +16777216,106.782 +33554432,213.457 +67108864,428.334 +134217728,861.227 +268435456,1717.65 +536870912,3438.42 +1073741824,6893.32 +16,0.9472 +32,1.5575 +64,0.934912 +128,0.927744 +256,1.15098 +512,0.72704 +1024,1.1991 +2048,0.902144 +4096,0.848896 +8192,0.692224 +16384,0.791552 +32768,0.840704 +65536,1.09363 +131072,1.7408 +262144,2.45965 +524288,5.08518 +1048576,7.78445 +2097152,15.2197 +4194304,28.5184 +8388608,56.1193 +16777216,107.87 +33554432,213.555 +67108864,428.807 +134217728,863.361 +268435456,1713.91 +536870912,3448.05 +1073741824,6893.63 +16,1.01171 +32,0.736256 +64,0.703488 +128,1.52883 +256,0.726016 +512,0.543744 +1024,0.78848 +2048,0.590848 +4096,0.896 +8192,0.80896 +16384,0.877568 +32768,1.00045 +65536,1.27181 +131072,1.5616 +262144,2.53235 +524288,4.17485 +1048576,7.97491 +2097152,14.3483 +4194304,27.6603 +8388608,54.4932 +16777216,106.412 +33554432,212.62 +67108864,426.286 +134217728,855.307 +268435456,1719.73 +536870912,3431.47 +1073741824,6900.78 +16,0.845824 +32,0.705536 +64,0.96256 +128,0.750592 +256,0.791552 +512,0.710656 +1024,0.688128 +2048,1.24211 +4096,0.816128 +8192,0.751616 +16384,0.816128 +32768,0.746496 +65536,1.02093 +131072,1.5319 +262144,2.82726 +524288,4.82099 +1048576,8.51866 +2097152,14.4876 +4194304,27.7361 +8388608,56.0906 +16777216,106.45 +33554432,211.725 +67108864,430.075 +134217728,855.992 +268435456,1714.71 +536870912,3433.19 +1073741824,6869.49 +16,0.758784 +32,0.765952 +64,0.67072 +128,0.784384 +256,0.932864 +512,0.77312 +1024,0.806912 +2048,1.02093 +4096,1.3097 +8192,1.02605 +16384,0.718848 +32768,0.87552 +65536,1.05165 +131072,1.53088 +262144,2.61939 +524288,4.66227 +1048576,8.8791 +2097152,15.191 +4194304,28.2245 +8388608,55.0154 +16777216,106.377 +33554432,212.836 +67108864,427.468 +134217728,862.505 +268435456,1722.66 +536870912,3451.22 +1073741824,6857.56 +16,0.781312 +32,0.708608 +64,0.72192 +128,0.81408 +256,0.769024 +512,0.97792 +1024,0.702464 +2048,0.883712 +4096,0.84992 +8192,0.816128 +16384,0.781312 +32768,0.920576 +65536,1.05472 +131072,1.5104 +262144,2.6112 +524288,4.43597 +1048576,7.83462 +2097152,15.2627 +4194304,28.374 +8388608,53.9412 +16777216,105.643 +33554432,211.339 +67108864,433.366 +134217728,861.451 +268435456,1710.12 +536870912,3451.08 +1073741824,6877.5 +16,0.794624 +32,0.668672 +64,0.846848 +128,0.871424 +256,0.89088 +512,0.654336 +1024,0.83456 +2048,1.38138 +4096,0.726016 +8192,0.816128 +16384,0.836608 +32768,0.90112 +65536,1.04858 +131072,1.57594 +262144,2.5641 +524288,4.36224 +1048576,8.31181 +2097152,14.5777 +4194304,28.0064 +8388608,54.7635 +16777216,107.271 +33554432,210.638 +67108864,426.301 +134217728,853.012 +268435456,1712.57 +536870912,3438.26 +1073741824,6889.83 +16,1.1223 +32,0.758784 +64,0.750592 +128,0.871424 +256,0.75776 +512,0.777216 +1024,0.73728 +2048,0.805856 +4096,0.857088 +8192,0.898048 +16384,0.90112 +32768,0.83456 +65536,0.93184 +131072,1.51654 +262144,2.70438 +524288,4.74317 +1048576,8.23603 +2097152,14.3155 +4194304,28.6792 +8388608,53.1886 +16777216,104.998 +33554432,212.152 +67108864,435.771 +134217728,854.461 +268435456,1724.14 +536870912,3426.09 +1073741824,6842.6 +16,0.750592 +32,0.84992 +64,0.70144 +128,0.82432 +256,0.715776 +512,0.925696 +1024,0.728064 +2048,0.663552 +4096,0.761856 +8192,0.75264 +16384,0.7936 +32768,0.93184 +65536,1.11821 +131072,1.38854 +262144,2.72486 +524288,4.41344 +1048576,7.81824 +2097152,15.5935 +4194304,28.1303 +8388608,53.6084 +16777216,105.783 +33554432,211.372 +67108864,427.021 +134217728,855.412 +268435456,1717.89 +536870912,3471.11 +1073741824,6862.02 +16,0.891904 +32,0.902144 +64,0.792576 +128,0.817152 +256,1.21651 +512,0.79872 +1024,0.914432 +2048,0.820224 +4096,0.771072 +8192,1.18579 +16384,0.780288 +32768,0.881664 +65536,1.11514 +131072,1.54624 +262144,2.79347 +524288,4.49229 +1048576,8.30771 +2097152,14.9289 +4194304,28.2952 +8388608,55.0717 +16777216,105.68 +33554432,212.538 +67108864,429.332 +134217728,875.145 +268435456,1717.25 +536870912,3423.33 +1073741824,6860.6 +16,0.905216 +32,0.893952 +64,0.877568 +128,0.802816 +256,0.784384 +512,0.75776 +1024,0.72704 +2048,0.719872 +4096,0.801792 +8192,0.86528 +16384,0.823296 +32768,0.915456 +65536,1.0793 +131072,1.62304 +262144,2.76173 +524288,4.5783 +1048576,8.13466 +2097152,14.5981 +4194304,28.0207 +8388608,53.9453 +16777216,105.094 +33554432,212.428 +67108864,428.967 +134217728,853.471 +268435456,1723.37 +536870912,3422.43 +1073741824,6868.64 +16,0.71168 +32,0.809984 +64,0.648192 +128,0.823296 +256,0.856064 +512,0.88576 +1024,0.775168 +2048,0.835584 +4096,0.77824 +8192,0.851968 +16384,1.05165 +32768,0.99328 +65536,1.14074 +131072,1.43565 +262144,2.51494 +524288,4.93466 +1048576,8.10598 +2097152,14.7476 +4194304,28.158 +8388608,53.6842 +16777216,106.409 +33554432,211.795 +67108864,425.411 +134217728,858.539 +268435456,1709.62 +536870912,3421.24 +1073741824,6860.71 +16,0.736256 +32,0.605184 +64,0.559104 +128,0.877568 +256,0.618496 +512,0.730112 +1024,0.702464 +2048,0.769024 +4096,0.73728 +8192,0.862208 +16384,0.969664 +32768,1.11821 +65536,1.50528 +131072,1.40288 +262144,2.9952 +524288,4.77082 +1048576,8.07731 +2097152,14.2653 +4194304,28.2429 +8388608,53.7969 +16777216,106.008 +33554432,213.303 +67108864,431.366 +134217728,856.964 +268435456,1726.58 +536870912,3433.95 +1073741824,6864.75 +16,1.34144 +32,0.877568 +64,0.771072 +128,1.02195 +256,0.928768 +512,0.990208 +1024,0.796672 +2048,0.77312 +4096,0.821248 +8192,0.77824 +16384,0.77312 +32768,1.08646 +65536,1.18989 +131072,1.55955 +262144,2.61632 +524288,4.5865 +1048576,8.28621 +2097152,14.9238 +4194304,28.3515 +8388608,54.101 +16777216,104.48 +33554432,218.8 +67108864,430.236 +134217728,855.643 +268435456,1724.36 +536870912,3440.7 +1073741824,6876.76 +16,0.671744 +32,0.932864 +64,0.789504 +128,0.651264 +256,0.968704 +512,0.644096 +1024,0.787456 +2048,0.72704 +4096,0.799744 +8192,0.73728 +16384,0.822272 +32768,0.791552 +65536,1.14586 +131072,1.36909 +262144,3.14368 +524288,4.65715 +1048576,8.0425 +2097152,14.2459 +4194304,28.8614 +8388608,54.3119 +16777216,106.363 +33554432,213.243 +67108864,427.527 +134217728,860.333 +268435456,1716.29 +536870912,3446.05 +1073741824,6875.42 +16,0.868352 +32,0.914432 +64,1.12128 +128,0.782336 +256,0.67584 +512,0.694272 +1024,0.735232 +2048,0.745472 +4096,0.807936 +8192,0.78336 +16384,0.878592 +32768,0.888832 +65536,0.996352 +131072,1.56058 +262144,2.59584 +524288,4.38477 +1048576,7.99437 +2097152,14.2234 +4194304,27.1647 +8388608,54.018 +16777216,106.173 +33554432,213.125 +67108864,426.715 +134217728,863.004 +268435456,1723.02 +536870912,3427.81 +1073741824,6864.17 +16,0.835584 +32,0.89088 +64,0.920576 +128,1.03936 +256,0.913408 +512,0.816128 +1024,0.664576 +2048,0.703488 +4096,0.714752 +8192,0.889856 +16384,0.802816 +32768,1.10285 +65536,1.06291 +131072,1.5145 +262144,2.72384 +524288,4.21171 +1048576,8.27085 +2097152,14.4896 +4194304,28.2245 +8388608,54.4451 +16777216,106.394 +33554432,210.842 +67108864,429.235 +134217728,851.015 +268435456,1707.22 diff --git a/Project2-Stream-Compaction/data_pow2_overflow/thrust.csv b/Project2-Stream-Compaction/data_pow2_overflow/thrust.csv new file mode 100644 index 0000000..d3ea603 --- /dev/null +++ b/Project2-Stream-Compaction/data_pow2_overflow/thrust.csv @@ -0,0 +1,753 @@ +16,0.647168 +32,0.476192 +64,0.477216 +128,0.712704 +256,0.83456 +512,0.685088 +1024,0.566272 +2048,0.842784 +4096,1.43568 +8192,0.56832 +16384,0.683008 +32768,0.72192 +65536,0.900096 +131072,1.38752 +262144,2.72995 +524288,8.70298 +1048576,7.7568 +2097152,15.6047 +4194304,29.9407 +8388608,55.3011 +16777216,110.308 +33554432,217.34 +67108864,431.649 +134217728,848.105 +268435456,1689.81 +536870912,3395.86 +1073741824,6823 +16,0.636928 +32,0.546816 +64,1.07213 +128,0.749568 +256,0.746496 +512,0.674816 +1024,0.764928 +2048,0.80896 +4096,0.764928 +8192,0.866304 +16384,1.02502 +32768,1.20422 +65536,1.15405 +131072,1.57491 +262144,3.00339 +524288,4.83635 +1048576,8.11315 +2097152,15.1849 +4194304,28.8154 +8388608,54.3969 +16777216,107.422 +33554432,211.706 +67108864,429.669 +134217728,849.876 +268435456,1696.94 +536870912,3413.69 +1073741824,6831.4 +16,0.790528 +32,0.88064 +64,0.835584 +128,0.647168 +256,0.722944 +512,0.933888 +1024,0.673792 +2048,0.766976 +4096,0.688128 +8192,0.697344 +16384,0.836608 +32768,0.842752 +65536,1.13254 +131072,1.31891 +262144,3.05562 +524288,4.89984 +1048576,8.4224 +2097152,15.1501 +4194304,27.435 +8388608,54.7297 +16777216,104.848 +33554432,211.3 +67108864,431.664 +134217728,859.383 +268435456,1706.52 +1073741824,6824.53 +16,0.87552 +32,0.78336 +64,0.758784 +128,0.780288 +256,0.796672 +512,0.76288 +1024,0.790528 +2048,0.918528 +4096,0.804864 +8192,0.821248 +16384,0.861184 +32768,1.04243 +65536,1.08749 +131072,1.45101 +262144,2.8969 +524288,5.35552 +1048576,8.54733 +2097152,15.9529 +4194304,28.4324 +8388608,54.6068 +16777216,105.533 +33554432,212.134 +67108864,428.726 +134217728,850.682 +268435456,1695.41 +536870912,3401.31 +1073741824,6822.46 +16,0.877568 +32,0.861184 +64,0.754688 +128,1.18989 +256,1.08749 +512,0.664576 +1024,0.8448 +2048,0.825344 +4096,0.794624 +8192,0.700416 +16384,0.759808 +32768,1.19296 +65536,1.23494 +131072,1.5145 +262144,3.10682 +524288,5.06675 +1048576,8.42854 +2097152,15.6006 +4194304,29.1195 +8388608,54.9642 +16777216,106.837 +33554432,210.238 +67108864,428.977 +134217728,854.84 +268435456,1698.78 +536870912,3392.5 +1073741824,6800.1 +16,0.831488 +32,0.871424 +64,0.765952 +128,0.795648 +256,0.806912 +512,0.766976 +1024,0.707584 +2048,0.6912 +4096,0.817152 +8192,0.800768 +16384,0.78336 +32768,0.904192 +65536,1.05267 +131072,1.9497 +262144,4.91725 +524288,5.07392 +1048576,9.00813 +2097152,14.7691 +4194304,28.3095 +8388608,54.7154 +16777216,106.499 +33554432,209.261 +67108864,422.924 +134217728,852.567 +268435456,1704.2 +536870912,3402.88 +1073741824,6825.49 +16,0.897024 +32,0.871424 +64,0.935936 +128,0.8448 +256,0.638976 +512,0.786432 +1024,0.953344 +2048,0.848896 +4096,0.744448 +8192,0.869376 +16384,0.840704 +32768,0.828416 +65536,1.18272 +131072,1.83706 +262144,3.38227 +524288,4.92237 +1048576,9.02451 +2097152,15.3917 +4194304,29.1809 +8388608,54.9693 +16777216,107.401 +33554432,210.637 +67108864,426.012 +134217728,849.171 +268435456,1699.7 +536870912,3394.25 +1073741824,6804.71 +16,1.52986 +32,0.867328 +64,0.801792 +128,0.729088 +256,0.951296 +512,0.719872 +1024,0.717824 +2048,0.872448 +4096,1.29434 +8192,0.889856 +16384,0.790528 +32768,1.38138 +65536,1.14586 +131072,1.95891 +262144,3.25734 +524288,5.10976 +1048576,8.95898 +2097152,15.0057 +4194304,28.3843 +8388608,53.6576 +16777216,106.335 +33554432,210.475 +67108864,423.049 +134217728,854.683 +268435456,1697.64 +536870912,3395.32 +1073741824,6805.77 +16,0.792576 +32,0.704512 +64,0.850944 +128,0.904192 +256,0.789504 +512,0.735232 +1024,0.694272 +2048,0.726016 +4096,1.51245 +8192,0.735232 +16384,0.656384 +32768,0.813056 +65536,2.03878 +131072,1.50221 +262144,3.01363 +524288,4.73088 +1048576,8.37325 +2097152,15.5515 +4194304,28.0627 +8388608,56.2811 +16777216,105.98 +33554432,210.824 +67108864,424.503 +134217728,847.768 +268435456,1706.91 +536870912,3425.33 +1073741824,6815.19 +16,0.842752 +32,0.843776 +64,0.831488 +128,0.828416 +256,0.960512 +512,0.782336 +1024,0.789504 +2048,0.828416 +4096,1.16634 +8192,0.709632 +16384,0.80896 +32768,1.0025 +65536,0.923648 +131072,1.59642 +262144,2.99008 +524288,4.80358 +1048576,8.28928 +2097152,15.7082 +4194304,27.7105 +8388608,53.9976 +16777216,105.373 +33554432,209.523 +67108864,421.665 +134217728,848.084 +268435456,1714.51 +536870912,3393.03 +1073741824,6811.01 +16,0.54784 +32,0.598016 +64,0.781312 +128,0.694272 +256,0.84992 +512,0.809984 +1024,1.42541 +2048,0.693248 +4096,0.790528 +8192,1.19091 +16384,0.867328 +32768,0.859136 +65536,1.14278 +131072,1.53088 +262144,3.03718 +524288,5.68525 +1048576,8.38963 +2097152,15.8208 +4194304,28.2163 +8388608,54.4993 +16777216,106.279 +33554432,212.09 +67108864,425.746 +134217728,852.684 +268435456,1710.97 +536870912,3405.06 +1073741824,6803.14 +16,0.827392 +32,0.771072 +64,0.756736 +128,0.807936 +256,0.799744 +512,0.760832 +1024,0.777216 +2048,0.809984 +4096,0.78848 +8192,0.786432 +16384,0.7168 +32768,0.874496 +65536,0.964608 +131072,1.36909 +262144,3.21536 +524288,4.60595 +1048576,8.70912 +2097152,15.6764 +4194304,28.0248 +8388608,54.102 +16777216,110.068 +33554432,213.904 +67108864,424.13 +134217728,851.908 +268435456,1707 +536870912,3405.68 +1073741824,6813.37 +16,0.871424 +32,0.86016 +64,1.53498 +128,0.874496 +256,0.703488 +512,0.776192 +1024,0.801792 +2048,0.738304 +4096,0.67584 +8192,0.886784 +16384,0.693248 +32768,0.883712 +65536,1.03117 +131072,1.47354 +262144,3.08941 +524288,4.85274 +1048576,8.58829 +2097152,15.6938 +4194304,28.6116 +8388608,52.9837 +16777216,107.334 +33554432,211.736 +67108864,423.53 +134217728,853.118 +268435456,1694.38 +536870912,3407.74 +1073741824,6813.32 +16,0.780288 +32,0.722944 +64,0.683008 +128,0.7936 +256,0.676864 +512,0.746496 +1024,0.86016 +2048,0.740352 +4096,0.815104 +8192,0.687104 +16384,0.592896 +32768,0.905216 +65536,1.11718 +131072,1.6128 +262144,3.13651 +524288,4.8169 +1048576,8.28314 +2097152,15.1593 +4194304,28.0832 +8388608,53.7477 +16777216,107.841 +33554432,210.606 +67108864,425.374 +134217728,854.406 +268435456,1694.46 +536870912,3397.59 +1073741824,6823.19 +16,0.88576 +32,0.713728 +64,0.772096 +128,0.705536 +256,0.649216 +512,0.724992 +1024,0.753664 +2048,0.695296 +4096,0.679936 +8192,0.733184 +16384,0.687104 +32768,0.970752 +65536,1.10694 +131072,1.54522 +262144,3.10374 +524288,4.84557 +1048576,9.05933 +2097152,15.6283 +4194304,28.3085 +8388608,54.6396 +16777216,106.886 +33554432,210.263 +67108864,423.259 +134217728,851.2 +268435456,1693.88 +536870912,3404.04 +1073741824,6835.23 +16,0.632832 +32,0.765952 +64,0.697344 +128,1.00352 +256,1.00762 +512,0.739328 +1024,1.0537 +2048,0.77312 +4096,0.67584 +8192,1.80531 +16384,0.704512 +32768,0.733184 +65536,0.985088 +131072,1.88928 +262144,3.14266 +524288,5.1497 +1048576,8.3456 +2097152,15.4839 +4194304,28.7642 +8388608,53.5562 +16777216,109.232 +33554432,213.415 +67108864,423.88 +134217728,848.841 +268435456,1703.64 +536870912,3388.3 +1073741824,6770.59 +16,0.703488 +32,0.751616 +64,0.681984 +128,0.8192 +256,0.67072 +512,0.618496 +1024,0.791552 +2048,0.930816 +4096,0.948224 +8192,0.956416 +16384,0.871424 +32768,0.963584 +65536,0.982016 +131072,1.36294 +262144,3.00646 +524288,4.90701 +1048576,8.85965 +2097152,16.2816 +4194304,27.3715 +8388608,53.9894 +16777216,108.939 +33554432,209.922 +67108864,426.579 +134217728,844.432 +268435456,1682.7 +536870912,3393.82 +1073741824,6808.96 +16,0.7168 +32,0.723968 +64,0.774144 +128,0.662528 +256,0.994304 +512,0.75264 +1024,0.776192 +2048,0.899072 +4096,0.749568 +8192,0.971776 +16384,0.766976 +32768,1.04141 +65536,1.07418 +131072,1.59232 +262144,3.10784 +524288,4.76672 +1048576,9.35322 +2097152,16.4096 +4194304,28.673 +8388608,54.5505 +16777216,106.647 +33554432,210.853 +67108864,423.203 +134217728,854.441 +268435456,1702.99 +536870912,3399.11 +1073741824,6781.79 +16,0.67072 +32,0.638976 +64,0.826368 +128,0.796672 +256,0.799744 +512,1.0711 +1024,1.38035 +2048,0.759808 +4096,1.02093 +8192,0.731136 +16384,0.722944 +32768,0.8448 +65536,1.0025 +131072,1.61587 +262144,3.17747 +524288,5.1456 +1048576,8.62003 +2097152,15.2893 +4194304,28.1375 +8388608,54.6345 +16777216,105.946 +33554432,210.812 +67108864,421.16 +134217728,845.552 +268435456,1695.36 +536870912,3393.94 +1073741824,6775.86 +16,0.582656 +32,1.00557 +64,0.671744 +128,0.808928 +256,0.797696 +512,0.519168 +1024,0.8704 +2048,0.738304 +4096,0.785408 +8192,0.801792 +16384,0.909312 +32768,0.843776 +65536,1.08442 +131072,1.3568 +262144,3.16006 +524288,4.67661 +1048576,8.3753 +2097152,15.4573 +4194304,28.2071 +8388608,53.2367 +16777216,105.728 +33554432,213.759 +67108864,423.532 +134217728,845.072 +268435456,1691.15 +536870912,3399.71 +1073741824,6793.51 +16,0.832512 +32,0.730112 +64,0.82944 +128,0.877568 +256,0.769024 +512,0.780288 +1024,0.869376 +2048,0.909312 +4096,0.702464 +8192,0.77312 +16384,0.67072 +32768,0.811008 +65536,1.0967 +131072,1.52269 +262144,3.67104 +524288,4.97152 +1048576,8.13363 +2097152,14.8163 +4194304,28.0453 +8388608,54.4051 +16777216,107.282 +33554432,209.364 +67108864,423.366 +134217728,847.037 +268435456,1698.37 +536870912,3389.72 +1073741824,6808.1 +16,0.986112 +32,0.769024 +64,0.851968 +128,0.852992 +256,0.770048 +512,0.681984 +1024,0.68096 +2048,0.804864 +4096,0.713728 +8192,0.728064 +16384,0.717824 +32768,0.845824 +65536,1.25747 +131072,1.71008 +262144,3.57171 +524288,4.92749 +1048576,8.68762 +2097152,15.4184 +4194304,28.2522 +8388608,53.6412 +16777216,106.052 +33554432,212.231 +67108864,428.433 +134217728,848.319 +268435456,1695.31 +536870912,3404.77 +1073741824,6777.85 +16,0.72192 +32,0.8192 +64,0.736256 +128,0.567296 +256,0.68096 +512,0.910336 +1024,0.786432 +2048,0.806912 +4096,0.749568 +8192,0.81408 +16384,1.03936 +32768,1.00864 +65536,0.950272 +131072,1.43565 +262144,2.78938 +524288,4.85786 +1048576,8.43878 +2097152,14.9627 +4194304,29.4595 +8388608,54.3345 +16777216,106.17 +33554432,214.378 +67108864,429.398 +134217728,848.903 +268435456,1718.03 +536870912,3393.11 +1073741824,6797.71 +16,0.751616 +32,0.594944 +64,0.613376 +128,0.828416 +256,0.646144 +512,0.754688 +1024,0.740352 +2048,0.871424 +4096,0.753664 +8192,0.836608 +16384,0.787456 +32768,0.976896 +65536,1.1305 +131072,1.52678 +262144,3.0423 +524288,5.0473 +1048576,9.14739 +2097152,14.4445 +4194304,27.2916 +8388608,53.7559 +16777216,105.844 +33554432,209.077 +67108864,423.574 +134217728,847.144 +268435456,1695.05 +536870912,3397.99 +1073741824,6814.79 +16,0.90624 +32,0.83456 +64,0.840704 +128,0.866304 +256,0.838656 +512,0.771072 +1024,0.794624 +2048,0.756736 +4096,0.975872 +8192,0.713728 +16384,0.739328 +32768,1.19808 +65536,0.937984 +131072,1.52576 +262144,3.09043 +524288,5.23366 +1048576,8.8105 +2097152,15.0733 +4194304,27.8723 +8388608,54.8383 +16777216,106.352 +33554432,212.207 +67108864,427.89 +134217728,847.884 +268435456,1692.67 +536870912,3393.9 +1073741824,6800.46 +16,0.606208 +32,0.768 +64,0.87552 +128,0.603104 +256,0.787456 +512,0.62464 +1024,0.766976 +2048,0.744448 +4096,0.724992 +8192,0.763904 +16384,0.791552 +32768,0.770048 +65536,0.948224 +131072,1.77766 +262144,3.0423 +524288,5.13741 +1048576,8.95898 +2097152,14.7937 +4194304,27.1585 +8388608,53.6863 +16777216,104.758 +33554432,209.876 +67108864,426.065 +134217728,844.551 +268435456,1699.68 +536870912,3397.75 +1073741824,6809.15 +16,0.881664 +32,0.86016 +64,0.878592 +128,0.8448 +256,0.735232 +512,0.837632 +1024,0.818176 +2048,0.797696 +4096,0.7936 +8192,0.857088 +16384,0.83456 +32768,0.973824 +65536,1.01478 +131072,1.72544 +262144,2.92454 +524288,5.18144 +1048576,8.5975 +2097152,15.2033 +4194304,27.4463 +8388608,54.6212 +16777216,105.704 +33554432,209.842 +67108864,422.17 +134217728,858.549 +268435456,1694.99 +536870912,3386.01 +1073741824,6798.9 +16,1.3015 +32,1.00352 +64,1.01581 +128,0.86016 +256,0.883712 +512,0.800768 +1024,0.703488 +2048,0.719872 +4096,0.656384 +8192,0.75264 +16384,0.654336 +32768,0.940032 +65536,1.05882 +131072,1.45408 +262144,3.0935 +524288,5.02067 +1048576,8.35277 +2097152,14.7507 +4194304,27.8077 +8388608,54.8588 +16777216,106.454 +33554432,207.976 +67108864,422.31 +134217728,849.922 +268435456,1692.25 diff --git a/Project2-Stream-Compaction/src/data_gen.cpp b/Project2-Stream-Compaction/src/data_gen.cpp index d45173e..437409b 100644 --- a/Project2-Stream-Compaction/src/data_gen.cpp +++ b/Project2-Stream-Compaction/src/data_gen.cpp @@ -21,7 +21,7 @@ using namespace std; #define max_value_scan 50 #define max_value_compaction 4 #define max_value_sorting 500 -#define cpu_scan false +#define cpu_scan true #define naive_scan true #define efficient_scan true #define shared_mem_scan true @@ -42,12 +42,14 @@ int main(int argc, char* argv[]) { printf("****************\n"); int pow = 4; while (true) { - unsigned long int SIZE; + unsigned long long int SIZE; cout << pow << endl; + if (pow >= 31) + pow = 4; if (pow_2) - SIZE = 1 << (pow); // Power of 2 + SIZE = std::pow(2,pow); // Power of 2 else - SIZE = (1 << (pow)) - 3; // Non-Power-Of-Two + SIZE = std::pow(2, pow) - 3; // Non-Power-Of-Two int *a = new int[SIZE]; int *b = new int[SIZE]; int *c = new int[SIZE]; diff --git a/Project2-Stream-Compaction/src/main.cpp b/Project2-Stream-Compaction/src/main.cpp index 82ab223..b0ea817 100644 --- a/Project2-Stream-Compaction/src/main.cpp +++ b/Project2-Stream-Compaction/src/main.cpp @@ -17,8 +17,8 @@ #define max_value_scan 50 #define max_value_compaction 4 #define max_value_sorting 500 -const unsigned long int SIZE = 1<<15; // feel free to change the size of array -const unsigned long unsigned long int NPOT = SIZE - 3; // Non-Power-Of-Two +const unsigned long long int SIZE = 1<<15; // feel free to change the size of array +const unsigned long long int NPOT = SIZE - 3; // Non-Power-Of-Two int *a = new int[SIZE]; int *b = new int[SIZE]; int *c = new int[SIZE]; @@ -118,7 +118,7 @@ int main(int argc, char* argv[]) { a[SIZE - 1] = 0; printArray(SIZE, a, true); - unsigned long int count, expectedCount, expectedNPOT; + unsigned long long int count, expectedCount, expectedNPOT; // initialize b using StreamCompaction::CPU::compactWithoutScan you implement // We use b for further comparison. Make sure your StreamCompaction::CPU::compactWithoutScan is correct. diff --git a/Project2-Stream-Compaction/stream_compaction/common.cu b/Project2-Stream-Compaction/stream_compaction/common.cu index 55d3723..a9232ae 100644 --- a/Project2-Stream-Compaction/stream_compaction/common.cu +++ b/Project2-Stream-Compaction/stream_compaction/common.cu @@ -22,8 +22,8 @@ namespace StreamCompaction { * Maps an array to an array of 0s and 1s for stream compaction. Elements * which map to 0 will be removed, and elements which map to 1 will be kept. */ - __global__ void kernMapToBoolean(unsigned long int n, int *bools, const int *idata) { - unsigned long int index = (blockDim.x * blockIdx.x + threadIdx.x); + __global__ void kernMapToBoolean(unsigned long long int n, int *bools, const int *idata) { + unsigned long long int index = (blockDim.x * blockIdx.x + threadIdx.x); if (index >= n) return; bools[index] = (bool)idata[index]; @@ -33,9 +33,9 @@ namespace StreamCompaction { * Performs scatter on an array. That is, for each element in idata, * if bools[idx] == 1, it copies idata[idx] to odata[indices[idx]]. */ - __global__ void kernScatter(unsigned long int n, int *odata, + __global__ void kernScatter(unsigned long long int n, int *odata, const int *idata, const int *bools, const int *indices) { - unsigned long int index = (blockDim.x * blockIdx.x + threadIdx.x); + unsigned long long int index = (blockDim.x * blockIdx.x + threadIdx.x); if (index >= n - 1) return; if (bools[index]) diff --git a/Project2-Stream-Compaction/stream_compaction/common.h b/Project2-Stream-Compaction/stream_compaction/common.h index a891c55..6afbdf2 100644 --- a/Project2-Stream-Compaction/stream_compaction/common.h +++ b/Project2-Stream-Compaction/stream_compaction/common.h @@ -18,23 +18,23 @@ */ void checkCUDAErrorFn(const char *msg, const char *file = NULL, int line = -1); -inline int ilog2(unsigned long int x) { - unsigned long int lg = 0; +inline int ilog2(unsigned long long int x) { + unsigned long long int lg = 0; while (x >>= 1) { ++lg; } return lg; } -inline int ilog2ceil(unsigned long int x) { +inline int ilog2ceil(unsigned long long int x) { return x == 1 ? 0 : ilog2(x - 1) + 1; } namespace StreamCompaction { namespace Common { - __global__ void kernMapToBoolean(unsigned long int n, int *bools, const int *idata); + __global__ void kernMapToBoolean(unsigned long long int n, int *bools, const int *idata); - __global__ void kernScatter(unsigned long int n, int *odata, + __global__ void kernScatter(unsigned long long int n, int *odata, const int *idata, const int *bools, const int *indices); /** diff --git a/Project2-Stream-Compaction/stream_compaction/cpu.cu b/Project2-Stream-Compaction/stream_compaction/cpu.cu index 8016313..298c54b 100644 --- a/Project2-Stream-Compaction/stream_compaction/cpu.cu +++ b/Project2-Stream-Compaction/stream_compaction/cpu.cu @@ -16,10 +16,10 @@ namespace StreamCompaction { * For performance analysis, this is supposed to be a simple for loop. * (Optional) For better understanding before starting moving to GPU, you can simulate your GPU scan in this function first. */ - void scan(unsigned long int n, int *odata, const int *idata, const bool time/* = true*/) { + void scan(unsigned long long int n, int *odata, const int *idata, const bool time/* = true*/) { (time == true)?timer().startCpuTimer():0; - unsigned long int running_total = 0; // assumes only positive values - for (unsigned long int i = 0; i < n-1; i++) { // n-1 because we want exclusive not inclusive so last element isn't added + unsigned long long int running_total = 0; // assumes only positive values + for (unsigned long long int i = 0; i < n-1; i++) { // n-1 because we want exclusive not inclusive so last element isn't added running_total += idata[i]; // n-1 adds for n size odata[i+1] = running_total; } @@ -32,11 +32,11 @@ namespace StreamCompaction { * * @returns the number of elements remaining after compaction. */ - unsigned long int compactWithoutScan(unsigned long int n, int *odata, const int *idata) { + unsigned long long int compactWithoutScan(unsigned long long int n, int *odata, const int *idata) { timer().startCpuTimer(); - unsigned long int count = 0; - unsigned long int odata_pos = 0; - for (unsigned long int i = 0; i < n; i++) + unsigned long long int count = 0; + unsigned long long int odata_pos = 0; + for (unsigned long long int i = 0; i < n; i++) if (idata[i] != 0) { count++; odata[++odata_pos] = idata[i]; @@ -50,12 +50,12 @@ namespace StreamCompaction { * * @returns the number of elements remaining after compaction. */ - unsigned long int compactWithScan(unsigned long int n, int *odata, const int *idata) { + unsigned long long int compactWithScan(unsigned long long int n, int *odata, const int *idata) { timer().startCpuTimer(); // Step 1, mark each cell with 1/0 if it has a element or not (super easy to parallelize) int* scan_data = new int[n](); int* mask = new int[n](); - for (unsigned long int i = 0; i < n; i++) { + for (unsigned long long int i = 0; i < n; i++) { if (idata[i]) mask[i] = 1; else @@ -64,7 +64,7 @@ namespace StreamCompaction { // scan the mask array (can be done in parallel by using a balanced binary tree) scan(n, scan_data, mask, false); // Scatter array (go to each position and copy the value) (super easy to parallelize) - for (unsigned long int i = 0; i < n - 1; i++) { + for (unsigned long long int i = 0; i < n - 1; i++) { if (idata[i]) odata[scan_data[i] + 1] = idata[i]; } diff --git a/Project2-Stream-Compaction/stream_compaction/cpu.h b/Project2-Stream-Compaction/stream_compaction/cpu.h index bdd6f45..361d2c9 100644 --- a/Project2-Stream-Compaction/stream_compaction/cpu.h +++ b/Project2-Stream-Compaction/stream_compaction/cpu.h @@ -6,10 +6,10 @@ namespace StreamCompaction { namespace CPU { StreamCompaction::Common::PerformanceTimer& timer(); - void scan(unsigned long int n, int *odata, const int *idata, const bool time = true); + void scan(unsigned long long int n, int *odata, const int *idata, const bool time = true); - unsigned long int compactWithoutScan(unsigned long int n, int *odata, const int *idata); + unsigned long long int compactWithoutScan(unsigned long long int n, int *odata, const int *idata); - unsigned long int compactWithScan(unsigned long int n, int *odata, const int *idata); + unsigned long long int compactWithScan(unsigned long long int n, int *odata, const int *idata); } } diff --git a/Project2-Stream-Compaction/stream_compaction/efficient.cu b/Project2-Stream-Compaction/stream_compaction/efficient.cu index a61ac58..c0fefb3 100644 --- a/Project2-Stream-Compaction/stream_compaction/efficient.cu +++ b/Project2-Stream-Compaction/stream_compaction/efficient.cu @@ -18,17 +18,17 @@ namespace StreamCompaction { return timer; } /*2 scan phases, see (link)[https://developer.nvidia.com/gpugems/GPUGems3/gpugems3_ch39.html] for more details*/ - __global__ void reduce_parallel(unsigned long int n, int *data, int d) { - unsigned long int tmp_d = 1 << (d + 1); - unsigned long int index = (blockDim.x * blockIdx.x + threadIdx.x)*tmp_d; + __global__ void reduce_parallel(unsigned long long int n, int *data, int d) { + unsigned long long int tmp_d = 1 << (d + 1); + unsigned long long int index = (blockDim.x * blockIdx.x + threadIdx.x)*tmp_d; if (index >= n ) return; data[index + tmp_d - 1] += data[index + (tmp_d>>1) - 1]; } - __global__ void downsweep_parallel(unsigned long int n, int *data, int d) { - unsigned long int new_d = 1<<(d + 1); - unsigned long int index = (blockDim.x * blockIdx.x + threadIdx.x)*new_d; + __global__ void downsweep_parallel(unsigned long long int n, int *data, int d) { + unsigned long long int new_d = 1<<(d + 1); + unsigned long long int index = (blockDim.x * blockIdx.x + threadIdx.x)*new_d; if (index >= n) return; int t = data[index + (new_d>>1) - 1]; @@ -38,12 +38,12 @@ namespace StreamCompaction { /** * Performs prefix-sum (aka scan) on idata, storing the result into odata. */ - void scan(unsigned long int n, int *odata, const int *idata) { + void scan(unsigned long long int n, int *odata, const int *idata) { timer().startGpuTimer(); // allocate pointers to memory and copy data over int *dev_odata; - unsigned long int blocks = 0; - unsigned long int closest_pow2 = 1<> NUM_BANKS + (n) >> (2 * LOG_NUM_BANKS)) - __global__ void dev_scan(unsigned long int n, int *dev_odata, int *dev_idata, int *dev_block_sum) + __global__ void dev_scan(unsigned long long int n, int *dev_odata, int *dev_idata, int *dev_block_sum) { /* Extriemly heavly based on https://developer.nvidia.com/gpugems/GPUGems3/gpugems3_ch39.html Main change is to use block_size instead of n and then put the sums of each block into a new array and scaning the array */ // Declare Share Memory __shared__ int temp[block_size + NUM_BANKS]; - unsigned long int thid = threadIdx.x; - unsigned long int bid = blockIdx.x; - unsigned long int scan_offset = bid * block_size; + unsigned long long int thid = threadIdx.x; + unsigned long long int bid = blockIdx.x; + unsigned long long int scan_offset = bid * block_size; int offset = 1; // to make this an exclusive scan - unsigned long int ai = thid<<1; - unsigned long int bi = ai + 1; - unsigned long int bankOffsetA = CONFLICT_FREE_OFFSET(ai); - unsigned long int bankOffsetB = CONFLICT_FREE_OFFSET(bi); + unsigned long long int ai = thid<<1; + unsigned long long int bi = ai + 1; + unsigned long long int bankOffsetA = CONFLICT_FREE_OFFSET(ai); + unsigned long long int bankOffsetB = CONFLICT_FREE_OFFSET(bi); temp[ai + bankOffsetA] = dev_idata[ai + scan_offset]; temp[bi + bankOffsetB] = dev_idata[bi + scan_offset]; - for (unsigned long int d = block_size >> 1; d > 0; d >>= 1) // build sum in place up the tree + for (unsigned long long int d = block_size >> 1; d > 0; d >>= 1) // build sum in place up the tree { __syncthreads(); if (thid < d) { - unsigned long int ai = offset * ((thid<<1) + 1) - 1; - unsigned long int bi = offset * ((thid << 1) + 2) - 1; + unsigned long long int ai = offset * ((thid<<1) + 1) - 1; + unsigned long long int bi = offset * ((thid << 1) + 2) - 1; ai += CONFLICT_FREE_OFFSET(ai); bi += CONFLICT_FREE_OFFSET(bi); temp[bi] += temp[ai]; @@ -187,14 +187,14 @@ namespace StreamCompaction { temp[block_size - 1 + CONFLICT_FREE_OFFSET(block_size - 1)] = 0; } // downsweep - for (unsigned long int d = 1; d < block_size; d<<=1) // traverse down tree & build scan + for (unsigned long long int d = 1; d < block_size; d<<=1) // traverse down tree & build scan { offset >>= 1; __syncthreads(); if (thid < d) { - unsigned long int ai = offset * ((thid << 1) + 1) - 1; - unsigned long int bi = offset * ((thid << 1) + 2) - 1; + unsigned long long int ai = offset * ((thid << 1) + 1) - 1; + unsigned long long int bi = offset * ((thid << 1) + 2) - 1; ai += CONFLICT_FREE_OFFSET(ai); bi += CONFLICT_FREE_OFFSET(bi); float t = temp[ai]; @@ -206,22 +206,22 @@ namespace StreamCompaction { dev_odata[ai + scan_offset] = temp[ai + bankOffsetA]; dev_odata[bi + scan_offset] = temp[bi + bankOffsetB]; } - __global__ void add_offset(unsigned long int n, int *data, int *dev_block_offset) { - unsigned long int bid = blockIdx.x; - unsigned long int index = blockDim.x * bid + threadIdx.x; + __global__ void add_offset(unsigned long long int n, int *data, int *dev_block_offset) { + unsigned long long int bid = blockIdx.x; + unsigned long long int index = blockDim.x * bid + threadIdx.x; if (index >= n) return; // add value to current section if (bid != 0) // to save a bunch of useless reads and write data[index] += dev_block_offset[bid]; } - void scan(unsigned long int n, int *odata, int *idata) { + void scan(unsigned long long int n, int *odata, int *idata) { timer().startGpuTimer(); // allocate pointers to memory and copy data over int *dev_odata, *dev_idata, *dev_block_sum, *dev_block_offset; int *block_sum, *block_offset; - unsigned long int closest_pow2 = 1 << ilog2ceil(n); - unsigned long int blocks = ceil((closest_pow2 + block_size - 1) / block_size); + unsigned long long int closest_pow2 = 1 << ilog2ceil(n); + unsigned long long int blocks = ceil((closest_pow2 + block_size - 1) / block_size); // allocate buffers cudaMalloc((void**)&dev_odata, closest_pow2 * sizeof(int)); cudaMalloc((void**)&dev_idata, closest_pow2 * sizeof(int)); @@ -259,13 +259,13 @@ namespace StreamCompaction { delete[] block_offset; timer().endGpuTimer(); } - void dev_scan(unsigned long int n, int *dev_odata, int *dev_idata) { + void dev_scan(unsigned long long int n, int *dev_odata, int *dev_idata) { timer().startGpuTimer(); // allocate pointers to memory and copy data over int *dev_block_sum, *dev_block_offset; int *block_sum, *block_offset; - unsigned long int closest_pow2 = 1 << ilog2ceil(n); - unsigned long int blocks = ceil((closest_pow2 + block_size - 1) / block_size); + unsigned long long int closest_pow2 = 1 << ilog2ceil(n); + unsigned long long int blocks = ceil((closest_pow2 + block_size - 1) / block_size); // allocate buffers // allocate block global buffers cudaMalloc((void**)&dev_block_sum, blocks * sizeof(int)); // each block gets 1 number to fill in diff --git a/Project2-Stream-Compaction/stream_compaction/efficient.h b/Project2-Stream-Compaction/stream_compaction/efficient.h index cb6b687..2dc9b92 100644 --- a/Project2-Stream-Compaction/stream_compaction/efficient.h +++ b/Project2-Stream-Compaction/stream_compaction/efficient.h @@ -6,14 +6,14 @@ namespace StreamCompaction { namespace Efficient { StreamCompaction::Common::PerformanceTimer& timer(); - void scan(unsigned long int n, int *odata, const int *idata); + void scan(unsigned long long int n, int *odata, const int *idata); - unsigned long int compact(unsigned long int n, int *odata, const int *idata); + unsigned long long int compact(unsigned long long int n, int *odata, const int *idata); } namespace SharedMemory { StreamCompaction::Common::PerformanceTimer& timer(); - void scan(unsigned long int n, int *odata, int *idata); - void dev_scan(unsigned long int n, int *odata, int *idata); + void scan(unsigned long long int n, int *odata, int *idata); + void dev_scan(unsigned long long int n, int *odata, int *idata); } } diff --git a/Project2-Stream-Compaction/stream_compaction/naive.cu b/Project2-Stream-Compaction/stream_compaction/naive.cu index 7359187..ba2e097 100644 --- a/Project2-Stream-Compaction/stream_compaction/naive.cu +++ b/Project2-Stream-Compaction/stream_compaction/naive.cu @@ -14,8 +14,8 @@ namespace StreamCompaction { return timer; } // TODO: __global__ - __global__ void naive_parallel_scan(unsigned long int n, int *odata, const int *idata, int d) { - unsigned long int index = blockDim.x * blockIdx.x + threadIdx.x; + __global__ void naive_parallel_scan(unsigned long long int n, int *odata, const int *idata, int d) { + unsigned long long int index = blockDim.x * blockIdx.x + threadIdx.x; if (index >= n) return; if (index >= d) @@ -23,8 +23,8 @@ namespace StreamCompaction { else odata[index] = idata[index]; } - __global__ void right_shift(unsigned long int n, int *odata, const int *idata, int amount) { - unsigned long int index = blockDim.x * blockIdx.x + threadIdx.x; + __global__ void right_shift(unsigned long long int n, int *odata, const int *idata, int amount) { + unsigned long long int index = blockDim.x * blockIdx.x + threadIdx.x; if (index >= n) return; if (index < amount) @@ -35,10 +35,10 @@ namespace StreamCompaction { /** * Performs prefix-sum (aka scan) on idata, storing the result into odata. */ - void scan(unsigned long int n, int *odata, const int *idata) { + void scan(unsigned long long int n, int *odata, const int *idata) { timer().startGpuTimer(); int blocksize = 128; - unsigned long int blocks = (n + blocksize - 1) / blocksize; + unsigned long long int blocks = (n + blocksize - 1) / blocksize; // allocate data int *dev_odata, *dev_odata_2; cudaMalloc((void**)&dev_odata, n * sizeof(int)); @@ -48,8 +48,8 @@ namespace StreamCompaction { // copy data over cudaMemcpy(dev_odata, idata, n*sizeof(int), cudaMemcpyHostToDevice); checkCUDAErrorWithLine("memcpy failed!"); - unsigned long int uppper_limit = 1 << ilog2ceil(n); - for (unsigned long int d = 1; d <= uppper_limit; d<<=1) { + unsigned long long int uppper_limit = 1 << ilog2ceil(n); + for (unsigned long long int d = 1; d <= uppper_limit; d<<=1) { naive_parallel_scan <<> > (n, dev_odata_2, dev_odata, d); checkCUDAErrorWithLine("fn failed!"); std::swap(dev_odata, dev_odata_2); diff --git a/Project2-Stream-Compaction/stream_compaction/naive.h b/Project2-Stream-Compaction/stream_compaction/naive.h index 44453e9..b011296 100644 --- a/Project2-Stream-Compaction/stream_compaction/naive.h +++ b/Project2-Stream-Compaction/stream_compaction/naive.h @@ -6,6 +6,6 @@ namespace StreamCompaction { namespace Naive { StreamCompaction::Common::PerformanceTimer& timer(); - void scan(unsigned long int n, int *odata, const int *idata); + void scan(unsigned long long int n, int *odata, const int *idata); } } diff --git a/Project2-Stream-Compaction/stream_compaction/radix.cu b/Project2-Stream-Compaction/stream_compaction/radix.cu index c31d14d..feb9ad2 100644 --- a/Project2-Stream-Compaction/stream_compaction/radix.cu +++ b/Project2-Stream-Compaction/stream_compaction/radix.cu @@ -8,20 +8,20 @@ namespace Sorting { namespace Radix { #define block_size 128 - __global__ void mask_generation(unsigned long int n, int *dev_mask, int *dev_idata, int bitmask) { - unsigned long int index = blockDim.x * blockIdx.x + threadIdx.x; + __global__ void mask_generation(unsigned long long int n, int *dev_mask, int *dev_idata, int bitmask) { + unsigned long long int index = blockDim.x * blockIdx.x + threadIdx.x; if (index >= n) return; dev_mask[index] = !((bool)(dev_idata[index] & bitmask)); } - __global__ void true_index_generation(unsigned long int n, int *dev_t, int *dev_f, int total_falses) { - unsigned long int index = blockDim.x * blockIdx.x + threadIdx.x; + __global__ void true_index_generation(unsigned long long int n, int *dev_t, int *dev_f, int total_falses) { + unsigned long long int index = blockDim.x * blockIdx.x + threadIdx.x; if (index >= n) return; dev_t[index] = index - dev_f[index] + total_falses; } - __global__ void reshuffle_mask(unsigned long int n, int *dev_odata, int *dev_idata, int *dev_t, int *dev_f, int mask) { - unsigned long int index = blockDim.x * blockIdx.x + threadIdx.x; + __global__ void reshuffle_mask(unsigned long long int n, int *dev_odata, int *dev_idata, int *dev_t, int *dev_f, int mask) { + unsigned long long int index = blockDim.x * blockIdx.x + threadIdx.x; if (index >= n) return; int data = dev_idata[index]; @@ -43,12 +43,12 @@ namespace Sorting { } return count; } - void sort(unsigned long int n, int *odata, int *idata, int max_value) { + void sort(unsigned long long int n, int *odata, int *idata, int max_value) { timer().startGpuTimer(); int loop_count = countBits(max_value);//std::numeric_limits::digits; int mask = 1; - unsigned long int total_falses, tmp; - unsigned long int blocks = ceil((n + block_size - 1) / block_size); + unsigned long long int total_falses, tmp; + unsigned long long int blocks = ceil((n + block_size - 1) / block_size); int *dev_data, *dev_f, *dev_t, *dev_data2; int *dev_mask; cudaMalloc((void**)&dev_data, n*sizeof(int)); diff --git a/Project2-Stream-Compaction/stream_compaction/radix.h b/Project2-Stream-Compaction/stream_compaction/radix.h index e6578fb..9058c2f 100644 --- a/Project2-Stream-Compaction/stream_compaction/radix.h +++ b/Project2-Stream-Compaction/stream_compaction/radix.h @@ -5,6 +5,6 @@ namespace Sorting { namespace Radix { StreamCompaction::Common::PerformanceTimer& timer(); - void sort(unsigned long int n, int *odata, int *idata, int max_value); + void sort(unsigned long long int n, int *odata, int *idata, int max_value); } } diff --git a/Project2-Stream-Compaction/stream_compaction/thrust.cu b/Project2-Stream-Compaction/stream_compaction/thrust.cu index 5009ceb..21a0403 100644 --- a/Project2-Stream-Compaction/stream_compaction/thrust.cu +++ b/Project2-Stream-Compaction/stream_compaction/thrust.cu @@ -17,7 +17,7 @@ namespace StreamCompaction { /** * Performs prefix-sum (aka scan) on idata, storing the result into odata. */ - void scan(unsigned long int n, int *odata, const int *idata) { + void scan(unsigned long long int n, int *odata, const int *idata) { timer().startGpuTimer(); int *dev_odata, *dev_idata; cudaMalloc((void**)&dev_odata, n * sizeof(int)); @@ -28,7 +28,7 @@ namespace StreamCompaction { thrust::exclusive_scan(dv_in, dv_in + n, dv_out); cudaMemcpy(odata, dev_odata, sizeof(int) * n, cudaMemcpyDeviceToHost); cudaFree(dev_odata); - cudaFree(dev_oddev_idataata); + cudaFree(dev_idata); timer().endGpuTimer(); } } diff --git a/Project2-Stream-Compaction/stream_compaction/thrust.h b/Project2-Stream-Compaction/stream_compaction/thrust.h index be4879c..c263717 100644 --- a/Project2-Stream-Compaction/stream_compaction/thrust.h +++ b/Project2-Stream-Compaction/stream_compaction/thrust.h @@ -6,6 +6,6 @@ namespace StreamCompaction { namespace Thrust { StreamCompaction::Common::PerformanceTimer& timer(); - void scan(unsigned long int n, int *odata, const int *idata); + void scan(unsigned long long int n, int *odata, const int *idata); } } From a4c3feb4250f26040f71dba9adda8b71a347a131 Mon Sep 17 00:00:00 2001 From: Vaibhav Arcot Date: Sun, 15 Sep 2019 13:28:29 -0400 Subject: [PATCH 14/34] Increased max size of scan; todo check stream compaction max size; Added skeleton gradient code for NN --- .../character_recognition/mlp.cu | 84 ++++++++++----- .../character_recognition/mlp.h | 7 +- Project2-Stream-Compaction/src/data_gen.cpp | 6 +- Project2-Stream-Compaction/src/main.cpp | 16 +-- .../src/testing_helpers.hpp | 12 +-- .../stream_compaction/common.cu | 6 +- .../stream_compaction/common.h | 6 +- .../stream_compaction/cpu.cu | 18 ++-- .../stream_compaction/cpu.h | 6 +- .../stream_compaction/efficient.cu | 102 +++++++++--------- .../stream_compaction/efficient.h | 8 +- .../stream_compaction/naive.cu | 24 ++--- .../stream_compaction/naive.h | 2 +- .../stream_compaction/radix.cu | 36 +++---- .../stream_compaction/radix.h | 2 +- .../stream_compaction/thrust.cu | 16 +-- .../stream_compaction/thrust.h | 2 +- 17 files changed, 195 insertions(+), 158 deletions(-) diff --git a/Project2-Character-Recognition/character_recognition/mlp.cu b/Project2-Character-Recognition/character_recognition/mlp.cu index 28974c8..f021ff2 100644 --- a/Project2-Character-Recognition/character_recognition/mlp.cu +++ b/Project2-Character-Recognition/character_recognition/mlp.cu @@ -28,12 +28,14 @@ namespace CharacterRecognition { cout << "}" << endl; delete[]print_a; } - - __global__ void bias_addition(int n, float *A, float *B, float *C) { + ////////////////////////////// + /* KERNALS */ + ////////////////////////////// + __global__ void bias_addition(int n, float *A, float *B, float *C, int sign = 1) { // change sign for subtraction or scaled addition int index = threadIdx.x + (blockIdx.x * blockDim.x); if (index >= n) return; - C[index] = A[index] + B[index]; + C[index] = A[index] + sign*B[index]; } __global__ void relu_activation(int n, float *A, float *C) { @@ -42,6 +44,13 @@ namespace CharacterRecognition { return; C[index] = max(0.0f, A[index]); } + + __global__ void relu_grad(int n, float *g, float * grad) { // assumes grad is a 2d array of size n x n + int index = threadIdx.x + (blockIdx.x * blockDim.x); + if (index >= n) + return; + grad[index * n + index] = max(0.0f, g[index]); // makes a diagona matrix + } __global__ void softmax_activation(int n, float *A, float *C, float exp_sum) { int index = threadIdx.x + (blockIdx.x * blockDim.x); @@ -50,6 +59,13 @@ namespace CharacterRecognition { C[index] = expf(A[index]) / exp_sum; } + __global__ void softmax_grad(int n, float *g, float * grad) { + int index_i = threadIdx.x + (blockIdx.x * blockDim.x); + int index_j = threadIdx.y + (blockIdx.y * blockDim.y); + if (index_i >= n || index_j >= n) + return; + grad[index_i * n + index_j] = g[index_i] * ((index_i == index_j) - g[index_j]); + } __global__ void scan(int n, float *data, int d) {// function to get sum (for softmax layer) int tmp_d = 1 << (d + 1); @@ -80,6 +96,7 @@ namespace CharacterRecognition { c[row * k + col] = sum; } } + __global__ void fill_data(int n, float *data, float val) { int index = (blockDim.x * blockIdx.x + threadIdx.x); if (index >= n) @@ -87,6 +104,10 @@ namespace CharacterRecognition { data[index] = val; } + ////////////////////////////// + /* Helper */ + ////////////////////////////// + void Net::GPU_fill_rand(float *A, int size, float std) { // Create a pseudo-random number generator curandGenerator_t prng; @@ -96,30 +117,44 @@ namespace CharacterRecognition { curandSetPseudoRandomGeneratorSeed(prng, clock()); // Fill the array with random numbers on the device - curandGenerateNormal(prng, A, size, 0, std); + curandGenerateUniform(prng, A, size); } - Net::Net(int n, vector layers) : input_size(n), layer_sizes(layers) { // layers = {98, 52, 52} + layer_count = layers.size(); layers.insert(layers.begin(), n); - float *dev_w, *dev_b, *dev_g, *dev_a; + float *dev_w, *dev_b, *dev_g, *dev_a, *dev_jac; int blocks; - for (int i = 0; i < layers.size() - 1; i++) { + for (int i = 0; i < layer_count; i++) { cudaMalloc((void**)&dev_w, (layers[i] * layers[i + 1]) * sizeof(float)); + checkCUDAErrorWithLine("Cuda malloc failed!"); cudaMalloc((void**)&dev_b, (layers[i + 1]) * sizeof(float)); + checkCUDAErrorWithLine("Cuda malloc failed!"); // initilize w, b using gaussian distribution - GPU_fill_rand(dev_w, layers[i] * layers[i + 1], 2.0 / layers[i]); // henormal initilization + GPU_fill_rand(dev_w, layers[i] * layers[i + 1], 2.0 / layers[i]); // uniform random initilization printCuda(dev_w, layers[i] * layers[i + 1], "W fresh"); GPU_fill_rand(dev_b, layers[i + 1], 0.1f); // zero initilizaton is fine for biases // push into vector w.push_back(dev_w); b.push_back(dev_b); - // int results + // intermediate results arrays cudaMalloc((void**)&dev_g, (layers[i + 1]) * sizeof(float)); + checkCUDAErrorWithLine("Cuda malloc failed!"); cudaMalloc((void**)&dev_a, (layers[i + 1]) * sizeof(float)); + checkCUDAErrorWithLine("Cuda malloc failed!"); g.push_back(dev_g); a.push_back(dev_a); + // grad arrays + cudaMalloc((void**)&dev_w, (layers[i] * layers[i + 1]) * sizeof(float)); + checkCUDAErrorWithLine("Cuda malloc failed!"); + dL_dw.push_back(dev_w); + cudaMalloc((void**)&dev_b, (layers[i + 1]) * sizeof(float)); + checkCUDAErrorWithLine("Cuda malloc failed!"); + dL_db.push_back(dev_b); + cudaMalloc((void**)&dev_jac, (layers[i + 1]) * (layers[i + 1]) * sizeof(float)); + checkCUDAErrorWithLine("Cuda malloc failed!"); + da_dg.push_back(dev_jac); // da/dg has dimensions output(g) * output(g) } // initilizaton cublas handle cublasCreate(&handle); @@ -136,15 +171,13 @@ namespace CharacterRecognition { cublasSgemm(handle, CUBLAS_OP_N, CUBLAS_OP_N, m, n, k, alpha, A, lda, B, ldb, beta, C, ldc); } - - float* Net::forward(float *data, int n) { - float *res = new float[classes](); + float *res = new float[layer_sizes[layer_count - 1]](); assert(n == input_size); float *dev_data; cudaMalloc((void**)&dev_data, n * sizeof(float)); cudaMemcpy(dev_data, data, n * sizeof(float), cudaMemcpyHostToDevice); - for (int i = 0; i < layer_sizes.size(); i++) { + for (int i = 0; i < layer_count; i++) { blocks = ceil((layer_sizes[i] + block_size - 1) / block_size); // clear g, a for this layer cudaMemset(g[i], 0, layer_sizes[i] * sizeof(float)); @@ -165,7 +198,7 @@ namespace CharacterRecognition { // bias addition bias_addition << > > (layer_sizes[i], g[i], b[i], g[i]); // put result back into g[i] checkCUDAErrorWithLine("bias addition failed!"); - if (i != layer_sizes.size() - 1) { + if (i != layer_count - 1) { // relu activation relu_activation << > > (layer_sizes[i], g[i], a[i]); checkCUDAErrorWithLine("relu failed!"); @@ -173,7 +206,7 @@ namespace CharacterRecognition { else { exp_copy << > > (layer_sizes[i], a[i], g[i]); checkCUDAErrorWithLine("exp copy failed!"); - // todo optimize this later + // todo move this to the gpu this later float *tmp = new float[layer_sizes[i]]; float exp_sum = 0; cudaMemcpy(tmp, a[i], layer_sizes[i] * sizeof(float), cudaMemcpyDeviceToHost); @@ -181,27 +214,21 @@ namespace CharacterRecognition { exp_sum += tmp[pos]; delete[] tmp; // modified scan to get the exponential sum of all elements (P1 of assignment used!!) - //int closest_pow2 = 1 << ilog2ceil(layer_sizes[i]); - //int blocks_scan; - //for (int d = 0; d <= ilog2ceil(closest_pow2) - 1; d++) { - // // compute number of threads to spawn - // blocks_scan = ceil((closest_pow2 / (1 << (d + 1)) + block_size - 1) / block_size); - // scan<<>>(closest_pow2, a[i], d); - // checkCUDAErrorWithLine("scan failed!"); - //} - //cudaMemcpy(&exp_sum, a[i] + closest_pow2 - 1, sizeof(float), cudaMemcpyDeviceToHost); // softmax activation checkCUDAErrorWithLine("Cuda memcpy failed!"); softmax_activation << > > (layer_sizes[i], g[i], a[i], exp_sum); checkCUDAErrorWithLine("softmax failed!"); } } - cudaMemcpy(res, a[layer_sizes.size() - 1], classes * sizeof(float), cudaMemcpyDeviceToHost); + cudaMemcpy(res, a[layer_count - 1], layer_sizes[layer_count - 1] * sizeof(float), cudaMemcpyDeviceToHost); checkCUDAErrorWithLine("Cuda res memcpy failed!"); return res; } + void Net::backprop(int *output) { + // call softmax with correct number of threads + } Net::~Net() { // free weights and biases for (auto x : w) @@ -213,6 +240,13 @@ namespace CharacterRecognition { cudaFree(x); for (auto x : a) cudaFree(x); + // grads + for (auto x : dL_dw) + cudaFree(x); + for (auto x : dL_db) + cudaFree(x); + for (auto x : da_dg) + cudaFree(x); // clean culbas hand cublasDestroy(handle); } diff --git a/Project2-Character-Recognition/character_recognition/mlp.h b/Project2-Character-Recognition/character_recognition/mlp.h index d0a72bf..8d4f9fe 100644 --- a/Project2-Character-Recognition/character_recognition/mlp.h +++ b/Project2-Character-Recognition/character_recognition/mlp.h @@ -10,7 +10,6 @@ using namespace std; namespace CharacterRecognition { Common::PerformanceTimer& timer(); -#define classes 5 class Net { // cublas cublasHandle_t handle; @@ -23,6 +22,10 @@ namespace CharacterRecognition { int blocks; int input_size, layer_count; vector layer_sizes; + // gradient variables + vector dL_dw; // g = x*w + b + vector dL_db; // g = x*w + b + vector da_dg; // activation function grads (dy_dg for the final layer) // helperfunctions for the class // Fill the array A(nr_rows_A, nr_cols_A) with random numbers on GPU @@ -32,7 +35,7 @@ namespace CharacterRecognition { public: Net(int n, vector layers); // creates weight matrixs float* forward(float *data, int n); // returns class - float backprop(int *output, int* ); // returns loss + void backprop(int *output); // returns loss ~Net(); // to delete the weights }; // TODO: implement required elements for MLP sections 1 and 2 here diff --git a/Project2-Stream-Compaction/src/data_gen.cpp b/Project2-Stream-Compaction/src/data_gen.cpp index 437409b..4628078 100644 --- a/Project2-Stream-Compaction/src/data_gen.cpp +++ b/Project2-Stream-Compaction/src/data_gen.cpp @@ -50,9 +50,9 @@ int main(int argc, char* argv[]) { SIZE = std::pow(2,pow); // Power of 2 else SIZE = std::pow(2, pow) - 3; // Non-Power-Of-Two - int *a = new int[SIZE]; - int *b = new int[SIZE]; - int *c = new int[SIZE]; + long long *a = new long long[SIZE]; + long long *b = new long long[SIZE]; + long long *c = new long long[SIZE]; genArray(SIZE - 1, a, 50); // Leave a 0 at the end to test that edge case a[SIZE - 1] = 0; // get time diff --git a/Project2-Stream-Compaction/src/main.cpp b/Project2-Stream-Compaction/src/main.cpp index b0ea817..36fa1e0 100644 --- a/Project2-Stream-Compaction/src/main.cpp +++ b/Project2-Stream-Compaction/src/main.cpp @@ -18,10 +18,10 @@ #define max_value_compaction 4 #define max_value_sorting 500 const unsigned long long int SIZE = 1<<15; // feel free to change the size of array -const unsigned long long int NPOT = SIZE - 3; // Non-Power-Of-Two -int *a = new int[SIZE]; -int *b = new int[SIZE]; -int *c = new int[SIZE]; +const unsigned long long int nPOT = SIZE - 3; // Non-Power-Of-Two +long long *a = new long long[SIZE]; +long long *b = new long long[SIZE]; +long long *c = new long long[SIZE]; int main(int argc, char* argv[]) { // Scan tests @@ -169,11 +169,11 @@ int main(int argc, char* argv[]) { printArray(SIZE, a, true); printf("Data generation and results computed using thrust\n"); // generate 2 ground truths using thrust sort (one for powers of 2 and the other one for non powers of 2) - int *gt_pot = new int[SIZE](); - std::memcpy(gt_pot, a, SIZE * sizeof(int)); + long long *gt_pot = new long long[SIZE](); + std::memcpy(gt_pot, a, SIZE * sizeof(long long)); thrust::sort(gt_pot, gt_pot + SIZE); - int *gt_npot = new int[NPOT](); - std::memcpy(gt_npot, a, NPOT * sizeof(int)); + long long *gt_npot = new long long[NPOT](); + std::memcpy(gt_npot, a, NPOT * sizeof(long long)); thrust::sort(gt_npot, gt_npot + NPOT); zeroArray(SIZE, c); diff --git a/Project2-Stream-Compaction/src/testing_helpers.hpp b/Project2-Stream-Compaction/src/testing_helpers.hpp index 3d3d28f..af4c58e 100644 --- a/Project2-Stream-Compaction/src/testing_helpers.hpp +++ b/Project2-Stream-Compaction/src/testing_helpers.hpp @@ -10,7 +10,7 @@ template int cmpArrays(unsigned long int n, T *a, T *b) { for (unsigned long int i = 0; i < n; i++) { if (a[i] != b[i]) { - printf(" a[%d] = %d, b[%d] = %d\n", i, a[i], i, b[i]); + printf(" a[%lld] = %lld, b[%lld] = %lld\n", i, a[i], i, b[i]); return 1; } } @@ -30,7 +30,7 @@ void printCmpResult(unsigned long int n, T *a, T *b) { template void printCmpLenResult(unsigned long int n, unsigned long int expN, T *a, T *b) { if (n != expN) { - printf(" expected %d elements, got %d\n", expN, n); + printf(" expected %lld elements, got %lld\n", expN, n); } printf(" %s \n", (n == -1 || n != expN) ? "FAIL COUNT" : @@ -38,19 +38,19 @@ void printCmpLenResult(unsigned long int n, unsigned long int expN, T *a, T *b) } -void zeroArray(unsigned long int n, int *a) { +void zeroArray(unsigned long int n, long long *a) { for (unsigned long int i = 0; i < n; i++) { a[i] = 0; } } -void onesArray(unsigned long int n, int *a) { +void onesArray(unsigned long int n, long long *a) { for (unsigned long int i = 0; i < n; i++) { a[i] = 1; } } -void genArray(unsigned long int n, int *a, int maxval) { +void genArray(unsigned long int n, long long *a, int maxval) { srand(time(nullptr)); for (unsigned long int i = 0; i < n; i++) { @@ -58,7 +58,7 @@ void genArray(unsigned long int n, int *a, int maxval) { } } -void printArray(unsigned long int n, int *a, bool abridged = false) { +void printArray(unsigned long int n, long long *a, bool abridged = false) { printf(" [ "); for (unsigned long int i = 0; i < n; i++) { if (abridged && i + 2 == 15 && n > 16) { diff --git a/Project2-Stream-Compaction/stream_compaction/common.cu b/Project2-Stream-Compaction/stream_compaction/common.cu index a9232ae..ab0f19e 100644 --- a/Project2-Stream-Compaction/stream_compaction/common.cu +++ b/Project2-Stream-Compaction/stream_compaction/common.cu @@ -22,7 +22,7 @@ namespace StreamCompaction { * Maps an array to an array of 0s and 1s for stream compaction. Elements * which map to 0 will be removed, and elements which map to 1 will be kept. */ - __global__ void kernMapToBoolean(unsigned long long int n, int *bools, const int *idata) { + __global__ void kernMapToBoolean(unsigned long long int n, long long *bools, const long long *idata) { unsigned long long int index = (blockDim.x * blockIdx.x + threadIdx.x); if (index >= n) return; @@ -33,8 +33,8 @@ namespace StreamCompaction { * Performs scatter on an array. That is, for each element in idata, * if bools[idx] == 1, it copies idata[idx] to odata[indices[idx]]. */ - __global__ void kernScatter(unsigned long long int n, int *odata, - const int *idata, const int *bools, const int *indices) { + __global__ void kernScatter(unsigned long long int n, long long *odata, + const long long *idata, const long long *bools, const long long *indices) { unsigned long long int index = (blockDim.x * blockIdx.x + threadIdx.x); if (index >= n - 1) return; diff --git a/Project2-Stream-Compaction/stream_compaction/common.h b/Project2-Stream-Compaction/stream_compaction/common.h index 6afbdf2..9dd461b 100644 --- a/Project2-Stream-Compaction/stream_compaction/common.h +++ b/Project2-Stream-Compaction/stream_compaction/common.h @@ -32,10 +32,10 @@ inline int ilog2ceil(unsigned long long int x) { namespace StreamCompaction { namespace Common { - __global__ void kernMapToBoolean(unsigned long long int n, int *bools, const int *idata); + __global__ void kernMapToBoolean(unsigned long long int n, long long *bools, const long long *idata); - __global__ void kernScatter(unsigned long long int n, int *odata, - const int *idata, const int *bools, const int *indices); + __global__ void kernScatter(unsigned long long int n, long long *odata, + const long long *idata, const long long *bools, const long long *indices); /** * This class is used for timing the performance diff --git a/Project2-Stream-Compaction/stream_compaction/cpu.cu b/Project2-Stream-Compaction/stream_compaction/cpu.cu index 298c54b..744edcf 100644 --- a/Project2-Stream-Compaction/stream_compaction/cpu.cu +++ b/Project2-Stream-Compaction/stream_compaction/cpu.cu @@ -16,10 +16,10 @@ namespace StreamCompaction { * For performance analysis, this is supposed to be a simple for loop. * (Optional) For better understanding before starting moving to GPU, you can simulate your GPU scan in this function first. */ - void scan(unsigned long long int n, int *odata, const int *idata, const bool time/* = true*/) { + void scan(unsigned long long int n, long long *odata, const long long *idata, const bool time/* = true*/) { (time == true)?timer().startCpuTimer():0; unsigned long long int running_total = 0; // assumes only positive values - for (unsigned long long int i = 0; i < n-1; i++) { // n-1 because we want exclusive not inclusive so last element isn't added + for (unsigned long long i = 0; i < n-1; i++) { // n-1 because we want exclusive not inclusive so last element isn't added running_total += idata[i]; // n-1 adds for n size odata[i+1] = running_total; } @@ -32,11 +32,11 @@ namespace StreamCompaction { * * @returns the number of elements remaining after compaction. */ - unsigned long long int compactWithoutScan(unsigned long long int n, int *odata, const int *idata) { + unsigned long long int compactWithoutScan(unsigned long long int n, long long *odata, const long long *idata) { timer().startCpuTimer(); unsigned long long int count = 0; unsigned long long int odata_pos = 0; - for (unsigned long long int i = 0; i < n; i++) + for (unsigned long long i = 0; i < n; i++) if (idata[i] != 0) { count++; odata[++odata_pos] = idata[i]; @@ -50,12 +50,12 @@ namespace StreamCompaction { * * @returns the number of elements remaining after compaction. */ - unsigned long long int compactWithScan(unsigned long long int n, int *odata, const int *idata) { + unsigned long long int compactWithScan(unsigned long long int n, long long *odata, const long long *idata) { timer().startCpuTimer(); // Step 1, mark each cell with 1/0 if it has a element or not (super easy to parallelize) - int* scan_data = new int[n](); - int* mask = new int[n](); - for (unsigned long long int i = 0; i < n; i++) { + long long* scan_data = new long long[n](); + long long* mask = new long long[n](); + for (unsigned long long i = 0; i < n; i++) { if (idata[i]) mask[i] = 1; else @@ -64,7 +64,7 @@ namespace StreamCompaction { // scan the mask array (can be done in parallel by using a balanced binary tree) scan(n, scan_data, mask, false); // Scatter array (go to each position and copy the value) (super easy to parallelize) - for (unsigned long long int i = 0; i < n - 1; i++) { + for (unsigned long long i = 0; i < n - 1; i++) { if (idata[i]) odata[scan_data[i] + 1] = idata[i]; } diff --git a/Project2-Stream-Compaction/stream_compaction/cpu.h b/Project2-Stream-Compaction/stream_compaction/cpu.h index 361d2c9..6cf7c9b 100644 --- a/Project2-Stream-Compaction/stream_compaction/cpu.h +++ b/Project2-Stream-Compaction/stream_compaction/cpu.h @@ -6,10 +6,10 @@ namespace StreamCompaction { namespace CPU { StreamCompaction::Common::PerformanceTimer& timer(); - void scan(unsigned long long int n, int *odata, const int *idata, const bool time = true); + void scan(unsigned long long int n, long long *odata, const long long *idata, const bool time = true); - unsigned long long int compactWithoutScan(unsigned long long int n, int *odata, const int *idata); + unsigned long long int compactWithoutScan(unsigned long long int n, long long *odata, const long long *idata); - unsigned long long int compactWithScan(unsigned long long int n, int *odata, const int *idata); + unsigned long long int compactWithScan(unsigned long long int n, long long *odata, const long long *idata); } } diff --git a/Project2-Stream-Compaction/stream_compaction/efficient.cu b/Project2-Stream-Compaction/stream_compaction/efficient.cu index c0fefb3..c50f313 100644 --- a/Project2-Stream-Compaction/stream_compaction/efficient.cu +++ b/Project2-Stream-Compaction/stream_compaction/efficient.cu @@ -18,7 +18,7 @@ namespace StreamCompaction { return timer; } /*2 scan phases, see (link)[https://developer.nvidia.com/gpugems/GPUGems3/gpugems3_ch39.html] for more details*/ - __global__ void reduce_parallel(unsigned long long int n, int *data, int d) { + __global__ void reduce_parallel(unsigned long long int n, long long *data, long long d) { unsigned long long int tmp_d = 1 << (d + 1); unsigned long long int index = (blockDim.x * blockIdx.x + threadIdx.x)*tmp_d; if (index >= n ) @@ -26,7 +26,7 @@ namespace StreamCompaction { data[index + tmp_d - 1] += data[index + (tmp_d>>1) - 1]; } - __global__ void downsweep_parallel(unsigned long long int n, int *data, int d) { + __global__ void downsweep_parallel(unsigned long long int n, long long *data, long long d) { unsigned long long int new_d = 1<<(d + 1); unsigned long long int index = (blockDim.x * blockIdx.x + threadIdx.x)*new_d; if (index >= n) @@ -38,20 +38,20 @@ namespace StreamCompaction { /** * Performs prefix-sum (aka scan) on idata, storing the result into odata. */ - void scan(unsigned long long int n, int *odata, const int *idata) { + void scan(unsigned long long int n, long long *odata, const long long *idata) { timer().startGpuTimer(); // allocate pointers to memory and copy data over - int *dev_odata; + long long *dev_odata; unsigned long long int blocks = 0; unsigned long long int closest_pow2 = 1<>> (closest_pow2, dev_odata, d); @@ -59,27 +59,27 @@ namespace StreamCompaction { } // down-sweep phase // zero last value - cudaMemset(dev_odata + (closest_pow2 - 1), 0, 1 * sizeof(int)); - for (int d = ilog2ceil(closest_pow2) - 1; d >= 0; d--) { + cudaMemset(dev_odata + (closest_pow2 - 1), 0, 1 * sizeof(long long)); + for (long long d = ilog2ceil(closest_pow2) - 1; d >= 0; d--) { blocks = ceil((closest_pow2 / (1 << (d + 1)) + block_size - 1) / block_size); downsweep_parallel <<>> (closest_pow2, dev_odata, d); checkCUDAErrorWithLine("downsweep phase failed!"); } //read data back - cudaMemcpy(odata, dev_odata, n * sizeof(int), cudaMemcpyDeviceToHost); + cudaMemcpy(odata, dev_odata, n * sizeof(long long), cudaMemcpyDeviceToHost); checkCUDAErrorWithLine("memcpy back failed!"); cudaFree(dev_odata); timer().endGpuTimer(); } /*Copy of scan but only works with cuda pointers*/ - void dev_scan(unsigned long long int n, int *dev_odata) { + void dev_scan(unsigned long long int n, long long *dev_odata) { // allocate pointers to memory and copy data over unsigned long long int blocks = 0; unsigned long long int closest_pow2 = 1 << ilog2ceil(n); // reduce phase // so we dont need to do the last round of computation because we zero it anyway - for (int d = 0; d <= ilog2ceil(closest_pow2) - 2; d++) { + for (long long d = 0; d <= ilog2ceil(closest_pow2) - 2; d++) { // compute number of threads to spawn blocks = (closest_pow2 / (1 << (d + 1)) + block_size - 1) / block_size; reduce_parallel << > > (closest_pow2, dev_odata, d); @@ -87,8 +87,8 @@ namespace StreamCompaction { } // down-sweep phase // zero last value - cudaMemset(dev_odata + (closest_pow2 - 1), 0, 1 * sizeof(int)); - for (int d = ceil(log2(closest_pow2) - 1); d >= 0; d--) { + cudaMemset(dev_odata + (closest_pow2 - 1), 0, 1 * sizeof(long long)); // might not actually work if not int, todo check + for (long long d = ceil(log2(closest_pow2) - 1); d >= 0; d--) { blocks = (closest_pow2 / (1 << (d + 1)) + block_size - 1) / block_size; downsweep_parallel << > > (closest_pow2, dev_odata, d); checkCUDAErrorWithLine("downsweep phase failed!"); @@ -104,22 +104,22 @@ namespace StreamCompaction { * @param idata The array of elements to compact. * @returns The number of elements remaining after compaction. */ - unsigned long long int compact(unsigned long long int n, int *odata, const int *idata) { + unsigned long long int compact(unsigned long long int n, long long *odata, const long long *idata) { timer().startGpuTimer(); unsigned long long int closest_pow2 = 1<> > (n, dev_mask, dev_idata); checkCUDAErrorWithLine("mask gen failed!"); // scan the mask array (can be done in parallel by using a balanced binary tree) - cudaMemcpy(dev_indices, dev_mask, closest_pow2 * sizeof(int), cudaMemcpyDeviceToDevice); + cudaMemcpy(dev_indices, dev_mask, closest_pow2 * sizeof(long long), cudaMemcpyDeviceToDevice); dev_scan(closest_pow2, dev_indices); checkCUDAErrorWithLine("dev scan failed!"); // Scatter array (go to each position and copy the value) @@ -128,9 +128,9 @@ namespace StreamCompaction { checkCUDAErrorWithLine("scatter failed!"); //read data back int res; - cudaMemcpy(&res, dev_indices + n - 1, sizeof(int), cudaMemcpyDeviceToHost); + cudaMemcpy(&res, dev_indices + n - 1, sizeof(long long), cudaMemcpyDeviceToHost); res = idata[n - 1] ? res + 1 : res; - cudaMemcpy(odata, dev_odata, n * sizeof(int), cudaMemcpyDeviceToHost); + cudaMemcpy(odata, dev_odata, n * sizeof(long long), cudaMemcpyDeviceToHost); cudaFree(dev_odata); cudaFree(dev_idata); cudaFree(dev_mask); @@ -149,13 +149,13 @@ namespace StreamCompaction { #define LOG_NUM_BANKS 4 #define CONFLICT_FREE_OFFSET(n) \ ((n) >> NUM_BANKS + (n) >> (2 * LOG_NUM_BANKS)) - __global__ void dev_scan(unsigned long long int n, int *dev_odata, int *dev_idata, int *dev_block_sum) + __global__ void dev_scan(unsigned long long int n, long long *dev_odata, long long *dev_idata, long long *dev_block_sum) { /* Extriemly heavly based on https://developer.nvidia.com/gpugems/GPUGems3/gpugems3_ch39.html Main change is to use block_size instead of n and then put the sums of each block into a new array and scaning the array */ // Declare Share Memory - __shared__ int temp[block_size + NUM_BANKS]; + __shared__ long long temp[block_size + NUM_BANKS]; unsigned long long int thid = threadIdx.x; unsigned long long int bid = blockIdx.x; unsigned long long int scan_offset = bid * block_size; @@ -166,7 +166,7 @@ namespace StreamCompaction { unsigned long long int bankOffsetB = CONFLICT_FREE_OFFSET(bi); temp[ai + bankOffsetA] = dev_idata[ai + scan_offset]; temp[bi + bankOffsetB] = dev_idata[bi + scan_offset]; - for (unsigned long long int d = block_size >> 1; d > 0; d >>= 1) // build sum in place up the tree + for (long long int d = block_size >> 1; d > 0; d >>= 1) // build sum in place up the tree { __syncthreads(); if (thid < d) @@ -197,7 +197,7 @@ namespace StreamCompaction { unsigned long long int bi = offset * ((thid << 1) + 2) - 1; ai += CONFLICT_FREE_OFFSET(ai); bi += CONFLICT_FREE_OFFSET(bi); - float t = temp[ai]; + long long t = temp[ai]; temp[ai] = temp[bi]; temp[bi] += t; } @@ -206,7 +206,7 @@ namespace StreamCompaction { dev_odata[ai + scan_offset] = temp[ai + bankOffsetA]; dev_odata[bi + scan_offset] = temp[bi + bankOffsetB]; } - __global__ void add_offset(unsigned long long int n, int *data, int *dev_block_offset) { + __global__ void add_offset(unsigned long long int n, long long *data, long long *dev_block_offset) { unsigned long long int bid = blockIdx.x; unsigned long long int index = blockDim.x * bid + threadIdx.x; if (index >= n) @@ -215,40 +215,40 @@ namespace StreamCompaction { if (bid != 0) // to save a bunch of useless reads and write data[index] += dev_block_offset[bid]; } - void scan(unsigned long long int n, int *odata, int *idata) { + void scan(unsigned long long int n, long long *odata, long long *idata) { timer().startGpuTimer(); // allocate pointers to memory and copy data over - int *dev_odata, *dev_idata, *dev_block_sum, *dev_block_offset; - int *block_sum, *block_offset; + long long *dev_odata, *dev_idata, *dev_block_sum, *dev_block_offset; + long long *block_sum, *block_offset; unsigned long long int closest_pow2 = 1 << ilog2ceil(n); unsigned long long int blocks = ceil((closest_pow2 + block_size - 1) / block_size); // allocate buffers - cudaMalloc((void**)&dev_odata, closest_pow2 * sizeof(int)); - cudaMalloc((void**)&dev_idata, closest_pow2 * sizeof(int)); + cudaMalloc((void**)&dev_odata, closest_pow2 * sizeof(long long)); + cudaMalloc((void**)&dev_idata, closest_pow2 * sizeof(long long)); // allocate block global buffers - cudaMalloc((void**)&dev_block_sum, blocks * sizeof(int)); // each block gets 1 number to fill in - cudaMalloc((void**)&dev_block_offset, blocks * sizeof(int)); + cudaMalloc((void**)&dev_block_sum, blocks * sizeof(long long)); // each block gets 1 number to fill in + cudaMalloc((void**)&dev_block_offset, blocks * sizeof(long long)); // cpu scan buffers - block_sum = new int[blocks](); - block_offset = new int[blocks](); + block_sum = new long long[blocks](); + block_offset = new long long[blocks](); checkCUDAErrorWithLine("malloc failed!"); // copy over raw data - cudaMemcpy(dev_idata, idata, n * sizeof(int), cudaMemcpyHostToDevice); + cudaMemcpy(dev_idata, idata, n * sizeof(long long), cudaMemcpyHostToDevice); checkCUDAErrorWithLine("memcpy failed!"); // large prescan, pre alloc shared memory dev_scan<<> 1)>>>(closest_pow2, dev_odata, dev_idata, dev_block_sum); checkCUDAErrorWithLine("prescan fn failed!"); // cpu scan the remaining blocks, because otherwise it could become recursive for large numbers - cudaMemcpy(block_sum, dev_block_sum, blocks * sizeof(int), cudaMemcpyDeviceToHost); + cudaMemcpy(block_sum, dev_block_sum, blocks * sizeof(long long), cudaMemcpyDeviceToHost); checkCUDAErrorWithLine("memcpy to cpu failed!"); StreamCompaction::CPU::scan(blocks, block_offset, block_sum); // copy data back over to cuda - cudaMemcpy(dev_block_offset, block_offset, blocks * sizeof(int), cudaMemcpyHostToDevice); + cudaMemcpy(dev_block_offset, block_offset, blocks * sizeof(long long), cudaMemcpyHostToDevice); checkCUDAErrorWithLine("memcpy from cpu failed!"); // add dev_block_offset to each block add_offset <<>> (n, dev_odata, dev_block_offset); checkCUDAErrorWithLine("add_offset fn failed!"); - cudaMemcpy(odata, dev_odata, n * sizeof(int), cudaMemcpyDeviceToHost); + cudaMemcpy(odata, dev_odata, n * sizeof(long long), cudaMemcpyDeviceToHost); checkCUDAErrorWithLine("memcpy back failed!"); // free memory cudaFree(dev_odata); @@ -259,31 +259,31 @@ namespace StreamCompaction { delete[] block_offset; timer().endGpuTimer(); } - void dev_scan(unsigned long long int n, int *dev_odata, int *dev_idata) { + void dev_scan(unsigned long long int n, long long *dev_odata, long long *dev_idata) { timer().startGpuTimer(); // allocate pointers to memory and copy data over - int *dev_block_sum, *dev_block_offset; - int *block_sum, *block_offset; + long long *dev_block_sum, *dev_block_offset; + long long *block_sum, *block_offset; unsigned long long int closest_pow2 = 1 << ilog2ceil(n); unsigned long long int blocks = ceil((closest_pow2 + block_size - 1) / block_size); // allocate buffers // allocate block global buffers - cudaMalloc((void**)&dev_block_sum, blocks * sizeof(int)); // each block gets 1 number to fill in - cudaMalloc((void**)&dev_block_offset, blocks * sizeof(int)); + cudaMalloc((void**)&dev_block_sum, blocks * sizeof(long long)); // each block gets 1 number to fill in + cudaMalloc((void**)&dev_block_offset, blocks * sizeof(long long)); // cpu scan buffers - block_sum = new int[blocks](); - block_offset = new int[blocks](); + block_sum = new long long[blocks](); + block_offset = new long long[blocks](); checkCUDAErrorWithLine("malloc failed!"); // copy over raw data // large prescan, pre alloc shared memory dev_scan << > 1) >> > (n, dev_odata, dev_idata, dev_block_sum); //todo maybe change back n to closest_pow2 checkCUDAErrorWithLine("prescan fn failed!"); // cpu scan the remaining blocks, because otherwise it could become recursive for large numbers - cudaMemcpy(block_sum, dev_block_sum, blocks * sizeof(int), cudaMemcpyDeviceToHost); + cudaMemcpy(block_sum, dev_block_sum, blocks * sizeof(long long), cudaMemcpyDeviceToHost); checkCUDAErrorWithLine("memcpy to cpu failed!"); StreamCompaction::CPU::scan(blocks, block_offset, block_sum); // copy data back over to cuda - cudaMemcpy(dev_block_offset, block_offset, blocks * sizeof(int), cudaMemcpyHostToDevice); + cudaMemcpy(dev_block_offset, block_offset, blocks * sizeof(long long), cudaMemcpyHostToDevice); checkCUDAErrorWithLine("memcpy from cpu failed!"); // add dev_block_offset to each block add_offset << > > (n, dev_odata, dev_block_offset); diff --git a/Project2-Stream-Compaction/stream_compaction/efficient.h b/Project2-Stream-Compaction/stream_compaction/efficient.h index 2dc9b92..1b7c24a 100644 --- a/Project2-Stream-Compaction/stream_compaction/efficient.h +++ b/Project2-Stream-Compaction/stream_compaction/efficient.h @@ -6,14 +6,14 @@ namespace StreamCompaction { namespace Efficient { StreamCompaction::Common::PerformanceTimer& timer(); - void scan(unsigned long long int n, int *odata, const int *idata); + void scan(unsigned long long int n, long long *odata, const long long *idata); - unsigned long long int compact(unsigned long long int n, int *odata, const int *idata); + unsigned long long int compact(unsigned long long int n, long long *odata, const long long *idata); } namespace SharedMemory { StreamCompaction::Common::PerformanceTimer& timer(); - void scan(unsigned long long int n, int *odata, int *idata); - void dev_scan(unsigned long long int n, int *odata, int *idata); + void scan(unsigned long long int n, long long *odata, long long *idata); + void dev_scan(unsigned long long int n, long long *odata, long long *idata); } } diff --git a/Project2-Stream-Compaction/stream_compaction/naive.cu b/Project2-Stream-Compaction/stream_compaction/naive.cu index ba2e097..3096296 100644 --- a/Project2-Stream-Compaction/stream_compaction/naive.cu +++ b/Project2-Stream-Compaction/stream_compaction/naive.cu @@ -7,6 +7,7 @@ namespace StreamCompaction { namespace Naive { +#define blocksize 128 using StreamCompaction::Common::PerformanceTimer; PerformanceTimer& timer() { @@ -14,7 +15,7 @@ namespace StreamCompaction { return timer; } // TODO: __global__ - __global__ void naive_parallel_scan(unsigned long long int n, int *odata, const int *idata, int d) { + __global__ void naive_parallel_scan(unsigned long long int n, long long *odata, const long long *idata, long d) { unsigned long long int index = blockDim.x * blockIdx.x + threadIdx.x; if (index >= n) return; @@ -23,7 +24,7 @@ namespace StreamCompaction { else odata[index] = idata[index]; } - __global__ void right_shift(unsigned long long int n, int *odata, const int *idata, int amount) { + __global__ void right_shift(unsigned long long int n, long long *odata, const long long *idata, int amount) { unsigned long long int index = blockDim.x * blockIdx.x + threadIdx.x; if (index >= n) return; @@ -35,28 +36,27 @@ namespace StreamCompaction { /** * Performs prefix-sum (aka scan) on idata, storing the result into odata. */ - void scan(unsigned long long int n, int *odata, const int *idata) { - timer().startGpuTimer(); - int blocksize = 128; + void scan(unsigned long long int n, long long *odata, const long long *idata) { + timer().startGpuTimer(); unsigned long long int blocks = (n + blocksize - 1) / blocksize; // allocate data - int *dev_odata, *dev_odata_2; - cudaMalloc((void**)&dev_odata, n * sizeof(int)); + long long *dev_odata, *dev_odata_2; + cudaMalloc((void**)&dev_odata, n * sizeof(long long)); checkCUDAErrorWithLine("malloc failed!"); - cudaMalloc((void**)&dev_odata_2, n * sizeof(int)); + cudaMalloc((void**)&dev_odata_2, n * sizeof(long long)); checkCUDAErrorWithLine("malloc failed!"); // copy data over - cudaMemcpy(dev_odata, idata, n*sizeof(int), cudaMemcpyHostToDevice); + cudaMemcpy(dev_odata, idata, n*sizeof(long long), cudaMemcpyHostToDevice); checkCUDAErrorWithLine("memcpy failed!"); unsigned long long int uppper_limit = 1 << ilog2ceil(n); - for (unsigned long long int d = 1; d <= uppper_limit; d<<=1) { + for (long d = 1; d <= uppper_limit; d<<=1) { naive_parallel_scan <<> > (n, dev_odata_2, dev_odata, d); checkCUDAErrorWithLine("fn failed!"); std::swap(dev_odata, dev_odata_2); } - right_shift << > > (n, dev_odata_2, dev_odata, 1); + right_shift <<>> (n, dev_odata_2, dev_odata, 1); checkCUDAErrorWithLine("right shift failed failed!"); - cudaMemcpy(odata, dev_odata_2, n*sizeof(int), cudaMemcpyDeviceToHost); + cudaMemcpy(odata, dev_odata_2, n*sizeof(long long), cudaMemcpyDeviceToHost); checkCUDAErrorWithLine("memcpy back failed!"); cudaFree(dev_odata); cudaFree(dev_odata_2); diff --git a/Project2-Stream-Compaction/stream_compaction/naive.h b/Project2-Stream-Compaction/stream_compaction/naive.h index b011296..68b9122 100644 --- a/Project2-Stream-Compaction/stream_compaction/naive.h +++ b/Project2-Stream-Compaction/stream_compaction/naive.h @@ -6,6 +6,6 @@ namespace StreamCompaction { namespace Naive { StreamCompaction::Common::PerformanceTimer& timer(); - void scan(unsigned long long int n, int *odata, const int *idata); + void scan(unsigned long long int n, long long *odata, const long long *idata); } } diff --git a/Project2-Stream-Compaction/stream_compaction/radix.cu b/Project2-Stream-Compaction/stream_compaction/radix.cu index feb9ad2..6bbd7c7 100644 --- a/Project2-Stream-Compaction/stream_compaction/radix.cu +++ b/Project2-Stream-Compaction/stream_compaction/radix.cu @@ -8,24 +8,24 @@ namespace Sorting { namespace Radix { #define block_size 128 - __global__ void mask_generation(unsigned long long int n, int *dev_mask, int *dev_idata, int bitmask) { + __global__ void mask_generation(unsigned long long int n, long long *dev_mask, long long *dev_idata, int bitmask) { unsigned long long int index = blockDim.x * blockIdx.x + threadIdx.x; if (index >= n) return; dev_mask[index] = !((bool)(dev_idata[index] & bitmask)); } - __global__ void true_index_generation(unsigned long long int n, int *dev_t, int *dev_f, int total_falses) { + __global__ void true_index_generation(unsigned long long int n, long long *dev_t, long long *dev_f, long long total_falses) { unsigned long long int index = blockDim.x * blockIdx.x + threadIdx.x; if (index >= n) return; dev_t[index] = index - dev_f[index] + total_falses; } - __global__ void reshuffle_mask(unsigned long long int n, int *dev_odata, int *dev_idata, int *dev_t, int *dev_f, int mask) { + __global__ void reshuffle_mask(unsigned long long int n, long long *dev_odata, long long *dev_idata, long long *dev_t, long long *dev_f, int bitmask) { unsigned long long int index = blockDim.x * blockIdx.x + threadIdx.x; if (index >= n) return; int data = dev_idata[index]; - if ((bool)(data & mask)) + if ((bool)(data & bitmask)) dev_odata[dev_t[index]] = data; else dev_odata[dev_f[index]] = data; @@ -43,37 +43,37 @@ namespace Sorting { } return count; } - void sort(unsigned long long int n, int *odata, int *idata, int max_value) { + void sort(unsigned long long int n, long long *odata, long long *idata, int max_value) { timer().startGpuTimer(); int loop_count = countBits(max_value);//std::numeric_limits::digits; int mask = 1; - unsigned long long int total_falses, tmp; + long long int total_falses, tmp; unsigned long long int blocks = ceil((n + block_size - 1) / block_size); - int *dev_data, *dev_f, *dev_t, *dev_data2; - int *dev_mask; - cudaMalloc((void**)&dev_data, n*sizeof(int)); - cudaMalloc((void**)&dev_data2, n * sizeof(int)); - cudaMalloc((void**)&dev_mask, n * sizeof(int)); - cudaMalloc((void**)&dev_f, n * sizeof(int)); - cudaMalloc((void**)&dev_t, n * sizeof(int)); + long long *dev_data, *dev_f, *dev_t, *dev_data2; + long long *dev_mask; + cudaMalloc((void**)&dev_data, n*sizeof(long long)); + cudaMalloc((void**)&dev_data2, n * sizeof(long long)); + cudaMalloc((void**)&dev_mask, n * sizeof(long long)); + cudaMalloc((void**)&dev_f, n * sizeof(long long)); + cudaMalloc((void**)&dev_t, n * sizeof(long long)); // copy over idata - cudaMemcpy(dev_data, idata, n * sizeof(int), cudaMemcpyHostToDevice); + cudaMemcpy(dev_data, idata, n * sizeof(long long), cudaMemcpyHostToDevice); for (int i = 0; i < loop_count; i++, mask <<= 1) { mask_generation <<>> (n, dev_mask, dev_data, mask); // scan to get false position indices StreamCompaction::SharedMemory::dev_scan(n, dev_f, dev_mask); - cudaMemcpy(&total_falses, dev_f + n - 1, sizeof(int), cudaMemcpyDeviceToHost); - cudaMemcpy(&tmp, dev_mask + n - 1, sizeof(int), cudaMemcpyDeviceToHost); + cudaMemcpy(&total_falses, dev_f + n - 1, sizeof(long long), cudaMemcpyDeviceToHost); + cudaMemcpy(&tmp, dev_mask + n - 1, sizeof(long long), cudaMemcpyDeviceToHost); total_falses += tmp; // compute true position indices true_index_generation <<>> (n, dev_t, dev_f, total_falses); // reshuffle data using correct positions reshuffle_mask << > > (n, dev_data2, dev_data, dev_t, dev_f, mask); // copy data2 over to data - cudaMemcpy(dev_data, dev_data2, n * sizeof(int), cudaMemcpyDeviceToDevice); + cudaMemcpy(dev_data, dev_data2, n * sizeof(long long), cudaMemcpyDeviceToDevice); } // we are done sorting, copy back - cudaMemcpy(odata, dev_data, n * sizeof(int), cudaMemcpyDeviceToHost); + cudaMemcpy(odata, dev_data, n * sizeof(long long), cudaMemcpyDeviceToHost); // free everything cudaFree(dev_data); cudaFree(dev_data2); diff --git a/Project2-Stream-Compaction/stream_compaction/radix.h b/Project2-Stream-Compaction/stream_compaction/radix.h index 9058c2f..0a26782 100644 --- a/Project2-Stream-Compaction/stream_compaction/radix.h +++ b/Project2-Stream-Compaction/stream_compaction/radix.h @@ -5,6 +5,6 @@ namespace Sorting { namespace Radix { StreamCompaction::Common::PerformanceTimer& timer(); - void sort(unsigned long long int n, int *odata, int *idata, int max_value); + void sort(unsigned long long int n, long long *odata, long long *idata, int max_value); } } diff --git a/Project2-Stream-Compaction/stream_compaction/thrust.cu b/Project2-Stream-Compaction/stream_compaction/thrust.cu index 21a0403..77d2fa6 100644 --- a/Project2-Stream-Compaction/stream_compaction/thrust.cu +++ b/Project2-Stream-Compaction/stream_compaction/thrust.cu @@ -17,16 +17,16 @@ namespace StreamCompaction { /** * Performs prefix-sum (aka scan) on idata, storing the result into odata. */ - void scan(unsigned long long int n, int *odata, const int *idata) { + void scan(unsigned long long int n, long long *odata, const long long *idata) { timer().startGpuTimer(); - int *dev_odata, *dev_idata; - cudaMalloc((void**)&dev_odata, n * sizeof(int)); - cudaMalloc((void**)&dev_idata, n * sizeof(int)); - cudaMemcpy(dev_idata, idata, n * sizeof(int), cudaMemcpyHostToDevice); - thrust::device_ptr dv_in(dev_idata); - thrust::device_ptr dv_out(dev_odata); + long long *dev_odata, *dev_idata; + cudaMalloc((void**)&dev_odata, n * sizeof(long long)); + cudaMalloc((void**)&dev_idata, n * sizeof(long long)); + cudaMemcpy(dev_idata, idata, n * sizeof(long long), cudaMemcpyHostToDevice); + thrust::device_ptr dv_in(dev_idata); + thrust::device_ptr dv_out(dev_odata); thrust::exclusive_scan(dv_in, dv_in + n, dv_out); - cudaMemcpy(odata, dev_odata, sizeof(int) * n, cudaMemcpyDeviceToHost); + cudaMemcpy(odata, dev_odata, sizeof(long long) * n, cudaMemcpyDeviceToHost); cudaFree(dev_odata); cudaFree(dev_idata); timer().endGpuTimer(); diff --git a/Project2-Stream-Compaction/stream_compaction/thrust.h b/Project2-Stream-Compaction/stream_compaction/thrust.h index c263717..840e2ec 100644 --- a/Project2-Stream-Compaction/stream_compaction/thrust.h +++ b/Project2-Stream-Compaction/stream_compaction/thrust.h @@ -6,6 +6,6 @@ namespace StreamCompaction { namespace Thrust { StreamCompaction::Common::PerformanceTimer& timer(); - void scan(unsigned long long int n, int *odata, const int *idata); + void scan(unsigned long long int n, long long *odata, const long long *idata); } } From f3698f3d95c4395f43a4a0f9fe0ea134d35dfaca Mon Sep 17 00:00:00 2001 From: Vaibhav Arcot Date: Sun, 15 Sep 2019 15:35:40 -0400 Subject: [PATCH 15/34] Modified forward pass to use double precision numbers --- .../character_recognition/mlp.cu | 122 +++++++++++------- .../character_recognition/mlp.h | 26 ++-- Project2-Character-Recognition/src/main.cpp | 13 +- 3 files changed, 94 insertions(+), 67 deletions(-) diff --git a/Project2-Character-Recognition/character_recognition/mlp.cu b/Project2-Character-Recognition/character_recognition/mlp.cu index f021ff2..29a948d 100644 --- a/Project2-Character-Recognition/character_recognition/mlp.cu +++ b/Project2-Character-Recognition/character_recognition/mlp.cu @@ -17,11 +17,11 @@ namespace CharacterRecognition { return timer; } - void printCuda(float *a1, int n, string name) { - float *print_a = new float[n]; + void printCuda(double *a1, int n, string name) { + double *print_a = new double[n]; cout << name.c_str() << endl; cout << "{" << endl; - cudaMemcpy(print_a, a1, n * sizeof(float), cudaMemcpyDeviceToHost); + cudaMemcpy(print_a, a1, n * sizeof(double), cudaMemcpyDeviceToHost); for (int i = 0; i < n; i++) { cout << "\t" << print_a[i] << endl; } @@ -31,35 +31,35 @@ namespace CharacterRecognition { ////////////////////////////// /* KERNALS */ ////////////////////////////// - __global__ void bias_addition(int n, float *A, float *B, float *C, int sign = 1) { // change sign for subtraction or scaled addition + __global__ void bias_addition(int n, double *A, double *B, double *C, int sign = 1) { // change sign for subtraction or scaled addition int index = threadIdx.x + (blockIdx.x * blockDim.x); if (index >= n) return; C[index] = A[index] + sign*B[index]; } - __global__ void relu_activation(int n, float *A, float *C) { + __global__ void relu_activation(int n, double *A, double *C) { int index = threadIdx.x + (blockIdx.x * blockDim.x); if (index >= n) return; C[index] = max(0.0f, A[index]); } - __global__ void relu_grad(int n, float *g, float * grad) { // assumes grad is a 2d array of size n x n + __global__ void relu_grad(int n, double *g, double * grad) { // assumes grad is a 2d array of size n x n int index = threadIdx.x + (blockIdx.x * blockDim.x); if (index >= n) return; grad[index * n + index] = max(0.0f, g[index]); // makes a diagona matrix } - __global__ void softmax_activation(int n, float *A, float *C, float exp_sum) { + __global__ void softmax_activation(int n, double *A, double *C, double exp_sum) { int index = threadIdx.x + (blockIdx.x * blockDim.x); if (index >= n) return; - C[index] = expf(A[index]) / exp_sum; + C[index] = exp(A[index]) / exp_sum; } - __global__ void softmax_grad(int n, float *g, float * grad) { + __global__ void softmax_grad(int n, double *g, double * grad) { int index_i = threadIdx.x + (blockIdx.x * blockDim.x); int index_j = threadIdx.y + (blockIdx.y * blockDim.y); if (index_i >= n || index_j >= n) @@ -67,7 +67,7 @@ namespace CharacterRecognition { grad[index_i * n + index_j] = g[index_i] * ((index_i == index_j) - g[index_j]); } - __global__ void scan(int n, float *data, int d) {// function to get sum (for softmax layer) + __global__ void scan(int n, double *data, int d) {// function to get sum (for softmax layer) int tmp_d = 1 << (d + 1); int index = (blockDim.x * blockIdx.x + threadIdx.x)*tmp_d; if (index >= n) @@ -75,18 +75,25 @@ namespace CharacterRecognition { data[index + tmp_d - 1] += data[index + (tmp_d >> 1) - 1]; } - __global__ void exp_copy(int n, float *odata, float *idata) {// kernal to copy exp(idata[i]) to odata[i] + __global__ void exp_copy(int n, double *odata, double *idata) {// kernal to copy exp(idata[i]) to odata[i] int index = (blockDim.x * blockIdx.x + threadIdx.x); if (index >= n) return; - odata[index] = expf(idata[index]); + odata[index] = exp(idata[index]); } - __global__ void gpu_matrix_mult(float *a, float *b, float *c, int m, int n, int k) + __global__ void fill_data(int n, double *data, double val) { + int index = (blockDim.x * blockIdx.x + threadIdx.x); + if (index >= n) + return; + data[index] = val; + } + + __global__ void gpu_matrix_mult(const double *a, const double *b, double *c, const int m, const int n, const int k) { int row = blockIdx.y * blockDim.y + threadIdx.y; int col = blockIdx.x * blockDim.x + threadIdx.x; - int sum = 0; + int sum = 0; if (col < k && row < m) { for (int i = 0; i < n; i++) @@ -97,18 +104,11 @@ namespace CharacterRecognition { } } - __global__ void fill_data(int n, float *data, float val) { - int index = (blockDim.x * blockIdx.x + threadIdx.x); - if (index >= n) - return; - data[index] = val; - } - ////////////////////////////// /* Helper */ ////////////////////////////// - void Net::GPU_fill_rand(float *A, int size, float std) { + void Net::GPU_fill_rand(double *A, int size, double std) { // Create a pseudo-random number generator curandGenerator_t prng; curandCreateGenerator(&prng, CURAND_RNG_PSEUDO_DEFAULT); @@ -117,72 +117,74 @@ namespace CharacterRecognition { curandSetPseudoRandomGeneratorSeed(prng, clock()); // Fill the array with random numbers on the device - curandGenerateUniform(prng, A, size); + curandGenerateNormalDouble(prng, A, size, 0, std); } Net::Net(int n, vector layers) : input_size(n), layer_sizes(layers) { // layers = {98, 52, 52} + // init raw data holder + cudaMalloc((void**)&dev_data, n * sizeof(double)); layer_count = layers.size(); layers.insert(layers.begin(), n); - float *dev_w, *dev_b, *dev_g, *dev_a, *dev_jac; + double *dev_w, *dev_b, *dev_g, *dev_a, *dev_jac; int blocks; for (int i = 0; i < layer_count; i++) { - cudaMalloc((void**)&dev_w, (layers[i] * layers[i + 1]) * sizeof(float)); + cudaMalloc((void**)&dev_w, (layers[i] * layers[i + 1]) * sizeof(double)); checkCUDAErrorWithLine("Cuda malloc failed!"); - cudaMalloc((void**)&dev_b, (layers[i + 1]) * sizeof(float)); + cudaMalloc((void**)&dev_b, (layers[i + 1]) * sizeof(double)); checkCUDAErrorWithLine("Cuda malloc failed!"); // initilize w, b using gaussian distribution GPU_fill_rand(dev_w, layers[i] * layers[i + 1], 2.0 / layers[i]); // uniform random initilization - printCuda(dev_w, layers[i] * layers[i + 1], "W fresh"); + //printCuda(dev_w, layers[i] * layers[i + 1], "W fresh"); GPU_fill_rand(dev_b, layers[i + 1], 0.1f); // zero initilizaton is fine for biases // push into vector w.push_back(dev_w); b.push_back(dev_b); // intermediate results arrays - cudaMalloc((void**)&dev_g, (layers[i + 1]) * sizeof(float)); + cudaMalloc((void**)&dev_g, (layers[i + 1]) * sizeof(double)); checkCUDAErrorWithLine("Cuda malloc failed!"); - cudaMalloc((void**)&dev_a, (layers[i + 1]) * sizeof(float)); + cudaMalloc((void**)&dev_a, (layers[i + 1]) * sizeof(double)); checkCUDAErrorWithLine("Cuda malloc failed!"); g.push_back(dev_g); a.push_back(dev_a); // grad arrays - cudaMalloc((void**)&dev_w, (layers[i] * layers[i + 1]) * sizeof(float)); + cudaMalloc((void**)&dev_w, (layers[i] * layers[i + 1]) * sizeof(double)); checkCUDAErrorWithLine("Cuda malloc failed!"); dL_dw.push_back(dev_w); - cudaMalloc((void**)&dev_b, (layers[i + 1]) * sizeof(float)); + cudaMalloc((void**)&dev_b, (layers[i + 1]) * sizeof(double)); checkCUDAErrorWithLine("Cuda malloc failed!"); dL_db.push_back(dev_b); - cudaMalloc((void**)&dev_jac, (layers[i + 1]) * (layers[i + 1]) * sizeof(float)); + cudaMalloc((void**)&dev_jac, (layers[i + 1]) * (layers[i + 1]) * sizeof(double)); checkCUDAErrorWithLine("Cuda malloc failed!"); da_dg.push_back(dev_jac); // da/dg has dimensions output(g) * output(g) } // initilizaton cublas handle cublasCreate(&handle); + // init final grad buffer + cudaMalloc((void**)&dL_dyhat, layers[layer_count] * sizeof(double)); } // C(m,n) = A(m,k) * B(k,n) - void Net::gpu_blas_mmul(const float *A, const float *B, float *C, const int m, const int k, const int n) { + void Net::gpu_blas_mmul(const double *A, const double *B, double *C, const int m, const int k, const int n) { int lda = m, ldb = k, ldc = m; - const float alf = 1; - const float bet = 0; - const float *alpha = &alf; - const float *beta = &bet; + const double alf = 1; + const double bet = 0; + const double *alpha = &alf; + const double *beta = &bet; // Do the actual multiplication - cublasSgemm(handle, CUBLAS_OP_N, CUBLAS_OP_N, m, n, k, alpha, A, lda, B, ldb, beta, C, ldc); + cublasDgemm(handle, CUBLAS_OP_N, CUBLAS_OP_N, m, n, k, alpha, A, lda, B, ldb, beta, C, ldc); } - float* Net::forward(float *data, int n) { - float *res = new float[layer_sizes[layer_count - 1]](); + double* Net::forward(double *data, int n) { + double *res = new double[layer_sizes[layer_count - 1]](); assert(n == input_size); - float *dev_data; - cudaMalloc((void**)&dev_data, n * sizeof(float)); - cudaMemcpy(dev_data, data, n * sizeof(float), cudaMemcpyHostToDevice); + cudaMemcpy(dev_data, data, n * sizeof(double), cudaMemcpyHostToDevice); for (int i = 0; i < layer_count; i++) { blocks = ceil((layer_sizes[i] + block_size - 1) / block_size); // clear g, a for this layer - cudaMemset(g[i], 0, layer_sizes[i] * sizeof(float)); + cudaMemset(g[i], 0, layer_sizes[i] * sizeof(double)); checkCUDAErrorWithLine("Cuda memset failed!"); - cudaMemset(a[i], 0, layer_sizes[i] * sizeof(float)); + cudaMemset(a[i], 0, layer_sizes[i] * sizeof(double)); checkCUDAErrorWithLine("Cuda memset failed!"); int block_size_tmp = 16; int col_blocks = (1 + block_size_tmp - 1) / block_size_tmp, row_col = (layer_sizes[i]+ block_size_tmp - 1)/ block_size_tmp; @@ -207,9 +209,9 @@ namespace CharacterRecognition { exp_copy << > > (layer_sizes[i], a[i], g[i]); checkCUDAErrorWithLine("exp copy failed!"); // todo move this to the gpu this later - float *tmp = new float[layer_sizes[i]]; - float exp_sum = 0; - cudaMemcpy(tmp, a[i], layer_sizes[i] * sizeof(float), cudaMemcpyDeviceToHost); + double *tmp = new double[layer_sizes[i]]; + double exp_sum = 0; + cudaMemcpy(tmp, a[i], layer_sizes[i] * sizeof(double), cudaMemcpyDeviceToHost); for (int pos = 0; pos < layer_sizes[i]; pos++) exp_sum += tmp[pos]; delete[] tmp; @@ -220,14 +222,32 @@ namespace CharacterRecognition { checkCUDAErrorWithLine("softmax failed!"); } } - cudaMemcpy(res, a[layer_count - 1], layer_sizes[layer_count - 1] * sizeof(float), cudaMemcpyDeviceToHost); + cudaMemcpy(res, a[layer_count - 1], layer_sizes[layer_count - 1] * sizeof(double), cudaMemcpyDeviceToHost); checkCUDAErrorWithLine("Cuda res memcpy failed!"); return res; } - void Net::backprop(int *output) { + void Net::backprop(double *y) { + // calculate loss grad + blocks = ceil((layer_sizes[layer_count - 1] + block_size - 1) / block_size); + bias_addition <<> > (layer_sizes[layer_count - 1], a[layer_count - 1], y, dL_dyhat, -1); // call softmax with correct number of threads + for (int i = layer_count - 1; i >= 0; i--) { + blocks = ceil((layer_sizes[i] + block_size - 1) / block_size); + if (i == layer_count - 1) { // softmax grad + dim3 gridDim(blocks, blocks); + dim3 blockDim(block_size, block_size); + softmax_grad <<< gridDim, blockDim >>> (layer_sizes[i], g[i], da_dg[i]); + } + else { // relu grad + relu_grad <<< blocks, block_size >>> (layer_sizes[i], g[i], da_dg[i]); + } + // + } + } + double Net::loss(int *y) { + return -1; } Net::~Net() { // free weights and biases @@ -247,6 +267,8 @@ namespace CharacterRecognition { cudaFree(x); for (auto x : da_dg) cudaFree(x); + cudaFree(dL_dyhat); + cudaFree(dev_data); // clean culbas hand cublasDestroy(handle); } diff --git a/Project2-Character-Recognition/character_recognition/mlp.h b/Project2-Character-Recognition/character_recognition/mlp.h index 8d4f9fe..86327e5 100644 --- a/Project2-Character-Recognition/character_recognition/mlp.h +++ b/Project2-Character-Recognition/character_recognition/mlp.h @@ -11,31 +11,35 @@ using namespace std; namespace CharacterRecognition { Common::PerformanceTimer& timer(); class Net { + // input data + double *dev_data; // cublas cublasHandle_t handle; - vector w; - vector b; + vector w; + vector b; // intermediate results - vector g; - vector a; + vector g; + vector a; const static int block_size = 128; int blocks; int input_size, layer_count; vector layer_sizes; // gradient variables - vector dL_dw; // g = x*w + b - vector dL_db; // g = x*w + b - vector da_dg; // activation function grads (dy_dg for the final layer) + vector dL_dw; // g = x*w + b + vector dL_db; // g = x*w + b + vector da_dg; // activation function grads (dy_dg for the final layer) + double * dL_dyhat; // helperfunctions for the class // Fill the array A(nr_rows_A, nr_cols_A) with random numbers on GPU - void GPU_fill_rand(float *A, int size, float std); + void GPU_fill_rand(double *A, int size, double std); // multiplication of matrices - void gpu_blas_mmul(const float *A, const float *B, float *C, const int m, const int k, const int n); + void gpu_blas_mmul(const double *A, const double *B, double *C, const int m, const int k, const int n); public: Net(int n, vector layers); // creates weight matrixs - float* forward(float *data, int n); // returns class - void backprop(int *output); // returns loss + double* forward(double *data, int n); // returns class + void backprop(double *y); + double Net::loss(int *y); ~Net(); // to delete the weights }; // TODO: implement required elements for MLP sections 1 and 2 here diff --git a/Project2-Character-Recognition/src/main.cpp b/Project2-Character-Recognition/src/main.cpp index e65390d..79d6d0b 100644 --- a/Project2-Character-Recognition/src/main.cpp +++ b/Project2-Character-Recognition/src/main.cpp @@ -14,8 +14,8 @@ //#include #include //#include - -#define classes 5 +#define inputs 196 +#define classes 52 using namespace std; //int image_read(string path) { // cv::Mat image = cv::imread(path.c_str(), 0); @@ -52,10 +52,11 @@ int main(int argc, char* argv[]) { for (auto x : files) cout << x << endl;*/ // test forward pass - CharacterRecognition::Net nn(5, {classes}); - float data[classes] = {1, 1, 1, 1, 1}; - auto x = nn.forward(data, 5); - float sum = 0; + CharacterRecognition::Net nn(inputs, {98, 52, 52, classes}); + double data[inputs] = {0}; + auto x = nn.forward(data, inputs); +// nn.backprop(data); + double sum = 0; for (int i = 0; i < classes; i++) { cout << x[i] << ", " << endl; sum += x[i]; From 30efb41362b30cf06951409d2c06501ec564f9ed Mon Sep 17 00:00:00 2001 From: Vaibhav Arcot Date: Sun, 15 Sep 2019 16:05:35 -0400 Subject: [PATCH 16/34] Sperated parameters from NN class --- .../character_recognition/mlp.cu | 87 +++++++++++-------- .../character_recognition/mlp.h | 17 ++-- Project2-Character-Recognition/src/main.cpp | 3 +- 3 files changed, 61 insertions(+), 46 deletions(-) diff --git a/Project2-Character-Recognition/character_recognition/mlp.cu b/Project2-Character-Recognition/character_recognition/mlp.cu index 29a948d..5868b42 100644 --- a/Project2-Character-Recognition/character_recognition/mlp.cu +++ b/Project2-Character-Recognition/character_recognition/mlp.cu @@ -120,15 +120,18 @@ namespace CharacterRecognition { curandGenerateNormalDouble(prng, A, size, 0, std); } - Net::Net(int n, vector layers) : input_size(n), layer_sizes(layers) { + Net::Net(int n, vector layers, double lr) { // layers = {98, 52, 52} + params.layer_count = layers.size(); + params.input_size = n; + params.lr = lr; + params.layer_sizes = layers; // init raw data holder cudaMalloc((void**)&dev_data, n * sizeof(double)); - layer_count = layers.size(); layers.insert(layers.begin(), n); double *dev_w, *dev_b, *dev_g, *dev_a, *dev_jac; int blocks; - for (int i = 0; i < layer_count; i++) { + for (int i = 0; i < params.layer_count; i++) { cudaMalloc((void**)&dev_w, (layers[i] * layers[i + 1]) * sizeof(double)); checkCUDAErrorWithLine("Cuda malloc failed!"); cudaMalloc((void**)&dev_b, (layers[i + 1]) * sizeof(double)); @@ -150,10 +153,7 @@ namespace CharacterRecognition { // grad arrays cudaMalloc((void**)&dev_w, (layers[i] * layers[i + 1]) * sizeof(double)); checkCUDAErrorWithLine("Cuda malloc failed!"); - dL_dw.push_back(dev_w); - cudaMalloc((void**)&dev_b, (layers[i + 1]) * sizeof(double)); - checkCUDAErrorWithLine("Cuda malloc failed!"); - dL_db.push_back(dev_b); + dL_dg.push_back(dev_w); cudaMalloc((void**)&dev_jac, (layers[i + 1]) * (layers[i + 1]) * sizeof(double)); checkCUDAErrorWithLine("Cuda malloc failed!"); da_dg.push_back(dev_jac); // da/dg has dimensions output(g) * output(g) @@ -161,7 +161,7 @@ namespace CharacterRecognition { // initilizaton cublas handle cublasCreate(&handle); // init final grad buffer - cudaMalloc((void**)&dL_dyhat, layers[layer_count] * sizeof(double)); + cudaMalloc((void**)&dL_dyhat, layers[params.layer_count] * sizeof(double)); } // C(m,n) = A(m,k) * B(k,n) @@ -176,74 +176,87 @@ namespace CharacterRecognition { } double* Net::forward(double *data, int n) { - double *res = new double[layer_sizes[layer_count - 1]](); - assert(n == input_size); + double *res = new double[params.layer_sizes[params.layer_count - 1]](); + assert(n == params.input_size); cudaMemcpy(dev_data, data, n * sizeof(double), cudaMemcpyHostToDevice); - for (int i = 0; i < layer_count; i++) { - blocks = ceil((layer_sizes[i] + block_size - 1) / block_size); + for (int i = 0; i < params.layer_count; i++) { + blocks = ceil((params.layer_sizes[i] + params.block_size - 1) / params.block_size); // clear g, a for this layer - cudaMemset(g[i], 0, layer_sizes[i] * sizeof(double)); + cudaMemset(g[i], 0, params.layer_sizes[i] * sizeof(double)); checkCUDAErrorWithLine("Cuda memset failed!"); - cudaMemset(a[i], 0, layer_sizes[i] * sizeof(double)); + cudaMemset(a[i], 0, params.layer_sizes[i] * sizeof(double)); checkCUDAErrorWithLine("Cuda memset failed!"); - int block_size_tmp = 16; - int col_blocks = (1 + block_size_tmp - 1) / block_size_tmp, row_col = (layer_sizes[i]+ block_size_tmp - 1)/ block_size_tmp; // matrix multiplication if (!i) { // first iteration, so a[i] hasn't been set yet - gpu_blas_mmul(dev_data, w[i], g[i], 1, input_size, layer_sizes[i]); + gpu_blas_mmul(dev_data, w[i], g[i], 1, params.input_size, params.layer_sizes[i]); checkCUDAErrorWithLine("gpu mult failed!"); } else { - gpu_blas_mmul(a[i - 1], w[i], g[i], 1, layer_sizes[i-1], layer_sizes[i]); + gpu_blas_mmul(a[i - 1], w[i], g[i], 1, params.layer_sizes[i-1], params.layer_sizes[i]); checkCUDAErrorWithLine("gpu mult failed!"); } // bias addition - bias_addition << > > (layer_sizes[i], g[i], b[i], g[i]); // put result back into g[i] + bias_addition << > > (params.layer_sizes[i], g[i], b[i], g[i]); // put result back into g[i] checkCUDAErrorWithLine("bias addition failed!"); - if (i != layer_count - 1) { + if (i != params.layer_count - 1) { // relu activation - relu_activation << > > (layer_sizes[i], g[i], a[i]); + relu_activation << > > (params.layer_sizes[i], g[i], a[i]); checkCUDAErrorWithLine("relu failed!"); } else { - exp_copy << > > (layer_sizes[i], a[i], g[i]); + exp_copy << > > (params.layer_sizes[i], a[i], g[i]); checkCUDAErrorWithLine("exp copy failed!"); // todo move this to the gpu this later - double *tmp = new double[layer_sizes[i]]; + double *tmp = new double[params.layer_sizes[i]]; double exp_sum = 0; - cudaMemcpy(tmp, a[i], layer_sizes[i] * sizeof(double), cudaMemcpyDeviceToHost); - for (int pos = 0; pos < layer_sizes[i]; pos++) + cudaMemcpy(tmp, a[i], params.layer_sizes[i] * sizeof(double), cudaMemcpyDeviceToHost); + for (int pos = 0; pos < params.layer_sizes[i]; pos++) exp_sum += tmp[pos]; delete[] tmp; // modified scan to get the exponential sum of all elements (P1 of assignment used!!) // softmax activation checkCUDAErrorWithLine("Cuda memcpy failed!"); - softmax_activation << > > (layer_sizes[i], g[i], a[i], exp_sum); + softmax_activation <<>> (params.layer_sizes[i], g[i], a[i], exp_sum); checkCUDAErrorWithLine("softmax failed!"); } } - cudaMemcpy(res, a[layer_count - 1], layer_sizes[layer_count - 1] * sizeof(double), cudaMemcpyDeviceToHost); + cudaMemcpy(res, a[params.layer_count - 1], params.layer_sizes[params.layer_count - 1] * sizeof(double), cudaMemcpyDeviceToHost); checkCUDAErrorWithLine("Cuda res memcpy failed!"); return res; } void Net::backprop(double *y) { // calculate loss grad - blocks = ceil((layer_sizes[layer_count - 1] + block_size - 1) / block_size); - bias_addition <<> > (layer_sizes[layer_count - 1], a[layer_count - 1], y, dL_dyhat, -1); + blocks = ceil((params.layer_sizes[params.layer_count - 1] + params.block_size - 1) / params.block_size); + bias_addition <<> > (params.layer_sizes[params.layer_count - 1], a[params.layer_count - 1], y, dL_dyhat, -1); // y_hat - y // call softmax with correct number of threads - for (int i = layer_count - 1; i >= 0; i--) { - blocks = ceil((layer_sizes[i] + block_size - 1) / block_size); - if (i == layer_count - 1) { // softmax grad + for (int i = params.layer_count - 1; i >= 0; i--) { + blocks = ceil((params.layer_sizes[i] + params.block_size - 1) / params.block_size); + // activation blocks + if (i == params.layer_count - 1) { // softmax grad dim3 gridDim(blocks, blocks); - dim3 blockDim(block_size, block_size); - softmax_grad <<< gridDim, blockDim >>> (layer_sizes[i], g[i], da_dg[i]); + dim3 blockDim(params.block_size, params.block_size); + softmax_grad <<< gridDim, blockDim >>> (params.layer_sizes[i], g[i], da_dg[i]); } else { // relu grad - relu_grad <<< blocks, block_size >>> (layer_sizes[i], g[i], da_dg[i]); + relu_grad <<< blocks, params.block_size >>> (params.layer_sizes[i], g[i], da_dg[i]); + } + // weight pass + if (i == params.layer_count - 1) { + //dL_dg[i] = dL_dyhat * da_dg[i]; + } + else { + //dL_dg[i] = dL_dg[i + 1] * w[i + 1] * da_dg[i]; } // } + // update weights + for (int i = 0; i < params.layer_count; i++) { + //dL_dw = dL_dg[i] * a[i]; + //dL_db = dL_dg[i] + 1; // add const to value?? + //w[i] = w[i] + params.lr * dL_dw; + //b[i] = b[i] + params.lr * dL_db; + } } double Net::loss(int *y) { @@ -261,9 +274,7 @@ namespace CharacterRecognition { for (auto x : a) cudaFree(x); // grads - for (auto x : dL_dw) - cudaFree(x); - for (auto x : dL_db) + for (auto x : dL_dg) cudaFree(x); for (auto x : da_dg) cudaFree(x); diff --git a/Project2-Character-Recognition/character_recognition/mlp.h b/Project2-Character-Recognition/character_recognition/mlp.h index 86327e5..ea80cce 100644 --- a/Project2-Character-Recognition/character_recognition/mlp.h +++ b/Project2-Character-Recognition/character_recognition/mlp.h @@ -10,6 +10,12 @@ using namespace std; namespace CharacterRecognition { Common::PerformanceTimer& timer(); + struct Params { + vector layer_sizes; + int layer_count, input_size; + double lr; + const static int block_size = 128; + }; class Net { // input data double *dev_data; @@ -20,23 +26,20 @@ namespace CharacterRecognition { // intermediate results vector g; vector a; - const static int block_size = 128; int blocks; - int input_size, layer_count; - vector layer_sizes; // gradient variables - vector dL_dw; // g = x*w + b - vector dL_db; // g = x*w + b + vector dL_dg; vector da_dg; // activation function grads (dy_dg for the final layer) double * dL_dyhat; + // parameters + Params params; // helperfunctions for the class - // Fill the array A(nr_rows_A, nr_cols_A) with random numbers on GPU void GPU_fill_rand(double *A, int size, double std); // multiplication of matrices void gpu_blas_mmul(const double *A, const double *B, double *C, const int m, const int k, const int n); public: - Net(int n, vector layers); // creates weight matrixs + Net(int n, vector layers, double lr); // creates weight matrixs double* forward(double *data, int n); // returns class void backprop(double *y); double Net::loss(int *y); diff --git a/Project2-Character-Recognition/src/main.cpp b/Project2-Character-Recognition/src/main.cpp index 79d6d0b..e0bd59e 100644 --- a/Project2-Character-Recognition/src/main.cpp +++ b/Project2-Character-Recognition/src/main.cpp @@ -16,6 +16,7 @@ //#include #define inputs 196 #define classes 52 +#define lr 0.2 using namespace std; //int image_read(string path) { // cv::Mat image = cv::imread(path.c_str(), 0); @@ -52,7 +53,7 @@ int main(int argc, char* argv[]) { for (auto x : files) cout << x << endl;*/ // test forward pass - CharacterRecognition::Net nn(inputs, {98, 52, 52, classes}); + CharacterRecognition::Net nn(inputs, {98, 52, 52, classes}, lr); double data[inputs] = {0}; auto x = nn.forward(data, inputs); // nn.backprop(data); From fb112b7aa5e9de72ad52809661da27422ada8ad1 Mon Sep 17 00:00:00 2001 From: Vaibhav Arcot Date: Mon, 16 Sep 2019 00:54:05 -0400 Subject: [PATCH 17/34] Pushed all raw data; Finished data_gen.cpp --- .../character_recognition/mlp.cu | 2 +- .../data/Scan_data/data_nonpow2/cpu.csv | 3468 +++++++++++++ .../data/Scan_data/data_nonpow2/eff.csv | 3468 +++++++++++++ .../data/Scan_data/data_nonpow2/naive.csv | 3468 +++++++++++++ .../Scan_data/data_nonpow2/shared_mem.csv | 3468 +++++++++++++ .../data/Scan_data/data_nonpow2/thrust.csv | 3467 +++++++++++++ .../data/Scan_data/data_pow2/cpu.csv | 4548 +++++++++++++++++ .../data/Scan_data/data_pow2/eff.csv | 4547 ++++++++++++++++ .../data/Scan_data/data_pow2/naive.csv | 4548 +++++++++++++++++ .../data/Scan_data/data_pow2/shared_mem.csv | 4547 ++++++++++++++++ .../data/Scan_data/data_pow2/thrust.csv | 4547 ++++++++++++++++ .../Scan_data}/data_pow2_overflow/cpu.csv | 0 .../Scan_data}/data_pow2_overflow/eff.csv | 0 .../Scan_data}/data_pow2_overflow/naive.csv | 0 .../data_pow2_overflow/shared_mem.csv | 0 .../Scan_data}/data_pow2_overflow/thrust.csv | 0 .../data/Sort_data/data_nonpow2/radix.csv | 910 ++++ .../data/Sort_data/data_nonpow2/thrust.csv | 910 ++++ .../data/Sort_data/data_pow2/radix.csv | 933 ++++ .../data/Sort_data/data_pow2/thrust.csv | 933 ++++ .../data_nonpow2/cpu_with.csv | 923 ++++ .../data_nonpow2/cpu_without.csv | 924 ++++ .../data_nonpow2/eff.csv | 923 ++++ .../data_nonpow2/shared_mem.csv | 923 ++++ .../data_pow2/cpu_with.csv | 1371 +++++ .../data_pow2/cpu_without.csv | 1371 +++++ .../Stream_compaction_data/data_pow2/eff.csv | 1371 +++++ .../data_pow2/shared_mem.csv | 1371 +++++ Project2-Stream-Compaction/src/data_gen.cpp | 129 +- Project2-Stream-Compaction/src/main.cpp | 2 +- .../stream_compaction/efficient.cu | 45 +- .../stream_compaction/efficient.h | 2 +- 32 files changed, 53085 insertions(+), 34 deletions(-) create mode 100644 Project2-Stream-Compaction/data/Scan_data/data_nonpow2/cpu.csv create mode 100644 Project2-Stream-Compaction/data/Scan_data/data_nonpow2/eff.csv create mode 100644 Project2-Stream-Compaction/data/Scan_data/data_nonpow2/naive.csv create mode 100644 Project2-Stream-Compaction/data/Scan_data/data_nonpow2/shared_mem.csv create mode 100644 Project2-Stream-Compaction/data/Scan_data/data_nonpow2/thrust.csv create mode 100644 Project2-Stream-Compaction/data/Scan_data/data_pow2/cpu.csv create mode 100644 Project2-Stream-Compaction/data/Scan_data/data_pow2/eff.csv create mode 100644 Project2-Stream-Compaction/data/Scan_data/data_pow2/naive.csv create mode 100644 Project2-Stream-Compaction/data/Scan_data/data_pow2/shared_mem.csv create mode 100644 Project2-Stream-Compaction/data/Scan_data/data_pow2/thrust.csv rename Project2-Stream-Compaction/{ => data/Scan_data}/data_pow2_overflow/cpu.csv (100%) rename Project2-Stream-Compaction/{ => data/Scan_data}/data_pow2_overflow/eff.csv (100%) rename Project2-Stream-Compaction/{ => data/Scan_data}/data_pow2_overflow/naive.csv (100%) rename Project2-Stream-Compaction/{ => data/Scan_data}/data_pow2_overflow/shared_mem.csv (100%) rename Project2-Stream-Compaction/{ => data/Scan_data}/data_pow2_overflow/thrust.csv (100%) create mode 100644 Project2-Stream-Compaction/data/Sort_data/data_nonpow2/radix.csv create mode 100644 Project2-Stream-Compaction/data/Sort_data/data_nonpow2/thrust.csv create mode 100644 Project2-Stream-Compaction/data/Sort_data/data_pow2/radix.csv create mode 100644 Project2-Stream-Compaction/data/Sort_data/data_pow2/thrust.csv create mode 100644 Project2-Stream-Compaction/data/Stream_compaction_data/data_nonpow2/cpu_with.csv create mode 100644 Project2-Stream-Compaction/data/Stream_compaction_data/data_nonpow2/cpu_without.csv create mode 100644 Project2-Stream-Compaction/data/Stream_compaction_data/data_nonpow2/eff.csv create mode 100644 Project2-Stream-Compaction/data/Stream_compaction_data/data_nonpow2/shared_mem.csv create mode 100644 Project2-Stream-Compaction/data/Stream_compaction_data/data_pow2/cpu_with.csv create mode 100644 Project2-Stream-Compaction/data/Stream_compaction_data/data_pow2/cpu_without.csv create mode 100644 Project2-Stream-Compaction/data/Stream_compaction_data/data_pow2/eff.csv create mode 100644 Project2-Stream-Compaction/data/Stream_compaction_data/data_pow2/shared_mem.csv diff --git a/Project2-Character-Recognition/character_recognition/mlp.cu b/Project2-Character-Recognition/character_recognition/mlp.cu index 5868b42..8c7c738 100644 --- a/Project2-Character-Recognition/character_recognition/mlp.cu +++ b/Project2-Character-Recognition/character_recognition/mlp.cu @@ -159,7 +159,7 @@ namespace CharacterRecognition { da_dg.push_back(dev_jac); // da/dg has dimensions output(g) * output(g) } // initilizaton cublas handle - cublasCreate(&handle); + cublasCreate(&handle); // init final grad buffer cudaMalloc((void**)&dL_dyhat, layers[params.layer_count] * sizeof(double)); } diff --git a/Project2-Stream-Compaction/data/Scan_data/data_nonpow2/cpu.csv b/Project2-Stream-Compaction/data/Scan_data/data_nonpow2/cpu.csv new file mode 100644 index 0000000..501fd0b --- /dev/null +++ b/Project2-Stream-Compaction/data/Scan_data/data_nonpow2/cpu.csv @@ -0,0 +1,3468 @@ +13,0.0001 +29,0.0001 +61,0.0001 +125,0.0002 +253,0.0002 +509,0.0005 +1021,0.0008 +2045,0.0018 +4093,0.003 +8189,0.0047 +16381,0.0083 +32765,0.017 +65533,0.0384 +131069,0.6201 +262141,1.2854 +524285,2.4867 +1048573,5.0989 +2097149,10.2603 +4194301,20.4964 +8388605,40.3128 +16777213,77.5941 +33554429,160.059 +67108861,310.585 +13,0.0001 +29,0.0002 +61,0.0002 +125,0.0003 +253,0.0002 +509,0.0006 +1021,0.0011 +2045,0.001 +4093,0.0039 +8189,0.0037 +16381,0.0078 +32765,0.0187 +65533,0.0413 +131069,0.6038 +262141,1.1759 +524285,2.7852 +1048573,5.4708 +2097149,9.4267 +4194301,19.2171 +8388605,37.7091 +16777213,76.128 +33554429,153.625 +67108861,309.95 +13,0.0001 +29,0.0002 +61,0.0001 +125,0.0003 +253,0.0002 +509,0.0004 +1021,0.0004 +2045,0.0008 +4093,0.0017 +8189,0.0037 +16381,0.0083 +32765,0.0365 +65533,0.0373 +131069,0.6008 +262141,1.3973 +524285,2.435 +1048573,4.7008 +2097149,10.1406 +4194301,19.2924 +8388605,39.389 +16777213,78.7847 +33554429,157.191 +67108861,306.106 +13,0.0001 +29,0.0001 +61,0.0002 +125,0.0001 +253,0.0002 +509,0.0007 +1021,0.0004 +2045,0.001 +4093,0.0041 +8189,0.0036 +16381,0.0078 +32765,0.0178 +65533,0.0387 +131069,0.6927 +262141,1.5262 +524285,2.4104 +1048573,5.0729 +2097149,10.3558 +4194301,19.2896 +8388605,37.8047 +16777213,83.0659 +33554429,156.668 +67108861,306.02 +13,0.0001 +29,0.0001 +61,0.0001 +125,0.0001 +253,0.0003 +509,0.0007 +1021,0.001 +2045,0.0008 +4093,0.002 +8189,0.0034 +16381,0.0079 +32765,0.0344 +65533,0.0422 +131069,0.6041 +262141,1.3412 +524285,2.5412 +1048573,5.2878 +2097149,9.3535 +4194301,19.1962 +8388605,38.4629 +16777213,77.8652 +33554429,161.005 +67108861,304.557 +13,0.0001 +29,0.0001 +61,0.0001 +125,0.0003 +253,0.0003 +509,0.0003 +1021,0.0007 +2045,0.0022 +4093,0.0043 +8189,0.0037 +16381,0.0081 +32765,0.0178 +65533,0.0369 +131069,0.7346 +262141,1.2012 +524285,2.4312 +1048573,5.4446 +2097149,9.6761 +4194301,19.4252 +8388605,37.4371 +16777213,74.4498 +33554429,154.131 +67108861,305.85 +13,0 +29,0.0001 +61,0.0001 +125,0.0003 +253,0.0005 +509,0.0005 +1021,0.0012 +2045,0.0014 +4093,0.0018 +8189,0.0035 +16381,0.0077 +32765,0.0349 +65533,0.0367 +131069,0.604 +262141,1.1701 +524285,2.4101 +1048573,4.7037 +2097149,9.5182 +4194301,18.8001 +8388605,37.7161 +16777213,77.7443 +33554429,154.452 +67108861,310.091 +13,0.0001 +29,0.0002 +61,0.0001 +125,0.0002 +253,0.0004 +509,0.0005 +1021,0.0007 +2045,0.0014 +4093,0.0023 +8189,0.0035 +16381,0.0123 +32765,0.0186 +65533,0.0379 +131069,0.6452 +262141,1.1695 +524285,2.3428 +1048573,4.7599 +2097149,10.4525 +4194301,18.9709 +8388605,40.6591 +16777213,75.2794 +33554429,156.137 +67108861,308.847 +13,0.0001 +29,0.0001 +61,0.0002 +125,0.0002 +253,0.0001 +509,0.0004 +1021,0.0005 +2045,0.001 +4093,0.0016 +8189,0.0039 +16381,0.0086 +32765,0.0356 +65533,0.0401 +131069,0.7627 +262141,1.2052 +524285,2.6041 +1048573,4.938 +2097149,10.0049 +4194301,18.611 +8388605,38.8795 +16777213,78.1883 +33554429,161.037 +67108861,307.197 +13,0.0001 +29,0.0001 +61,0.0002 +125,0.0002 +253,0.0002 +509,0.0003 +1021,0.0005 +2045,0.0009 +4093,0.0018 +8189,0.004 +16381,0.0084 +32765,0.0221 +65533,0.0364 +131069,0.6026 +262141,1.2386 +524285,2.3941 +1048573,4.8338 +2097149,10.2174 +4194301,19.1884 +8388605,37.7018 +16777213,75.9132 +33554429,157.19 +67108861,310.586 +13,0.0001 +29,0.0001 +61,0.0001 +125,0.0002 +253,0.0006 +509,0.0006 +1021,0.0012 +2045,0.0019 +4093,0.0023 +8189,0.0034 +16381,0.0078 +32765,0.0325 +65533,0.0363 +131069,0.6136 +262141,1.2441 +524285,2.3998 +1048573,4.7578 +2097149,9.9385 +4194301,19.1265 +8388605,39.3726 +16777213,76.2613 +33554429,153.54 +67108861,314.965 +13,0.0001 +29,0.0002 +61,0.0002 +125,0.0002 +253,0.0002 +509,0.0002 +1021,0.0004 +2045,0.001 +4093,0.0019 +8189,0.0036 +16381,0.0072 +32765,0.0181 +65533,0.0379 +131069,0.5852 +262141,1.2507 +524285,2.4329 +1048573,4.8197 +2097149,9.4813 +4194301,19.5742 +8388605,37.7021 +16777213,81.8261 +33554429,155.508 +67108861,304.997 +13,0.0001 +29,0.0001 +61,0.0003 +125,0.0003 +253,0.0005 +509,0.0002 +1021,0.0004 +2045,0.0009 +4093,0.0017 +8189,0.0035 +16381,0.0336 +32765,0.0178 +65533,0.0496 +131069,0.749 +262141,1.2079 +524285,2.6494 +1048573,5.1772 +2097149,9.7953 +4194301,19.5246 +8388605,41.272 +16777213,75.4757 +33554429,153.352 +67108861,311.401 +13,0.0001 +29,0.0001 +61,0.0001 +125,0.0002 +253,0.0003 +509,0.0005 +1021,0.0005 +2045,0.0008 +4093,0.0025 +8189,0.017 +16381,0.0076 +32765,0.0172 +65533,0.0375 +131069,0.7581 +262141,1.2755 +524285,2.563 +1048573,5.2355 +2097149,9.4288 +4194301,19.1557 +8388605,40.6577 +16777213,76.0369 +33554429,151.646 +67108861,308.952 +13,0.0001 +29,0.0002 +61,0.0002 +125,0.0002 +253,0.0003 +509,0.0002 +1021,0.0004 +2045,0.0009 +4093,0.0042 +8189,0.0061 +16381,0.023 +32765,0.0166 +65533,0.0788 +131069,0.7151 +262141,1.2076 +524285,2.4517 +1048573,5.1194 +2097149,9.404 +4194301,21.0661 +8388605,38.2189 +16777213,78.8381 +33554429,157.638 +67108861,312.291 +13,0.0001 +29,0.0002 +61,0.0001 +125,0.0001 +253,0.0004 +509,0.0006 +1021,0.0004 +2045,0.0009 +4093,0.0018 +8189,0.0039 +16381,0.0075 +32765,0.0351 +65533,0.04 +131069,0.5829 +262141,1.2111 +524285,2.6364 +1048573,5.0352 +2097149,9.6087 +4194301,18.8805 +8388605,39.2855 +16777213,76.6146 +33554429,156.218 +67108861,308.049 +13,0.0001 +29,0.0001 +61,0.0002 +125,0.0002 +253,0.0002 +509,0.0007 +1021,0.0011 +2045,0.0009 +4093,0.0026 +8189,0.0038 +16381,0.0081 +32765,0.016 +65533,0.0389 +131069,0.654 +262141,1.2099 +524285,2.353 +1048573,4.7692 +2097149,9.5133 +4194301,19.9007 +8388605,38.4648 +16777213,79.368 +33554429,155.064 +67108861,309.183 +13,0.0001 +29,0.0001 +61,0.0002 +125,0.0004 +253,0.0003 +509,0.0005 +1021,0.0005 +2045,0.002 +4093,0.0017 +8189,0.0044 +16381,0.0081 +32765,0.0437 +65533,0.0364 +131069,0.6012 +262141,1.2024 +524285,2.5164 +1048573,5.3011 +2097149,9.2648 +4194301,19.788 +8388605,37.8216 +16777213,75.5491 +33554429,152.229 +67108861,312.054 +13,0 +29,0.0001 +61,0.0002 +125,0.0002 +253,0.0004 +509,0.0004 +1021,0.0004 +2045,0.001 +4093,0.0041 +8189,0.0039 +16381,0.0077 +32765,0.0173 +65533,0.0367 +131069,0.5997 +262141,1.2046 +524285,2.3441 +1048573,4.7283 +2097149,9.6764 +4194301,18.6766 +8388605,38.5604 +16777213,78.6532 +33554429,155.821 +67108861,304.551 +13,0.0001 +29,0.0003 +61,0.0001 +125,0.0001 +253,0.0002 +509,0.0003 +1021,0.001 +2045,0.0009 +4093,0.0018 +8189,0.0037 +16381,0.0084 +32765,0.0465 +65533,0.0424 +131069,0.6004 +262141,1.2104 +524285,2.4147 +1048573,4.8354 +2097149,9.5166 +4194301,18.5364 +8388605,37.9391 +16777213,75.9457 +33554429,154.035 +67108861,313.419 +13,0.0001 +29,0.0002 +61,0.0004 +125,0.0001 +253,0.0002 +509,0.0005 +1021,0.0004 +2045,0.0009 +4093,0.0231 +8189,0.0038 +16381,0.0084 +32765,0.051 +65533,0.0364 +131069,0.6207 +262141,1.2726 +524285,2.3963 +1048573,5.3218 +2097149,9.7951 +4194301,18.9905 +8388605,39.8028 +16777213,78.5332 +33554429,155.014 +67108861,310.607 +13,0.0001 +29,0.0001 +61,0.0001 +125,0.0003 +253,0.0002 +509,0.0003 +1021,0.0004 +2045,0.0009 +4093,0.0017 +8189,0.019 +16381,0.0077 +32765,0.0463 +65533,0.0396 +131069,0.5861 +262141,1.207 +524285,2.5278 +1048573,4.6671 +2097149,9.3971 +4194301,19.0929 +8388605,35.9556 +16777213,75.6997 +33554429,148.21 +67108861,292.346 +13,0.0001 +29,0.0001 +61,0.0001 +125,0.0002 +253,0.0002 +509,0.0004 +1021,0.0005 +2045,0.002 +4093,0.0019 +8189,0.0036 +16381,0.0082 +32765,0.0183 +65533,0.0379 +131069,0.6019 +262141,1.2037 +524285,2.4096 +1048573,4.4368 +2097149,9.4904 +4194301,17.9187 +8388605,39.3901 +16777213,74.1735 +33554429,147.912 +67108861,293.861 +13,0.0001 +29,0.0002 +61,0.0002 +125,0.0003 +253,0.0004 +509,0.0006 +1021,0.0005 +2045,0.0016 +4093,0.0022 +8189,0.0034 +16381,0.0077 +32765,0.0443 +65533,0.0357 +131069,0.5846 +262141,1.1684 +524285,2.3402 +1048573,4.6834 +2097149,9.449 +4194301,17.9492 +8388605,36.7361 +16777213,76.3707 +33554429,145.114 +67108861,292.011 +13,0.0001 +29,0.0001 +61,0.0002 +125,0.0002 +253,0.0003 +509,0.0004 +1021,0.0007 +2045,0.0009 +4093,0.0018 +8189,0.0035 +16381,0.0087 +32765,0.052 +65533,0.0381 +131069,0.5859 +262141,1.2041 +524285,2.3977 +1048573,4.7199 +2097149,8.9169 +4194301,19.5177 +8388605,38.5846 +16777213,72.1001 +33554429,145.755 +67108861,296.603 +13,0.0001 +29,0.0001 +61,0.0002 +125,0.0002 +253,0.0002 +509,0.0005 +1021,0.0005 +2045,0.0015 +4093,0.0018 +8189,0.0035 +16381,0.0095 +32765,0.0445 +65533,0.0517 +131069,0.5827 +262141,1.1697 +524285,2.5639 +1048573,4.4357 +2097149,9.0661 +4194301,20.1138 +8388605,36.7008 +16777213,73.4308 +33554429,148.833 +67108861,298.376 +13,0.0001 +29,0.0001 +61,0.0003 +125,0.0003 +253,0.0002 +509,0.0192 +1021,0.0004 +2045,0.0198 +4093,0.0018 +8189,0.004 +16381,0.0074 +32765,0.0343 +65533,0.037 +131069,0.6024 +262141,1.2085 +524285,2.4232 +1048573,4.9071 +2097149,10.3078 +4194301,17.9122 +8388605,37.4956 +16777213,71.7648 +33554429,145.491 +67108861,294.315 +13,0.0001 +29,0.0002 +61,0.0001 +125,0.0003 +253,0.0003 +509,0.0004 +1021,0.0004 +2045,0.0009 +4093,0.0018 +8189,0.0035 +16381,0.0273 +32765,0.0253 +65533,0.0373 +131069,0.6024 +262141,1.2369 +524285,2.3408 +1048573,4.8763 +2097149,9.9291 +4194301,18.8287 +8388605,35.9297 +16777213,77.4387 +33554429,147.842 +67108861,294.635 +13,0 +29,0.0002 +61,0.0002 +125,0.0002 +253,0.0002 +509,0.0004 +1021,0.0009 +2045,0.0009 +4093,0.0019 +8189,0.0038 +16381,0.0284 +32765,0.0165 +65533,0.039 +131069,0.5856 +262141,1.1706 +524285,2.3998 +1048573,4.6861 +2097149,9.129 +4194301,18.2538 +8388605,39.5213 +16777213,72.2643 +33554429,145.557 +67108861,290.317 +13,0.0001 +29,0.0004 +61,0.0001 +125,0.0002 +253,0.0004 +509,0.0003 +1021,0.0007 +2045,0.0017 +4093,0.0019 +8189,0.0078 +16381,0.008 +32765,0.0313 +65533,0.0397 +131069,0.6031 +262141,1.2081 +524285,2.5825 +1048573,6.194 +2097149,10.1276 +4194301,20.405 +8388605,35.881 +16777213,75.9838 +33554429,150.617 +67108861,299.768 +13,0.0001 +29,0.0001 +61,0.0003 +125,0.0001 +253,0.0004 +509,0.0007 +1021,0.0011 +2045,0.0017 +4093,0.0232 +8189,0.0035 +16381,0.0077 +32765,0.0161 +65533,0.0363 +131069,0.6028 +262141,1.174 +524285,2.4103 +1048573,4.804 +2097149,9.4982 +4194301,18.1335 +8388605,38.2382 +16777213,73.9456 +33554429,147.483 +67108861,296.084 +13,0.0001 +29,0.0001 +61,0.0001 +125,0.0003 +253,0.0002 +509,0.0006 +1021,0.0005 +2045,0.002 +4093,0.0039 +8189,0.0036 +16381,0.0082 +32765,0.0181 +65533,0.071 +131069,0.5838 +262141,1.2084 +524285,2.5939 +1048573,4.6397 +2097149,10.2132 +4194301,18.3158 +8388605,35.8415 +16777213,72.2375 +33554429,150.88 +67108861,293.804 +13,0.0001 +29,0.0002 +61,0.0003 +125,0.0002 +253,0.0004 +509,0.0004 +1021,0.0009 +2045,0.0021 +4093,0.0036 +8189,0.0036 +16381,0.0081 +32765,0.0181 +65533,0.0375 +131069,0.586 +262141,1.1762 +524285,2.342 +1048573,4.7634 +2097149,9.2314 +4194301,18.2937 +8388605,37.583 +16777213,72.0561 +33554429,147.515 +67108861,295.954 +13,0.0001 +29,0.0002 +61,0.0002 +125,0.0002 +253,0.0003 +509,0.0007 +1021,0.0005 +2045,0.0016 +4093,0.0018 +8189,0.0039 +16381,0.0078 +32765,0.0166 +65533,0.0375 +131069,0.5832 +262141,1.2027 +524285,2.3403 +1048573,4.6836 +2097149,9.4513 +4194301,18.3713 +8388605,36.1971 +16777213,76.6897 +33554429,149.805 +67108861,297.699 +13,0.0001 +29,0.0002 +61,0.0003 +125,0.0004 +253,0.0005 +509,0.0005 +1021,0.0004 +2045,0.0008 +4093,0.0017 +8189,0.0038 +16381,0.0073 +32765,0.0445 +65533,0.0397 +131069,0.5827 +262141,1.2018 +524285,2.3403 +1048573,4.9726 +2097149,8.9976 +4194301,18.2608 +8388605,41.5901 +16777213,72.528 +33554429,144.022 +67108861,296.16 +13,0.0132 +29,0.0002 +61,0.0002 +125,0.0002 +253,0.0003 +509,0.0006 +1021,0.0009 +2045,0.0019 +4093,0.004 +8189,0.0034 +16381,0.008 +32765,0.0524 +65533,0.0339 +131069,0.6 +262141,1.3445 +524285,2.3416 +1048573,6.8432 +2097149,9.5276 +4194301,17.8875 +8388605,36.1516 +16777213,73.4677 +33554429,147.49 +67108861,292.795 +13,0.0001 +29,0.0004 +61,0.0001 +125,0.0003 +253,0.0003 +509,0.0004 +1021,0.0008 +2045,0.0008 +4093,0.0017 +8189,0.0033 +16381,0.0074 +32765,0.0169 +65533,0.0382 +131069,0.5874 +262141,1.1691 +524285,2.3416 +1048573,4.4382 +2097149,9.6912 +4194301,17.921 +8388605,35.8822 +16777213,72.4114 +33554429,148.137 +67108861,291.7 +13,0.0001 +29,0.0001 +61,0.0001 +125,0.0003 +253,0.0004 +509,0.0006 +1021,0.001 +2045,0.0009 +4093,0.0041 +8189,0.0036 +16381,0.008 +32765,0.0179 +65533,0.0348 +131069,1.7187 +262141,1.2024 +524285,2.3409 +1048573,5.2341 +2097149,9.1932 +4194301,20.164 +8388605,38.1095 +16777213,76.4485 +33554429,152.496 +67108861,300.266 +13,0.0001 +29,0.0002 +61,0.0001 +125,0.0001 +253,0.0006 +509,0.0007 +1021,0.0012 +2045,0.0021 +4093,0.0229 +8189,0.0044 +16381,0.0072 +32765,0.0164 +65533,0.0355 +131069,0.5849 +262141,1.207 +524285,3.3617 +1048573,4.8628 +2097149,9.3575 +4194301,17.9388 +8388605,37.4201 +16777213,75.2566 +33554429,143.717 +67108861,298.814 +13,0 +29,0.0001 +61,0.0001 +125,0.0004 +253,0.0003 +509,0.0007 +1021,0.0008 +2045,0.0009 +4093,0.0016 +8189,0.0033 +16381,0.0078 +32765,0.0448 +65533,0.0351 +131069,0.5999 +262141,1.1692 +524285,2.4022 +1048573,4.9946 +2097149,8.9575 +4194301,18.3103 +8388605,40.6614 +16777213,76.3057 +33554429,146.123 +67108861,294.109 +13,0 +29,0.0001 +61,0.0003 +125,0.0002 +253,0.0004 +509,0.0006 +1021,0.0011 +2045,0.0009 +4093,0.0018 +8189,0.0034 +16381,0.0074 +32765,0.0527 +65533,0.0391 +131069,0.5996 +262141,1.1702 +524285,2.4096 +1048573,4.9595 +2097149,9.0567 +4194301,18.9029 +8388605,38.9073 +16777213,75.9085 +33554429,147.059 +67108861,297.634 +13,0.0001 +29,0.0001 +61,0.0002 +125,0.0002 +253,0.0003 +509,0.0006 +1021,0.0012 +2045,0.0022 +4093,0.004 +8189,0.0035 +16381,0.0085 +32765,0.0161 +65533,0.0359 +131069,0.7079 +262141,1.2044 +524285,2.6895 +1048573,4.762 +2097149,9.596 +4194301,20.3405 +8388605,38.5513 +16777213,80.2481 +33554429,149.143 +67108861,294.915 +13,0 +29,0.0002 +61,0.0001 +125,0.0002 +253,0.0005 +509,0.0007 +1021,0.0011 +2045,0.0019 +4093,0.0018 +8189,0.0083 +16381,0.0076 +32765,0.0159 +65533,0.0421 +131069,0.5849 +262141,1.2029 +524285,2.3769 +1048573,4.8448 +2097149,9.2726 +4194301,17.8762 +8388605,36.9311 +16777213,72.2402 +33554429,146.561 +67108861,300.01 +13,0.0001 +29,0.0003 +61,0.0001 +125,0.0002 +253,0.0003 +509,0.0007 +1021,0.0008 +2045,0.0015 +4093,0.0017 +8189,0.0035 +16381,0.0089 +32765,0.0341 +65533,0.0358 +131069,0.5828 +262141,1.1684 +524285,2.3422 +1048573,4.7211 +2097149,11.9635 +4194301,18.1677 +8388605,35.7856 +16777213,76.4332 +33554429,149.752 +67108861,295.479 +13,0.0001 +29,0.0001 +61,0.0004 +125,0.0002 +253,0.0004 +509,0.0004 +1021,0.0004 +2045,0.0008 +4093,0.0019 +8189,0.0037 +16381,0.0095 +32765,0.0521 +65533,0.0372 +131069,0.5992 +262141,1.2024 +524285,2.4856 +1048573,4.4362 +2097149,9.997 +4194301,20.733 +8388605,38.485 +16777213,77.4149 +33554429,150.601 +67108861,294.926 +13,0.0001 +29,0.0002 +61,0.0001 +125,0.0004 +253,0.0002 +509,0.0004 +1021,0.0012 +2045,0.001 +4093,0.0041 +8189,0.0036 +16381,0.0075 +32765,0.0304 +65533,0.0378 +131069,0.6025 +262141,1.175 +524285,2.2668 +1048573,4.6851 +2097149,9.8448 +4194301,18.8568 +8388605,36.4429 +16777213,74.7375 +33554429,148.029 +67108861,304.44 +13,0.0001 +29,0.0001 +61,0.0002 +125,0.0001 +253,0.0002 +509,0.0007 +1021,0.0012 +2045,0.0021 +4093,0.0041 +8189,0.0037 +16381,0.0079 +32765,0.0175 +65533,0.039 +131069,0.5856 +262141,1.1742 +524285,2.3433 +1048573,5.149 +2097149,8.9899 +4194301,19.7528 +8388605,35.8569 +16777213,77.3527 +33554429,153.28 +67108861,296.451 +13,0.0003 +29,0.0002 +61,0.0002 +125,0.0001 +253,0.0003 +509,0.0003 +1021,0.0009 +2045,0.0009 +4093,0.0018 +8189,0.0039 +16381,0.0081 +32765,0.0321 +65533,0.0381 +131069,0.587 +262141,1.168 +524285,2.3415 +1048573,4.8588 +2097149,9.3665 +4194301,18.9379 +8388605,37.6053 +16777213,73.521 +33554429,148.1 +67108861,299.478 +13,0 +29,0.0002 +61,0.0002 +125,0.0001 +253,0.0001 +509,0.0007 +1021,0.0008 +2045,0.0009 +4093,0.0017 +8189,0.0038 +16381,0.0078 +32765,0.0164 +65533,0.0386 +131069,0.5831 +262141,1.2621 +524285,2.3561 +1048573,4.6854 +2097149,10.1327 +4194301,19.5183 +8388605,35.8021 +16777213,74.5105 +33554429,148.856 +67108861,294.438 +13,0.0001 +29,0.0001 +61,0.0001 +125,0.0002 +253,0.0003 +509,0.0005 +1021,0.0006 +2045,0.0009 +4093,0.0041 +8189,0.0036 +16381,0.0086 +32765,0.0365 +65533,0.0361 +131069,0.5825 +262141,1.2041 +524285,2.6873 +1048573,4.9092 +2097149,9.9636 +4194301,18.7156 +8388605,35.9285 +16777213,74.5769 +33554429,148.487 +67108861,292.872 +13,0.0001 +29,0.0001 +61,0.0001 +125,0.0004 +253,0.0004 +509,0.0003 +1021,0.0004 +2045,0.0013 +4093,0.0018 +8189,0.0037 +16381,0.0072 +32765,0.0331 +65533,0.0345 +131069,0.5829 +262141,1.2014 +524285,2.4118 +1048573,4.9786 +2097149,9.4096 +4194301,17.9836 +8388605,45.4544 +16777213,71.9013 +33554429,147.207 +67108861,293.031 +13,0.0001 +29,0.0001 +61,0.0001 +125,0.0003 +253,0.0003 +509,0.0002 +1021,0.001 +2045,0.0009 +4093,0.0041 +8189,0.0035 +16381,0.007 +32765,0.0308 +65533,0.0387 +131069,0.5994 +262141,1.2042 +524285,2.3526 +1048573,4.8711 +2097149,11.2988 +4194301,19.353 +8388605,38.883 +16777213,73.1177 +33554429,155.843 +67108861,297.766 +13,0.0001 +29,0.0001 +61,0.0001 +125,0.0004 +253,0.0004 +509,0.0007 +1021,0.0004 +2045,0.0008 +4093,0.0225 +8189,0.0035 +16381,0.0075 +32765,0.0307 +65533,0.0378 +131069,0.7038 +262141,1.3488 +524285,2.3404 +1048573,4.6319 +2097149,9.4654 +4194301,18.263 +8388605,36.4912 +16777213,71.8479 +33554429,144.836 +67108861,297.368 +13,0.0001 +29,0.0001 +61,0.0002 +125,0.0002 +253,0.0002 +509,0.0004 +1021,0.0005 +2045,0.0017 +4093,0.002 +8189,0.0036 +16381,0.0074 +32765,0.0577 +65533,0.0355 +131069,0.5858 +262141,1.1737 +524285,3.1982 +1048573,4.4377 +2097149,10.297 +4194301,18.1015 +8388605,36.0656 +16777213,74.0706 +33554429,152.923 +67108861,290.872 +13,0.0001 +29,0.0001 +61,0.0001 +125,0.0003 +253,0.0003 +509,0.0006 +1021,0.0005 +2045,0.0008 +4093,0.0018 +8189,0.0061 +16381,0.0078 +32765,0.0163 +65533,0.0369 +131069,0.7336 +262141,1.2814 +524285,2.4098 +1048573,4.4777 +2097149,9.1994 +4194301,19.0994 +8388605,38.0154 +16777213,74.4147 +33554429,148.147 +67108861,297.661 +13,0 +29,0.0001 +61,0.0001 +125,0.0003 +253,0.0002 +509,0.0004 +1021,0.0004 +2045,0.0013 +4093,0.0018 +8189,0.0035 +16381,0.007 +32765,0.0328 +65533,0.0386 +131069,0.5831 +262141,1.1711 +524285,2.3664 +1048573,4.9297 +2097149,10.5581 +4194301,19.0602 +8388605,38.3323 +16777213,76.0072 +33554429,148.1 +67108861,290.815 +13,0.0001 +29,0.0001 +61,0.0002 +125,0.0004 +253,0.0004 +509,0.0004 +1021,0.0005 +2045,0.0017 +4093,0.0018 +8189,0.007 +16381,0.0233 +32765,0.0301 +65533,0.0379 +131069,0.6867 +262141,1.3709 +524285,2.5058 +1048573,4.7661 +2097149,9.6145 +4194301,18.3093 +8388605,37.7051 +16777213,73.3006 +33554429,146.297 +67108861,296.199 +13,0.0001 +29,0.0002 +61,0.0002 +125,0.0003 +253,0.0002 +509,0.0005 +1021,0.001 +2045,0.0021 +4093,0.0041 +8189,0.0036 +16381,0.0078 +32765,0.0502 +65533,0.0392 +131069,0.5828 +262141,1.2034 +524285,2.3415 +1048573,4.7973 +2097149,10.418 +4194301,18.0624 +8388605,36.3561 +16777213,72.0733 +33554429,149.127 +67108861,294.844 +13,0.0001 +29,0.0001 +61,0.0001 +125,0.0002 +253,0.0004 +509,0.0004 +1021,0.0005 +2045,0.0008 +4093,0.0019 +8189,0.0039 +16381,0.0094 +32765,0.0307 +65533,0.0554 +131069,0.7159 +262141,1.1996 +524285,2.3405 +1048573,4.7957 +2097149,9.0823 +4194301,18.7215 +8388605,39.3219 +16777213,74.9666 +33554429,147.107 +67108861,295.912 +13,0.0001 +29,0.0001 +61,0.0002 +125,0.0002 +253,0.0002 +509,0.0004 +1021,0.0005 +2045,0.0009 +4093,0.0048 +8189,0.0038 +16381,0.0099 +32765,0.0174 +65533,0.0395 +131069,0.6056 +262141,1.1689 +524285,2.3423 +1048573,4.7564 +2097149,9.1466 +4194301,20.4086 +8388605,36.4423 +16777213,75.3013 +33554429,146.533 +67108861,295.724 +13,0.0001 +29,0.0003 +61,0.0002 +125,0.0004 +253,0.0005 +509,0.0193 +1021,0.0011 +2045,0.0007 +4093,0.004 +8189,0.0039 +16381,0.0072 +32765,0.0173 +65533,0.037 +131069,0.5857 +262141,1.1687 +524285,2.2188 +1048573,4.4388 +2097149,8.897 +4194301,18.346 +8388605,36.0781 +16777213,80.0456 +33554429,150.892 +67108861,301.535 +13,0.0001 +29,0.0001 +61,0.0002 +125,0.0002 +253,0.0004 +509,0.0006 +1021,0.0007 +2045,0.0015 +4093,0.0022 +8189,0.0036 +16381,0.009 +32765,0.0248 +65533,0.0388 +131069,0.8289 +262141,1.2802 +524285,2.4898 +1048573,4.8901 +2097149,9.37 +4194301,21.5251 +8388605,37.8376 +16777213,84.7573 +33554429,154.143 +67108861,311.957 +13,0.0001 +29,0.0001 +61,0.0002 +125,0.0003 +253,0.0001 +509,0.0003 +1021,0.0004 +2045,0.0009 +4093,0.0204 +8189,0.0034 +16381,0.0076 +32765,0.0174 +65533,0.0405 +131069,0.6228 +262141,1.2813 +524285,2.4096 +1048573,4.6849 +2097149,10.1468 +4194301,20.6963 +8388605,37.9062 +16777213,76.1149 +33554429,149.233 +67108861,298.179 +13,0.0001 +29,0.0001 +61,0.0002 +125,0.0004 +253,0.0002 +509,0.0006 +1021,0.0004 +2045,0.0008 +4093,0.0022 +8189,0.0036 +16381,0.0081 +32765,0.0324 +65533,0.0399 +131069,0.5827 +262141,1.1677 +524285,2.691 +1048573,4.9443 +2097149,9.3046 +4194301,18.9029 +8388605,39.4498 +16777213,78.5617 +33554429,148.979 +67108861,294.084 +13,0.0001 +29,0.0001 +61,0.0002 +125,0.0003 +253,0.0001 +509,0.0002 +1021,0.0004 +2045,0.001 +4093,0.0017 +8189,0.0034 +16381,0.0073 +32765,0.0369 +65533,0.0389 +131069,0.6128 +262141,1.3163 +524285,2.3411 +1048573,4.6834 +2097149,8.875 +4194301,18.3728 +8388605,40.053 +16777213,74.3454 +33554429,149.968 +67108861,299.877 +13,0 +29,0.0001 +61,0.0002 +125,0.0001 +253,0.0002 +509,0.0003 +1021,0.0004 +2045,0.0009 +4093,0.0016 +8189,0.003 +16381,0.007 +32765,0.0157 +65533,0.0369 +131069,0.5858 +262141,1.172 +524285,2.3415 +1048573,4.6855 +2097149,11.7864 +4194301,19.637 +8388605,36.0818 +16777213,72.5164 +33554429,148.596 +67108861,296.975 +13,0.0001 +29,0.0001 +61,0.0001 +125,0.0001 +253,0.0002 +509,0.0002 +1021,0.0004 +2045,0.0008 +4093,0.0019 +8189,0.0031 +16381,0.0065 +32765,0.0164 +65533,0.038 +131069,0.7855 +262141,1.3487 +524285,2.3422 +1048573,4.7174 +2097149,9.0674 +4194301,18.9104 +8388605,36.6148 +16777213,76.2768 +33554429,149.027 +67108861,297.659 +13,0.0001 +29,0.0003 +61,0.0002 +125,0.0001 +253,0.0001 +509,0.0003 +1021,0.0004 +2045,0.0008 +4093,0.0016 +8189,0.0032 +16381,0.0063 +32765,0.0153 +65533,0.0335 +131069,0.6453 +262141,1.2087 +524285,2.4065 +1048573,4.9552 +2097149,9.4064 +4194301,23.6748 +8388605,39.1522 +16777213,75.7682 +33554429,148.881 +67108861,291.446 +13,0.0001 +29,0.0002 +61,0.0001 +125,0.0001 +253,0.0001 +509,0.0002 +1021,0.0004 +2045,0.0008 +4093,0.0016 +8189,0.0033 +16381,0.0201 +32765,0.0155 +65533,0.0362 +131069,0.6521 +262141,1.1728 +524285,2.3535 +1048573,5.5475 +2097149,8.8726 +4194301,17.9365 +8388605,38.8484 +16777213,71.9145 +33554429,150.072 +67108861,296.218 +13,0 +29,0.0001 +61,0.0003 +125,0.0001 +253,0.0002 +509,0.0002 +1021,0.0004 +2045,0.0008 +4093,0.0016 +8189,0.0032 +16381,0.02 +32765,0.0155 +65533,0.0369 +131069,0.5831 +262141,1.1945 +524285,2.3547 +1048573,4.9282 +2097149,9.3668 +4194301,20.9209 +8388605,35.9234 +16777213,75.8582 +33554429,147.612 +67108861,298.292 +13,0.0001 +29,0.0001 +61,0.0002 +125,0.0004 +253,0.0002 +509,0.0003 +1021,0.0004 +2045,0.0009 +4093,0.0016 +8189,0.0031 +16381,0.0066 +32765,0.0153 +65533,0.0379 +131069,0.585 +262141,1.1742 +524285,2.3563 +1048573,5.1062 +2097149,11.4257 +4194301,19.3992 +8388605,35.9072 +16777213,77.1401 +33554429,148.632 +67108861,303.606 +13,0.0001 +29,0.0001 +61,0.0001 +125,0.0001 +253,0.0002 +509,0.0005 +1021,0.0004 +2045,0.0009 +4093,0.0015 +8189,0.0032 +16381,0.0066 +32765,0.0178 +65533,0.0385 +131069,0.5826 +262141,1.1765 +524285,2.9831 +1048573,4.8757 +2097149,10.2129 +4194301,18.413 +8388605,37.6049 +16777213,71.7638 +33554429,147.259 +67108861,294.05 +13,0.0001 +29,0.0001 +61,0.0002 +125,0.0001 +253,0.0002 +509,0.0002 +1021,0.0004 +2045,0.0009 +4093,0.003 +8189,0.0036 +16381,0.0067 +32765,0.016 +65533,0.0349 +131069,0.5828 +262141,1.1685 +524285,2.3418 +1048573,4.4649 +2097149,9.3728 +4194301,18.0806 +8388605,36.3844 +16777213,74.7758 +33554429,150.42 +67108861,296.454 +13,0.0001 +29,0.0001 +61,0.0002 +125,0.0001 +253,0.0001 +509,0.0003 +1021,0.0005 +2045,0.0008 +4093,0.0016 +8189,0.0031 +16381,0.0065 +32765,0.0202 +65533,0.0364 +131069,0.5827 +262141,1.1755 +524285,2.4086 +1048573,6.0706 +2097149,8.955 +4194301,17.9014 +8388605,37.4805 +16777213,73.5183 +33554429,147.04 +67108861,294.087 +13,0.0001 +29,0.0002 +61,0.0001 +125,0.0002 +253,0.0001 +509,0.0003 +1021,0.0004 +2045,0.0009 +4093,0.0017 +8189,0.0035 +16381,0.0069 +32765,0.0154 +65533,0.0364 +131069,0.5855 +262141,1.1743 +524285,2.4222 +1048573,4.9768 +2097149,8.9551 +4194301,19.3084 +8388605,41.0595 +16777213,77.2634 +33554429,145.985 +67108861,293.492 +13,0 +29,0.0001 +61,0.0001 +125,0.0001 +253,0.0002 +509,0.0002 +1021,0.0008 +2045,0.0008 +4093,0.0017 +8189,0.003 +16381,0.0065 +32765,0.0151 +65533,0.0384 +131069,0.5841 +262141,1.2114 +524285,2.3896 +1048573,5.7609 +2097149,9.1526 +4194301,20.5879 +8388605,37.2052 +16777213,76.4326 +33554429,151.869 +67108861,296.938 +13,0 +29,0.0001 +61,0.0002 +125,0.0001 +253,0.0002 +509,0.0003 +1021,0.0004 +2045,0.0009 +4093,0.0016 +8189,0.003 +16381,0.014 +32765,0.0152 +65533,0.0358 +131069,0.6336 +262141,2.1274 +524285,2.4086 +1048573,4.4342 +2097149,10.0017 +4194301,18.1063 +8388605,37.7393 +16777213,72.0313 +33554429,149.236 +67108861,291.754 +13,0.0001 +29,0.0001 +61,0.0001 +125,0.0001 +253,0.0001 +509,0.0003 +1021,0.0005 +2045,0.0009 +4093,0.0015 +8189,0.0032 +16381,0.0068 +32765,0.0163 +65533,0.0382 +131069,0.6076 +262141,1.4863 +524285,2.3433 +1048573,4.4488 +2097149,10.682 +4194301,17.9576 +8388605,39.551 +16777213,74.1022 +33554429,145.083 +67108861,292.268 +13,0.0001 +29,0.0001 +61,0.0001 +125,0.0001 +253,0.0001 +509,0.0003 +1021,0.0005 +2045,0.0009 +4093,0.0017 +8189,0.0031 +16381,0.0285 +32765,0.0162 +65533,0.0374 +131069,0.6024 +262141,1.1694 +524285,2.4355 +1048573,4.7188 +2097149,9.2914 +4194301,20.8158 +8388605,40.5205 +16777213,77.97 +33554429,148.139 +67108861,297.447 +13,0.0001 +29,0 +61,0.0001 +125,0.0002 +253,0.0002 +509,0.0003 +1021,0.0004 +2045,0.0008 +4093,0.0016 +8189,0.0033 +16381,0.0064 +32765,0.0155 +65533,0.0379 +131069,0.5856 +262141,1.1732 +524285,2.2316 +1048573,5.161 +2097149,10.2822 +4194301,19.0671 +8388605,36.2371 +16777213,73.5004 +33554429,147.422 +67108861,297.479 +13,0.0001 +29,0.0001 +61,0.0001 +125,0.0001 +253,0.0002 +509,0.0003 +1021,0.0004 +2045,0.0008 +4093,0.0016 +8189,0.0031 +16381,0.0067 +32765,0.016 +65533,0.0375 +131069,0.5853 +262141,2.1083 +524285,2.3417 +1048573,4.5224 +2097149,8.9966 +4194301,18.1473 +8388605,39.1526 +16777213,72.8389 +33554429,153.168 +67108861,301.462 +13,0.0001 +29,0.0002 +61,0.0001 +125,0.0001 +253,0.0002 +509,0.0002 +1021,0.0004 +2045,0.0009 +4093,0.0016 +8189,0.0031 +16381,0.0064 +32765,0.0154 +65533,0.0381 +131069,0.5847 +262141,1.1751 +524285,2.3429 +1048573,4.6835 +2097149,9.0455 +4194301,17.9116 +8388605,35.9844 +16777213,72.1011 +33554429,148.519 +67108861,290.084 +13,0 +29,0 +61,0.0001 +125,0.0002 +253,0.0002 +509,0.0002 +1021,0.0004 +2045,0.0008 +4093,0.0038 +8189,0.003 +16381,0.0064 +32765,0.0148 +65533,0.0538 +131069,0.5858 +262141,1.1735 +524285,2.341 +1048573,4.5781 +2097149,8.9992 +4194301,19.8852 +8388605,36.3374 +16777213,75.3591 +33554429,149.317 +67108861,296.37 +13,0 +29,0.0001 +61,0.0001 +125,0.0001 +253,0.0002 +509,0.0002 +1021,0.0004 +2045,0.0009 +4093,0.0016 +8189,0.0032 +16381,0.0067 +32765,0.0171 +65533,0.0362 +131069,0.5859 +262141,1.2788 +524285,2.343 +1048573,4.7954 +2097149,9.7326 +4194301,19.1181 +8388605,39.5526 +16777213,81.5076 +33554429,144.856 +67108861,294.702 +13,0 +29,0.0001 +61,0.0001 +125,0.0002 +253,0.0001 +509,0.0005 +1021,0.0005 +2045,0.0015 +4093,0.0017 +8189,0.004 +16381,0.0072 +32765,0.0167 +65533,0.038 +131069,0.585 +262141,1.1742 +524285,2.3428 +1048573,4.683 +2097149,9.7541 +4194301,19.8491 +8388605,39.2976 +16777213,74.0813 +33554429,144.474 +67108861,293.093 +13,0.0001 +29,0 +61,0.0001 +125,0.0001 +253,0.0134 +509,0.0002 +1021,0.0004 +2045,0.0008 +4093,0.0017 +8189,0.0031 +16381,0.0064 +32765,0.0152 +65533,0.0371 +131069,0.5853 +262141,1.3689 +524285,3.3248 +1048573,5.7154 +2097149,9.6264 +4194301,20.7656 +8388605,35.8346 +16777213,76.4517 +33554429,156.82 +67108861,295.967 +13,0.0001 +29,0.0001 +61,0.0001 +125,0.0001 +253,0.0002 +509,0.0003 +1021,0.0005 +2045,0.0008 +4093,0.0016 +8189,0.0031 +16381,0.0066 +32765,0.0152 +65533,0.0357 +131069,0.5866 +262141,1.3177 +524285,2.3803 +1048573,4.7578 +2097149,9.3227 +4194301,17.9135 +8388605,35.8754 +16777213,79.9902 +33554429,149.628 +67108861,295.898 +13,0.0001 +29,0.0001 +61,0.0002 +125,0.0001 +253,0.0001 +509,0.0003 +1021,0.0004 +2045,0.0008 +4093,0.0016 +8189,0.003 +16381,0.0064 +32765,0.0151 +65533,0.0365 +131069,0.6044 +262141,1.234 +524285,2.8015 +1048573,4.5889 +2097149,9.5066 +4194301,19.6677 +8388605,39.9189 +16777213,74.0299 +33554429,147.629 +67108861,290.719 +13,0 +29,0.0001 +61,0.0001 +125,0.0003 +253,0.0001 +509,0.0003 +1021,0.0004 +2045,0.0008 +4093,0.002 +8189,0.0034 +16381,0.0067 +32765,0.0159 +65533,0.0379 +131069,0.6554 +262141,1.2969 +524285,2.3554 +1048573,4.685 +2097149,10.4502 +4194301,17.9514 +8388605,36.5196 +16777213,71.8953 +33554429,148.084 +67108861,297.5 +13,0.0001 +29,0.0001 +61,0.0002 +125,0.0001 +253,0.0001 +509,0.0004 +1021,0.0004 +2045,0.0009 +4093,0.0016 +8189,0.0032 +16381,0.0067 +32765,0.0171 +65533,0.0371 +131069,0.5854 +262141,1.201 +524285,2.3541 +1048573,4.4371 +2097149,9.3386 +4194301,18.5089 +8388605,39.6058 +16777213,72.1384 +33554429,148.544 +67108861,308.089 +13,0.0001 +29,0.0003 +61,0.0001 +125,0.0002 +253,0.0002 +509,0.0002 +1021,0.0004 +2045,0.0009 +4093,0.0157 +8189,0.0031 +16381,0.0066 +32765,0.0159 +65533,0.0944 +131069,0.5863 +262141,1.1987 +524285,2.3418 +1048573,4.7747 +2097149,9.7421 +4194301,18.0347 +8388605,36.2298 +16777213,71.5764 +33554429,148.534 +67108861,291.081 +13,0.0001 +29,0.0001 +61,0.0135 +125,0.0001 +253,0.0001 +509,0.0003 +1021,0.0004 +2045,0.0012 +4093,0.0016 +8189,0.0033 +16381,0.0067 +32765,0.0154 +65533,0.0372 +131069,0.729 +262141,1.236 +524285,2.3541 +1048573,4.6844 +2097149,9.7215 +4194301,19.2908 +8388605,38.558 +16777213,80.2491 +33554429,144.782 +67108861,293.889 +13,0.0001 +29,0.0001 +61,0.0001 +125,0.0001 +253,0.0002 +509,0.0002 +1021,0.0004 +2045,0.0018 +4093,0.0017 +8189,0.0032 +16381,0.0065 +32765,0.0151 +65533,0.0363 +131069,0.5844 +262141,1.1694 +524285,2.3527 +1048573,4.4724 +2097149,9.3486 +4194301,20.3463 +8388605,36.1112 +16777213,75.1612 +33554429,147.738 +67108861,298.65 +13,0.0001 +29,0.0001 +61,0.0001 +125,0.0001 +253,0.0001 +509,0.0005 +1021,0.0004 +2045,0.0008 +4093,0.0016 +8189,0.0033 +16381,0.0066 +32765,0.0157 +65533,0.0383 +131069,0.5828 +262141,1.1842 +524285,2.4861 +1048573,4.7651 +2097149,10.1952 +4194301,18.3179 +8388605,35.8175 +16777213,72.336 +33554429,155.647 +67108861,290.303 +13,0.0001 +29,0.0001 +61,0.0001 +125,0.0001 +253,0.0002 +509,0.0002 +1021,0.0005 +2045,0.0008 +4093,0.0016 +8189,0.0031 +16381,0.0064 +32765,0.0154 +65533,0.0371 +131069,0.5831 +262141,1.7021 +524285,2.9607 +1048573,4.8531 +2097149,9.6309 +4194301,18.8584 +8388605,36.4887 +16777213,78.4624 +33554429,149.304 +67108861,302.975 +13,0.0001 +29,0.0001 +61,0.0001 +125,0.0001 +253,0.0001 +509,0.0003 +1021,0.0005 +2045,0.0009 +4093,0.0016 +8189,0.0031 +16381,0.0068 +32765,0.0156 +65533,0.0357 +131069,0.5993 +262141,1.1747 +524285,2.3524 +1048573,4.6837 +2097149,9.4821 +4194301,20.8261 +8388605,41.1921 +16777213,74.7777 +33554429,147.754 +67108861,295.741 +13,0 +29,0.0001 +61,0.0001 +125,0.0001 +253,0.0001 +509,0.0003 +1021,0.0004 +2045,0.0009 +4093,0.0016 +8189,0.0033 +16381,0.0065 +32765,0.0159 +65533,0.0376 +131069,0.5838 +262141,1.287 +524285,2.3411 +1048573,5.45 +2097149,10.0695 +4194301,20.9508 +8388605,36.2498 +16777213,71.7629 +33554429,147.93 +67108861,298.341 +13,0.0001 +29,0.0001 +61,0.0001 +125,0.0001 +253,0.0002 +509,0.0003 +1021,0.0004 +2045,0.0008 +4093,0.0017 +8189,0.0032 +16381,0.0066 +32765,0.0157 +65533,0.0381 +131069,0.6014 +262141,1.1683 +524285,2.3418 +1048573,4.9364 +2097149,9.445 +4194301,18.1255 +8388605,35.9297 +16777213,81.5121 +33554429,149.616 +67108861,300.974 +13,0.0001 +29,0.0003 +61,0.0004 +125,0.0001 +253,0.0001 +509,0.0004 +1021,0.0004 +2045,0.0008 +4093,0.0016 +8189,0.0056 +16381,0.0283 +32765,0.0151 +65533,0.0529 +131069,0.5842 +262141,1.1742 +524285,2.3562 +1048573,4.6428 +2097149,9.6454 +4194301,20.2356 +8388605,37.2712 +16777213,79.8008 +33554429,146.262 +67108861,295.211 +13,0.0002 +29,0.0001 +61,0.0003 +125,0.0001 +253,0.0002 +509,0.0007 +1021,0.0004 +2045,0.0008 +4093,0.0016 +8189,0.0031 +16381,0.0066 +32765,0.0156 +65533,0.0371 +131069,0.5852 +262141,1.176 +524285,2.3529 +1048573,4.4345 +2097149,9.6957 +4194301,21.7059 +8388605,36.5182 +16777213,74.5887 +33554429,154.622 +67108861,299.172 +13,0.0001 +29,0.0001 +61,0.0001 +125,0.0002 +253,0.0002 +509,0.0003 +1021,0.0005 +2045,0.0008 +4093,0.0017 +8189,0.0032 +16381,0.0062 +32765,0.0156 +65533,0.0366 +131069,0.5848 +262141,1.1886 +524285,2.3525 +1048573,4.6849 +2097149,9.2048 +4194301,20.9803 +8388605,42.2583 +16777213,76.1272 +33554429,144.053 +67108861,295.775 +13,0.0001 +29,0.0001 +61,0.0001 +125,0.0002 +253,0.0002 +509,0.0002 +1021,0.0004 +2045,0.0008 +4093,0.0016 +8189,0.0031 +16381,0.0069 +32765,0.0151 +65533,0.0367 +131069,0.583 +262141,1.1745 +524285,2.3428 +1048573,4.9663 +2097149,9.9049 +4194301,19.7203 +8388605,36.0055 +16777213,72.3237 +33554429,148.019 +67108861,295.033 +13,0.0002 +29,0.0001 +61,0.0001 +125,0.0001 +253,0.0002 +509,0.0002 +1021,0.0004 +2045,0.001 +4093,0.0016 +8189,0.0032 +16381,0.0065 +32765,0.0178 +65533,0.0348 +131069,0.6 +262141,1.1741 +524285,3.0471 +1048573,5.1038 +2097149,8.9553 +4194301,19.569 +8388605,35.9909 +16777213,72.0096 +33554429,148.923 +67108861,292.897 +13,0.0001 +29,0.0001 +61,0.0001 +125,0.0002 +253,0.0001 +509,0.0003 +1021,0.0005 +2045,0.0009 +4093,0.0016 +8189,0.0039 +16381,0.0061 +32765,0.0191 +65533,0.0372 +131069,0.5868 +262141,1.1741 +524285,2.3543 +1048573,4.682 +2097149,9.3708 +4194301,17.892 +8388605,35.8639 +16777213,71.7159 +33554429,152.033 +67108861,291.575 +13,0.0001 +29,0 +61,0.0002 +125,0.0001 +253,0.0002 +509,0.0003 +1021,0.0005 +2045,0.0008 +4093,0.0017 +8189,0.0032 +16381,0.0067 +32765,0.0154 +65533,0.0644 +131069,0.5854 +262141,1.1753 +524285,2.4972 +1048573,4.7122 +2097149,9.6629 +4194301,18.0158 +8388605,40.3072 +16777213,79.4057 +33554429,152.74 +67108861,300.908 +13,0.0001 +29,0.0001 +61,0.0001 +125,0.0002 +253,0.0002 +509,0.0002 +1021,0.0004 +2045,0.0009 +4093,0.0015 +8189,0.0031 +16381,0.0065 +32765,0.016 +65533,0.0516 +131069,0.6022 +262141,1.1694 +524285,2.343 +1048573,5.0876 +2097149,8.9557 +4194301,18.1628 +8388605,38.9362 +16777213,75.3831 +33554429,147.818 +67108861,292.716 +13,0.0001 +29,0.0001 +61,0.0001 +125,0.0001 +253,0.0002 +509,0.0002 +1021,0.0004 +2045,0.0008 +4093,0.0016 +8189,0.0031 +16381,0.0066 +32765,0.0157 +65533,0.0382 +131069,0.5829 +262141,1.1696 +524285,2.3424 +1048573,4.835 +2097149,9.3501 +4194301,17.8959 +8388605,38.3074 +16777213,72.5586 +33554429,145.46 +67108861,291.987 +13,0.0001 +29,0.0001 +61,0.0003 +125,0.0002 +253,0.0002 +509,0.0002 +1021,0.0004 +2045,0.0008 +4093,0.0017 +8189,0.0033 +16381,0.0201 +32765,0.0157 +65533,0.0373 +131069,0.5831 +262141,1.2026 +524285,2.4427 +1048573,4.767 +2097149,9.3683 +4194301,18.9176 +8388605,39.0822 +16777213,78.4499 +33554429,146.784 +67108861,292.106 +13,0.0001 +29,0.0001 +61,0.0001 +125,0.0001 +253,0.0002 +509,0.0003 +1021,0.0004 +2045,0.0008 +4093,0.0017 +8189,0.0031 +16381,0.0065 +32765,0.0164 +65533,0.0376 +131069,0.6184 +262141,1.3537 +524285,2.433 +1048573,4.6835 +2097149,9.5278 +4194301,18.0112 +8388605,35.972 +16777213,71.6321 +33554429,147.462 +67108861,300.464 +13,0.0001 +29,0.0001 +61,0.0001 +125,0.0002 +253,0.0001 +509,0.0002 +1021,0.0004 +2045,0.0008 +4093,0.0016 +8189,0.0031 +16381,0.0062 +32765,0.0174 +65533,0.0383 +131069,0.5858 +262141,1.1729 +524285,2.3424 +1048573,4.6555 +2097149,9.4529 +4194301,19.0063 +8388605,35.7569 +16777213,71.7388 +33554429,145.794 +67108861,296.511 +13,0 +29,0.0001 +61,0.0001 +125,0.0001 +253,0.0002 +509,0.0002 +1021,0.0005 +2045,0.0009 +4093,0.0016 +8189,0.0032 +16381,0.0063 +32765,0.0157 +65533,0.0383 +131069,0.6562 +262141,1.1727 +524285,2.752 +1048573,4.6055 +2097149,9.6145 +4194301,17.8576 +8388605,38.763 +16777213,72.0093 +33554429,149.601 +67108861,292.841 +13,0.0001 +29,0.0002 +61,0.0001 +125,0.0001 +253,0.0002 +509,0.0003 +1021,0.0004 +2045,0.0008 +4093,0.0016 +8189,0.0033 +16381,0.0065 +32765,0.015 +65533,0.0372 +131069,0.5856 +262141,1.2015 +524285,2.3547 +1048573,4.6831 +2097149,9.3354 +4194301,17.8686 +8388605,41.9507 +16777213,75.0046 +33554429,147.143 +67108861,294.374 +13,0 +29,0.0001 +61,0.0001 +125,0.0002 +253,0.0002 +509,0.0004 +1021,0.0004 +2045,0.0009 +4093,0.0017 +8189,0.0031 +16381,0.0069 +32765,0.0158 +65533,0.0381 +131069,0.6011 +262141,1.1783 +524285,2.3424 +1048573,6.9542 +2097149,8.8742 +4194301,18.7709 +8388605,36.7305 +16777213,71.7769 +33554429,144.757 +67108861,296.775 +13,0.0001 +29,0.0001 +61,0.0001 +125,0.0002 +253,0.0001 +509,0.0003 +1021,0.0004 +2045,0.0008 +4093,0.0016 +8189,0.0031 +16381,0.0066 +32765,0.0156 +65533,0.0383 +131069,0.5851 +262141,1.1732 +524285,2.3427 +1048573,4.4383 +2097149,9.2961 +4194301,19.1996 +8388605,35.7597 +16777213,72.8355 +33554429,149.365 +67108861,295.213 +13,0.0001 +29,0.0002 +61,0.0001 +125,0.0001 +253,0.0001 +509,0.0002 +1021,0.0004 +2045,0.0009 +4093,0.0016 +8189,0.0031 +16381,0.0069 +32765,0.016 +65533,0.0373 +131069,0.6006 +262141,1.1681 +524285,3.0818 +1048573,5.0062 +2097149,9.3224 +4194301,21.6342 +8388605,40.1061 +16777213,76.8315 +33554429,150.027 +67108861,294.224 +13,0.0001 +29,0.0001 +61,0.0002 +125,0.0001 +253,0.0002 +509,0.0003 +1021,0.0009 +2045,0.0009 +4093,0.0017 +8189,0.0033 +16381,0.0069 +32765,0.0165 +65533,0.0366 +131069,0.7712 +262141,1.1692 +524285,2.4589 +1048573,5.0853 +2097149,9.3657 +4194301,20.024 +8388605,35.9177 +16777213,76.082 +33554429,155.475 +67108861,296.977 +13,0.0001 +29,0.0001 +61,0.0001 +125,0.0001 +253,0.0002 +509,0.0003 +1021,0.0004 +2045,0.0008 +4093,0.0016 +8189,0.0031 +16381,0.0066 +32765,0.0245 +65533,0.0365 +131069,0.5855 +262141,1.208 +524285,2.3439 +1048573,4.6657 +2097149,9.9691 +4194301,19.6457 +8388605,35.8247 +16777213,75.463 +33554429,148.487 +67108861,304.314 +13,0.0001 +29,0.0001 +61,0.0001 +125,0.0002 +253,0.0001 +509,0.0004 +1021,0.0004 +2045,0.0008 +4093,0.0017 +8189,0.0031 +16381,0.0066 +32765,0.016 +65533,0.0674 +131069,0.6018 +262141,1.1745 +524285,2.3424 +1048573,4.7398 +2097149,10.0513 +4194301,18.2727 +8388605,36.1028 +16777213,75.724 +33554429,150.185 +67108861,300.393 +13,0.0001 +29,0.0001 +61,0.0001 +125,0.0001 +253,0.0002 +509,0.0002 +1021,0.0005 +2045,0.0008 +4093,0.0017 +8189,0.0031 +16381,0.0071 +32765,0.0158 +65533,0.0372 +131069,0.8142 +262141,1.1691 +524285,2.3416 +1048573,4.9363 +2097149,9.0348 +4194301,20.4035 +8388605,39.8775 +16777213,75.8877 +33554429,145.362 +67108861,293.646 +13,0.0001 +29,0.0002 +61,0.0001 +125,0.0001 +253,0.0002 +509,0.0002 +1021,0.0005 +2045,0.0008 +4093,0.0017 +8189,0.0031 +16381,0.0066 +32765,0.0156 +65533,0.0412 +131069,0.5861 +262141,1.1679 +524285,2.4594 +1048573,4.6849 +2097149,9.6838 +4194301,19.48 +8388605,36.0887 +16777213,74.9851 +33554429,149.447 +67108861,295.652 +13,0.0001 +29,0.0001 +61,0.0001 +125,0.0001 +253,0.0002 +509,0.0002 +1021,0.0004 +2045,0.0008 +4093,0.0016 +8189,0.0031 +16381,0.0063 +32765,0.0165 +65533,0.0377 +131069,0.586 +262141,1.1723 +524285,2.3442 +1048573,5.7244 +2097149,10.205 +4194301,18.8454 +8388605,35.9132 +16777213,72.9104 +33554429,147.836 +67108861,295.161 +13,0.0001 +29,0.0001 +61,0.0001 +125,0.0001 +253,0.0002 +509,0.0002 +1021,0.0005 +2045,0.0009 +4093,0.0016 +8189,0.0031 +16381,0.0065 +32765,0.0165 +65533,0.0375 +131069,0.5852 +262141,1.1675 +524285,2.3545 +1048573,4.7876 +2097149,9.2913 +4194301,18.5087 +8388605,40.913 +16777213,79.2341 +33554429,150.127 +67108861,294.688 +13,0.0001 +29,0.0001 +61,0.0001 +125,0.0001 +253,0.0003 +509,0.0003 +1021,0.0005 +2045,0.0009 +4093,0.0016 +8189,0.0033 +16381,0.0068 +32765,0.0162 +65533,0.0359 +131069,0.5856 +262141,1.1683 +524285,2.7929 +1048573,4.6792 +2097149,8.8763 +4194301,19.8036 +8388605,35.7747 +16777213,72.2718 +33554429,152.248 +67108861,291.68 +13,0.0001 +29,0.0001 +61,0.0002 +125,0.0002 +253,0.0001 +509,0.0002 +1021,0.0004 +2045,0.0008 +4093,0.0016 +8189,0.0031 +16381,0.0063 +32765,0.0152 +65533,0.037 +131069,0.5827 +262141,1.1682 +524285,2.3536 +1048573,4.6842 +2097149,9.7851 +4194301,18.9037 +8388605,35.724 +16777213,71.7542 +33554429,148.052 +67108861,294.27 +13,0.0001 +29,0.0001 +61,0.0001 +125,0.0001 +253,0.0002 +509,0.0003 +1021,0.0004 +2045,0.0008 +4093,0.0016 +8189,0.003 +16381,0.0065 +32765,0.0172 +65533,0.0372 +131069,0.5856 +262141,1.169 +524285,2.9117 +1048573,4.8416 +2097149,9.6762 +4194301,17.8646 +8388605,35.8044 +16777213,74.8745 +33554429,150.288 +67108861,291.246 +13,0.0001 +29,0.0003 +61,0.0001 +125,0.0001 +253,0.0002 +509,0.0002 +1021,0.0004 +2045,0.0015 +4093,0.0016 +8189,0.0031 +16381,0.0068 +32765,0.0161 +65533,0.0369 +131069,0.5831 +262141,1.1748 +524285,2.3429 +1048573,4.6842 +2097149,9.5734 +4194301,17.9865 +8388605,38.8986 +16777213,76.7937 +33554429,147.142 +67108861,292.198 +13,0.0001 +29,0.0001 +61,0.0003 +125,0.0003 +253,0.0001 +509,0.0003 +1021,0.0004 +2045,0.0008 +4093,0.0016 +8189,0.0031 +16381,0.0082 +32765,0.0171 +65533,0.0357 +131069,0.5853 +262141,1.1697 +524285,2.4112 +1048573,4.9955 +2097149,9.8501 +4194301,18.8963 +8388605,36.1617 +16777213,72.0882 +33554429,145.475 +67108861,291.473 +13,0.0001 +29,0.0001 +61,0.0001 +125,0.0001 +253,0.0001 +509,0.0002 +1021,0.0004 +2045,0.0009 +4093,0.0149 +8189,0.0031 +16381,0.0065 +32765,0.0159 +65533,0.0383 +131069,0.5847 +262141,1.1736 +524285,2.4249 +1048573,4.5457 +2097149,10.3691 +4194301,18.4072 +8388605,35.7275 +16777213,71.7248 +33554429,150.702 +67108861,291.341 +13,0.0001 +29,0.0001 +61,0.0001 +125,0.0001 +253,0.0002 +509,0.0003 +1021,0.0005 +2045,0.0009 +4093,0.0016 +8189,0.0032 +16381,0.0067 +32765,0.0171 +65533,0.0351 +131069,0.585 +262141,1.1739 +524285,2.4171 +1048573,4.6835 +2097149,9.4666 +4194301,20.0504 +8388605,41.0484 +16777213,79.7509 +33554429,153.091 +67108861,291.133 +13,0.0001 +29,0.0001 +61,0.0003 +125,0.0001 +253,0.0002 +509,0.0003 +1021,0.0004 +2045,0.0008 +4093,0.0016 +8189,0.0032 +16381,0.0066 +32765,0.0156 +65533,0.0375 +131069,0.5852 +262141,1.1749 +524285,2.84 +1048573,4.6732 +2097149,9.3691 +4194301,19.1574 +8388605,35.806 +16777213,71.9495 +33554429,152.628 +67108861,291.938 +13,0.0001 +29,0.0001 +61,0.0001 +125,0.0001 +253,0.0002 +509,0.0002 +1021,0.0005 +2045,0.0008 +4093,0.0016 +8189,0.0031 +16381,0.0072 +32765,0.0162 +65533,0.0376 +131069,0.8219 +262141,1.1735 +524285,2.662 +1048573,4.437 +2097149,9.071 +4194301,17.906 +8388605,37.9811 +16777213,71.6878 +33554429,150.548 +67108861,296.397 +13,0.0001 +29,0 +61,0.0001 +125,0.0002 +253,0.0001 +509,0.0002 +1021,0.0004 +2045,0.0008 +4093,0.0016 +8189,0.0033 +16381,0.0132 +32765,0.0151 +65533,0.0376 +131069,0.5849 +262141,1.1694 +524285,2.6578 +1048573,4.845 +2097149,9.3689 +4194301,19.5677 +8388605,39.1028 +16777213,71.5439 +33554429,147.277 +67108861,292.817 +13,0 +29,0.0002 +61,0.0003 +125,0.0001 +253,0.0002 +509,0.0002 +1021,0.0004 +2045,0.0009 +4093,0.0016 +8189,0.0032 +16381,0.0067 +32765,0.0161 +65533,0.0375 +131069,0.5832 +262141,1.2315 +524285,2.4698 +1048573,4.4364 +2097149,10.3237 +4194301,18.049 +8388605,35.7803 +16777213,72.8697 +33554429,151.38 +67108861,293.159 +13,0.0001 +29,0 +61,0.0002 +125,0.0001 +253,0.0002 +509,0.0003 +1021,0.0004 +2045,0.0008 +4093,0.0017 +8189,0.0031 +16381,0.0065 +32765,0.0177 +65533,0.0379 +131069,0.9151 +262141,1.1749 +524285,2.3425 +1048573,4.6861 +2097149,9.778 +4194301,19.5964 +8388605,38.5424 +16777213,75.129 +33554429,146.694 +67108861,293.201 +13,0.0001 +29,0.0001 +61,0.0001 +125,0.0001 +253,0.0001 +509,0.0003 +1021,0.0004 +2045,0.0018 +4093,0.0017 +8189,0.0032 +16381,0.0066 +32765,0.0155 +65533,0.0368 +131069,0.7667 +262141,1.1736 +524285,2.3438 +1048573,4.6829 +2097149,10.7575 +4194301,18.847 +8388605,36.2578 +16777213,76.5701 +33554429,147.126 +67108861,295.761 +13,0.0001 +29,0.0001 +61,0.0001 +125,0.0001 +253,0.0002 +509,0.0003 +1021,0.0004 +2045,0.0009 +4093,0.0016 +8189,0.0034 +16381,0.0065 +32765,0.0171 +65533,0.0373 +131069,0.5858 +262141,1.2024 +524285,2.3419 +1048573,4.8412 +2097149,8.8755 +4194301,17.9899 +8388605,37.0592 +16777213,77.5191 +33554429,154.296 +67108861,292.65 +13,0.0001 +29,0.0002 +61,0.0002 +125,0.0001 +253,0.0002 +509,0.0002 +1021,0.0004 +2045,0.0008 +4093,0.0016 +8189,0.0032 +16381,0.0068 +32765,0.0163 +65533,0.0366 +131069,0.583 +262141,1.8402 +524285,2.4069 +1048573,4.9144 +2097149,9.5516 +4194301,17.8932 +8388605,36.8863 +16777213,79.3128 +33554429,146.647 +67108861,293.059 +13,0.0001 +29,0.0001 +61,0.0001 +125,0.0001 +253,0.0002 +509,0.0003 +1021,0.0004 +2045,0.0009 +4093,0.0016 +8189,0.0031 +16381,0.0064 +32765,0.0151 +65533,0.0369 +131069,0.5857 +262141,1.2045 +524285,2.3519 +1048573,4.6849 +2097149,9.1005 +4194301,17.85 +8388605,37.1874 +16777213,73.0974 +33554429,147.854 +67108861,302.546 +13,0.0001 +29,0.0001 +61,0.0001 +125,0.0001 +253,0.0002 +509,0.0004 +1021,0.0004 +2045,0.0008 +4093,0.0016 +8189,0.0031 +16381,0.0061 +32765,0.0312 +65533,0.0379 +131069,0.6006 +262141,1.1724 +524285,2.342 +1048573,4.7492 +2097149,8.8705 +4194301,17.915 +8388605,35.7968 +16777213,71.4278 +33554429,151.267 +67108861,290.357 +13,0 +29,0 +61,0.0001 +125,0.0001 +253,0.0001 +509,0.0002 +1021,0.0005 +2045,0.0009 +4093,0.0016 +8189,0.0031 +16381,0.0062 +32765,0.015 +65533,0.0353 +131069,0.5856 +262141,1.169 +524285,2.344 +1048573,4.6836 +2097149,9.4595 +4194301,19.3743 +8388605,39.4691 +16777213,73.2943 +33554429,145.39 +67108861,295.874 +13,0.0001 +29,0.0001 +61,0.0001 +125,0.0001 +253,0.0002 +509,0.0003 +1021,0.0004 +2045,0.0007 +4093,0.0016 +8189,0.003 +16381,0.0065 +32765,0.016 +65533,0.037 +131069,0.8305 +262141,1.1701 +524285,2.342 +1048573,6.1692 +2097149,9.0122 +4194301,20.5265 +8388605,35.7366 +16777213,74.9816 +33554429,147.569 +67108861,297.038 +13,0.0001 +29,0.0001 +61,0.0003 +125,0.0001 +253,0.0001 +509,0.0002 +1021,0.0008 +2045,0.0022 +4093,0.0019 +8189,0.0031 +16381,0.0066 +32765,0.0161 +65533,0.0401 +131069,0.6019 +262141,1.174 +524285,2.284 +1048573,4.4371 +2097149,9.6494 +4194301,17.9126 +8388605,35.8104 +16777213,71.513 +33554429,148.421 +67108861,290.725 +13,0.0001 +29,0.0001 +61,0.0001 +125,0.0001 +253,0.0134 +509,0.0003 +1021,0.0005 +2045,0.0009 +4093,0.0017 +8189,0.0031 +16381,0.0066 +32765,0.0157 +65533,0.0369 +131069,0.5851 +262141,1.1675 +524285,2.3435 +1048573,4.4372 +2097149,9.5024 +4194301,17.9188 +8388605,38.2899 +16777213,73.5611 +33554429,148.439 +67108861,291.573 +13,0.0001 +29,0.0002 +61,0.0001 +125,0.0001 +253,0.0001 +509,0.0003 +1021,0.0004 +2045,0.0008 +4093,0.0016 +8189,0.003 +16381,0.0068 +32765,0.0158 +65533,0.035 +131069,0.5851 +262141,1.1737 +524285,2.3423 +1048573,4.6835 +2097149,9.0788 +4194301,19.0684 +8388605,39.2019 +16777213,79.8585 +33554429,145.337 +67108861,295.109 +13,0 +29,0.0002 +61,0.0002 +125,0.0003 +253,0.0002 +509,0.0002 +1021,0.0005 +2045,0.0009 +4093,0.0016 +8189,0.0032 +16381,0.0067 +32765,0.0163 +65533,0.0366 +131069,0.5852 +262141,1.1682 +524285,2.3546 +1048573,4.6842 +2097149,9.0196 +4194301,20.6878 +8388605,40.7543 +16777213,76.0053 +33554429,147.5 +67108861,297.422 +13,0 +29,0 +61,0.0001 +125,0.0001 +253,0.0002 +509,0.0002 +1021,0.0004 +2045,0.0008 +4093,0.0017 +8189,0.0031 +16381,0.0065 +32765,0.0159 +65533,0.0345 +131069,0.5828 +262141,1.1748 +524285,2.2175 +1048573,4.8051 +2097149,10.7478 +4194301,17.8688 +8388605,37.3524 +16777213,71.6876 +33554429,148.09 +67108861,289.631 +13,0.0001 +29,0.0002 +61,0.0002 +125,0.0003 +253,0.0003 +509,0.0007 +1021,0.0016 +2045,0.001 +4093,0.0017 +8189,0.0034 +16381,0.0077 +32765,0.0171 +65533,0.0347 +131069,0.6193 +262141,1.1692 +524285,2.4091 +1048573,6.1628 +2097149,9.8537 +4194301,18.9951 +8388605,43.4996 +16777213,72.8791 +33554429,147.307 +67108861,307.455 +13,0.0001 +29,0.0001 +61,0.0001 +125,0.0001 +253,0.0001 +509,0.0002 +1021,0.0004 +2045,0.0008 +4093,0.0016 +8189,0.0034 +16381,0.0065 +32765,0.016 +65533,0.0368 +131069,0.5861 +262141,1.1757 +524285,2.348 +1048573,4.4382 +2097149,9.062 +4194301,21.4586 +8388605,39.4811 +16777213,75.9443 +33554429,160.284 +67108861,304.779 +13,0.0001 +29,0.0003 +61,0.0002 +125,0.0001 +253,0.0002 +509,0.0003 +1021,0.0004 +2045,0.0009 +4093,0.0016 +8189,0.003 +16381,0.0064 +32765,0.0151 +65533,0.0358 +131069,0.6004 +262141,1.1713 +524285,2.3539 +1048573,4.7692 +2097149,8.875 +4194301,19.8345 +8388605,41.987 +16777213,80.0573 +33554429,153.808 +67108861,302.836 +13,0.0001 +29,0.0003 +61,0.0001 +125,0.0001 +253,0.0002 +509,0.0003 +1021,0.0005 +2045,0.0008 +4093,0.0017 +8189,0.0045 +16381,0.0114 +32765,0.015 +65533,0.037 +131069,0.5828 +262141,1.1735 +524285,2.4096 +1048573,4.9298 +2097149,10.0947 +4194301,20.711 +8388605,41.9901 +16777213,78.7017 +33554429,149.64 +67108861,297.221 +13,0.0001 +29,0.0001 +61,0.0001 +125,0.0001 +253,0.0002 +509,0.0002 +1021,0.0004 +2045,0.0008 +4093,0.0017 +8189,0.0031 +16381,0.0064 +32765,0.0147 +65533,0.0349 +131069,0.5852 +262141,1.5558 +524285,2.3545 +1048573,4.8387 +2097149,9.2982 diff --git a/Project2-Stream-Compaction/data/Scan_data/data_nonpow2/eff.csv b/Project2-Stream-Compaction/data/Scan_data/data_nonpow2/eff.csv new file mode 100644 index 0000000..45b0f29 --- /dev/null +++ b/Project2-Stream-Compaction/data/Scan_data/data_nonpow2/eff.csv @@ -0,0 +1,3468 @@ +13,1.29536 +29,0.555008 +61,0.55296 +125,0.71984 +253,0.632864 +509,0.694304 +1021,0.891904 +2045,0.617472 +4093,0.717824 +8189,0.74752 +16381,0.954368 +32765,1.08032 +65533,1.76026 +131069,2.47706 +262141,3.93523 +524285,7.99952 +1048573,14.3882 +2097149,28.8799 +4194301,58.8278 +8388605,110.401 +16777213,223.199 +33554429,444.506 +67108861,880.391 +13,0.84992 +29,0.761856 +61,0.628736 +125,0.648192 +253,0.743424 +509,0.704512 +1021,0.857088 +2045,0.805888 +4093,0.836608 +8189,0.963584 +16381,1.34042 +32765,1.22163 +65533,1.61894 +131069,2.62554 +262141,4.05197 +524285,8.14592 +1048573,14.8449 +2097149,28.2839 +4194301,57.6625 +8388605,111.261 +16777213,221.366 +33554429,432.236 +67108861,891.409 +13,1.03526 +29,0.567296 +61,0.662528 +125,0.799744 +253,0.64 +509,0.688128 +1021,0.712704 +2045,0.913408 +4093,0.804864 +8189,0.867328 +16381,1.01786 +32765,1.19501 +65533,1.85344 +131069,2.41357 +262141,3.9977 +524285,7.55098 +1048573,14.8275 +2097149,29.2884 +4194301,55.081 +8388605,113.037 +16777213,217.132 +33554429,443.74 +67108861,878.959 +13,0.667648 +29,0.740352 +61,0.82432 +125,0.5632 +253,0.683008 +509,0.598016 +1021,0.73216 +2045,0.777216 +4093,0.997376 +8189,0.852992 +16381,1.0455 +32765,1.13965 +65533,1.89952 +131069,2.52826 +262141,4.20557 +524285,7.61549 +1048573,14.7753 +2097149,28.8512 +4194301,56.0486 +8388605,111.057 +16777213,220.57 +33554429,434.303 +67108861,893.744 +13,0.830464 +29,0.90624 +61,0.820224 +125,0.750592 +253,0.733184 +509,0.899072 +1021,0.88064 +2045,1.55034 +4093,0.776192 +8189,0.946176 +16381,1.22368 +32765,1.2288 +65533,1.6599 +131069,2.47296 +262141,4.06528 +524285,7.53562 +1048573,14.7005 +2097149,29.6663 +4194301,55.1875 +8388605,109.612 +16777213,218.236 +33554429,443.783 +67108861,880.783 +13,0.69632 +29,0.741376 +61,0.622592 +125,0.756736 +253,0.774144 +509,0.856064 +1021,0.780288 +2045,0.739328 +4093,0.910336 +8189,0.777216 +16381,1.08032 +32765,1.29024 +65533,1.67219 +131069,2.66342 +262141,4.38784 +524285,8.16435 +1048573,14.935 +2097149,29.1072 +4194301,55.9575 +8388605,110.583 +16777213,222.962 +33554429,435.257 +67108861,889.662 +13,0.68096 +29,0.750592 +61,0.681984 +125,0.678912 +253,0.69632 +509,0.648192 +1021,0.770048 +2045,0.676864 +4093,0.918528 +8189,0.9216 +16381,1.41926 +32765,1.20525 +65533,1.93024 +131069,2.52006 +262141,4.04685 +524285,7.38301 +1048573,15.2228 +2097149,28.7293 +4194301,56.2708 +8388605,109.487 +16777213,217.448 +33554429,443.936 +67108861,879.346 +13,0.557056 +29,0.65536 +61,0.695296 +125,0.718848 +253,0.66048 +509,0.811008 +1021,0.843776 +2045,0.927744 +4093,0.712704 +8189,0.780288 +16381,1.04653 +32765,1.17862 +65533,1.61485 +131069,2.40026 +262141,4.06221 +524285,8.45312 +1048573,14.934 +2097149,28.4047 +4194301,58.4714 +8388605,110.875 +16777213,222.233 +33554429,433.102 +67108861,893.808 +13,0.631808 +29,0.812032 +61,0.794624 +125,0.646144 +253,0.704512 +509,0.736256 +1021,0.739328 +2045,0.929792 +4093,1.01683 +8189,0.76288 +16381,1.04858 +32765,1.24928 +65533,1.65376 +131069,2.41152 +262141,4.0448 +524285,8.02202 +1048573,14.7692 +2097149,29.6602 +4194301,56.0814 +8388605,110.287 +16777213,217.829 +33554429,443.009 +67108861,880.937 +13,1.08339 +29,0.847872 +61,0.728064 +125,0.632832 +253,0.663552 +509,0.688128 +1021,0.80896 +2045,0.78848 +4093,0.7936 +8189,0.864256 +16381,1.47456 +32765,1.31482 +65533,1.90874 +131069,2.66547 +262141,4.07654 +524285,7.51002 +1048573,14.5121 +2097149,28.0945 +4194301,57.3809 +8388605,110.112 +16777213,222.933 +33554429,434.594 +67108861,894.351 +13,0.668672 +29,0.756736 +61,0.837632 +125,0.618496 +253,0.796672 +509,0.78848 +1021,0.754688 +2045,0.657408 +4093,0.928768 +8189,0.95744 +16381,1.0537 +32765,1.27693 +65533,1.60973 +131069,2.36442 +262141,4.05299 +524285,7.73939 +1048573,15.7266 +2097149,28.9536 +4194301,57.559 +8388605,110.804 +16777213,217.959 +33554429,446.505 +67108861,887.132 +13,0.84992 +29,0.765952 +61,0.72704 +125,0.539648 +253,0.582656 +509,0.739328 +1021,0.75264 +2045,0.768 +4093,1.06394 +8189,0.83968 +16381,1.03117 +32765,1.22368 +65533,2.15347 +131069,3.13037 +262141,4.11238 +524285,7.43936 +1048573,15.1316 +2097149,29.6591 +4194301,56.6118 +8388605,110.636 +16777213,221.813 +33554429,435.709 +67108861,900.391 +13,1.43667 +29,0.726016 +61,0.630784 +125,0.96768 +253,0.715776 +509,0.796672 +1021,0.774144 +2045,1.4807 +4093,0.80384 +8189,0.927744 +16381,1.03219 +32765,1.19706 +65533,1.67629 +131069,3.19181 +262141,4.59469 +524285,7.9145 +1048573,14.6401 +2097149,28.8174 +4194301,58.838 +8388605,111.165 +16777213,219.942 +33554429,441.139 +67108861,880.761 +13,0.611328 +29,0.695296 +61,0.80384 +125,0.658432 +253,0.70656 +509,0.666624 +1021,0.948224 +2045,0.854016 +4093,0.89088 +8189,0.951296 +16381,1.08646 +32765,1.22982 +65533,1.61894 +131069,2.49958 +262141,3.97414 +524285,7.91142 +1048573,15.3846 +2097149,28.9434 +4194301,55.9135 +8388605,110.28 +16777213,222.561 +33554429,433.889 +67108861,897.567 +13,0.734208 +29,0.661504 +61,0.731136 +125,0.79872 +253,0.712704 +509,0.754688 +1021,0.8704 +2045,0.999424 +4093,1.00352 +8189,0.893952 +16381,1.02502 +32765,1.23597 +65533,1.63738 +131069,2.53542 +262141,3.93216 +524285,8.04147 +1048573,14.6729 +2097149,28.7263 +4194301,55.3667 +8388605,109.8 +16777213,217.759 +33554429,444.364 +67108861,881.966 +13,0.690176 +29,0.777216 +61,0.615424 +125,0.713728 +253,0.72704 +509,0.726016 +1021,0.772096 +2045,0.796672 +4093,0.822272 +8189,0.961536 +16381,1.25235 +32765,1.2288 +65533,1.61382 +131069,2.42586 +262141,4.03763 +524285,7.83053 +1048573,15.4911 +2097149,28.4385 +4194301,55.5428 +8388605,110.047 +16777213,221.981 +33554429,435.73 +67108861,894.432 +13,0.75264 +29,0.6656 +61,0.490496 +125,0.51712 +253,0.729088 +509,0.861184 +1021,0.708608 +2045,0.70144 +4093,0.98304 +8189,0.970752 +16381,1.07213 +32765,1.27795 +65533,1.90771 +131069,2.59891 +262141,4.09805 +524285,7.53152 +1048573,15.8024 +2097149,29.6745 +4194301,54.3949 +8388605,111.688 +16777213,216.797 +33554429,443.455 +67108861,878.618 +13,0.49664 +29,0.581632 +61,0.631808 +125,0.96256 +253,0.616448 +509,0.693248 +1021,0.792576 +2045,0.82432 +4093,0.876544 +8189,1.37523 +16381,1.43667 +32765,1.37626 +65533,1.664 +131069,2.41152 +262141,4.04173 +524285,7.80288 +1048573,14.7241 +2097149,27.9491 +4194301,58.5779 +8388605,111.341 +16777213,226.396 +33554429,434.749 +67108861,893.563 +13,0.846848 +29,0.746496 +61,0.980992 +125,0.676864 +253,0.698368 +509,0.777216 +1021,0.702464 +2045,0.8192 +4093,0.858112 +8189,0.857088 +16381,0.999424 +32765,1.22573 +65533,1.62099 +131069,2.47501 +262141,4.78208 +524285,7.55098 +1048573,14.6749 +2097149,29.0345 +4194301,56.0404 +8388605,110.756 +16777213,218.877 +33554429,442.646 +67108861,877.669 +13,0.948224 +29,0.888832 +61,0.699392 +125,0.7936 +253,0.766976 +509,0.746496 +1021,0.835584 +2045,0.776192 +4093,0.896 +8189,0.970752 +16381,0.92672 +32765,1.48275 +65533,1.78586 +131069,2.4832 +262141,4.02842 +524285,8.23808 +1048573,14.7405 +2097149,28.503 +4194301,57.0952 +8388605,109.767 +16777213,221.299 +33554429,435.659 +67108861,895.312 +13,0.664576 +29,0.646144 +61,0.750592 +125,0.872448 +253,0.702464 +509,1.34656 +1021,0.779264 +2045,0.869376 +4093,0.763904 +8189,0.929792 +16381,1.08749 +32765,1.23187 +65533,1.6681 +131069,2.42176 +262141,4.1001 +524285,8.53299 +1048573,14.6657 +2097149,29.3212 +4194301,55.5633 +8388605,110.188 +16777213,218.352 +33554429,446.271 +67108861,878.021 +13,0.913408 +29,0.744448 +61,0.796672 +125,0.685056 +253,1.00659 +509,0.927744 +1021,0.804864 +2045,0.917504 +4093,0.805888 +8189,1.36294 +16381,1.07315 +32765,1.72442 +65533,1.6855 +131069,2.67674 +262141,3.97107 +524285,7.43424 +1048573,15.6129 +2097149,27.7709 +4194301,57.2631 +8388605,110.559 +16777213,221.181 +33554429,433.954 +67108861,890.453 +13,0.877568 +29,0.77312 +61,0.815104 +125,0.68608 +253,0.77312 +509,0.631808 +1021,0.831488 +2045,0.846848 +4093,0.8704 +8189,0.848896 +16381,1.05677 +32765,1.21651 +65533,1.72442 +131069,2.50266 +262141,4.22502 +524285,7.43424 +1048573,14.7927 +2097149,29.1267 +4194301,55.3124 +8388605,110.653 +16777213,217.388 +33554429,439.605 +67108861,876.86 +13,0.914432 +29,0.704512 +61,0.797696 +125,0.770048 +253,0.794624 +509,0.83968 +1021,0.969728 +2045,0.739328 +4093,0.93184 +8189,0.959488 +16381,1.41517 +32765,1.29024 +65533,2.52109 +131069,2.46784 +262141,4.31104 +524285,7.99949 +1048573,14.3985 +2097149,28.1887 +4194301,56.3538 +8388605,109.991 +16777213,222.296 +33554429,436.161 +67108861,892.245 +13,1.91693 +29,0.840704 +61,0.804864 +125,0.75264 +253,0.734208 +509,0.784384 +1021,0.744448 +2045,1.10797 +4093,0.87552 +8189,0.946176 +16381,1.0537 +32765,1.2288 +65533,1.67834 +131069,2.47091 +262141,4.58342 +524285,8.46643 +1048573,14.5603 +2097149,28.8891 +4194301,55.511 +8388605,108.989 +16777213,217.41 +33554429,441.888 +67108861,876.076 +13,1.11206 +29,0.751616 +61,0.734208 +125,0.761856 +253,0.630784 +509,0.647168 +1021,0.62464 +2045,0.710656 +4093,0.830464 +8189,0.999424 +16381,1.10797 +32765,1.26054 +65533,1.90669 +131069,2.51494 +262141,4.08269 +524285,7.41683 +1048573,14.7814 +2097149,28.6228 +4194301,56.9661 +8388605,111.277 +16777213,222.879 +33554429,436.013 +67108861,890.381 +13,0.845824 +29,0.7936 +61,1.03731 +125,0.765952 +253,0.876544 +509,0.846848 +1021,0.892928 +2045,0.905216 +4093,0.879616 +8189,0.93696 +16381,1.04653 +32765,1.34554 +65533,1.68346 +131069,2.44736 +262141,4.67558 +524285,8.06195 +1048573,15.1839 +2097149,28.9935 +4194301,54.9796 +8388605,109.897 +16777213,219.413 +33554429,443.959 +67108861,879.661 +13,0.65536 +29,0.802816 +61,0.681984 +125,0.6912 +253,0.77824 +509,0.772096 +1021,0.791552 +2045,0.904192 +4093,0.869376 +8189,1.1223 +16381,1.10387 +32765,1.22163 +65533,1.70598 +131069,2.45862 +262141,4.0489 +524285,7.77728 +1048573,15.49 +2097149,27.8108 +4194301,56.1684 +8388605,110.073 +16777213,221.379 +33554429,435.932 +67108861,892.04 +13,0.91648 +29,0.837632 +61,0.728064 +125,0.867328 +253,0.8192 +509,0.749568 +1021,0.782336 +2045,0.779264 +4093,0.89088 +8189,0.898048 +16381,0.976896 +32765,1.23392 +65533,1.69882 +131069,2.58662 +262141,4.14208 +524285,7.57146 +1048573,14.38 +2097149,28.6577 +4194301,56.0056 +8388605,110.348 +16777213,218.258 +33554429,441.596 +67108861,876.29 +13,0.713728 +29,0.750592 +61,0.789504 +125,0.777216 +253,0.753664 +509,0.715776 +1021,0.763904 +2045,0.918528 +4093,0.822272 +8189,1.01171 +16381,1.04653 +32765,1.21754 +65533,1.70906 +131069,2.53952 +262141,4.43597 +524285,7.4752 +1048573,14.7487 +2097149,28.7642 +4194301,57.3645 +8388605,109.519 +16777213,220.311 +33554429,432.938 +67108861,893.503 +13,1.13254 +29,0.75264 +61,0.930816 +125,0.759808 +253,0.809984 +509,0.794624 +1021,0.748544 +2045,0.866304 +4093,0.90112 +8189,0.929792 +16381,1.06394 +32765,1.31277 +65533,1.69677 +131069,2.4361 +262141,4.16563 +524285,7.50387 +1048573,14.9924 +2097149,29.3673 +4194301,55.3226 +8388605,112.981 +16777213,218.346 +33554429,438.222 +67108861,874.479 +13,1.05062 +29,0.712704 +61,0.823296 +125,0.807936 +253,0.785408 +509,0.750592 +1021,0.815104 +2045,0.863232 +4093,0.900096 +8189,0.980992 +16381,1.0793 +32765,1.21344 +65533,2.23334 +131069,2.93274 +262141,4.05402 +524285,8.25037 +1048573,14.7814 +2097149,27.9726 +4194301,56.49 +8388605,111.08 +16777213,221.073 +33554429,432.894 +67108861,891.552 +13,0.7424 +29,0.741376 +61,1.10592 +125,0.764928 +253,0.75264 +509,1.2032 +1021,1.29331 +2045,0.889856 +4093,0.867328 +8189,0.954368 +16381,1.05165 +32765,1.24723 +65533,1.75206 +131069,2.4617 +262141,4.3049 +524285,7.7015 +1048573,15.4286 +2097149,28.8338 +4194301,54.996 +8388605,108.977 +16777213,218.427 +33554429,440.497 +67108861,878.673 +13,0.845824 +29,0.84992 +61,0.80384 +125,0.75264 +253,0.77312 +509,0.702464 +1021,0.785408 +2045,0.780288 +4093,0.98304 +8189,0.974848 +16381,1.17555 +32765,1.16941 +65533,1.71418 +131069,2.54362 +262141,4.87936 +524285,7.50899 +1048573,14.9647 +2097149,28.0678 +4194301,57.3215 +8388605,110.579 +16777213,221.608 +33554429,432.503 +67108861,892.002 +13,0.987136 +29,0.723968 +61,0.622592 +125,0.801792 +253,0.765952 +509,0.765952 +1021,0.78336 +2045,0.840704 +4093,0.891904 +8189,0.934912 +16381,1.06803 +32765,1.24723 +65533,1.81555 +131069,2.48218 +262141,4.14413 +524285,7.7015 +1048573,14.9248 +2097149,28.6003 +4194301,55.0175 +8388605,109.484 +16777213,217.215 +33554429,442.763 +67108861,876.416 +13,1.36704 +29,0.835584 +61,0.81408 +125,0.80384 +253,0.566272 +509,0.791552 +1021,0.791552 +2045,0.929792 +4093,0.964608 +8189,1.33734 +16381,1.00864 +32765,1.25747 +65533,1.79507 +131069,2.9737 +262141,4.33459 +524285,7.39942 +1048573,14.6954 +2097149,29.2628 +4194301,56.1981 +8388605,109.914 +16777213,220.292 +33554429,432.941 +67108861,892.295 +13,0.893952 +29,0.800768 +61,0.766976 +125,0.65536 +253,0.587776 +509,0.681984 +1021,0.813056 +2045,0.902144 +4093,1.07315 +8189,0.964608 +16381,2.33882 +32765,1.19194 +65533,1.67014 +131069,2.42381 +262141,3.97312 +524285,7.95034 +1048573,14.4824 +2097149,29.3437 +4194301,56.6497 +8388605,110.286 +16777213,217.266 +33554429,438.343 +67108861,877.398 +13,0.781312 +29,0.837632 +61,0.888832 +125,0.748544 +253,1.10592 +509,0.802816 +1021,0.818176 +2045,0.838656 +4093,0.881664 +8189,0.826368 +16381,0.999424 +32765,1.25133 +65533,1.68346 +131069,2.66957 +262141,4.05606 +524285,8.02304 +1048573,14.9596 +2097149,29.1103 +4194301,56.7327 +8388605,110.836 +16777213,219.876 +33554429,434.692 +67108861,891.481 +13,0.760832 +29,0.636928 +61,0.7168 +125,0.546816 +253,0.601088 +509,0.789504 +1021,0.816128 +2045,0.86016 +4093,0.858112 +8189,0.949248 +16381,1.03219 +32765,1.26464 +65533,1.71008 +131069,2.46784 +262141,3.99565 +524285,8.03123 +1048573,14.6391 +2097149,28.887 +4194301,55.3175 +8388605,110.031 +16777213,217.351 +33554429,439.19 +67108861,878.406 +13,0.759808 +29,0.616448 +61,0.830464 +125,0.687104 +253,0.758784 +509,0.842752 +1021,0.77824 +2045,0.905216 +4093,0.879616 +8189,0.900096 +16381,1.04448 +32765,1.23392 +65533,1.72442 +131069,2.45658 +262141,4.65408 +524285,7.82541 +1048573,15.5873 +2097149,28.6484 +4194301,56.6231 +8388605,109.667 +16777213,221.769 +33554429,434.911 +67108861,887.752 +13,0.648192 +29,0.620544 +61,0.612352 +125,0.75776 +253,0.720896 +509,0.723968 +1021,0.754688 +2045,0.922624 +4093,1.07008 +8189,0.945152 +16381,1.06086 +32765,1.1735 +65533,1.68038 +131069,2.42893 +262141,4.02739 +524285,7.81824 +1048573,14.3278 +2097149,30.0216 +4194301,55.7322 +8388605,109.208 +16777213,216.625 +33554429,442.244 +67108861,877.697 +13,0.689152 +29,0.666624 +61,0.833536 +125,0.65024 +253,0.789504 +509,0.787456 +1021,0.63488 +2045,0.86016 +4093,0.905216 +8189,0.963584 +16381,1.07418 +32765,1.25645 +65533,1.78483 +131069,2.80883 +262141,3.99667 +524285,7.5305 +1048573,14.5019 +2097149,27.9163 +4194301,56.575 +8388605,109.996 +16777213,221.993 +33554429,433.64 +67108861,890.615 +13,1.8944 +29,0.70656 +61,0.807936 +125,0.796672 +253,0.780288 +509,0.832512 +1021,0.8448 +2045,0.841728 +4093,0.868352 +8189,0.9472 +16381,1.024 +32765,1.35987 +65533,1.86163 +131069,2.44326 +262141,4.30592 +524285,8.15206 +1048573,14.6084 +2097149,29.3704 +4194301,55.3902 +8388605,109.833 +16777213,215.968 +33554429,440.491 +67108861,879.372 +13,0.796672 +29,0.740352 +61,0.779264 +125,0.705536 +253,0.596992 +509,0.92672 +1021,0.72704 +2045,1.1049 +4093,1.02093 +8189,0.96256 +16381,1.05984 +32765,1.17862 +65533,2.2825 +131069,2.43098 +262141,4.02432 +524285,7.78342 +1048573,14.8726 +2097149,29.0355 +4194301,57.4628 +8388605,110.463 +16777213,222.542 +33554429,435.053 +67108861,891.619 +13,0.823296 +29,0.64 +61,0.7936 +125,0.635904 +253,0.722944 +509,0.595968 +1021,0.689152 +2045,0.8704 +4093,0.825344 +8189,0.959488 +16381,1.0537 +32765,1.4121 +65533,2.04902 +131069,2.51904 +262141,4.11546 +524285,8.07424 +1048573,14.0595 +2097149,28.5041 +4194301,56.6364 +8388605,110.532 +16777213,217.503 +33554429,441.811 +67108861,878.042 +13,0.929792 +29,0.796672 +61,0.661504 +125,0.759808 +253,0.73728 +509,0.804864 +1021,0.801792 +2045,0.86016 +4093,0.86016 +8189,1.08851 +16381,1.10285 +32765,1.25952 +65533,1.66912 +131069,2.47501 +262141,4.22502 +524285,7.57658 +1048573,14.5316 +2097149,28.076 +4194301,57.0921 +8388605,110.179 +16777213,219.723 +33554429,433.669 +67108861,893.635 +13,0.625664 +29,0.644096 +61,0.776192 +125,0.642048 +253,0.7936 +509,0.607232 +1021,0.857088 +2045,0.806912 +4093,0.899072 +8189,1.27078 +16381,1.21037 +32765,1.07418 +65533,1.73056 +131069,2.68493 +262141,4.4585 +524285,7.36666 +1048573,14.337 +2097149,29.4502 +4194301,55.3759 +8388605,109.389 +16777213,216.859 +33554429,442.027 +67108861,880.438 +13,0.868352 +29,0.720896 +61,0.817152 +125,0.55808 +253,0.815104 +509,0.733184 +1021,0.9216 +2045,0.897024 +4093,0.728064 +8189,1.09773 +16381,1.0752 +32765,1.25338 +65533,1.6937 +131069,2.45248 +262141,4.12672 +524285,7.42502 +1048573,14.4404 +2097149,28.5932 +4194301,56.3743 +8388605,109.767 +16777213,222.449 +33554429,434.683 +67108861,888.011 +13,0.838656 +29,0.744448 +61,0.805888 +125,0.873472 +253,0.959488 +509,0.805888 +1021,0.796672 +2045,0.823296 +4093,0.862208 +8189,0.96256 +16381,1.11821 +32765,1.24621 +65533,1.64659 +131069,2.77914 +262141,4.03251 +524285,7.42605 +1048573,14.5582 +2097149,28.9352 +4194301,56.5197 +8388605,111.837 +16777213,217.982 +33554429,444.281 +67108861,877.177 +13,1.23802 +29,0.820224 +61,0.671744 +125,0.756736 +253,0.842752 +509,0.726016 +1021,0.863232 +2045,0.8448 +4093,0.87552 +8189,0.949248 +16381,1.06803 +32765,1.26669 +65533,1.6937 +131069,2.5303 +262141,3.98746 +524285,7.78445 +1048573,14.634 +2097149,28.9331 +4194301,56.2422 +8388605,111.055 +16777213,220.583 +33554429,433.33 +67108861,888.768 +13,0.70144 +29,0.613376 +61,0.768 +125,0.724992 +253,0.766976 +509,0.695296 +1021,0.9216 +2045,0.883712 +4093,0.902144 +8189,0.934912 +16381,1.0455 +32765,1.54317 +65533,1.63021 +131069,2.48627 +262141,4.58854 +524285,7.60934 +1048573,13.9704 +2097149,28.8133 +4194301,55.7722 +8388605,109.778 +16777213,217.097 +33554429,441.205 +67108861,879.488 +13,0.813056 +29,0.793536 +61,0.7168 +125,1.20525 +253,0.759808 +509,0.734208 +1021,0.76288 +2045,0.858112 +4093,0.861184 +8189,0.922624 +16381,1.13766 +32765,1.28 +65533,1.57082 +131069,2.52109 +262141,4.07654 +524285,7.3984 +1048573,15.0979 +2097149,28.2819 +4194301,56.8965 +8388605,112.231 +16777213,220.75 +33554429,434.822 +67108861,893.461 +13,0.8448 +29,0.628736 +61,0.785408 +125,0.768 +253,0.769024 +509,0.812032 +1021,0.801792 +2045,0.6656 +4093,1.23597 +8189,1.03629 +16381,2.33574 +32765,1.18682 +65533,1.72237 +131069,2.60403 +262141,4.15334 +524285,7.68717 +1048573,15.2279 +2097149,28.7867 +4194301,54.7942 +8388605,109.915 +16777213,218.102 +33554429,441.733 +67108861,878.595 +13,0.83968 +29,0.718848 +61,0.761856 +125,0.75776 +253,0.776192 +509,0.730112 +1021,0.79872 +2045,0.80384 +4093,0.889856 +8189,0.915456 +16381,1.07008 +32765,1.42541 +65533,1.80838 +131069,2.87334 +262141,4.06221 +524285,7.7312 +1048573,14.9545 +2097149,28.7252 +4194301,57.7618 +8388605,111.463 +16777213,223.71 +33554429,435.72 +67108861,890.922 +13,0.699392 +29,1.02912 +61,0.900096 +125,0.75264 +253,0.744448 +509,0.792576 +1021,0.743424 +2045,0.82944 +4093,0.858112 +8189,0.973824 +16381,1.05574 +32765,1.27898 +65533,1.73466 +131069,2.79347 +262141,4.37965 +524285,7.53562 +1048573,15.2484 +2097149,28.4754 +4194301,55.0799 +8388605,110.33 +16777213,217.127 +33554429,440.382 +67108861,880.796 +13,0.910336 +29,0.746496 +61,0.927744 +125,0.779264 +253,0.756736 +509,0.76288 +1021,0.782336 +2045,0.851968 +4093,0.933888 +8189,0.996352 +16381,1.63328 +32765,1.29331 +65533,1.67424 +131069,2.41869 +262141,3.93523 +524285,8.3456 +1048573,14.5172 +2097149,28.1641 +4194301,57.0501 +8388605,109.652 +16777213,220.984 +33554429,435.92 +67108861,892.226 +13,0.676864 +29,0.80384 +61,0.785408 +125,0.772096 +253,0.760832 +509,0.900096 +1021,0.81408 +2045,0.835584 +4093,0.898048 +8189,0.883712 +16381,1.15405 +32765,1.68653 +65533,1.70086 +131069,3.32902 +262141,4.01408 +524285,7.72608 +1048573,14.8552 +2097149,29.5752 +4194301,55.0963 +8388605,110.212 +16777213,216.413 +33554429,441.838 +67108861,878.647 +13,0.889856 +29,0.628736 +61,0.813056 +125,0.832512 +253,0.772096 +509,0.772096 +1021,0.857088 +2045,0.872448 +4093,0.905216 +8189,0.937984 +16381,1.12947 +32765,1.11104 +65533,1.6425 +131069,2.49344 +262141,4.03251 +524285,7.66566 +1048573,14.8275 +2097149,28.3658 +4194301,57.7331 +8388605,110.692 +16777213,220.567 +33554429,434.712 +67108861,893.064 +13,0.909312 +29,0.751616 +61,0.669696 +125,0.743424 +253,0.712704 +509,0.86528 +1021,0.73728 +2045,0.866304 +4093,0.868352 +8189,0.927744 +16381,1.06906 +32765,1.24621 +65533,1.59744 +131069,2.3849 +262141,4.24755 +524285,7.44448 +1048573,14.4937 +2097149,29.226 +4194301,55.1649 +8388605,110.446 +16777213,218.949 +33554429,440.336 +67108861,877.567 +13,0.653312 +29,0.612352 +61,0.649216 +125,0.837632 +253,0.7936 +509,0.775168 +1021,0.854016 +2045,0.915456 +4093,0.869376 +8189,0.864256 +16381,1.16122 +32765,1.26464 +65533,1.71418 +131069,2.65626 +262141,4.10829 +524285,7.85203 +1048573,14.4148 +2097149,28.9516 +4194301,55.8868 +8388605,110.047 +16777213,221.497 +33554429,434.192 +67108861,892.583 +13,0.70144 +29,0.756736 +61,0.705536 +125,0.805888 +253,0.751616 +509,0.754688 +1021,0.822272 +2045,0.866304 +4093,0.874496 +8189,0.882688 +16381,1.04243 +32765,1.44384 +65533,1.78278 +131069,3.22765 +262141,4.0745 +524285,7.36659 +1048573,15.0313 +2097149,29.2127 +4194301,56.6774 +8388605,110.33 +16777213,218.571 +33554429,440.9 +67108861,873.145 +13,0.54784 +29,0.612352 +61,0.72192 +125,0.505856 +253,0.755712 +509,0.77824 +1021,0.693248 +2045,1.88621 +4093,0.743424 +8189,0.84992 +16381,1.09363 +32765,1.19398 +65533,2.00909 +131069,3.23072 +262141,3.93523 +524285,7.86637 +1048573,15.2146 +2097149,28.5481 +4194301,57.0327 +8388605,110.838 +16777213,221.033 +33554429,430.697 +67108861,890.771 +13,0.754688 +29,0.8448 +61,0.794624 +125,0.740352 +253,1.06291 +509,0.628736 +1021,0.765952 +2045,0.78848 +4093,0.815104 +8189,0.95744 +16381,2.20979 +32765,1.28307 +65533,1.68755 +131069,2.51597 +262141,5.27872 +524285,7.49773 +1048573,15.2279 +2097149,29.3335 +4194301,55.5274 +8388605,109.733 +16777213,216.879 +33554429,441.178 +67108861,879.86 +13,0.509952 +29,0.627712 +61,0.5376 +125,0.603136 +253,0.775168 +509,0.904192 +1021,0.820224 +2045,0.871424 +4093,0.882688 +8189,0.932864 +16381,1.03834 +32765,1.7879 +65533,1.7408 +131069,2.53133 +262141,5.10874 +524285,7.36358 +1048573,14.7497 +2097149,29.183 +4194301,55.765 +8388605,110.099 +16777213,220.646 +33554429,435.75 +67108861,889.191 +13,0.688128 +29,0.866304 +61,0.73216 +125,0.838656 +253,0.709632 +509,0.713728 +1021,0.796672 +2045,0.863232 +4093,0.674816 +8189,0.990208 +16381,0.990208 +32765,1.28205 +65533,1.63635 +131069,2.92864 +262141,4.11341 +524285,7.424 +1048573,15.0856 +2097149,28.3525 +4194301,55.0175 +8388605,109.578 +16777213,218.286 +33554429,440.487 +67108861,885.102 +13,0.913408 +29,0.750592 +61,0.878592 +125,0.796672 +253,0.768 +509,0.784384 +1021,0.766976 +2045,0.775168 +4093,0.904192 +8189,1.09978 +16381,1.55853 +32765,1.52576 +65533,1.66195 +131069,2.46989 +262141,4.16461 +524285,7.7271 +1048573,14.7036 +2097149,28.5676 +4194301,56.3855 +8388605,111.807 +16777213,220.854 +33554429,430.95 +67108861,890.207 +13,0.887808 +29,0.86528 +61,0.785408 +125,0.800768 +253,0.80384 +509,0.782336 +1021,0.73728 +2045,0.858112 +4093,0.891904 +8189,1.00454 +16381,0.980992 +32765,1.25645 +65533,1.62918 +131069,2.59482 +262141,4.06528 +524285,8.81357 +1048573,14.8244 +2097149,29.5506 +4194301,55.4783 +8388605,110.221 +16777213,217.523 +33554429,443.219 +67108861,875.979 +13,0.850944 +29,0.681984 +61,0.642048 +125,0.79872 +253,0.622592 +509,0.65024 +1021,0.610304 +2045,0.812032 +4093,0.925696 +8189,0.973824 +16381,1.14483 +32765,1.31584 +65533,1.67219 +131069,2.5856 +262141,4.48205 +524285,8.85453 +1048573,15.6129 +2097149,28.0003 +4194301,57.131 +8388605,110.527 +16777213,221.447 +33554429,435.445 +67108861,892.278 +13,0.845824 +29,0.741376 +61,0.766976 +125,0.76288 +253,0.782336 +509,0.861184 +1021,0.806912 +2045,0.877568 +4093,0.886784 +8189,1.07418 +16381,1.07418 +32765,1.61792 +65533,1.70496 +131069,3.16314 +262141,4.07962 +524285,7.41581 +1048573,14.2612 +2097149,29.353 +4194301,55.4988 +8388605,111.614 +16777213,217.807 +33554429,443.538 +67108861,880.821 +13,0.761856 +29,0.714752 +61,0.743424 +125,0.770048 +253,0.780288 +509,0.816128 +1021,0.820224 +2045,0.83456 +4093,0.976896 +8189,0.971776 +16381,1.10797 +32765,1.27795 +65533,1.70906 +131069,2.88973 +262141,4.09088 +524285,7.60525 +1048573,15.5003 +2097149,27.9368 +4194301,56.917 +8388605,110.526 +16777213,221.332 +33554429,434.32 +67108861,885.975 +13,0.776192 +29,0.565248 +61,0.82432 +125,1.1305 +253,0.627712 +509,0.64512 +1021,0.799744 +2045,0.871424 +4093,0.910336 +8189,1.03014 +16381,1.4377 +32765,1.31584 +65533,1.87085 +131069,2.5047 +262141,4.03149 +524285,7.78752 +1048573,15.0518 +2097149,28.7939 +4194301,56.1152 +8388605,110.65 +16777213,217.261 +33554429,439.962 +67108861,880.861 +13,0.91136 +29,0.883712 +61,0.780288 +125,0.736256 +253,0.833536 +509,0.812032 +1021,0.77824 +2045,0.861184 +4093,0.951296 +8189,0.992256 +16381,1.17658 +32765,1.24314 +65533,2.048 +131069,2.92557 +262141,4.03558 +524285,7.89606 +1048573,14.5848 +2097149,28.0218 +4194301,55.8111 +8388605,109.989 +16777213,221.847 +33554429,434.949 +67108861,892.56 +13,0.831488 +29,0.9728 +61,0.804864 +125,0.753664 +253,0.780288 +509,0.792576 +1021,1.32915 +2045,0.932864 +4093,0.954368 +8189,1.33939 +16381,1.11206 +32765,1.5616 +65533,1.69779 +131069,2.49037 +262141,4.10624 +524285,7.61446 +1048573,14.1332 +2097149,29.7882 +4194301,55.3544 +8388605,110.213 +16777213,216.432 +33554429,443.094 +67108861,875.18 +13,0.900096 +29,0.871424 +61,0.586752 +125,0.603136 +253,0.61952 +509,0.637952 +1021,0.678912 +2045,0.859136 +4093,0.873472 +8189,1.00352 +16381,1.05779 +32765,1.84627 +65533,1.7111 +131069,2.5385 +262141,4.16256 +524285,7.98925 +1048573,15.3528 +2097149,28.4836 +4194301,55.6227 +8388605,110.67 +16777213,221.346 +33554429,434.368 +67108861,893.389 +13,0.795648 +29,0.740352 +61,0.610304 +125,0.779264 +253,0.674816 +509,0.630784 +1021,0.913408 +2045,0.89088 +4093,0.948224 +8189,0.934912 +16381,1.0496 +32765,1.3783 +65533,1.93434 +131069,2.49446 +262141,4.51584 +524285,7.57862 +1048573,14.4374 +2097149,28.7877 +4194301,55.3288 +8388605,109.674 +16777213,216.997 +33554429,440.049 +67108861,877.888 +13,0.775168 +29,0.774144 +61,0.710656 +125,0.769024 +253,0.86528 +509,0.871424 +1021,0.818176 +2045,0.963584 +4093,0.937984 +8189,0.954368 +16381,1.10694 +32765,1.26362 +65533,1.73466 +131069,2.43917 +262141,4.13184 +524285,7.59194 +1048573,14.6473 +2097149,28.63 +4194301,56.834 +8388605,109.651 +16777213,220.072 +33554429,433.81 +67108861,890.211 +13,0.833536 +29,0.812032 +61,0.81408 +125,0.766976 +253,0.771072 +509,0.792576 +1021,0.815104 +2045,0.904192 +4093,0.871424 +8189,1.07622 +16381,1.11718 +32765,1.25747 +65533,1.69062 +131069,3.00339 +262141,4.04378 +524285,7.53664 +1048573,14.6688 +2097149,28.7468 +4194301,55.253 +8388605,109.784 +16777213,217.574 +33554429,442.998 +67108861,879.638 +13,0.869376 +29,0.9728 +61,0.781312 +125,0.621568 +253,1.53805 +509,0.864256 +1021,1.29434 +2045,0.876544 +4093,1.40493 +8189,1.08032 +16381,1.0793 +32765,1.21242 +65533,1.70496 +131069,2.65011 +262141,4.64896 +524285,8.96614 +1048573,15.5535 +2097149,28.4058 +4194301,56.0466 +8388605,108.193 +16777213,221.565 +33554429,433.627 +67108861,893.919 +13,0.871424 +29,0.818176 +61,0.836608 +125,0.864256 +253,0.73728 +509,0.83456 +1021,0.760832 +2045,0.892928 +4093,0.927744 +8189,1.50835 +16381,1.08134 +32765,1.18989 +65533,1.69472 +131069,2.54771 +262141,4.00486 +524285,7.47315 +1048573,14.4251 +2097149,28.9034 +4194301,55.4004 +8388605,110.047 +16777213,217.192 +33554429,442.158 +67108861,879.18 +13,0.961536 +29,1.11514 +61,0.894976 +125,0.816128 +253,0.780288 +509,0.800768 +1021,0.6912 +2045,0.9216 +4093,0.935936 +8189,1.27283 +16381,1.08442 +32765,1.27898 +65533,1.60666 +131069,2.79654 +262141,4.22707 +524285,7.7609 +1048573,15.2054 +2097149,28.3689 +4194301,56.0271 +8388605,111.054 +16777213,221.42 +33554429,434.051 +67108861,892.785 +13,0.898048 +29,0.702464 +61,1.08339 +125,0.715776 +253,0.75776 +509,0.748544 +1021,0.663552 +2045,0.896 +4093,1.19808 +8189,0.826368 +16381,1.75206 +32765,1.26464 +65533,1.72544 +131069,2.56717 +262141,4.11034 +524285,7.6544 +1048573,14.4241 +2097149,29.2485 +4194301,55.339 +8388605,110.482 +16777213,217.37 +33554429,443.329 +67108861,878.429 +13,0.766976 +29,0.884736 +61,0.799744 +125,0.723968 +253,0.954368 +509,0.807936 +1021,0.850944 +2045,0.914432 +4093,0.939008 +8189,0.950272 +16381,1.05677 +32765,1.28307 +65533,1.87597 +131069,2.57638 +262141,4.45542 +524285,7.52435 +1048573,14.4845 +2097149,28.5768 +4194301,56.4818 +8388605,110.186 +16777213,221.373 +33554429,432.344 +67108861,890.471 +13,0.702464 +29,0.859136 +61,0.820224 +125,0.741376 +253,0.760832 +509,0.750592 +1021,0.856064 +2045,0.726016 +4093,0.919552 +8189,1.0752 +16381,1.0711 +32765,1.31277 +65533,1.8473 +131069,2.42381 +262141,4.18816 +524285,7.69946 +1048573,14.0687 +2097149,29.4922 +4194301,55.1782 +8388605,110.107 +16777213,215.78 +33554429,442.198 +67108861,881.337 +13,0.723968 +29,0.72704 +61,0.712704 +125,0.763904 +253,0.809984 +509,0.67072 +1021,0.699392 +2045,0.894976 +4093,0.93696 +8189,0.933888 +16381,1.04858 +32765,1.46534 +65533,1.68141 +131069,2.46682 +262141,4.20352 +524285,7.9913 +1048573,15.0405 +2097149,29.0642 +4194301,56.961 +8388605,110.626 +16777213,221.406 +33554429,434.377 +67108861,892.793 +13,0.863232 +29,0.743424 +61,0.703488 +125,1.0025 +253,1.59232 +509,0.724992 +1021,0.759808 +2045,0.848896 +4093,0.94208 +8189,1.06598 +16381,1.1008 +32765,1.42029 +65533,1.664 +131069,2.7433 +262141,4.9193 +524285,7.40861 +1048573,14.5388 +2097149,28.7345 +4194301,55.7599 +8388605,109.596 +16777213,218.213 +33554429,441.823 +67108861,879.23 +13,0.712704 +29,0.67072 +61,0.807936 +125,0.91648 +253,1.72749 +509,0.832512 +1021,0.823296 +2045,0.825344 +4093,0.903168 +8189,0.992256 +16381,1.07008 +32765,1.26566 +65533,1.72954 +131069,2.97779 +262141,4.22707 +524285,7.57862 +1048573,14.6483 +2097149,28.5635 +4194301,56.4326 +8388605,109.693 +16777213,220.661 +33554429,434.512 +67108861,893.033 +13,0.8192 +29,0.615424 +61,0.796672 +125,0.820224 +253,0.6912 +509,0.751616 +1021,0.818176 +2045,0.90624 +4093,0.934912 +8189,1.11104 +16381,1.07622 +32765,1.34861 +65533,1.73158 +131069,2.54874 +262141,4.05606 +524285,8.11725 +1048573,14.8234 +2097149,29.5752 +4194301,56.5709 +8388605,110.323 +16777213,217.662 +33554429,441.535 +67108861,879.397 +13,0.699392 +29,0.744448 +61,0.5888 +125,0.768 +253,0.626688 +509,0.598016 +1021,0.923648 +2045,0.900096 +4093,1.23904 +8189,1.02605 +16381,1.2247 +32765,1.27386 +65533,1.73158 +131069,2.5303 +262141,4.04787 +524285,7.95238 +1048573,14.678 +2097149,28.5686 +4194301,56.2555 +8388605,109.257 +16777213,221.842 +33554429,435.652 +67108861,892.83 +13,0.754688 +29,0.838656 +61,0.80384 +125,0.817152 +253,0.780288 +509,0.722944 +1021,1.01069 +2045,0.83968 +4093,0.879616 +8189,0.9728 +16381,1.10592 +32765,1.25747 +65533,1.72442 +131069,2.9737 +262141,4.36019 +524285,7.48544 +1048573,14.9391 +2097149,28.9004 +4194301,55.3103 +8388605,110.201 +16777213,216.78 +33554429,442.08 +67108861,877.513 +13,0.850944 +29,0.801792 +61,0.771072 +125,0.856064 +253,0.804864 +509,0.816128 +1021,1.11514 +2045,0.873472 +4093,0.933888 +8189,0.976896 +16381,1.09056 +32765,1.24518 +65533,1.75104 +131069,2.78016 +262141,4.25677 +524285,7.51411 +1048573,15.0313 +2097149,28.5696 +4194301,56.8156 +8388605,109.519 +16777213,221.729 +33554429,433.121 +67108861,893.339 +13,0.887808 +29,0.876544 +61,0.78336 +125,0.786432 +253,0.77312 +509,0.746496 +1021,1.05165 +2045,0.859136 +4093,0.864256 +8189,0.970752 +16381,1.0281 +32765,1.20832 +65533,1.72339 +131069,2.47501 +262141,4.096 +524285,7.41376 +1048573,14.3247 +2097149,28.7386 +4194301,55.8182 +8388605,110.291 +16777213,218.029 +33554429,443.327 +67108861,878.444 +13,0.905216 +29,0.728064 +61,0.812032 +125,0.71168 +253,0.784384 +509,0.813056 +1021,0.797696 +2045,0.918528 +4093,0.912384 +8189,0.950272 +16381,1.08032 +32765,1.30765 +65533,1.73466 +131069,2.83546 +262141,4.25472 +524285,7.49363 +1048573,14.7784 +2097149,28.4549 +4194301,56.2575 +8388605,110.504 +16777213,222.63 +33554429,431.764 +67108861,886.898 +13,0.720896 +29,0.770048 +61,0.613376 +125,0.75776 +253,0.731136 +509,0.90624 +1021,0.891904 +2045,0.84992 +4093,0.884736 +8189,0.990208 +16381,1.07213 +32765,1.5063 +65533,2.05517 +131069,2.48832 +262141,4.28032 +524285,7.64621 +1048573,14.6156 +2097149,29.5608 +4194301,55.3769 +8388605,110.538 +16777213,214.648 +33554429,441.921 +67108861,880.889 +13,0.7936 +29,1.07315 +61,0.843776 +125,0.695296 +253,0.785408 +509,0.826368 +1021,0.797696 +2045,0.836608 +4093,0.755712 +8189,1.04755 +16381,1.45408 +32765,1.18067 +65533,1.66502 +131069,2.43917 +262141,4.02842 +524285,7.50285 +1048573,14.9002 +2097149,28.3126 +4194301,56.3487 +8388605,110.595 +16777213,222.494 +33554429,433.995 +67108861,889.311 +13,0.78848 +29,0.741376 +61,0.584704 +125,0.782336 +253,0.786432 +509,0.822272 +1021,0.755712 +2045,0.899072 +4093,0.830464 +8189,0.960512 +16381,1.0455 +32765,1.21242 +65533,1.60358 +131069,2.70541 +262141,4.02022 +524285,7.58272 +1048573,15.0897 +2097149,28.7242 +4194301,55.6421 +8388605,110.431 +16777213,215.533 +33554429,442.348 +67108861,880.501 +13,0.858112 +29,0.86016 +61,0.63488 +125,0.817152 +253,0.81408 +509,0.871424 +1021,0.796672 +2045,0.896 +4093,0.887808 +8189,1.07008 +16381,2.14221 +32765,1.29536 +65533,2.01318 +131069,3.30342 +262141,4.87117 +524285,7.44243 +1048573,14.9985 +2097149,28.6904 +4194301,56.7316 +8388605,110.552 +16777213,220.395 +33554429,432.185 +67108861,889.246 +13,0.813056 +29,1.6087 +61,0.997376 +125,0.8448 +253,0.820224 +509,0.761856 +1021,0.710656 +2045,0.8704 +4093,0.871424 +8189,0.941056 +16381,1.08851 +32765,1.2503 +65533,1.7408 +131069,2.41869 +262141,4.0233 +524285,7.63699 +1048573,14.7067 +2097149,28.4948 +4194301,56.2381 +8388605,109.942 +16777213,216.605 +33554429,439.56 +67108861,875.72 +13,0.854016 +29,0.687104 +61,0.678912 +125,0.75776 +253,0.786432 +509,0.771072 +1021,0.789504 +2045,0.864256 +4093,0.862208 +8189,0.966656 +16381,1.00966 +32765,1.24314 +65533,1.66912 +131069,3.00544 +262141,4.41549 +524285,7.82029 +1048573,14.7569 +2097149,29.2669 +4194301,56.6743 +8388605,110.682 +16777213,220.972 +33554429,434.005 +67108861,892.998 +13,0.858112 +29,0.846848 +61,0.809984 +125,0.719872 +253,0.768 +509,0.76288 +1021,0.787456 +2045,0.910336 +4093,0.940032 +8189,0.91136 +16381,1.08134 +32765,1.42336 +65533,2.2231 +131069,2.53542 +262141,4.46874 +524285,7.41581 +1048573,14.292 +2097149,29.2465 +4194301,56.1879 +8388605,109.654 +16777213,219.009 +33554429,440.389 +67108861,878.867 +13,0.744448 +29,0.641024 +61,0.8704 +125,0.611328 +253,0.635904 +509,0.806912 +1021,0.755712 +2045,0.809984 +4093,1.39469 +8189,0.997376 +16381,1.34861 +32765,1.46432 +65533,1.90771 +131069,2.44838 +262141,4.49126 +524285,7.41478 +1048573,14.805 +2097149,28.7918 +4194301,57.8273 +8388605,111.084 +16777213,219.927 +33554429,435.006 +67108861,891.772 +13,0.771072 +29,0.881664 +61,0.941056 +125,0.764928 +253,1.06701 +509,0.888832 +1021,0.815104 +2045,0.893952 +4093,0.874496 +8189,0.954368 +16381,1.07725 +32765,1.31174 +65533,1.82784 +131069,2.52621 +262141,4.04378 +524285,7.57453 +1048573,14.6094 +2097149,29.1 +4194301,54.7901 +8388605,108.088 +16777213,216.943 +33554429,441.392 +67108861,878.801 +13,0.88064 +29,0.743424 +61,0.730112 +125,1.13459 +253,0.75776 +509,0.784384 +1021,0.8448 +2045,1.13869 +4093,0.899072 +8189,0.9728 +16381,1.0496 +32765,1.24109 +65533,1.6855 +131069,3.00339 +262141,4.79539 +524285,7.66976 +1048573,14.805 +2097149,28.8993 +4194301,55.7701 +8388605,110.413 +16777213,221.733 +33554429,432.759 +67108861,885.642 +13,0.91136 +29,0.82944 +61,0.77312 +125,0.796672 +253,0.772096 +509,0.799744 +1021,0.804864 +2045,1.27283 +4093,0.9472 +8189,0.994304 +16381,1.46944 +32765,1.38138 +65533,1.71008 +131069,2.78118 +262141,4.15437 +524285,8.41421 +1048573,14.3053 +2097149,28.5819 +4194301,55.6063 +8388605,109.575 +16777213,218.089 +33554429,442.174 +67108861,878.953 +13,0.705536 +29,0.925696 +61,0.900096 +125,0.780288 +253,0.59904 +509,0.75776 +1021,0.80896 +2045,0.871424 +4093,0.836608 +8189,0.900096 +16381,1.08134 +32765,1.47968 +65533,1.69472 +131069,2.44429 +262141,4.07552 +524285,7.64826 +1048573,14.7108 +2097149,28.0228 +4194301,55.8039 +8388605,109.387 +16777213,220.914 +33554429,433.237 +67108861,892.903 +13,0.792576 +29,0.602112 +61,0.760832 +125,0.610304 +253,0.799744 +509,0.78336 +1021,0.843776 +2045,0.8704 +4093,0.989184 +8189,0.948224 +16381,1.03014 +32765,1.27488 +65533,1.70906 +131069,2.46989 +262141,4.04378 +524285,7.50899 +1048573,14.4845 +2097149,28.8809 +4194301,56.2371 +8388605,110.012 +16777213,216.389 +33554429,440.913 +67108861,875.97 +13,0.731136 +29,0.764928 +61,0.912384 +125,0.811008 +253,0.694272 +509,0.88064 +1021,0.784384 +2045,0.836608 +4093,0.943104 +8189,1.1776 +16381,1.15814 +32765,1.27795 +65533,1.66707 +131069,2.4832 +262141,4.12467 +524285,7.72608 +1048573,15.0129 +2097149,28.4764 +4194301,56.2084 +8388605,110.395 +16777213,221.958 +33554429,435.63 +67108861,891.506 +13,0.90112 +29,0.85504 +61,0.811008 +125,0.697344 +253,0.73216 +509,0.772096 +1021,1.03014 +2045,0.89088 +4093,0.943104 +8189,0.918528 +16381,1.0496 +32765,1.24621 +65533,1.6128 +131069,2.49958 +262141,4.27827 +524285,7.6759 +1048573,14.6074 +2097149,29.4748 +4194301,56.0527 +8388605,109.35 +16777213,218.539 +33554429,440.6 +67108861,873.269 +13,0.787456 +29,0.731136 +61,0.903168 +125,0.857088 +253,0.809984 +509,0.792576 +1021,0.784384 +2045,1.4377 +4093,1.13971 +8189,1.28512 +16381,1.1049 +32765,1.30048 +65533,1.73875 +131069,2.57434 +262141,4.02534 +524285,7.62675 +1048573,14.8429 +2097149,28.3535 +4194301,56.834 +8388605,110.047 +16777213,220.79 +33554429,433.093 +67108861,894.239 +13,0.728064 +29,1.21856 +61,0.74752 +125,0.598016 +253,0.622592 +509,0.797696 +1021,0.77824 +2045,0.878592 +4093,1.0455 +8189,1.71622 +16381,1.01581 +32765,1.32198 +65533,1.85242 +131069,2.54976 +262141,3.94035 +524285,7.60525 +1048573,14.8378 +2097149,29.7011 +4194301,55.5182 +8388605,111.568 +16777213,217.151 +33554429,443.793 +67108861,877.828 +13,0.669696 +29,1.01274 +61,0.980992 +125,0.75264 +253,0.796672 +509,0.837632 +1021,0.813056 +2045,0.87552 +4093,0.908288 +8189,1.00762 +16381,1.13152 +32765,1.27488 +65533,1.67936 +131069,2.50266 +262141,3.98131 +524285,8.36813 +1048573,14.7446 +2097149,28.5256 +4194301,54.6048 +8388605,110.512 +16777213,222.738 +33554429,438.558 +67108861,891.864 +13,0.846848 +29,1.02502 +61,0.55808 +125,0.713728 +253,0.722944 +509,0.782336 +1021,0.805888 +2045,0.886784 +4093,0.919552 +8189,0.899072 +16381,1.06291 +32765,1.31789 +65533,1.75104 +131069,2.57126 +262141,4.29875 +524285,7.9913 +1048573,14.8163 +2097149,28.8952 +4194301,55.2765 +8388605,109.853 +16777213,216.552 +33554429,440.624 +67108861,879.34 +13,1.04755 +29,0.83968 +61,0.894976 +125,1.02298 +253,0.768 +509,0.772096 +1021,0.841728 +2045,0.886784 +4093,0.903168 +8189,0.94208 +16381,1.13254 +32765,1.2288 +65533,1.65069 +131069,2.71872 +262141,4.12467 +524285,7.64006 +1048573,14.8357 +2097149,28.3228 +4194301,56.0036 +8388605,109.769 +16777213,219.495 +33554429,436.27 +67108861,888.221 +13,0.72192 +29,0.654336 +61,0.730112 +125,0.904192 +253,0.800768 +509,0.825344 +1021,0.805888 +2045,0.8448 +4093,0.874496 +8189,0.940032 +16381,1.10182 +32765,1.31072 +65533,1.72442 +131069,2.59174 +262141,4.07347 +524285,7.85613 +1048573,14.4794 +2097149,30.0483 +4194301,54.3601 +8388605,109.889 +16777213,218.27 +33554429,440.773 +67108861,876.955 +13,0.770048 +29,0.959488 +61,1.05062 +125,0.771072 +253,0.77824 +509,0.809984 +1021,0.80384 +2045,0.914432 +4093,0.868352 +8189,1.08954 +16381,1.08339 +32765,1.57389 +65533,1.62202 +131069,2.44531 +262141,4.30797 +524285,7.72506 +1048573,14.2868 +2097149,29.0765 +4194301,55.85 +8388605,109.925 +16777213,219.971 +33554429,432.675 +67108861,889.311 +13,0.81408 +29,0.852992 +61,0.815104 +125,0.764928 +253,0.797696 +509,0.809984 +1021,1.14074 +2045,0.879616 +4093,0.902144 +8189,0.951296 +16381,1.08646 +32765,1.28 +65533,1.69165 +131069,2.49238 +262141,4.00896 +524285,7.56429 +1048573,14.1496 +2097149,28.2972 +4194301,55.4568 +8388605,110.425 +16777213,215.845 +33554429,443.125 +67108861,879.439 +13,0.842752 +29,0.740352 +61,0.760832 +125,0.772096 +253,1.13254 +509,0.7936 +1021,0.827392 +2045,0.881664 +4093,0.887808 +8189,0.918528 +16381,1.05062 +32765,1.28205 +65533,1.58208 +131069,2.50163 +262141,4.03456 +524285,7.72301 +1048573,14.4118 +2097149,28.2962 +4194301,56.2688 +8388605,109.663 +16777213,220.902 +33554429,434.857 +67108861,890.978 +13,0.754688 +29,0.809984 +61,0.816128 +125,0.802816 +253,0.882688 +509,0.796672 +1021,0.821248 +2045,1.15917 +4093,1.69472 +8189,0.945152 +16381,1.07315 +32765,1.36909 +65533,1.68653 +131069,2.48525 +262141,4.02534 +524285,8.00154 +1048573,14.6125 +2097149,28.7099 +4194301,56.2309 +8388605,110.088 +16777213,217.835 +33554429,440.331 +67108861,871.669 +13,0.740352 +29,0.592896 +61,0.830464 +125,0.766976 +253,0.739328 +509,1.0752 +1021,0.850944 +2045,0.85504 +4093,1.18784 +8189,1.07213 +16381,1.1264 +32765,1.24109 +65533,1.74899 +131069,2.59277 +262141,4.02227 +524285,7.94112 +1048573,14.5592 +2097149,28.7119 +4194301,56.9733 +8388605,109.796 +16777213,219.866 +33554429,433.165 +67108861,886.91 +13,0.954368 +29,0.76288 +61,0.636928 +125,0.815104 +253,0.78848 +509,0.816128 +1021,0.755712 +2045,0.912384 +4093,0.990208 +8189,0.975872 +16381,1.0967 +32765,1.25952 +65533,1.66298 +131069,2.48218 +262141,4.03456 +524285,7.93805 +1048573,14.3657 +2097149,28.8901 +4194301,55.2827 +8388605,110.724 +16777213,216.439 +33554429,440.673 +67108861,876.224 +13,0.854016 +29,0.864256 +61,0.848896 +125,0.772096 +253,0.779264 +509,0.794624 +1021,0.741376 +2045,0.851968 +4093,0.932864 +8189,1.11821 +16381,1.10387 +32765,1.26054 +65533,1.67629 +131069,2.49651 +262141,4.02534 +524285,7.63494 +1048573,14.5183 +2097149,28.0013 +4194301,56.32 +8388605,110.535 +16777213,217.857 +33554429,431.219 +67108861,882.032 +13,0.713728 +29,0.722944 +61,0.62464 +125,0.804864 +253,0.792576 +509,0.790528 +1021,0.820224 +2045,0.910336 +4093,0.929792 +8189,0.9984 +16381,1.47968 +32765,1.35885 +65533,1.77152 +131069,2.44531 +262141,4.224 +524285,8.4265 +1048573,14.423 +2097149,28.7713 +4194301,55.2919 +8388605,110.536 +16777213,216.594 +33554429,440.729 +67108861,879.223 +13,0.918528 +29,0.88064 +61,0.863232 +125,0.815104 +253,0.768 +509,0.712704 +1021,0.897024 +2045,0.86016 +4093,0.923648 +8189,1.13152 +16381,1.36499 +32765,1.40698 +65533,1.88109 +131069,2.48013 +262141,3.9424 +524285,8.50534 +1048573,14.9996 +2097149,28.2388 +4194301,56.2371 +8388605,110.237 +16777213,221.283 +33554429,435.387 +67108861,890.877 +13,0.863232 +29,0.841728 +61,0.851968 +125,0.736256 +253,0.831488 +509,0.893952 +1021,0.755712 +2045,0.87552 +4093,0.845824 +8189,0.960512 +16381,1.05472 +32765,1.26874 +65533,2.58867 +131069,2.4832 +262141,4.02944 +524285,8.05274 +1048573,14.466 +2097149,29.1379 +4194301,55.4107 +8388605,109.367 +16777213,216.517 +33554429,442.448 +67108861,875.182 +13,0.891904 +29,0.88064 +61,0.718848 +125,0.65024 +253,1.73568 +509,0.79872 +1021,0.796672 +2045,0.864256 +4093,0.889856 +8189,1.12435 +16381,1.03014 +32765,1.2503 +65533,1.82272 +131069,2.49958 +262141,4.0151 +524285,7.63904 +1048573,14.5869 +2097149,28.3935 +4194301,56.1674 +8388605,110.539 +16777213,222.124 +33554429,434.85 +67108861,889.198 +13,0.894976 +29,0.892928 +61,0.821248 +125,0.697344 +253,0.77312 +509,0.784384 +1021,0.797696 +2045,0.904192 +4093,0.900096 +8189,0.96768 +16381,1.07315 +32765,1.4633 +65533,1.71418 +131069,2.51494 +262141,4.11443 +524285,7.82131 +1048573,14.3247 +2097149,28.3945 +4194301,55.0636 +8388605,111.043 +16777213,218.179 +33554429,439.25 +67108861,869.888 +13,0.728064 +29,0.866304 +61,0.67584 +125,0.820224 +253,0.787456 +509,0.830464 +1021,0.951296 +2045,0.910336 +4093,0.944128 +8189,1.01478 +16381,1.06086 +32765,1.25235 +65533,1.66912 +131069,2.52723 +262141,4.46259 +524285,7.46701 +1048573,14.3872 +2097149,28.7283 +4194301,56.3753 +8388605,112.398 +16777213,221.485 +33554429,434.143 +67108861,889.511 +13,0.898048 +29,0.8704 +61,0.861184 +125,0.740352 +253,0.617472 +509,0.617472 +1021,0.765952 +2045,0.87552 +4093,0.88576 +8189,0.935936 +16381,1.1049 +32765,1.43872 +65533,1.69574 +131069,2.4873 +262141,4.06118 +524285,7.67386 +1048573,14.2909 +2097149,28.4723 +4194301,54.8362 +8388605,110.083 +16777213,217.998 +33554429,435.555 +67108861,873.336 +13,0.70656 +29,0.622592 +61,0.710656 +125,0.794624 +253,0.613376 +509,0.801792 +1021,0.903168 +2045,0.90112 +4093,0.933888 +8189,1.0455 +16381,1.03424 +32765,1.58413 +65533,1.6896 +131069,2.40742 +262141,4.11034 +524285,7.80902 +1048573,14.6422 +2097149,27.8077 +4194301,56.0026 +8388605,110.228 +16777213,219.572 +33554429,436.785 +67108861,891.38 +13,0.858112 +29,0.871424 +61,0.813056 +125,0.774144 +253,0.719872 +509,0.794624 +1021,0.812032 +2045,0.848896 +4093,0.873472 +8189,1.19091 +16381,1.11821 +32765,1.30867 +65533,1.74592 +131069,2.66957 +262141,4.41651 +524285,7.42605 +1048573,14.377 +2097149,28.716 +4194301,55.4967 +8388605,109.472 +16777213,217.837 +33554429,440.61 +67108861,880.093 +13,0.899072 +29,0.868352 +61,0.89088 +125,0.753664 +253,0.768 +509,0.79872 +1021,0.621568 +2045,0.886784 +4093,0.961536 +8189,0.974848 +16381,1.2073 +32765,1.29946 +65533,1.68141 +131069,2.41357 +262141,4.05094 +524285,7.56122 +1048573,14.4814 +2097149,28.3331 +4194301,55.6052 +8388605,109.705 +16777213,221.098 +33554429,433.759 +67108861,893.013 +13,0.70144 +29,0.843776 +61,0.673792 +125,0.8192 +253,1.00147 +509,0.790528 +1021,0.823296 +2045,0.87552 +4093,0.893952 +8189,1.09363 +16381,1.00966 +32765,1.27283 +65533,1.67219 +131069,2.88256 +262141,3.97107 +524285,7.6329 +1048573,14.8019 +2097149,29.3294 +4194301,55.7865 +8388605,109.363 +16777213,217.281 +33554429,442.529 +67108861,876.717 +13,0.569344 +29,0.754688 +61,0.771072 +125,0.851968 +253,0.801792 +509,0.775168 +1021,0.80896 +2045,0.900096 +4093,0.940032 +8189,0.866304 +16381,0.978944 +32765,1.70394 +65533,1.69984 +131069,2.49242 +262141,4.03866 +524285,7.49773 +1048573,14.7149 +2097149,28.1672 +4194301,55.5387 +8388605,110.537 +16777213,220.485 +33554429,434.65 +67108861,890.235 +13,0.8448 +29,0.886784 +61,0.884736 +125,0.78848 +253,0.78336 +509,0.743424 +1021,0.816128 +2045,0.879616 +4093,0.900096 +8189,0.96768 +16381,1.04858 +32765,1.24928 +65533,1.69165 +131069,2.45146 +262141,4.03046 +524285,7.6841 +1048573,14.5838 +2097149,28.6771 +4194301,56.3159 +8388605,109.15 +16777213,218.53 +33554429,440.539 +67108861,879.389 +13,0.766976 +29,0.80384 +61,0.827392 +125,0.77312 +253,0.694272 +509,0.789504 +1021,0.80384 +2045,0.872448 +4093,0.867328 +8189,0.903168 +16381,1.1776 +32765,1.27488 +65533,1.67526 +131069,2.93376 +262141,4.18714 +524285,7.43834 +1048573,14.6749 +2097149,27.9276 +4194301,55.3206 +8388605,110.761 +16777213,220.527 +33554429,430.95 +67108861,888.887 +13,0.637952 +29,0.882688 +61,0.641024 +125,0.827392 +253,0.787456 +509,0.736256 +1021,0.837632 +2045,0.905216 +4093,0.934912 +8189,1.01171 +16381,1.05882 +32765,1.37421 +65533,1.68653 +131069,2.56717 +262141,4.34483 +524285,7.40762 +1048573,14.466 +2097149,28.6956 +4194301,54.7912 +8388605,109.022 +16777213,216.979 +33554429,450.109 +67108861,874.487 +13,0.863232 +29,0.872448 +61,0.830464 +125,0.766976 +253,0.763904 +509,0.791552 +1021,0.900096 +2045,0.869376 +4093,0.856064 +8189,0.948224 +16381,1.06189 +32765,1.29331 +65533,1.72851 +131069,2.72486 +262141,4.04275 +524285,7.93805 +1048573,14.5889 +2097149,28.2819 +4194301,55.7926 +8388605,109.9 +16777213,221.976 +33554429,437.357 +67108861,890.806 +13,0.84992 +29,0.763904 +61,0.856064 +125,0.826368 +253,0.775168 +509,0.77824 +1021,0.816128 +2045,0.884736 +4093,0.879616 +8189,0.950272 +16381,1.06394 +32765,1.21037 +65533,1.70906 +131069,2.46682 +262141,4.03763 +524285,7.91654 +1048573,14.9463 +2097149,28.5071 +4194301,55.3861 +8388605,110.211 +16777213,216.634 +33554429,438.343 +67108861,877.777 +13,0.602112 +29,0.607232 +61,0.822272 +125,0.818176 +253,0.776192 +509,0.82432 +1021,0.856064 +2045,0.841728 +4093,0.904192 +8189,0.996352 +16381,1.02502 +32765,1.29229 +65533,1.69472 +131069,2.96448 +262141,4.03149 +524285,7.48646 +1048573,14.635 +2097149,28.545 +4194301,55.9903 +8388605,110.36 +16777213,219.828 +33554429,434.499 +67108861,894.084 +13,0.565248 +29,0.863232 +61,0.712704 +125,0.769024 +253,0.789504 +509,0.801792 +1021,0.811008 +2045,0.873472 +4093,0.935936 +8189,1.0752 +16381,1.38035 +32765,1.3865 +65533,1.69062 +131069,2.50266 +262141,4.07552 +524285,7.61446 +1048573,14.3514 +2097149,28.2194 +4194301,56.2278 +8388605,110.542 +16777213,218.227 +33554429,440.844 +67108861,876.077 +13,0.776192 +29,0.828416 +61,0.759808 +125,0.769024 +253,0.785408 +509,0.807936 +1021,0.801792 +2045,0.883712 +4093,0.86528 +8189,0.996352 +16381,1.11718 +32765,1.3056 +65533,2.05824 +131069,2.47091 +262141,4.09088 +524285,7.40454 +1048573,14.7999 +2097149,28.7427 +4194301,55.7322 +8388605,109.38 +16777213,220.656 +33554429,433.133 +67108861,892.641 +13,0.915456 +29,0.748544 +61,1.22061 +125,0.63488 +253,0.820224 +509,0.780288 +1021,0.832512 +2045,0.868352 +4093,0.892928 +8189,0.969728 +16381,1.04448 +32765,1.29024 +65533,1.69062 +131069,2.59072 +262141,4.09395 +524285,7.77114 +1048573,14.6309 +2097149,28.2481 +4194301,54.9519 +8388605,109.565 +16777213,217.356 +33554429,438.997 +67108861,875.64 +13,0.896 +29,0.748544 +61,0.751616 +125,0.800768 +253,0.786432 +509,0.784384 +1021,0.802816 +2045,0.811008 +4093,0.867328 +8189,0.963584 +16381,1.10074 +32765,1.23392 +65533,1.78074 +131069,2.46989 +262141,4.05402 +524285,7.43117 +1048573,14.5797 +2097149,28.5245 +4194301,56.7439 +8388605,112.713 +16777213,220.741 +33554429,433.989 +67108861,887.183 +13,0.817152 +29,0.820224 +61,0.75776 +125,0.735232 +253,0.761856 +509,0.786432 +1021,0.736256 +2045,0.836608 +4093,0.912384 +8189,0.935936 +16381,1.05984 +32765,1.27795 +65533,2.38592 +131069,2.49037 +262141,4.05811 +524285,7.6544 +1048573,14.2746 +2097149,28.6249 +4194301,55.8848 +8388605,110.649 +16777213,217.477 +33554429,441.765 +67108861,880.681 +13,0.882688 +29,1.00864 +61,0.886784 +125,0.759808 +253,0.621568 +509,0.800768 +1021,0.8192 +2045,0.86528 +4093,0.896 +8189,0.966656 +16381,1.13152 +32765,1.29126 +65533,2.1289 +131069,2.54157 +262141,4.1001 +524285,7.49875 +1048573,14.7743 +2097149,28.6812 +4194301,56.278 +8388605,109.301 +16777213,220.452 +33554429,433.338 +67108861,889.916 +13,0.896 +29,0.743424 +61,0.743424 +125,0.88064 +253,0.88064 +509,0.65024 +1021,0.667648 +2045,0.820224 +4093,0.937984 +8189,1.30253 +16381,1.10182 +32765,1.30662 +65533,1.71827 +131069,2.42995 +262141,4.24448 +524285,7.44346 +1048573,14.6022 +2097149,28.6515 +4194301,55.081 +8388605,110.001 +16777213,216.704 +33554429,442.775 +67108861,877.692 +13,0.777216 +29,0.801792 +61,0.800768 +125,0.812032 +253,0.781312 +509,0.792576 +1021,0.801792 +2045,0.857088 +4093,0.892928 +8189,1.04346 +16381,1.08134 +32765,1.26976 +65533,1.88723 +131069,2.47808 +262141,4.03251 +524285,8.33843 +1048573,14.6831 +2097149,28.4099 +4194301,55.1967 +8388605,109.802 +16777213,223.149 +33554429,432.338 +67108861,883.339 +13,0.565248 +29,0.499712 +61,0.616448 +125,0.50688 +253,0.736256 +509,0.564224 +1021,0.58368 +2045,0.673792 +4093,0.992256 +8189,1.09056 +16381,1.17043 +32765,1.34758 +65533,1.48787 +131069,2.54464 +262141,4.13389 +524285,8.47462 +1048573,14.6698 +2097149,28.5952 +4194301,55.8029 +8388605,110.986 +16777213,217.446 +33554429,446.061 +67108861,881.403 +13,0.850944 +29,0.884736 +61,1.0793 +125,0.858112 +253,0.759808 +509,0.795648 +1021,0.774144 +2045,0.856064 +4093,0.840704 +8189,1.12845 +16381,1.07725 +32765,1.30458 +65533,1.76742 +131069,2.48115 +262141,4.06528 +524285,7.7568 +1048573,14.6002 +2097149,28.3197 +4194301,56.9539 +8388605,109.577 +16777213,223.434 +33554429,433.927 +67108861,894.306 +13,0.887808 +29,0.934912 +61,0.904192 +125,0.57856 +253,0.64 +509,0.780288 +1021,0.7936 +2045,0.822272 +4093,0.856064 +8189,0.958464 +16381,1.3271 +32765,1.29536 +65533,1.71725 +131069,2.67878 +262141,4.0233 +524285,7.84179 +1048573,14.508 +2097149,29.8004 +4194301,55.7732 +8388605,111.204 +16777213,219.277 +33554429,446.06 +67108861,883.714 +13,0.899072 +29,0.749568 +61,0.889856 +125,0.758784 +253,0.57344 +509,0.729088 +1021,0.673792 +2045,0.806912 +4093,1.28819 +8189,1.08851 +16381,1.29434 +32765,1.44486 +65533,1.66298 +131069,2.54259 +262141,4.33152 +524285,7.41274 +1048573,14.7958 +2097149,27.7719 +4194301,56.7828 +8388605,109.137 +16777213,221.88 +33554429,435.279 +67108861,892.272 +13,0.858112 +29,0.745472 +61,0.771072 +125,0.620544 +253,0.74752 +509,0.955392 +1021,0.84992 +2045,0.910336 +4093,1.01581 +8189,0.96256 +16381,1.0711 +32765,1.31072 +65533,1.73261 +131069,2.44941 +262141,4.3305 +524285,7.77728 +1048573,15.5054 +2097149,29.4349 diff --git a/Project2-Stream-Compaction/data/Scan_data/data_nonpow2/naive.csv b/Project2-Stream-Compaction/data/Scan_data/data_nonpow2/naive.csv new file mode 100644 index 0000000..7e00541 --- /dev/null +++ b/Project2-Stream-Compaction/data/Scan_data/data_nonpow2/naive.csv @@ -0,0 +1,3468 @@ +13,0.78848 +29,0.577568 +61,0.515104 +125,0.538656 +253,0.633888 +509,0.633856 +1021,0.569344 +2045,0.550912 +4093,0.7168 +8189,0.612384 +16381,0.859168 +32765,0.943072 +65533,1.68653 +131069,2.30198 +262141,4.08678 +524285,7.75987 +1048573,16.257 +2097149,31.7532 +4194301,60.3873 +8388605,114.596 +16777213,233.576 +33554429,479.864 +67108861,940.764 +13,0.631808 +29,0.632832 +61,0.592896 +125,0.617472 +253,0.740352 +509,0.65024 +1021,0.702464 +2045,0.65024 +4093,0.565248 +8189,0.797696 +16381,0.80896 +32765,1.12026 +65533,1.47866 +131069,2.44941 +262141,4.19226 +524285,8.05888 +1048573,14.8449 +2097149,29.313 +4194301,56.8422 +8388605,113.047 +16777213,229.787 +33554429,461.272 +67108861,929.762 +13,0.616448 +29,0.519168 +61,0.638976 +125,0.622592 +253,0.879616 +509,0.944128 +1021,0.644096 +2045,0.679936 +4093,0.83456 +8189,0.802816 +16381,1.00454 +32765,1.56672 +65533,1.46432 +131069,2.80064 +262141,4.32538 +524285,8.09882 +1048573,14.8808 +2097149,28.5194 +4194301,56.3579 +8388605,113.422 +16777213,227.882 +33554429,460.56 +67108861,929.059 +13,0.495616 +29,0.589824 +61,0.649216 +125,0.473088 +253,0.835584 +509,0.541696 +1021,0.833536 +2045,0.970752 +4093,0.684032 +8189,0.712704 +16381,0.854016 +32765,0.953344 +65533,1.47661 +131069,2.30605 +262141,4.35712 +524285,7.72301 +1048573,15.3774 +2097149,29.7349 +4194301,57.2948 +8388605,113.704 +16777213,228.367 +33554429,461.875 +67108861,931.698 +13,0.579584 +29,0.589824 +61,0.638976 +125,0.61952 +253,0.581632 +509,0.535552 +1021,0.6656 +2045,0.712704 +4093,0.80384 +8189,0.730112 +16381,0.908288 +32765,1.16634 +65533,1.45613 +131069,2.82419 +262141,4.28442 +524285,7.75578 +1048573,15.232 +2097149,29.8168 +4194301,57.2662 +8388605,113.378 +16777213,228.241 +33554429,460.875 +67108861,930.913 +13,0.553984 +29,0.622592 +61,0.671744 +125,0.618496 +253,0.5376 +509,0.607232 +1021,0.55808 +2045,0.663552 +4093,0.84992 +8189,0.932864 +16381,0.943104 +32765,1.04038 +65533,1.53088 +131069,2.69722 +262141,4.33661 +524285,7.90528 +1048573,14.9463 +2097149,29.2618 +4194301,57.4095 +8388605,113.178 +16777213,231.726 +33554429,465.281 +67108861,932.215 +13,0.57856 +29,0.621568 +61,0.598016 +125,0.618496 +253,0.535552 +509,0.590848 +1021,0.714752 +2045,0.620544 +4093,0.690176 +8189,0.863232 +16381,0.90624 +32765,0.961536 +65533,1.43667 +131069,2.26509 +262141,4.34995 +524285,7.64416 +1048573,14.5869 +2097149,30.0534 +4194301,56.234 +8388605,113.55 +16777213,228.105 +33554429,458.935 +67108861,932.61 +13,0.627712 +29,0.427008 +61,0.632832 +125,0.485376 +253,0.545792 +509,0.571392 +1021,0.601088 +2045,0.580608 +4093,0.549888 +8189,0.740352 +16381,0.806912 +32765,0.966656 +65533,1.44998 +131069,2.26918 +262141,4.72371 +524285,8.00051 +1048573,15.0047 +2097149,29.8609 +4194301,58.199 +8388605,113.738 +16777213,229.298 +33554429,462.368 +67108861,931.537 +13,0.5888 +29,0.556032 +61,0.47104 +125,0.480256 +253,0.528384 +509,0.510976 +1021,0.58368 +2045,0.925696 +4093,0.687104 +8189,0.598016 +16381,0.874496 +32765,1.05984 +65533,1.44384 +131069,2.28659 +262141,4.06016 +524285,8.1193 +1048573,15.3825 +2097149,28.9823 +4194301,56.8658 +8388605,113.41 +16777213,228.959 +33554429,464.778 +67108861,931.89 +13,0.689152 +29,0.612352 +61,0.664576 +125,0.623616 +253,0.627712 +509,0.666624 +1021,0.753664 +2045,0.677888 +4093,1.13869 +8189,0.789504 +16381,0.821248 +32765,1.0967 +65533,1.5913 +131069,2.30707 +262141,4.22502 +524285,7.6585 +1048573,15.2064 +2097149,29.6069 +4194301,57.2467 +8388605,114.149 +16777213,228.016 +33554429,462.565 +67108861,931.718 +13,0.55808 +29,0.557056 +61,0.625664 +125,0.524288 +253,0.525312 +509,0.774144 +1021,0.774144 +2045,0.729088 +4093,0.925696 +8189,0.734208 +16381,0.840704 +32765,1.05984 +65533,1.76947 +131069,2.41664 +262141,4.23117 +524285,8.76851 +1048573,15.2207 +2097149,28.8031 +4194301,56.6979 +8388605,114.035 +16777213,229.147 +33554429,460.355 +67108861,933.104 +13,0.594944 +29,0.615424 +61,0.817152 +125,0.553984 +253,0.540672 +509,0.785408 +1021,0.712704 +2045,0.81408 +4093,0.710656 +8189,0.739328 +16381,0.913408 +32765,1.29946 +65533,1.46739 +131069,2.23334 +262141,4.32845 +524285,7.62061 +1048573,15.6006 +2097149,28.6474 +4194301,58.3967 +8388605,113.483 +16777213,227.168 +33554429,461.591 +67108861,931.369 +13,0.538624 +29,0.605184 +61,0.770048 +125,0.807936 +253,0.678912 +509,0.862208 +1021,0.730112 +2045,0.801792 +4093,0.687104 +8189,0.86016 +16381,0.86016 +32765,1.09773 +65533,1.52371 +131069,2.32243 +262141,4.12058 +524285,7.74554 +1048573,15.8403 +2097149,29.2639 +4194301,59.3971 +8388605,114.167 +16777213,229.063 +33554429,461.781 +67108861,933.5 +13,0.581632 +29,0.493568 +61,0.621568 +125,0.512 +253,0.679936 +509,0.666624 +1021,0.641024 +2045,0.628736 +4093,0.72192 +8189,0.758784 +16381,0.811008 +32765,1.37523 +65533,1.49709 +131069,2.23437 +262141,4.95923 +524285,8.0681 +1048573,15.1521 +2097149,28.9526 +4194301,59.5999 +8388605,113.883 +16777213,232.983 +33554429,463.19 +67108861,935.998 +13,0.724992 +29,0.705536 +61,0.848896 +125,0.632832 +253,0.602112 +509,0.653312 +1021,0.56832 +2045,0.768 +4093,0.707584 +8189,1.06701 +16381,0.98816 +32765,1.10285 +65533,1.44998 +131069,2.2999 +262141,4.23014 +524285,7.88275 +1048573,15.4255 +2097149,29.7011 +4194301,57.0081 +8388605,112.428 +16777213,228.108 +33554429,462.127 +67108861,934.219 +13,0.724992 +29,0.8704 +61,0.794624 +125,0.513024 +253,0.530432 +509,0.690176 +1021,0.585728 +2045,0.591872 +4093,0.764928 +8189,0.816128 +16381,0.90624 +32765,1.1817 +65533,1.49299 +131069,2.25075 +262141,4.28339 +524285,7.90016 +1048573,14.9709 +2097149,29.1348 +4194301,58.58 +8388605,113.128 +16777213,230.167 +33554429,458.357 +67108861,929.798 +13,0.766976 +29,0.543744 +61,0.497664 +125,0.518144 +253,0.628736 +509,0.678912 +1021,0.55296 +2045,0.557056 +4093,0.60928 +8189,0.776192 +16381,0.775168 +32765,1.18886 +65533,1.55341 +131069,2.28352 +262141,4.11136 +524285,7.87763 +1048573,15.5996 +2097149,29.1737 +4194301,57.2959 +8388605,113.421 +16777213,228.742 +33554429,461.869 +67108861,926.029 +13,0.473088 +29,0.776192 +61,0.541696 +125,0.516096 +253,0.523264 +509,1.29536 +1021,0.52736 +2045,0.647168 +4093,1.44589 +8189,0.694272 +16381,0.755712 +32765,1.11411 +65533,1.60563 +131069,2.33882 +262141,4.53222 +524285,7.90118 +1048573,14.7108 +2097149,30.0329 +4194301,57.1392 +8388605,113.988 +16777213,229.293 +33554429,463.078 +67108861,930.994 +13,0.677888 +29,0.681984 +61,0.627712 +125,0.591872 +253,0.653312 +509,1.16531 +1021,0.969728 +2045,0.695296 +4093,0.758784 +8189,0.687104 +16381,0.791552 +32765,1.13152 +65533,1.52371 +131069,2.31014 +262141,4.11648 +524285,7.79162 +1048573,15.3825 +2097149,29.3345 +4194301,58.4888 +8388605,114.651 +16777213,230.62 +33554429,461.022 +67108861,930.635 +13,0.673792 +29,0.590848 +61,0.65024 +125,0.610304 +253,0.562176 +509,0.780288 +1021,0.591872 +2045,0.748544 +4093,0.786432 +8189,0.937984 +16381,0.908288 +32765,1.18067 +65533,1.48685 +131069,2.31014 +262141,4.2455 +524285,8.45005 +1048573,15.4993 +2097149,29.3304 +4194301,57.5621 +8388605,113.044 +16777213,228.819 +33554429,464.075 +67108861,935.826 +13,0.556032 +29,0.56832 +61,0.820224 +125,0.714752 +253,0.718848 +509,0.656384 +1021,0.555008 +2045,0.718848 +4093,0.730112 +8189,0.859136 +16381,1.42643 +32765,1.1479 +65533,1.44691 +131069,2.40845 +262141,4.4247 +524285,8.04147 +1048573,16.5724 +2097149,27.8139 +4194301,57.0143 +8388605,113.384 +16777213,228.425 +33554429,461.883 +67108861,937.09 +13,0.719872 +29,0.58368 +61,0.50688 +125,0.631808 +253,0.530432 +509,0.539648 +1021,0.760832 +2045,0.723968 +4093,1.01069 +8189,0.666624 +16381,0.915456 +32765,0.997376 +65533,1.5104 +131069,2.61427 +262141,4.88448 +524285,7.89197 +1048573,15.0436 +2097149,28.8707 +4194301,57.8826 +8388605,113.619 +16777213,228.007 +33554429,460.758 +67108861,927.411 +13,0.627712 +29,0.625664 +61,0.751616 +125,0.52736 +253,0.647168 +509,0.581632 +1021,0.667648 +2045,0.723968 +4093,0.796672 +8189,0.73216 +16381,1.01069 +32765,1.09568 +65533,1.41005 +131069,2.24973 +262141,4.16461 +524285,7.70253 +1048573,14.9494 +2097149,29.6028 +4194301,57.8519 +8388605,113.952 +16777213,227.564 +33554429,461.563 +67108861,930.079 +13,0.562176 +29,0.543744 +61,0.590848 +125,0.625664 +253,0.530432 +509,0.510976 +1021,0.627712 +2045,0.559104 +4093,0.813056 +8189,0.72192 +16381,0.750592 +32765,1.05062 +65533,1.49504 +131069,2.3593 +262141,4.51277 +524285,8.30464 +1048573,15.23 +2097149,30.3974 +4194301,58.4387 +8388605,113.253 +16777213,230.451 +33554429,461.157 +67108861,931.18 +13,0.500736 +29,0.488448 +61,1.07827 +125,0.7424 +253,0.845824 +509,0.661504 +1021,0.692224 +2045,0.555008 +4093,0.728064 +8189,0.641024 +16381,0.749568 +32765,1.1049 +65533,1.53805 +131069,2.23949 +262141,4.34995 +524285,7.68717 +1048573,15.019 +2097149,29.2803 +4194301,57.3184 +8388605,115.252 +16777213,229.087 +33554429,460.287 +67108861,926.888 +13,0.575488 +29,0.60928 +61,0.590848 +125,0.605184 +253,0.637952 +509,0.592896 +1021,0.565248 +2045,0.61952 +4093,0.663552 +8189,0.636928 +16381,0.756736 +32765,1.17965 +65533,1.36397 +131069,2.32243 +262141,4.34381 +524285,8.0384 +1048573,15.4685 +2097149,29.3847 +4194301,58.4305 +8388605,114.938 +16777213,228.043 +33554429,460.794 +67108861,923.099 +13,0.431104 +29,0.68096 +61,0.513024 +125,0.524288 +253,0.528384 +509,0.50176 +1021,0.526336 +2045,0.540672 +4093,0.577536 +8189,0.628736 +16381,0.941056 +32765,1.06086 +65533,1.51142 +131069,2.26406 +262141,4.29261 +524285,7.78752 +1048573,15.0282 +2097149,29.0458 +4194301,57.6655 +8388605,113.398 +16777213,229.109 +33554429,461.018 +67108861,928.077 +13,0.513024 +29,0.515072 +61,0.67072 +125,0.702464 +253,1.48275 +509,0.51712 +1021,0.551936 +2045,0.540672 +4093,0.738304 +8189,0.636928 +16381,0.881664 +32765,1.16634 +65533,1.3609 +131069,2.4279 +262141,4.26701 +524285,7.72608 +1048573,15.0508 +2097149,29.0949 +4194301,56.2872 +8388605,114.033 +16777213,228.768 +33554429,460.896 +67108861,928.911 +13,0.551936 +29,0.489472 +61,0.676864 +125,0.535552 +253,0.531456 +509,0.52224 +1021,0.649216 +2045,0.707584 +4093,0.603136 +8189,0.842752 +16381,0.940032 +32765,1.2032 +65533,1.42234 +131069,2.304 +262141,4.2752 +524285,7.91245 +1048573,15.7696 +2097149,29.5997 +4194301,57.3911 +8388605,112.526 +16777213,228.471 +33554429,458.793 +67108861,929.126 +13,0.493568 +29,0.495616 +61,0.714752 +125,0.700416 +253,0.774144 +509,0.886784 +1021,0.66048 +2045,0.852992 +4093,0.756736 +8189,0.826368 +16381,1.1223 +32765,1.07622 +65533,1.3865 +131069,2.65011 +262141,4.352 +524285,7.89606 +1048573,15.5781 +2097149,30.1199 +4194301,57.4444 +8388605,113.044 +16777213,227.855 +33554429,461.74 +67108861,926.644 +13,0.560128 +29,0.49664 +61,0.733184 +125,0.472064 +253,0.785408 +509,0.539648 +1021,0.633856 +2045,0.596992 +4093,0.764928 +8189,0.796672 +16381,0.785408 +32765,1.47968 +65533,1.39059 +131069,2.32141 +262141,4.72474 +524285,7.79981 +1048573,14.6207 +2097149,28.714 +4194301,58.5564 +8388605,115.26 +16777213,228.293 +33554429,463.545 +67108861,931.032 +13,0.483328 +29,0.49152 +61,0.622592 +125,0.47616 +253,0.52224 +509,0.6144 +1021,0.54272 +2045,0.671744 +4093,0.611328 +8189,0.67072 +16381,0.842752 +32765,0.992256 +65533,1.6128 +131069,2.69312 +262141,4.33152 +524285,8.07526 +1048573,14.9268 +2097149,29.6008 +4194301,57.0153 +8388605,112.044 +16777213,228.025 +33554429,462.705 +67108861,929.998 +13,0.571392 +29,0.479232 +61,0.556032 +125,0.50176 +253,0.529408 +509,0.535552 +1021,0.67584 +2045,1.48173 +4093,0.681984 +8189,0.826368 +16381,0.751616 +32765,0.961536 +65533,1.35782 +131069,2.33267 +262141,4.38477 +524285,7.71277 +1048573,15.1286 +2097149,29.5854 +4194301,58.4294 +8388605,112.961 +16777213,228.607 +33554429,461.649 +67108861,930.312 +13,0.500736 +29,0.754688 +61,0.68096 +125,0.512 +253,0.690176 +509,0.590848 +1021,0.598016 +2045,0.540672 +4093,0.607232 +8189,0.631808 +16381,0.801792 +32765,1.01786 +65533,1.9712 +131069,2.24973 +262141,4.30899 +524285,8.21555 +1048573,15.1122 +2097149,29.527 +4194301,58.2083 +8388605,114.038 +16777213,227.988 +33554429,460.709 +67108861,928.109 +13,0.759808 +29,0.504832 +61,0.647168 +125,0.623616 +253,0.498688 +509,0.503808 +1021,0.615424 +2045,0.692224 +4093,0.777216 +8189,0.62464 +16381,0.746496 +32765,1.0025 +65533,1.44384 +131069,2.40742 +262141,4.864 +524285,7.76397 +1048573,14.7302 +2097149,29.3755 +4194301,57.4935 +8388605,113.554 +16777213,228.616 +33554429,460.989 +67108861,928.011 +13,0.518144 +29,0.52224 +61,0.509952 +125,0.689152 +253,0.606208 +509,0.729088 +1021,0.556032 +2045,0.582656 +4093,0.58368 +8189,0.617472 +16381,0.874496 +32765,1.37523 +65533,1.48582 +131069,2.23949 +262141,4.18816 +524285,7.8592 +1048573,15.1788 +2097149,28.887 +4194301,59.6163 +8388605,114.151 +16777213,229.037 +33554429,461.521 +67108861,930.938 +13,0.627712 +29,0.6656 +61,0.492544 +125,0.52224 +253,0.53248 +509,0.672768 +1021,0.80384 +2045,0.550912 +4093,0.66048 +8189,0.723968 +16381,0.78336 +32765,1.1049 +65533,1.60768 +131069,2.5641 +262141,4.65306 +524285,7.72096 +1048573,14.978 +2097149,29.2024 +4194301,57.4515 +8388605,113.975 +16777213,229.367 +33554429,460.875 +67108861,931.082 +13,0.613376 +29,0.50688 +61,0.661504 +125,0.559104 +253,0.745472 +509,0.535552 +1021,0.620544 +2045,0.86016 +4093,0.809984 +8189,0.801792 +16381,0.881664 +32765,1.08851 +65533,1.38138 +131069,2.48422 +262141,4.91827 +524285,8.14387 +1048573,15.1951 +2097149,29.6438 +4194301,58.0526 +8388605,113.556 +16777213,228.272 +33554429,460.312 +67108861,932.609 +13,0.54272 +29,0.536576 +61,1.1479 +125,0.760832 +253,0.969728 +509,0.963584 +1021,0.560128 +2045,0.553984 +4093,0.822272 +8189,0.707584 +16381,1.10285 +32765,0.997376 +65533,1.39162 +131069,2.31731 +262141,4.8937 +524285,7.88685 +1048573,14.9975 +2097149,29.5608 +4194301,57.3194 +8388605,113.753 +16777213,228.549 +33554429,461.901 +67108861,927.171 +13,0.574464 +29,0.473088 +61,0.505856 +125,0.55808 +253,0.698368 +509,0.838656 +1021,0.602112 +2045,0.561152 +4093,1.46637 +8189,0.835584 +16381,0.903168 +32765,0.949248 +65533,1.97635 +131069,2.41459 +262141,4.31923 +524285,7.72096 +1048573,14.7661 +2097149,29.7339 +4194301,56.9682 +8388605,114.009 +16777213,230.093 +33554429,461.882 +67108861,929.348 +13,0.429056 +29,0.510976 +61,0.669696 +125,0.488448 +253,0.591872 +509,0.649216 +1021,0.59392 +2045,0.543744 +4093,0.561152 +8189,0.62976 +16381,0.754688 +32765,1.00659 +65533,1.51859 +131069,2.31526 +262141,4.224 +524285,7.95853 +1048573,15.0333 +2097149,29.1082 +4194301,57.2815 +8388605,115.484 +16777213,227.932 +33554429,460.066 +67108861,928.621 +13,0.586752 +29,0.488448 +61,0.561152 +125,0.565248 +253,0.536576 +509,0.528384 +1021,0.630784 +2045,0.77312 +4093,1.51859 +8189,0.941056 +16381,1.23392 +32765,1.35168 +65533,1.41414 +131069,2.2528 +262141,4.1472 +524285,7.98208 +1048573,14.634 +2097149,28.7478 +4194301,56.8412 +8388605,111.683 +16777213,227.572 +33554429,458.504 +67108861,929.711 +13,0.724992 +29,0.464896 +61,0.77312 +125,0.58368 +253,0.492544 +509,0.510976 +1021,0.60928 +2045,0.64512 +4093,1.14688 +8189,1.23392 +16381,0.932864 +32765,1.08544 +65533,1.44896 +131069,2.40845 +262141,4.864 +524285,7.80083 +1048573,15.6805 +2097149,29.4441 +4194301,57.1689 +8388605,114.345 +16777213,227.702 +33554429,461.031 +67108861,929.705 +13,0.750592 +29,0.65024 +61,0.529408 +125,0.633856 +253,0.533504 +509,0.533504 +1021,0.585728 +2045,0.720896 +4093,0.572416 +8189,0.796672 +16381,0.87552 +32765,1.07315 +65533,1.46022 +131069,2.35725 +262141,4.8425 +524285,8.02202 +1048573,14.9637 +2097149,29.5158 +4194301,57.0214 +8388605,112.495 +16777213,228.104 +33554429,461.342 +67108861,932.817 +13,0.422912 +29,0.524288 +61,0.46592 +125,0.55296 +253,0.484352 +509,0.535552 +1021,0.590848 +2045,0.717824 +4093,0.784384 +8189,0.72704 +16381,0.88576 +32765,1.38035 +65533,1.51962 +131069,2.48627 +262141,4.39501 +524285,7.87046 +1048573,15.2095 +2097149,29.4861 +4194301,57.5007 +8388605,113.163 +16777213,227.765 +33554429,460.204 +67108861,929.246 +13,0.48128 +29,0.503808 +61,0.507904 +125,0.508928 +253,0.510976 +509,1.00045 +1021,0.909312 +2045,0.67584 +4093,0.841728 +8189,0.65024 +16381,0.792576 +32765,0.997376 +65533,1.8985 +131069,2.21696 +262141,4.18099 +524285,7.78445 +1048573,14.9852 +2097149,29.6837 +4194301,57.7894 +8388605,113.271 +16777213,227.784 +33554429,460.858 +67108861,931.002 +13,0.416768 +29,0.479232 +61,0.508928 +125,0.515072 +253,0.683008 +509,0.571392 +1021,0.787456 +2045,0.585728 +4093,0.615424 +8189,0.66048 +16381,0.80384 +32765,1.01376 +65533,1.82579 +131069,2.34394 +262141,4.20352 +524285,7.68 +1048573,15.2248 +2097149,29.4748 +4194301,57.5652 +8388605,112.044 +16777213,228.946 +33554429,462.716 +67108861,926.534 +13,0.970752 +29,0.499712 +61,0.52736 +125,0.565248 +253,1.32198 +509,0.647168 +1021,0.919552 +2045,0.581632 +4093,0.821248 +8189,0.684032 +16381,1.12742 +32765,1.24723 +65533,1.54931 +131069,2.3767 +262141,4.20147 +524285,8.01792 +1048573,14.9903 +2097149,28.8737 +4194301,58.3537 +8388605,112.908 +16777213,228.864 +33554429,460.441 +67108861,929.739 +13,0.662528 +29,0.512 +61,0.627712 +125,0.74752 +253,0.575488 +509,0.600064 +1021,0.730112 +2045,0.6656 +4093,0.96768 +8189,0.8448 +16381,0.821248 +32765,1.06086 +65533,1.74797 +131069,2.5303 +262141,4.32333 +524285,7.99334 +1048573,15.5075 +2097149,29.2618 +4194301,57.3133 +8388605,112.696 +16777213,228.523 +33554429,461.272 +67108861,928.098 +13,0.553984 +29,0.492544 +61,0.470016 +125,0.508928 +253,0.49152 +509,0.728064 +1021,0.698368 +2045,0.54784 +4093,0.868352 +8189,0.65024 +16381,0.88576 +32765,1.23802 +65533,1.63738 +131069,2.27635 +262141,4.29363 +524285,7.5479 +1048573,14.6401 +2097149,28.7805 +4194301,58.368 +8388605,113.721 +16777213,227.909 +33554429,461.355 +67108861,928.008 +13,0.574464 +29,0.524288 +61,0.70656 +125,0.712704 +253,0.514048 +509,0.556032 +1021,0.65536 +2045,0.566272 +4093,0.77312 +8189,0.631808 +16381,0.918528 +32765,1.20525 +65533,1.6087 +131069,2.29478 +262141,4.5271 +524285,7.65747 +1048573,15.3262 +2097149,29.5127 +4194301,58.1161 +8388605,114.446 +16777213,229.362 +33554429,461.299 +67108861,929.321 +13,0.672768 +29,0.482304 +61,0.521216 +125,0.500736 +253,0.466944 +509,0.577536 +1021,0.631808 +2045,0.5888 +4093,0.739328 +8189,0.669696 +16381,0.822272 +32765,1.0199 +65533,1.52064 +131069,2.28966 +262141,4.13082 +524285,7.59501 +1048573,14.6678 +2097149,28.6751 +4194301,57.8806 +8388605,113.068 +16777213,227.07 +33554429,461.244 +67108861,927.624 +13,0.490496 +29,0.495616 +61,0.759808 +125,0.518144 +253,0.525312 +509,0.641024 +1021,0.585728 +2045,0.60416 +4093,0.674816 +8189,0.82432 +16381,0.771072 +32765,1.04346 +65533,1.6128 +131069,2.29478 +262141,4.14413 +524285,8.18278 +1048573,15.2566 +2097149,29.3704 +4194301,57.5017 +8388605,113.608 +16777213,228.371 +33554429,460.825 +67108861,926.053 +13,0.521216 +29,0.494592 +61,0.65536 +125,0.669696 +253,0.530432 +509,0.594944 +1021,0.566272 +2045,0.776192 +4093,0.888832 +8189,0.922624 +16381,0.805888 +32765,1.14995 +65533,1.65888 +131069,2.77402 +262141,4.22605 +524285,7.92371 +1048573,15.3897 +2097149,29.2895 +4194301,57.4771 +8388605,112.937 +16777213,228.902 +33554429,459.568 +67108861,928.792 +13,0.473088 +29,0.49152 +61,0.497664 +125,0.516096 +253,0.530432 +509,0.559104 +1021,0.572416 +2045,0.846848 +4093,0.567296 +8189,0.864256 +16381,0.753664 +32765,1.04243 +65533,1.41517 +131069,2.32755 +262141,4.09907 +524285,8.57293 +1048573,15.0682 +2097149,29.5363 +4194301,56.5484 +8388605,114.189 +16777213,228.902 +33554429,459.252 +67108861,929.821 +13,0.562176 +29,0.497664 +61,0.504832 +125,0.61952 +253,0.62976 +509,0.539648 +1021,0.553984 +2045,0.569344 +4093,0.576512 +8189,0.77824 +16381,0.88576 +32765,0.964608 +65533,1.41005 +131069,2.36134 +262141,4.39091 +524285,8.38451 +1048573,15.4235 +2097149,28.8471 +4194301,57.2273 +8388605,111.399 +16777213,223.374 +33554429,460.08 +67108861,925.006 +13,0.669696 +29,0.575488 +61,0.503808 +125,0.524288 +253,0.52736 +509,0.484352 +1021,0.656384 +2045,0.720896 +4093,0.616448 +8189,0.823296 +16381,0.780288 +32765,0.991232 +65533,1.51859 +131069,2.24973 +262141,4.33971 +524285,8.10803 +1048573,15.0886 +2097149,28.8748 +4194301,57.5089 +8388605,114.219 +16777213,228.22 +33554429,462.467 +67108861,931.041 +13,0.643072 +29,0.47616 +61,0.72192 +125,0.601088 +253,0.520192 +509,0.544768 +1021,0.715776 +2045,0.633856 +4093,0.611328 +8189,0.677888 +16381,0.869376 +32765,0.980992 +65533,1.60154 +131069,2.34189 +262141,4.25165 +524285,7.78854 +1048573,14.5848 +2097149,29.226 +4194301,59.3398 +8388605,114.51 +16777213,228.201 +33554429,459.207 +67108861,927.745 +13,0.467968 +29,0.484352 +61,0.754688 +125,0.62464 +253,0.63488 +509,0.72192 +1021,0.65024 +2045,0.78336 +4093,0.693248 +8189,0.631808 +16381,0.933888 +32765,1.11206 +65533,1.45818 +131069,2.3593 +262141,4.18918 +524285,7.73734 +1048573,15.0886 +2097149,28.4129 +4194301,57.9133 +8388605,112.947 +16777213,229.579 +33554429,461.264 +67108861,925.491 +13,0.52736 +29,0.512 +61,0.49664 +125,0.516096 +253,0.528384 +509,0.55296 +1021,0.549888 +2045,0.54272 +4093,0.543744 +8189,0.62464 +16381,0.905216 +32765,0.991232 +65533,1.37523 +131069,2.44122 +262141,4.47898 +524285,8.27085 +1048573,15.0077 +2097149,29.4646 +4194301,57.0716 +8388605,115.125 +16777213,228.189 +33554429,462.913 +67108861,930.746 +13,0.553984 +29,0.594944 +61,0.518144 +125,0.572416 +253,0.57344 +509,0.570368 +1021,0.559104 +2045,0.586752 +4093,0.615424 +8189,0.796672 +16381,0.892928 +32765,0.995328 +65533,1.39776 +131069,2.16678 +262141,4.59878 +524285,7.63187 +1048573,15.3344 +2097149,29.4277 +4194301,59.222 +8388605,113.182 +16777213,228.451 +33554429,461.245 +67108861,924.488 +13,0.528384 +29,0.536576 +61,0.49664 +125,1.08032 +253,0.521216 +509,0.684032 +1021,0.622592 +2045,0.689152 +4093,0.580608 +8189,0.62464 +16381,0.861184 +32765,1.28512 +65533,1.32813 +131069,2.25178 +262141,4.01818 +524285,8.70912 +1048573,16.1444 +2097149,28.9864 +4194301,57.4116 +8388605,113.447 +16777213,228.467 +33554429,457.909 +67108861,931.874 +13,0.572416 +29,0.635904 +61,0.463872 +125,0.464896 +253,0.740352 +509,0.64 +1021,0.804864 +2045,0.973824 +4093,0.80384 +8189,0.821248 +16381,0.914432 +32765,1.3056 +65533,1.51347 +131069,2.40026 +262141,4.28134 +524285,7.47213 +1048573,15.3385 +2097149,29.738 +4194301,57.9144 +8388605,113.121 +16777213,227.892 +33554429,460.671 +67108861,924.84 +13,0.43008 +29,0.428032 +61,0.500736 +125,0.512 +253,0.556032 +509,0.64 +1021,0.533504 +2045,0.567296 +4093,0.570368 +8189,0.677888 +16381,0.784384 +32765,1.00352 +65533,1.86778 +131069,2.33984 +262141,4.33562 +524285,8.1449 +1048573,15.4829 +2097149,29.0734 +4194301,58.623 +8388605,113.893 +16777213,227.481 +33554429,460.5 +67108861,927.253 +13,0.63488 +29,0.57856 +61,0.448512 +125,0.507904 +253,0.618496 +509,0.70144 +1021,0.557056 +2045,0.640992 +4093,1.04448 +8189,0.66048 +16381,0.913408 +32765,1.16429 +65533,1.44998 +131069,2.2487 +262141,4.0919 +524285,7.85306 +1048573,15.4532 +2097149,29.2116 +4194301,57.6307 +8388605,113.1 +16777213,228.487 +33554429,462.244 +67108861,927.236 +13,0.748544 +29,0.569344 +61,0.736256 +125,0.71168 +253,0.516096 +509,0.544768 +1021,0.663552 +2045,0.770048 +4093,1.21856 +8189,0.6912 +16381,0.800768 +32765,1.1479 +65533,1.41517 +131069,2.27328 +262141,4.31104 +524285,8.10189 +1048573,15.4972 +2097149,29.3048 +4194301,57.5365 +8388605,113.118 +16777213,228.363 +33554429,464.397 +67108861,933.069 +13,0.724992 +29,0.661504 +61,0.479232 +125,0.500736 +253,0.551936 +509,0.523264 +1021,0.618496 +2045,0.913408 +4093,0.592896 +8189,0.6144 +16381,0.93696 +32765,1.04858 +65533,1.51654 +131069,2.3081 +262141,4.26598 +524285,7.68512 +1048573,14.592 +2097149,29.7841 +4194301,57.5826 +8388605,113.509 +16777213,229.236 +33554429,463.402 +67108861,931.504 +13,0.697344 +29,0.590848 +61,0.704512 +125,0.602112 +253,0.520192 +509,0.5376 +1021,0.62464 +2045,0.613376 +4093,0.589824 +8189,0.618496 +16381,0.75264 +32765,0.963584 +65533,1.67014 +131069,2.29171 +262141,4.25574 +524285,7.85101 +1048573,15.0845 +2097149,29.2977 +4194301,58.2646 +8388605,112.825 +16777213,228.394 +33554429,460.204 +67108861,931.621 +13,0.72704 +29,1.08442 +61,0.546816 +125,0.658432 +253,0.524288 +509,0.524288 +1021,0.55296 +2045,0.57856 +4093,0.617472 +8189,0.64512 +16381,0.89088 +32765,1.11104 +65533,1.52883 +131069,2.39411 +262141,4.12262 +524285,7.74554 +1048573,14.3596 +2097149,29.4216 +4194301,57.898 +8388605,114.062 +16777213,228.25 +33554429,461.54 +67108861,927.727 +13,0.749568 +29,0.484352 +61,0.888832 +125,0.560128 +253,0.740352 +509,0.56832 +1021,0.55296 +2045,0.72192 +4093,0.60928 +8189,0.766976 +16381,0.893952 +32765,1.79814 +65533,1.59027 +131069,2.27738 +262141,4.24448 +524285,7.71379 +1048573,14.8101 +2097149,29.1779 +4194301,57.4679 +8388605,115.072 +16777213,227.812 +33554429,461.926 +67108861,932.765 +13,0.49152 +29,0.546816 +61,0.586752 +125,0.507904 +253,0.493568 +509,0.495616 +1021,0.84992 +2045,0.59904 +4093,0.610304 +8189,0.816128 +16381,0.817152 +32765,1.03219 +65533,1.38035 +131069,2.25178 +262141,4.18099 +524285,7.92883 +1048573,15.2054 +2097149,29.0202 +4194301,58.668 +8388605,113.866 +16777213,228.991 +33554429,460.278 +67108861,929.366 +13,0.618496 +29,0.489472 +61,0.503808 +125,0.633856 +253,0.526336 +509,0.60416 +1021,0.54784 +2045,0.891904 +4093,0.56832 +8189,0.617472 +16381,0.772096 +32765,1.12845 +65533,1.4807 +131069,2.30496 +262141,4.23424 +524285,8.18893 +1048573,15.1398 +2097149,30.6678 +4194301,58.8749 +8388605,113.481 +16777213,228.425 +33554429,462.82 +67108861,927.218 +13,0.569344 +29,0.598016 +61,0.516096 +125,0.603136 +253,0.525312 +509,0.5376 +1021,0.52224 +2045,0.643072 +4093,0.658432 +8189,0.622592 +16381,0.812032 +32765,0.954368 +65533,1.45203 +131069,2.57946 +262141,4.6592 +524285,8.08038 +1048573,15.1265 +2097149,29.9715 +4194301,57.2303 +8388605,114.55 +16777213,226.729 +33554429,462.283 +67108861,929.295 +13,0.52736 +29,0.488448 +61,0.468992 +125,0.516096 +253,0.802816 +509,0.502784 +1021,0.530432 +2045,0.550912 +4093,0.786432 +8189,0.616448 +16381,0.91136 +32765,1.03117 +65533,1.40902 +131069,2.42995 +262141,4.73498 +524285,8.38349 +1048573,14.6688 +2097149,30.0739 +4194301,57.8755 +8388605,114.115 +16777213,228.94 +33554429,461.422 +67108861,931.345 +13,0.751616 +29,0.43008 +61,0.539648 +125,0.513024 +253,0.684032 +509,0.569344 +1021,0.6912 +2045,0.540672 +4093,0.569344 +8189,0.841728 +16381,0.72192 +32765,1.18374 +65533,1.4592 +131069,2.49139 +262141,4.38989 +524285,7.87149 +1048573,14.7538 +2097149,29.0417 +4194301,58.7203 +8388605,113.532 +16777213,227.973 +33554429,460.808 +67108861,929.49 +13,0.699392 +29,0.49152 +61,0.694272 +125,0.498688 +253,0.78336 +509,0.67072 +1021,0.68608 +2045,0.694272 +4093,0.643072 +8189,1.03424 +16381,0.91648 +32765,0.949248 +65533,1.50528 +131069,2.36544 +262141,4.2967 +524285,8.69376 +1048573,14.9565 +2097149,29.5721 +4194301,58.1089 +8388605,114.801 +16777213,226.686 +33554429,460.491 +67108861,930.984 +13,0.653312 +29,0.685056 +61,0.551936 +125,0.792576 +253,0.676864 +509,0.531456 +1021,0.543744 +2045,0.5376 +4093,0.56832 +8189,0.971776 +16381,0.940032 +32765,1.11923 +65533,1.34861 +131069,2.28454 +262141,4.33459 +524285,7.77011 +1048573,14.7834 +2097149,29.0898 +4194301,58.453 +8388605,113.434 +16777213,229.883 +33554429,461.593 +67108861,928.529 +13,0.759808 +29,0.490496 +61,0.50176 +125,0.503808 +253,0.55296 +509,0.526336 +1021,0.55808 +2045,0.579584 +4093,0.83456 +8189,0.795648 +16381,0.785408 +32765,1.04038 +65533,2.31117 +131069,2.40845 +262141,4.38374 +524285,7.67898 +1048573,15.0651 +2097149,29.3898 +4194301,58.6025 +8388605,114.227 +16777213,228.031 +33554429,462.332 +67108861,928.171 +13,0.765952 +29,0.468992 +61,0.502784 +125,0.674816 +253,1.26874 +509,0.502784 +1021,0.731136 +2045,0.688128 +4093,0.567296 +8189,0.805888 +16381,0.896 +32765,1.08032 +65533,1.36806 +131069,2.34086 +262141,4.23424 +524285,7.51309 +1048573,15.2648 +2097149,29.4881 +4194301,56.8556 +8388605,113.402 +16777213,228.608 +33554429,463.451 +67108861,928.133 +13,0.69632 +29,0.70656 +61,0.513024 +125,0.499712 +253,0.577536 +509,0.538624 +1021,0.523264 +2045,0.749568 +4093,0.73728 +8189,0.674816 +16381,0.779264 +32765,1.30867 +65533,1.90362 +131069,2.24768 +262141,4.26496 +524285,7.93395 +1048573,14.9473 +2097149,29.9704 +4194301,56.9836 +8388605,113.179 +16777213,228.613 +33554429,461.392 +67108861,929.435 +13,0.627712 +29,0.959488 +61,0.72192 +125,0.590848 +253,0.524288 +509,0.64512 +1021,0.62464 +2045,0.713728 +4093,0.741376 +8189,0.65024 +16381,0.749568 +32765,1.12435 +65533,1.6128 +131069,2.40538 +262141,4.28954 +524285,7.66157 +1048573,14.8572 +2097149,29.8701 +4194301,58.0977 +8388605,114.253 +16777213,229.012 +33554429,460.017 +67108861,931.065 +13,0.5888 +29,0.750592 +61,0.627712 +125,0.518144 +253,0.674816 +509,0.657408 +1021,0.526336 +2045,0.785408 +4093,0.84992 +8189,1.46432 +16381,0.90624 +32765,0.954368 +65533,1.57901 +131069,2.36749 +262141,4.34688 +524285,7.65747 +1048573,14.8091 +2097149,29.5772 +4194301,57.9441 +8388605,113.549 +16777213,229.464 +33554429,461.668 +67108861,932.681 +13,0.620544 +29,1.536 +61,0.67584 +125,0.652288 +253,0.649216 +509,0.5632 +1021,0.524288 +2045,0.7424 +4093,0.781312 +8189,0.656384 +16381,1.08749 +32765,1.03322 +65533,1.89747 +131069,2.70234 +262141,4.5312 +524285,7.89606 +1048573,15.0221 +2097149,29.0847 +4194301,57.3481 +8388605,115.212 +16777213,229.339 +33554429,461.227 +67108861,928.124 +13,0.601056 +29,0.495616 +61,0.582656 +125,0.545792 +253,0.562176 +509,0.657408 +1021,0.616448 +2045,0.536576 +4093,0.58368 +8189,0.662528 +16381,0.746496 +32765,1.16838 +65533,1.57286 +131069,2.34496 +262141,4.19226 +524285,7.54995 +1048573,14.5551 +2097149,28.887 +4194301,56.4449 +8388605,113.699 +16777213,228.503 +33554429,461.795 +67108861,927.491 +13,0.5376 +29,0.612352 +61,0.495616 +125,0.556032 +253,0.776192 +509,0.526336 +1021,0.555008 +2045,0.57744 +4093,0.570368 +8189,0.611328 +16381,0.744448 +32765,1.2073 +65533,1.58208 +131069,2.29274 +262141,4.24755 +524285,7.73939 +1048573,15.1316 +2097149,29.782 +4194301,57.346 +8388605,114.382 +16777213,227.707 +33554429,460.469 +67108861,933.366 +13,0.608256 +29,0.600064 +61,0.661504 +125,0.509952 +253,0.605184 +509,0.52736 +1021,0.567296 +2045,0.530432 +4093,0.571392 +8189,0.618496 +16381,0.944128 +32765,1.15814 +65533,1.61075 +131069,2.44224 +262141,4.10522 +524285,7.7824 +1048573,15.7215 +2097149,29.8639 +4194301,57.9994 +8388605,115.77 +16777213,227.845 +33554429,460.719 +67108861,928.693 +13,0.4608 +29,0.559104 +61,0.528384 +125,0.749568 +253,0.60416 +509,0.579584 +1021,0.705536 +2045,0.545792 +4093,0.763904 +8189,0.61952 +16381,0.751616 +32765,1.45818 +65533,1.42131 +131069,2.32141 +262141,4.26701 +524285,7.71072 +1048573,15.5064 +2097149,29.738 +4194301,58.0577 +8388605,113.788 +16777213,227.26 +33554429,462.174 +67108861,929.168 +13,0.5888 +29,0.519168 +61,0.52736 +125,0.55808 +253,0.523264 +509,0.525312 +1021,0.564224 +2045,0.605184 +4093,1.09978 +8189,0.618496 +16381,0.945152 +32765,1.10182 +65533,1.54931 +131069,2.29171 +262141,4.49434 +524285,8.00768 +1048573,15.1972 +2097149,29.2024 +4194301,57.5631 +8388605,114.145 +16777213,228.308 +33554429,460.887 +67108861,933.396 +13,0.638976 +29,0.68096 +61,0.73216 +125,0.500736 +253,0.528384 +509,1.06701 +1021,0.55296 +2045,0.779264 +4093,0.74752 +8189,0.618496 +16381,0.749568 +32765,0.954368 +65533,1.35782 +131069,2.3337 +262141,4.36122 +524285,7.7609 +1048573,14.8296 +2097149,29.4052 +4194301,57.3911 +8388605,113.168 +16777213,226.294 +33554429,460.091 +67108861,921.294 +13,0.530432 +29,0.482304 +61,0.580608 +125,0.596992 +253,0.474112 +509,0.615424 +1021,0.627712 +2045,0.6912 +4093,0.559104 +8189,0.636928 +16381,0.758784 +32765,1.15507 +65533,1.35066 +131069,2.37158 +262141,4.28646 +524285,7.74451 +1048573,14.8961 +2097149,29.4717 +4194301,57.598 +8388605,113.566 +16777213,230.657 +33554429,461.841 +67108861,930.211 +13,0.72704 +29,0.493568 +61,0.717824 +125,0.5376 +253,0.513024 +509,0.666624 +1021,0.550912 +2045,0.58368 +4093,0.590848 +8189,0.657408 +16381,0.91648 +32765,1.06803 +65533,1.44486 +131069,2.39104 +262141,4.26291 +524285,7.90323 +1048573,15.2136 +2097149,28.9751 +4194301,57.2303 +8388605,113.199 +16777213,224.713 +33554429,460.772 +67108861,931.974 +13,0.546816 +29,0.590848 +61,0.502784 +125,0.626688 +253,0.509952 +509,0.541696 +1021,0.567296 +2045,0.581632 +4093,0.78336 +8189,0.61952 +16381,0.75264 +32765,0.975872 +65533,1.45203 +131069,2.26202 +262141,4.59571 +524285,7.71584 +1048573,14.6749 +2097149,29.0488 +4194301,57.5867 +8388605,113.486 +16777213,230.087 +33554429,461.591 +67108861,931.851 +13,0.605184 +29,0.497664 +61,0.57856 +125,0.48128 +253,0.490496 +509,0.525312 +1021,0.681984 +2045,0.694272 +4093,0.843776 +8189,0.611328 +16381,0.753664 +32765,1.03117 +65533,1.46125 +131069,2.23437 +262141,4.66227 +524285,8.01075 +1048573,16.4076 +2097149,29.1635 +4194301,57.9318 +8388605,115.506 +16777213,228.209 +33554429,461.287 +67108861,930.514 +13,0.492544 +29,0.484352 +61,0.565248 +125,0.529408 +253,0.47104 +509,0.618496 +1021,0.559104 +2045,0.671744 +4093,0.594944 +8189,0.707584 +16381,0.774144 +32765,0.976896 +65533,1.44794 +131069,2.79654 +262141,4.46566 +524285,8.31283 +1048573,15.1409 +2097149,29.0662 +4194301,57.8621 +8388605,113.9 +16777213,227.205 +33554429,461.251 +67108861,925.665 +13,0.613376 +29,0.603136 +61,0.580608 +125,0.499712 +253,0.51712 +509,0.548864 +1021,0.606208 +2045,0.618496 +4093,1.02195 +8189,0.944128 +16381,0.939008 +32765,1.04346 +65533,1.53395 +131069,2.40538 +262141,4.44314 +524285,7.92474 +1048573,15.3754 +2097149,30.337 +4194301,56.5361 +8388605,113.781 +16777213,228.768 +33554429,462.147 +67108861,926.898 +13,0.75776 +29,0.480256 +61,0.526336 +125,0.75264 +253,0.62976 +509,0.672768 +1021,0.648192 +2045,0.804864 +4093,0.9472 +8189,0.621568 +16381,0.769024 +32765,0.989184 +65533,1.45818 +131069,2.54669 +262141,4.28032 +524285,8.0384 +1048573,15.0518 +2097149,29.1932 +4194301,56.7542 +8388605,114.476 +16777213,230.715 +33554429,460.151 +67108861,929.467 +13,0.617472 +29,0.48128 +61,0.489472 +125,0.51712 +253,0.4864 +509,0.497664 +1021,0.515072 +2045,0.82432 +4093,0.702464 +8189,0.618496 +16381,0.751616 +32765,1.04858 +65533,1.41619 +131069,2.4791 +262141,4.44518 +524285,7.76499 +1048573,14.8675 +2097149,28.0392 +4194301,57.2611 +8388605,113.502 +16777213,227.753 +33554429,463.653 +67108861,931.74 +13,0.786432 +29,0.556032 +61,0.55296 +125,0.521216 +253,0.52224 +509,0.489472 +1021,0.695296 +2045,0.60416 +4093,0.765952 +8189,0.772096 +16381,0.956416 +32765,1.0711 +65533,1.58925 +131069,2.28864 +262141,4.28134 +524285,7.7353 +1048573,14.6606 +2097149,30.1732 +4194301,57.7987 +8388605,112.744 +16777213,228.995 +33554429,462.95 +67108861,928.804 +13,0.724992 +29,0.657408 +61,0.50688 +125,0.715776 +253,0.677888 +509,0.654336 +1021,0.618496 +2045,0.543744 +4093,0.560128 +8189,0.612352 +16381,0.746496 +32765,1.0281 +65533,1.4633 +131069,2.29888 +262141,4.25677 +524285,7.68102 +1048573,15.23 +2097149,29.822 +4194301,57.3972 +8388605,113.195 +16777213,229.775 +33554429,461.073 +67108861,927.636 +13,0.555008 +29,0.550912 +61,0.505856 +125,0.504832 +253,0.507904 +509,0.56832 +1021,0.941056 +2045,0.688128 +4093,0.669696 +8189,0.6144 +16381,0.800768 +32765,1.03424 +65533,1.49094 +131069,2.30502 +262141,4.63667 +524285,7.95341 +1048573,15.5576 +2097149,29.7216 +4194301,57.2713 +8388605,113.667 +16777213,228.229 +33554429,459.409 +67108861,927.395 +13,0.42496 +29,0.805888 +61,0.499712 +125,0.498688 +253,0.608256 +509,0.498688 +1021,0.530432 +2045,0.673792 +4093,0.574464 +8189,0.806912 +16381,0.760832 +32765,1.02707 +65533,1.44384 +131069,2.31322 +262141,4.99405 +524285,7.66259 +1048573,15.02 +2097149,29.3868 +4194301,58.709 +8388605,113.207 +16777213,229.277 +33554429,457.677 +67108861,930.851 +13,0.601088 +29,0.560128 +61,0.493568 +125,0.498688 +253,0.62976 +509,0.545792 +1021,0.613376 +2045,0.586752 +4093,0.590848 +8189,0.616448 +16381,0.937984 +32765,1.02605 +65533,1.55955 +131069,2.34701 +262141,4.28032 +524285,7.68717 +1048573,15.615 +2097149,29.7697 +4194301,56.9016 +8388605,114.891 +16777213,228.617 +33554429,463.899 +67108861,931.351 +13,0.70144 +29,0.688128 +61,0.519168 +125,0.550912 +253,0.510976 +509,0.7424 +1021,0.610304 +2045,0.613376 +4093,0.745472 +8189,0.80384 +16381,0.924672 +32765,1.04755 +65533,1.45606 +131069,2.38182 +262141,4.54144 +524285,8.0087 +1048573,14.7384 +2097149,29.3724 +4194301,57.4044 +8388605,113.624 +16777213,225.656 +33554429,460.535 +67108861,926.838 +13,0.672768 +29,0.67072 +61,0.483328 +125,0.51712 +253,0.508928 +509,0.512 +1021,0.556032 +2045,0.56832 +4093,0.753664 +8189,0.601088 +16381,0.809984 +32765,0.95232 +65533,1.41722 +131069,2.30502 +262141,4.22912 +524285,7.82848 +1048573,15.0968 +2097149,29.7738 +4194301,57.258 +8388605,115.465 +16777213,228.972 +33554429,459.55 +67108861,930.346 +13,0.564224 +29,0.637952 +61,0.443392 +125,0.513024 +253,0.48128 +509,0.497664 +1021,0.526336 +2045,0.53248 +4093,0.713728 +8189,0.843776 +16381,0.899072 +32765,1.14381 +65533,1.41312 +131069,2.60608 +262141,4.46157 +524285,7.88173 +1048573,15.2904 +2097149,28.9925 +4194301,57.94 +8388605,113.65 +16777213,228.587 +33554429,462.304 +67108861,927.122 +13,0.765952 +29,0.669696 +61,0.822272 +125,0.69632 +253,0.861184 +509,0.611328 +1021,0.75264 +2045,0.627712 +4093,0.564224 +8189,0.632832 +16381,0.892928 +32765,1.15814 +65533,1.47046 +131069,2.2487 +262141,4.43699 +524285,7.85613 +1048573,14.5224 +2097149,30.5111 +4194301,58.3199 +8388605,114.391 +16777213,229.192 +33554429,460.341 +67108861,930.614 +13,0.628736 +29,0.668672 +61,1.15507 +125,0.979968 +253,0.623616 +509,0.539648 +1021,0.649216 +2045,0.763904 +4093,0.570368 +8189,0.898048 +16381,0.748544 +32765,1.12742 +65533,1.61178 +131069,2.26202 +262141,4.55782 +524285,7.69946 +1048573,15.1532 +2097149,28.6618 +4194301,57.9205 +8388605,113.926 +16777213,228.332 +33554429,461.926 +67108861,931.145 +13,0.656384 +29,0.484352 +61,0.669696 +125,0.704512 +253,0.512 +509,0.782336 +1021,0.52224 +2045,0.73216 +4093,0.760832 +8189,0.617472 +16381,0.919552 +32765,0.95232 +65533,1.36499 +131069,2.27533 +262141,4.34074 +524285,8.07629 +1048573,15.019 +2097149,29.9059 +4194301,56.7552 +8388605,113.959 +16777213,229.34 +33554429,460.049 +67108861,924.6 +13,0.5632 +29,0.45568 +61,0.586752 +125,0.540672 +253,0.510976 +509,0.608256 +1021,0.883712 +2045,0.569344 +4093,0.667648 +8189,0.620544 +16381,0.797696 +32765,1.03117 +65533,1.53907 +131069,2.30605 +262141,4.16973 +524285,7.83155 +1048573,14.6954 +2097149,29.4881 +4194301,58.7704 +8388605,114.465 +16777213,229.041 +33554429,462.216 +67108861,930.091 +13,0.567296 +29,0.479232 +61,0.518144 +125,0.514048 +253,0.520192 +509,0.495616 +1021,0.700416 +2045,0.85504 +4093,0.562176 +8189,0.618496 +16381,0.743424 +32765,0.95232 +65533,1.45408 +131069,2.31117 +262141,4.46874 +524285,8.22784 +1048573,15.019 +2097149,29.1932 +4194301,56.2524 +8388605,114.059 +16777213,227.717 +33554429,464.131 +67108861,928.91 +13,0.5376 +29,0.478208 +61,0.555008 +125,0.559104 +253,0.484352 +509,0.525312 +1021,0.548864 +2045,0.564224 +4093,0.872448 +8189,0.76288 +16381,0.82432 +32765,1.01683 +65533,1.50426 +131069,2.28147 +262141,4.22707 +524285,7.86534 +1048573,14.6094 +2097149,29.0406 +4194301,56.9293 +8388605,113.566 +16777213,228.859 +33554429,459.049 +67108861,924.171 +13,0.750592 +29,0.49664 +61,0.494592 +125,0.516096 +253,0.62976 +509,0.493568 +1021,1.20525 +2045,0.751616 +4093,0.828416 +8189,0.615424 +16381,1.16736 +32765,1.03629 +65533,1.90566 +131069,2.29888 +262141,4.31923 +524285,7.85306 +1048573,14.8439 +2097149,29.1052 +4194301,56.9825 +8388605,113.309 +16777213,229.517 +33554429,461.15 +67108861,927.474 +13,0.582592 +29,0.553984 +61,0.57344 +125,0.503808 +253,0.52224 +509,0.536576 +1021,0.551936 +2045,0.787456 +4093,0.596992 +8189,0.663552 +16381,0.749568 +32765,1.02605 +65533,1.44998 +131069,2.41869 +262141,4.49024 +524285,7.83155 +1048573,14.7067 +2097149,29.0652 +4194301,56.9723 +8388605,114.019 +16777213,230.773 +33554429,462.273 +67108861,923.784 +13,0.538624 +29,0.485376 +61,0.498688 +125,0.499712 +253,0.523264 +509,0.538624 +1021,0.544768 +2045,0.5632 +4093,0.595968 +8189,0.641024 +16381,0.774144 +32765,0.99328 +65533,1.5063 +131069,2.41152 +262141,4.36634 +524285,8.00768 +1048573,15.2924 +2097149,28.5788 +4194301,56.9395 +8388605,113.973 +16777213,227.682 +33554429,464.673 +67108861,922.609 +13,0.546816 +29,0.551936 +61,0.498688 +125,0.503808 +253,0.512 +509,0.7168 +1021,0.551936 +2045,0.562176 +4093,0.595968 +8189,0.659456 +16381,0.77312 +32765,0.978944 +65533,1.61792 +131069,2.25792 +262141,4.37453 +524285,8.12339 +1048573,14.9105 +2097149,29.5485 +4194301,57.0819 +8388605,113.433 +16777213,228.898 +33554429,462.502 +67108861,930.447 +13,0.717824 +29,0.560128 +61,0.495616 +125,0.516096 +253,0.516096 +509,0.535552 +1021,0.567296 +2045,0.561152 +4093,0.595968 +8189,0.714752 +16381,0.903168 +32765,1.06906 +65533,1.4592 +131069,2.31731 +262141,4.35917 +524285,8.60262 +1048573,14.5295 +2097149,29.3806 +4194301,57.5693 +8388605,112.738 +16777213,228.078 +33554429,459.389 +67108861,928.963 +13,0.662528 +29,0.659456 +61,0.654336 +125,0.700416 +253,0.508928 +509,1.08032 +1021,0.55296 +2045,0.564224 +4093,0.61952 +8189,0.667648 +16381,0.805888 +32765,1.03424 +65533,1.44896 +131069,2.27123 +262141,4.31206 +524285,7.76294 +1048573,15.2351 +2097149,28.4416 +4194301,57.8939 +8388605,113.861 +16777213,227.913 +33554429,459.892 +67108861,930.102 +13,0.60416 +29,0.483328 +61,0.436224 +125,0.475136 +253,0.519168 +509,0.524288 +1021,0.545792 +2045,0.528384 +4093,0.5632 +8189,0.662528 +16381,0.796672 +32765,1.00659 +65533,1.44384 +131069,2.26714 +262141,4.47283 +524285,8.0425 +1048573,14.85 +2097149,29.1533 +4194301,57.0778 +8388605,113.866 +16777213,226.083 +33554429,455.686 +67108861,929.431 +13,0.543744 +29,0.438272 +61,0.591872 +125,0.499712 +253,0.494592 +509,1.49709 +1021,0.641024 +2045,0.531456 +4093,0.56832 +8189,0.764928 +16381,0.823296 +32765,0.950272 +65533,1.52781 +131069,2.27123 +262141,4.60186 +524285,8.13158 +1048573,15.614 +2097149,28.9024 +4194301,57.1873 +8388605,114.099 +16777213,228.259 +33554429,461.668 +67108861,928.73 +13,0.769024 +29,0.499712 +61,0.494592 +125,0.498688 +253,0.515072 +509,0.529408 +1021,0.632832 +2045,0.736256 +4093,0.576512 +8189,0.622592 +16381,0.869376 +32765,1.08954 +65533,1.52474 +131069,2.31117 +262141,4.14822 +524285,8.21965 +1048573,14.8367 +2097149,28.6362 +4194301,57.4034 +8388605,113.715 +16777213,228.243 +33554429,460.949 +67108861,926.362 +13,0.55808 +29,0.595968 +61,0.525312 +125,0.499712 +253,0.513024 +509,0.526336 +1021,0.559104 +2045,0.846848 +4093,0.559104 +8189,0.615424 +16381,0.782336 +32765,1.06086 +65533,1.46534 +131069,2.3255 +262141,4.23731 +524285,7.85306 +1048573,15.6795 +2097149,28.5215 +4194301,56.2913 +8388605,112.168 +16777213,228.295 +33554429,458.75 +67108861,930.491 +13,0.700416 +29,0.483328 +61,0.49664 +125,0.50176 +253,0.712704 +509,0.681984 +1021,0.556032 +2045,0.969728 +4093,0.575488 +8189,0.617472 +16381,0.738304 +32765,0.9472 +65533,1.36192 +131069,2.33882 +262141,4.30182 +524285,8.15718 +1048573,14.7876 +2097149,29.0048 +4194301,57.47 +8388605,112.164 +16777213,227.198 +33554429,459.564 +67108861,929.581 +13,0.67584 +29,1.09466 +61,0.698368 +125,0.674816 +253,0.528384 +509,0.521216 +1021,0.714752 +2045,0.561152 +4093,0.806912 +8189,0.643072 +16381,0.78336 +32765,0.9984 +65533,1.52371 +131069,2.97165 +262141,4.61414 +524285,8.11725 +1048573,14.9617 +2097149,28.6802 +4194301,56.3651 +8388605,112.793 +16777213,227.483 +33554429,459.272 +67108861,927.021 +13,0.738304 +29,0.72192 +61,0.603136 +125,0.674816 +253,0.652288 +509,0.523264 +1021,0.580608 +2045,0.561152 +4093,0.615424 +8189,0.651264 +16381,0.96768 +32765,1.0496 +65533,1.39878 +131069,2.32243 +262141,4.24346 +524285,8.24218 +1048573,15.0006 +2097149,29.0396 +4194301,57.0337 +8388605,113.062 +16777213,226.087 +33554429,461.9 +67108861,929.691 +13,0.636928 +29,0.49152 +61,0.63488 +125,0.726016 +253,0.503808 +509,0.804864 +1021,0.545792 +2045,0.565248 +4093,0.589824 +8189,0.64 +16381,0.763904 +32765,0.986112 +65533,1.43667 +131069,2.4064 +262141,4.94694 +524285,8.0343 +1048573,14.9381 +2097149,29.2454 +4194301,57.1709 +8388605,113.724 +16777213,226.33 +33554429,462.487 +67108861,925.042 +13,0.462848 +29,0.667648 +61,0.792576 +125,0.510976 +253,0.777216 +509,0.495616 +1021,0.521216 +2045,0.54272 +4093,0.570368 +8189,0.92672 +16381,0.867328 +32765,1.11917 +65533,1.45818 +131069,2.26611 +262141,4.30694 +524285,7.71789 +1048573,15.3856 +2097149,29.0406 +4194301,57.4966 +8388605,112.862 +16777213,228.196 +33554429,460.001 +67108861,927.625 +13,0.813056 +29,1.29741 +61,0.64512 +125,0.789504 +253,0.508928 +509,0.754688 +1021,0.548864 +2045,0.572416 +4093,0.605184 +8189,0.658432 +16381,0.753664 +32765,1.03936 +65533,1.42643 +131069,2.44122 +262141,4.60083 +524285,8.01485 +1048573,14.8992 +2097149,29.3724 +4194301,56.6303 +8388605,113.648 +16777213,229.314 +33554429,460.971 +67108861,927.431 +13,0.610304 +29,0.41472 +61,0.53248 +125,0.507904 +253,0.509952 +509,0.524288 +1021,0.571392 +2045,0.562176 +4093,1.04346 +8189,0.6144 +16381,0.779264 +32765,1.15405 +65533,1.47968 +131069,2.28352 +262141,4.32538 +524285,7.75782 +1048573,14.4251 +2097149,29.1308 +4194301,58.711 +8388605,111.172 +16777213,226.03 +33554429,461.055 +67108861,922.576 +13,0.717824 +29,0.4864 +61,0.488448 +125,0.500736 +253,0.50688 +509,0.543744 +1021,0.54272 +2045,0.543744 +4093,0.812032 +8189,0.763904 +16381,1.01274 +32765,1.14074 +65533,1.49914 +131069,2.34189 +262141,4.30797 +524285,7.64109 +1048573,14.7364 +2097149,28.6331 +4194301,58.583 +8388605,113.296 +16777213,228.207 +33554429,461.253 +67108861,926.602 +13,0.707584 +29,0.503808 +61,0.503808 +125,0.703488 +253,0.512 +509,0.523264 +1021,0.49664 +2045,0.703488 +4093,0.708608 +8189,0.739328 +16381,0.830464 +32765,1.03936 +65533,1.536 +131069,2.3808 +262141,4.20147 +524285,7.59808 +1048573,14.7804 +2097149,29.2936 +4194301,58.0588 +8388605,114.304 +16777213,228.348 +33554429,460.878 +67108861,926.248 +13,0.607232 +29,0.477184 +61,0.488448 +125,0.49664 +253,0.515072 +509,0.523264 +1021,0.545792 +2045,0.59904 +4093,0.591872 +8189,0.646144 +16381,0.854016 +32765,1.03014 +65533,1.39674 +131069,2.26406 +262141,4.18509 +524285,8.33331 +1048573,14.9617 +2097149,28.8215 +4194301,57.6748 +8388605,113.632 +16777213,228.948 +33554429,459.429 +67108861,929.968 +13,0.47104 +29,0.586752 +61,0.570304 +125,0.473088 +253,0.480256 +509,0.493568 +1021,0.656384 +2045,0.548864 +4093,0.560128 +8189,0.661504 +16381,0.792576 +32765,1.13562 +65533,1.43872 +131069,2.3767 +262141,4.5056 +524285,8.0681 +1048573,14.9033 +2097149,28.6403 +4194301,56.9897 +8388605,114.067 +16777213,226.65 +33554429,459.501 +67108861,927.441 +13,0.733184 +29,0.601088 +61,0.712704 +125,0.497664 +253,0.512 +509,0.52736 +1021,0.55296 +2045,0.627712 +4093,0.591872 +8189,0.623616 +16381,1.03933 +32765,1.01888 +65533,1.45302 +131069,2.3081 +262141,4.21581 +524285,7.94624 +1048573,15.0354 +2097149,28.6894 +4194301,57.129 +8388605,114.289 +16777213,228.055 +33554429,453.101 +67108861,930.233 +13,0.422912 +29,0.550912 +61,0.442368 +125,0.500736 +253,0.514048 +509,0.529408 +1021,0.545792 +2045,0.565248 +4093,0.73216 +8189,0.644096 +16381,0.769024 +32765,1.38547 +65533,1.42848 +131069,2.33267 +262141,4.24346 +524285,7.72096 +1048573,14.9176 +2097149,29.1471 +4194301,56.2268 +8388605,114.591 +16777213,226.528 +33554429,459.714 +67108861,931.193 +13,0.705536 +29,0.565248 +61,0.584704 +125,0.474112 +253,0.765952 +509,0.514048 +1021,0.766976 +2045,0.559104 +4093,0.571392 +8189,0.764928 +16381,0.789504 +32765,1.27386 +65533,1.34554 +131069,2.31629 +262141,4.3008 +524285,7.77728 +1048573,14.6514 +2097149,29.0048 +4194301,56.8607 +8388605,114.012 +16777213,229.024 +33554429,460.846 +67108861,926.313 +13,0.683008 +29,0.489472 +61,0.495616 +125,0.58368 +253,0.526336 +509,0.52736 +1021,0.549888 +2045,0.623616 +4093,0.651264 +8189,0.968704 +16381,0.781312 +32765,1.12026 +65533,1.44384 +131069,2.2999 +262141,4.2711 +524285,7.96262 +1048573,14.9228 +2097149,29.5557 +4194301,57.2867 +8388605,113.937 +16777213,228.341 +33554429,460.792 +67108861,928.72 +13,0.722944 +29,0.494592 +61,0.49664 +125,0.46592 +253,0.456704 +509,0.52736 +1021,0.559104 +2045,0.564224 +4093,0.601088 +8189,0.67072 +16381,0.776192 +32765,1.15098 +65533,1.47456 +131069,2.3081 +262141,4.4288 +524285,7.9319 +1048573,14.9207 +2097149,29.1072 +4194301,57.4054 +8388605,114.287 +16777213,228.497 +33554429,459.996 +67108861,928.093 +13,0.616448 +29,0.474112 +61,0.775168 +125,0.510976 +253,0.482304 +509,0.505856 +1021,0.509952 +2045,0.800768 +4093,0.754688 +8189,0.6912 +16381,1.21446 +32765,1.15814 +65533,1.51347 +131069,2.29069 +262141,4.27418 +524285,7.71174 +1048573,14.8132 +2097149,28.6853 +4194301,57.1853 +8388605,114.708 +16777213,227.478 +33554429,461.738 +67108861,923.004 +13,0.464896 +29,0.48128 +61,0.65024 +125,0.70656 +253,0.64 +509,0.53248 +1021,0.521216 +2045,0.776192 +4093,0.565248 +8189,0.717824 +16381,0.743424 +32765,0.971776 +65533,1.54317 +131069,2.29888 +262141,4.30285 +524285,7.84077 +1048573,14.5623 +2097149,28.4754 +4194301,57.6809 +8388605,114.032 +16777213,228.018 +33554429,461.417 +67108861,920.728 +13,0.539648 +29,0.42496 +61,0.489472 +125,0.49664 +253,0.516096 +509,0.529408 +1021,0.664576 +2045,0.564224 +4093,0.697344 +8189,0.7424 +16381,1.03424 +32765,0.950272 +65533,1.65786 +131069,2.41869 +262141,4.42163 +524285,7.76192 +1048573,14.6954 +2097149,29.1615 +4194301,57.6174 +8388605,113.578 +16777213,228.831 +33554429,458.603 +67108861,924.959 +13,0.72192 +29,0.695296 +61,0.49664 +125,0.630784 +253,0.523232 +509,0.536576 +1021,0.571392 +2045,0.57856 +4093,0.564224 +8189,0.87552 +16381,0.932864 +32765,1.18784 +65533,1.49606 +131069,2.33677 +262141,4.84147 +524285,8.05069 +1048573,15.0784 +2097149,29.0857 +4194301,57.0368 +8388605,113.334 +16777213,229.387 +33554429,462.149 +67108861,929.669 +13,0.602112 +29,0.480256 +61,0.555008 +125,0.512 +253,0.512 +509,0.841728 +1021,0.582656 +2045,0.559104 +4093,0.641024 +8189,0.668672 +16381,0.866304 +32765,1.21344 +65533,1.57798 +131069,2.5897 +262141,4.24653 +524285,7.96262 +1048573,14.9125 +2097149,28.7252 +4194301,57.6737 +8388605,113.744 +16777213,228.102 +33554429,461.525 +67108861,927.742 +13,0.617472 +29,0.483328 +61,0.490496 +125,0.69632 +253,1.00147 +509,0.658432 +1021,0.538624 +2045,0.81408 +4093,0.589824 +8189,0.823296 +16381,0.764928 +32765,0.950272 +65533,1.58822 +131069,2.64294 +262141,4.50867 +524285,7.88378 +1048573,15.0057 +2097149,29.0847 +4194301,58.5032 +8388605,113.363 +16777213,228.736 +33554429,459.58 +67108861,922.073 +13,0.507904 +29,0.590848 +61,0.493568 +125,0.605184 +253,0.529408 +509,0.525312 +1021,0.545792 +2045,0.562176 +4093,0.596992 +8189,0.644096 +16381,0.78848 +32765,0.979968 +65533,1.5913 +131069,2.39718 +262141,4.3735 +524285,7.70253 +1048573,15.0385 +2097149,29.1318 +4194301,58.2001 +8388605,114.311 +16777213,227.699 +33554429,459.469 +67108861,925.516 +13,0.715776 +29,0.641024 +61,0.45056 +125,0.53248 +253,0.866304 +509,0.797696 +1021,0.515072 +2045,0.692224 +4093,0.561152 +8189,0.796672 +16381,0.89088 +32765,1.17555 +65533,1.36192 +131069,2.40538 +262141,4.30592 +524285,7.88378 +1048573,15.616 +2097149,29.1246 +4194301,58.198 +8388605,114.47 +16777213,228.861 +33554429,461.814 +67108861,927.161 +13,0.63488 +29,0.623616 +61,0.485376 +125,0.59392 +253,0.801792 +509,0.613376 +1021,0.549888 +2045,0.62464 +4093,0.595968 +8189,0.812032 +16381,0.891904 +32765,0.950272 +65533,1.54726 +131069,2.5303 +262141,4.6551 +524285,7.90323 +1048573,14.8623 +2097149,29.1461 +4194301,57.1658 +8388605,113.196 +16777213,228.731 +33554429,460.43 +67108861,931.371 +13,0.472064 +29,0.781312 +61,0.55296 +125,0.457728 +253,0.519168 +509,0.561152 +1021,0.497664 +2045,0.589824 +4093,0.598016 +8189,0.659456 +16381,0.90624 +32765,0.98816 +65533,1.32813 +131069,2.18317 +262141,4.88243 +524285,7.92371 +1048573,14.8951 +2097149,28.8553 +4194301,57.9604 +8388605,113.812 +16777213,229.234 +33554429,461.339 +67108861,942.665 +13,0.728064 +29,0.945152 +61,0.448512 +125,0.52736 +253,0.525312 +509,0.530432 +1021,0.65536 +2045,1.06803 +4093,0.59392 +8189,0.73216 +16381,0.941056 +32765,0.97792 +65533,1.44077 +131069,2.34701 +262141,4.43085 +524285,8.00154 +1048573,14.7999 +2097149,29.8588 +4194301,57.6963 +8388605,113.825 +16777213,229.766 +33554429,462.002 +67108861,931.943 +13,0.761856 +29,0.653312 +61,0.6912 +125,0.505856 +253,0.50688 +509,0.717824 +1021,0.6656 +2045,0.755712 +4093,0.856064 +8189,0.646144 +16381,0.785408 +32765,0.992256 +65533,1.4633 +131069,2.29069 +262141,4.61005 +524285,7.79162 +1048573,14.8367 +2097149,29.4615 +4194301,58.497 +8388605,112.062 +16777213,228.746 +33554429,466.483 +67108861,936.323 +13,0.626688 +29,0.603136 +61,0.697344 +125,0.679936 +253,0.507904 +509,0.61952 +1021,0.565248 +2045,0.571392 +4093,0.77312 +8189,0.724992 +16381,0.794624 +32765,0.969728 +65533,1.45203 +131069,2.31936 +262141,4.28749 +524285,7.82746 +1048573,14.6401 +2097149,29.8363 +4194301,56.6405 +8388605,115.152 +16777213,230.036 +33554429,463.304 +67108861,932.031 +13,0.577536 +29,0.71168 +61,0.495616 +125,0.856064 +253,0.514048 +509,0.528384 +1021,0.60416 +2045,0.536576 +4093,0.738304 +8189,0.710656 +16381,0.755712 +32765,1.63738 +65533,1.54112 +131069,2.39309 +262141,4.31411 +524285,7.8848 +1048573,15.3385 +2097149,29.1963 diff --git a/Project2-Stream-Compaction/data/Scan_data/data_nonpow2/shared_mem.csv b/Project2-Stream-Compaction/data/Scan_data/data_nonpow2/shared_mem.csv new file mode 100644 index 0000000..4d5be83 --- /dev/null +++ b/Project2-Stream-Compaction/data/Scan_data/data_nonpow2/shared_mem.csv @@ -0,0 +1,3468 @@ +13,2.08794 +29,0.65024 +61,0.979968 +125,0.65232 +253,0.907296 +509,1.18886 +1021,0.685056 +2045,0.638976 +4093,0.723968 +8189,2.048 +16381,2.80166 +32765,1.18374 +65533,1.4551 +131069,2.65322 +262141,4.11546 +524285,8.76957 +1048573,14.5009 +2097149,29.1185 +4194301,57.6676 +8388605,107.148 +16777213,213.902 +33554429,426.532 +67108861,850.781 +13,0.796672 +29,0.930816 +61,0.611328 +125,0.615424 +253,0.661504 +509,0.991232 +1021,0.973824 +2045,0.743424 +4093,0.723968 +8189,0.811008 +16381,0.882688 +32765,1.11206 +65533,1.68448 +131069,2.69722 +262141,4.53837 +524285,7.49978 +1048573,14.3739 +2097149,27.4616 +4194301,53.3217 +8388605,108.136 +16777213,211.114 +33554429,423.523 +67108861,853.208 +13,0.6656 +29,1.00762 +61,0.78848 +125,0.708608 +253,1.27283 +509,0.694272 +1021,0.602112 +2045,0.73728 +4093,0.775168 +8189,0.749568 +16381,1.15917 +32765,1.04346 +65533,1.46432 +131069,3.4089 +262141,4.93363 +524285,7.58784 +1048573,14.2336 +2097149,27.7862 +4194301,53.3289 +8388605,103.998 +16777213,212.582 +33554429,424.963 +67108861,857.714 +13,0.856064 +29,0.66048 +61,0.751616 +125,0.621568 +253,0.708608 +509,0.567296 +1021,0.693248 +2045,1.13562 +4093,0.735232 +8189,0.83968 +16381,0.888832 +32765,1.10285 +65533,1.56672 +131069,2.65626 +262141,4.41549 +524285,8.00973 +1048573,14.5295 +2097149,29.3437 +4194301,54.4645 +8388605,104.999 +16777213,210.781 +33554429,427.41 +67108861,849.746 +13,0.917504 +29,0.88064 +61,0.72192 +125,0.708608 +253,0.707584 +509,0.649216 +1021,0.822272 +2045,0.692224 +4093,0.95232 +8189,0.784384 +16381,0.84992 +32765,1.07315 +65533,1.55238 +131069,2.75456 +262141,4.64579 +524285,7.69946 +1048573,14.2408 +2097149,27.86 +4194301,54.4215 +8388605,106 +16777213,214.232 +33554429,424.462 +67108861,851.778 +13,0.729088 +29,0.765952 +61,0.69632 +125,0.637952 +253,0.72192 +509,0.667648 +1021,0.73728 +2045,0.69632 +4093,0.705536 +8189,0.730112 +16381,0.98816 +32765,1.14176 +65533,1.61894 +131069,2.66138 +262141,4.27213 +524285,8.70093 +1048573,14.3391 +2097149,28.4826 +4194301,53.6771 +8388605,104.967 +16777213,211.902 +33554429,423.906 +67108861,847.485 +13,0.668672 +29,0.708608 +61,0.744448 +125,0.7424 +253,0.756736 +509,0.656384 +1021,0.697344 +2045,0.6912 +4093,0.764928 +8189,0.969728 +16381,0.920576 +32765,1.24826 +65533,1.49709 +131069,2.47194 +262141,4.6377 +524285,8.05069 +1048573,14.6125 +2097149,27.6152 +4194301,53.2111 +8388605,104.967 +16777213,210.647 +33554429,421.392 +67108861,859.103 +13,0.556032 +29,0.592896 +61,0.90624 +125,0.919552 +253,0.642048 +509,1.29434 +1021,0.585728 +2045,0.912384 +4093,0.617472 +8189,0.6656 +16381,0.784384 +32765,1.22266 +65533,1.58925 +131069,2.69107 +262141,4.4544 +524285,7.91962 +1048573,14.5285 +2097149,26.9343 +4194301,53.8829 +8388605,105.146 +16777213,209.864 +33554429,426.073 +67108861,852.723 +13,0.664576 +29,0.898048 +61,0.740352 +125,0.73216 +253,0.729088 +509,0.710656 +1021,0.726016 +2045,0.73216 +4093,0.751616 +8189,0.779264 +16381,0.881664 +32765,1.06496 +65533,1.45818 +131069,2.64909 +262141,4.3561 +524285,8.00666 +1048573,14.8142 +2097149,27.1729 +4194301,54.8536 +8388605,105.88 +16777213,211.13 +33554429,425.643 +67108861,849.469 +13,0.859136 +29,0.847872 +61,0.897024 +125,0.673792 +253,0.677888 +509,0.83968 +1021,0.91136 +2045,0.722944 +4093,0.689152 +8189,0.831488 +16381,0.920576 +32765,1.1305 +65533,1.46022 +131069,2.73306 +262141,5.53677 +524285,7.57658 +1048573,15.3149 +2097149,27.3644 +4194301,52.82 +8388605,105.709 +16777213,212.031 +33554429,422.84 +67108861,850.814 +13,0.636928 +29,0.79872 +61,0.861184 +125,1.11104 +253,0.848896 +509,0.728064 +1021,1.74694 +2045,0.712704 +4093,0.697344 +8189,1.04755 +16381,0.912384 +32765,1.3056 +65533,1.44998 +131069,3.09248 +262141,4.37862 +524285,8.47155 +1048573,14.3032 +2097149,27.9173 +4194301,54.6529 +8388605,106.977 +16777213,210.045 +33554429,423.656 +67108861,853.806 +13,0.900096 +29,0.867328 +61,0.5632 +125,0.60928 +253,0.567296 +509,0.6656 +1021,0.685056 +2045,0.687104 +4093,0.831488 +8189,1.43872 +16381,1.13869 +32765,1.06394 +65533,1.95277 +131069,2.60403 +262141,4.31821 +524285,8.51251 +1048573,14.5111 +2097149,28.6403 +4194301,54.7287 +8388605,104.758 +16777213,210.274 +33554429,428.705 +67108861,854.504 +13,0.787456 +29,0.958464 +61,0.663552 +125,0.54272 +253,0.785408 +509,0.668672 +1021,0.777216 +2045,0.726016 +4093,0.699392 +8189,0.912384 +16381,1.08749 +32765,1.17658 +65533,1.55238 +131069,2.60608 +262141,4.41037 +524285,7.62163 +1048573,14.6196 +2097149,27.1483 +4194301,53.4129 +8388605,105.155 +16777213,210.357 +33554429,424.88 +67108861,854.311 +13,0.705536 +29,0.625664 +61,0.654336 +125,0.695296 +253,0.667648 +509,0.784384 +1021,0.863232 +2045,0.74752 +4093,0.79872 +8189,1.13357 +16381,1.00864 +32765,1.68858 +65533,1.67014 +131069,2.94707 +262141,4.41139 +524285,8.28928 +1048573,14.3821 +2097149,28.3894 +4194301,53.5593 +8388605,107.74 +16777213,210.291 +33554429,421.572 +67108861,851.251 +13,0.748544 +29,0.698368 +61,0.754688 +125,0.68096 +253,0.585728 +509,0.791552 +1021,0.685056 +2045,0.801792 +4093,1.05677 +8189,1.05472 +16381,1.54624 +32765,1.52883 +65533,1.46534 +131069,2.50163 +262141,4.66842 +524285,8.10598 +1048573,14.2643 +2097149,26.8268 +4194301,53.4374 +8388605,106.44 +16777213,209.554 +33554429,423.248 +67108861,850.691 +13,1.0752 +29,0.790528 +61,0.741376 +125,0.779264 +253,0.733184 +509,0.656384 +1021,0.592896 +2045,0.763904 +4093,0.694272 +8189,0.766976 +16381,0.937984 +32765,1.0711 +65533,1.65786 +131069,2.54976 +262141,4.74931 +524285,8.5719 +1048573,14.0298 +2097149,27.734 +4194301,53.59 +8388605,106.016 +16777213,210.111 +33554429,424.766 +67108861,854.03 +13,0.743424 +29,0.676864 +61,0.700416 +125,1.03936 +253,1.01274 +509,0.744448 +1021,1.02195 +2045,0.7936 +4093,0.717824 +8189,1.02502 +16381,1.08339 +32765,0.960512 +65533,1.44794 +131069,2.75046 +262141,4.43597 +524285,8.28621 +1048573,13.867 +2097149,27.4176 +4194301,54.9079 +8388605,105.856 +16777213,210.419 +33554429,420.866 +67108861,851.633 +13,0.61952 +29,0.617472 +61,0.54784 +125,0.632832 +253,0.608256 +509,0.755712 +1021,0.759808 +2045,0.780288 +4093,0.7936 +8189,0.847872 +16381,0.862208 +32765,1.05062 +65533,1.56774 +131069,2.66854 +262141,4.3735 +524285,8.70605 +1048573,14.4691 +2097149,27.9183 +4194301,53.0278 +8388605,105.589 +16777213,210.833 +33554429,423.82 +67108861,853.079 +13,0.95744 +29,0.751616 +61,0.801792 +125,0.867328 +253,0.700416 +509,0.6912 +1021,0.674816 +2045,0.739328 +4093,0.738304 +8189,0.96768 +16381,0.971776 +32765,1.92614 +65533,1.48582 +131069,2.46067 +262141,4.13798 +524285,7.75578 +1048573,15.2637 +2097149,28.2644 +4194301,53.9914 +8388605,105.601 +16777213,212.141 +33554429,424.806 +67108861,856.338 +13,0.877568 +29,0.877568 +61,0.755712 +125,0.718848 +253,0.717824 +509,0.7168 +1021,0.705536 +2045,0.751616 +4093,0.805888 +8189,0.800768 +16381,0.94208 +32765,1.08954 +65533,1.63942 +131069,2.48832 +262141,4.4841 +524285,8.04966 +1048573,14.5469 +2097149,27.8886 +4194301,53.2777 +8388605,106.211 +16777213,211.014 +33554429,423.424 +67108861,855.258 +13,0.764928 +29,0.729088 +61,0.713728 +125,0.733184 +253,0.719872 +509,0.755712 +1021,0.786432 +2045,0.759744 +4093,1.02912 +8189,0.99328 +16381,0.924672 +32765,1.13254 +65533,1.48992 +131069,2.84877 +262141,4.52096 +524285,8.10496 +1048573,15.0569 +2097149,27.6838 +4194301,53.6054 +8388605,104.994 +16777213,210.916 +33554429,425.155 +67108861,854.041 +13,0.92672 +29,0.790528 +61,0.781312 +125,0.715776 +253,0.777216 +509,0.78848 +1021,0.789504 +2045,0.702464 +4093,0.751616 +8189,0.854016 +16381,0.924672 +32765,1.0967 +65533,1.48275 +131069,2.78016 +262141,4.47386 +524285,7.72096 +1048573,14.5654 +2097149,27.9327 +4194301,53.2869 +8388605,105.945 +16777213,211.338 +33554429,424.148 +67108861,851.23 +13,0.836608 +29,0.776192 +61,0.746496 +125,0.797696 +253,1.6855 +509,0.780288 +1021,0.724992 +2045,0.708608 +4093,2.17498 +8189,0.944128 +16381,0.939008 +32765,1.05984 +65533,1.85856 +131069,2.85696 +262141,4.1513 +524285,7.65952 +1048573,15.062 +2097149,27.3172 +4194301,53.5562 +8388605,106.258 +16777213,211.342 +33554429,423.034 +67108861,852.257 +13,0.816128 +29,0.77824 +61,1.36602 +125,0.667648 +253,0.735232 +509,0.830464 +1021,0.802816 +2045,0.7936 +4093,0.8448 +8189,0.842752 +16381,0.925696 +32765,1.11206 +65533,1.54214 +131069,2.63475 +262141,4.78822 +524285,7.85408 +1048573,14.5377 +2097149,27.777 +4194301,54.3058 +8388605,105.929 +16777213,211.804 +33554429,424.807 +67108861,851.612 +13,0.9216 +29,0.87552 +61,0.812032 +125,1.39878 +253,0.65536 +509,0.775168 +1021,0.71168 +2045,0.842752 +4093,0.797696 +8189,0.86016 +16381,1.97427 +32765,1.06291 +65533,1.84627 +131069,2.6153 +262141,4.48717 +524285,8.18278 +1048573,14.4261 +2097149,28.9116 +4194301,53.4088 +8388605,105.424 +16777213,210.595 +33554429,425.528 +67108861,848.979 +13,0.893952 +29,0.80896 +61,0.775168 +125,0.6656 +253,0.637952 +509,0.559104 +1021,0.611328 +2045,0.65024 +4093,0.784384 +8189,0.98304 +16381,1.02707 +32765,1.12333 +65533,1.54317 +131069,2.69619 +262141,4.70323 +524285,7.92986 +1048573,14.1865 +2097149,27.5855 +4194301,53.0637 +8388605,105.821 +16777213,212.549 +33554429,426.773 +67108861,851.131 +13,0.761856 +29,0.801792 +61,0.765952 +125,0.719872 +253,0.770048 +509,0.794624 +1021,0.822272 +2045,0.799744 +4093,1.21754 +8189,0.84992 +16381,0.910336 +32765,1.10285 +65533,1.56058 +131069,2.67981 +262141,4.30387 +524285,7.68614 +1048573,14.1466 +2097149,27.649 +4194301,53.4026 +8388605,105.983 +16777213,209.693 +33554429,424.841 +67108861,850.393 +13,0.801792 +29,0.78336 +61,0.649216 +125,0.674816 +253,0.907264 +509,0.760832 +1021,0.779264 +2045,0.78336 +4093,0.799744 +8189,1.38035 +16381,0.907264 +32765,1.32096 +65533,1.52781 +131069,2.5897 +262141,4.52198 +524285,7.4711 +1048573,14.462 +2097149,28.1866 +4194301,54.2659 +8388605,105.847 +16777213,211.265 +33554429,424.849 +67108861,853.665 +13,1.81453 +29,0.769024 +61,0.67072 +125,1.74285 +253,0.826368 +509,0.644096 +1021,1.03936 +2045,0.772096 +4093,0.826368 +8189,0.805888 +16381,0.955392 +32765,1.26157 +65533,1.50528 +131069,2.79757 +262141,4.5056 +524285,7.51923 +1048573,14.166 +2097149,26.9281 +4194301,54.2915 +8388605,106.636 +16777213,210.022 +33554429,423.886 +67108861,850.857 +13,0.7168 +29,0.801792 +61,0.673792 +125,0.780288 +253,1.20627 +509,0.832512 +1021,0.763904 +2045,0.707584 +4093,1.11821 +8189,0.800768 +16381,1.30458 +32765,1.1561 +65533,1.52269 +131069,2.55283 +262141,4.38784 +524285,8.62618 +1048573,14.2438 +2097149,27.7821 +4194301,54.0733 +8388605,105.354 +16777213,211.764 +33554429,422.43 +67108861,846.865 +13,0.917504 +29,0.776192 +61,0.799744 +125,0.770048 +253,0.685056 +509,0.786432 +1021,0.80896 +2045,0.781312 +4093,0.95232 +8189,0.866304 +16381,0.968704 +32765,1.19808 +65533,1.52064 +131069,2.94707 +262141,4.94899 +524285,8.06093 +1048573,14.8736 +2097149,27.8149 +4194301,54.9294 +8388605,108.288 +16777213,213.884 +33554429,424.915 +67108861,847.315 +13,0.731136 +29,0.67584 +61,0.775168 +125,0.785408 +253,0.787456 +509,0.789504 +1021,0.791552 +2045,0.781312 +4093,0.809984 +8189,0.859136 +16381,0.954368 +32765,1.24211 +65533,1.82067 +131069,2.62554 +262141,4.53325 +524285,7.99027 +1048573,14.5879 +2097149,27.0418 +4194301,53.7508 +8388605,105.417 +16777213,210.551 +33554429,422.76 +67108861,852.127 +13,0.7424 +29,0.772096 +61,0.760832 +125,0.76288 +253,0.775168 +509,0.780288 +1021,0.800768 +2045,0.761856 +4093,0.801792 +8189,0.85504 +16381,1.26054 +32765,1.22163 +65533,1.54522 +131069,2.31629 +262141,4.24653 +524285,8.04352 +1048573,15.3293 +2097149,28.2102 +4194301,54.1635 +8388605,105.805 +16777213,209.746 +33554429,423.689 +67108861,849.373 +13,0.687104 +29,0.837632 +61,0.7424 +125,0.78336 +253,0.663552 +509,0.80896 +1021,0.777216 +2045,0.786432 +4093,0.784384 +8189,0.879616 +16381,0.948224 +32765,1.15814 +65533,1.58413 +131069,2.61837 +262141,4.20762 +524285,7.96058 +1048573,14.5541 +2097149,27.4452 +4194301,53.5316 +8388605,105.32 +16777213,212.323 +33554429,425.467 +67108861,853.147 +13,0.91648 +29,0.759808 +61,0.683008 +125,0.770048 +253,0.90624 +509,1.04448 +1021,0.954368 +2045,0.754688 +4093,0.802816 +8189,1.1776 +16381,1.53498 +32765,1.22368 +65533,1.57696 +131069,3.48467 +262141,4.37965 +524285,8.04762 +1048573,14.3596 +2097149,28.1344 +4194301,54.0416 +8388605,106.286 +16777213,209.58 +33554429,423.597 +67108861,850.169 +13,0.878592 +29,0.764928 +61,1.03322 +125,1.01274 +253,0.611328 +509,1.21446 +1021,0.7936 +2045,0.731136 +4093,0.914432 +8189,0.862208 +16381,1.01376 +32765,1.0711 +65533,1.61382 +131069,2.46886 +262141,4.62131 +524285,7.87866 +1048573,14.1373 +2097149,27.3275 +4194301,54.7604 +8388605,105.345 +16777213,210.225 +33554429,425.942 +67108861,847.635 +13,0.902144 +29,0.872448 +61,0.790528 +125,0.769024 +253,0.772096 +509,0.741376 +1021,0.7936 +2045,1.03219 +4093,0.789504 +8189,0.792576 +16381,0.970752 +32765,1.14995 +65533,1.53907 +131069,2.47706 +262141,4.5271 +524285,7.74451 +1048573,15.4061 +2097149,27.8815 +4194301,54.3775 +8388605,105.946 +16777213,210.547 +33554429,424.159 +67108861,848.086 +13,0.88576 +29,0.843776 +61,0.703488 +125,1.39264 +253,0.765952 +509,0.748544 +1021,0.704512 +2045,0.771072 +4093,0.787456 +8189,0.826368 +16381,0.87552 +32765,1.22778 +65533,1.52781 +131069,3.06074 +262141,4.21274 +524285,8.27187 +1048573,14.2428 +2097149,26.9957 +4194301,53.1876 +8388605,105.841 +16777213,210.309 +33554429,424.836 +67108861,847.375 +13,0.715776 +29,0.730112 +61,0.873472 +125,0.55296 +253,0.556032 +509,1.1305 +1021,0.791552 +2045,0.770048 +4093,0.7424 +8189,0.86528 +16381,1.1223 +32765,1.13254 +65533,1.4807 +131069,2.5897 +262141,4.52608 +524285,8.27597 +1048573,15.0323 +2097149,27.1176 +4194301,53.7395 +8388605,105.643 +16777213,210.035 +33554429,423.111 +67108861,850.228 +13,0.756736 +29,0.77312 +61,0.73216 +125,0.909312 +253,1.02298 +509,0.823296 +1021,0.745472 +2045,0.77312 +4093,0.761856 +8189,0.882688 +16381,0.91648 +32765,1.1735 +65533,1.55443 +131069,2.47398 +262141,4.3561 +524285,8.90368 +1048573,15.3764 +2097149,28.1938 +4194301,53.0616 +8388605,106.206 +16777213,211.431 +33554429,423.156 +67108861,851.596 +13,0.659456 +29,0.955392 +61,1.12538 +125,0.75776 +253,0.72704 +509,0.615424 +1021,0.796672 +2045,0.755712 +4093,0.8448 +8189,0.822272 +16381,1.00147 +32765,1.15917 +65533,1.40186 +131069,2.61325 +262141,4.44621 +524285,9.39418 +1048573,14.5091 +2097149,27.0408 +4194301,53.3893 +8388605,104.9 +16777213,207.073 +33554429,424.031 +67108861,851.811 +13,0.705536 +29,0.72192 +61,0.684032 +125,0.78848 +253,0.939008 +509,0.784384 +1021,0.78848 +2045,0.791552 +4093,0.813056 +8189,0.836608 +16381,0.944128 +32765,1.10074 +65533,2.09818 +131069,2.58867 +262141,5.05446 +524285,8.58317 +1048573,14.8214 +2097149,27.4627 +4194301,55.2038 +8388605,104.917 +16777213,211.142 +33554429,424.274 +67108861,848.538 +13,1.69677 +29,0.736256 +61,0.733184 +125,0.807936 +253,0.80896 +509,0.76288 +1021,1.08544 +2045,0.748544 +4093,0.684032 +8189,0.837632 +16381,0.876544 +32765,1.20525 +65533,1.54214 +131069,3.21126 +262141,4.35302 +524285,8.12954 +1048573,14.5142 +2097149,27.5692 +4194301,53.4436 +8388605,106.078 +16777213,211.188 +33554429,423.497 +67108861,845.658 +13,0.781312 +29,0.891904 +61,0.775168 +125,0.741376 +253,0.666624 +509,0.8192 +1021,0.761856 +2045,0.781312 +4093,0.786432 +8189,0.827392 +16381,0.876544 +32765,1.11821 +65533,1.53088 +131069,3.24506 +262141,4.55885 +524285,8.22579 +1048573,14.7937 +2097149,28.1958 +4194301,53.3228 +8388605,107.045 +16777213,211.457 +33554429,423.574 +67108861,850.251 +13,0.641024 +29,0.724992 +61,0.564224 +125,0.592896 +253,0.960512 +509,0.633856 +1021,0.595968 +2045,0.756736 +4093,0.79872 +8189,0.850944 +16381,0.922624 +32765,1.0967 +65533,1.57798 +131069,3.21843 +262141,4.49331 +524285,7.82541 +1048573,14.209 +2097149,28.0207 +4194301,53.2736 +8388605,106 +16777213,211.415 +33554429,424.803 +67108861,852.718 +13,0.751616 +29,0.88064 +61,0.782336 +125,0.7936 +253,0.777216 +509,0.7936 +1021,0.772096 +2045,0.795648 +4093,0.789504 +8189,0.836608 +16381,0.98304 +32765,1.11411 +65533,1.48992 +131069,2.5047 +262141,4.47078 +524285,7.77626 +1048573,14.8562 +2097149,28.0443 +4194301,54.2935 +8388605,105.432 +16777213,210.864 +33554429,422.716 +67108861,853.171 +13,0.708608 +29,0.719872 +61,0.882688 +125,0.775168 +253,0.785408 +509,0.787456 +1021,0.770048 +2045,0.77824 +4093,0.746496 +8189,0.871424 +16381,0.966656 +32765,1.11206 +65533,1.52269 +131069,2.66342 +262141,4.31411 +524285,7.5776 +1048573,14.4671 +2097149,28.7386 +4194301,54.2546 +8388605,106.328 +16777213,211.874 +33554429,425.52 +67108861,850.521 +13,1.0793 +29,2.36442 +61,0.608256 +125,0.564224 +253,0.897024 +509,0.722944 +1021,0.761856 +2045,0.78848 +4093,0.766976 +8189,0.843776 +16381,0.990208 +32765,1.25338 +65533,1.64659 +131069,2.70438 +262141,4.55168 +524285,7.80186 +1048573,14.7476 +2097149,27.3152 +4194301,53.6812 +8388605,104.921 +16777213,211.703 +33554429,424.612 +67108861,848.711 +13,0.929792 +29,0.8704 +61,0.929792 +125,0.8704 +253,0.867328 +509,0.779264 +1021,0.792576 +2045,0.772096 +4093,0.825344 +8189,0.820224 +16381,1.65171 +32765,1.16941 +65533,1.4121 +131069,2.67469 +262141,4.37555 +524285,7.66976 +1048573,14.2572 +2097149,27.5067 +4194301,55.0502 +8388605,106.3 +16777213,210.322 +33554429,424.529 +67108861,852.505 +13,0.781312 +29,0.765952 +61,0.789504 +125,0.750592 +253,0.754688 +509,0.756736 +1021,0.769024 +2045,0.787456 +4093,0.830464 +8189,0.88064 +16381,0.953344 +32765,1.12128 +65533,1.5319 +131069,2.59994 +262141,4.4585 +524285,8.2985 +1048573,15.0395 +2097149,27.3562 +4194301,54.0836 +8388605,105.644 +16777213,209.893 +33554429,424.211 +67108861,851.008 +13,0.836608 +29,0.982016 +61,0.876544 +125,0.775168 +253,0.663552 +509,0.796672 +1021,0.78848 +2045,0.750592 +4093,0.759808 +8189,1.08851 +16381,0.903168 +32765,1.08954 +65533,1.72339 +131069,2.60506 +262141,4.25882 +524285,7.82643 +1048573,14.6872 +2097149,27.0838 +4194301,54.2269 +8388605,106.651 +16777213,210.739 +33554429,422.981 +67108861,851.055 +13,0.831488 +29,0.770048 +61,0.8192 +125,0.77824 +253,0.756736 +509,0.666624 +1021,0.715776 +2045,0.989184 +4093,0.730112 +8189,0.97792 +16381,0.859136 +32765,1.13254 +65533,1.69062 +131069,2.66752 +262141,4.70016 +524285,7.66259 +1048573,15.0927 +2097149,27.903 +4194301,53.6934 +8388605,105.936 +16777213,210.097 +33554429,421.152 +67108861,849.76 +13,0.85504 +29,0.749568 +61,1.05472 +125,1.66298 +253,0.910336 +509,1.54624 +1021,0.894976 +2045,0.743424 +4093,0.989184 +8189,0.905216 +16381,1.01478 +32765,1.19603 +65533,1.59027 +131069,2.54157 +262141,4.8343 +524285,8.17459 +1048573,14.8972 +2097149,28.672 +4194301,53.4907 +8388605,105.005 +16777213,210.188 +33554429,422.601 +67108861,845.405 +13,0.914432 +29,0.832512 +61,0.774144 +125,1.0793 +253,0.712704 +509,0.777216 +1021,0.795648 +2045,0.904192 +4093,0.831488 +8189,0.771072 +16381,0.946176 +32765,1.07418 +65533,1.49402 +131069,2.48627 +262141,4.84864 +524285,8.36915 +1048573,14.5254 +2097149,28.0945 +4194301,53.247 +8388605,105.936 +16777213,210.283 +33554429,427.079 +67108861,848.975 +13,0.72704 +29,0.695296 +61,0.748544 +125,0.768 +253,0.813056 +509,0.791552 +1021,0.837632 +2045,0.740352 +4093,0.73216 +8189,0.809984 +16381,0.9472 +32765,1.19706 +65533,1.64762 +131069,2.70029 +262141,4.53734 +524285,8.2135 +1048573,14.3401 +2097149,27.7125 +4194301,53.7661 +8388605,106.444 +16777213,210.313 +33554429,424.251 +67108861,853.402 +13,0.91648 +29,0.811008 +61,0.869376 +125,0.794624 +253,0.791552 +509,0.859136 +1021,0.75264 +2045,0.765952 +4093,1.24621 +8189,0.863232 +16381,0.943104 +32765,1.41005 +65533,1.50835 +131069,2.59277 +262141,4.88038 +524285,8.01178 +1048573,14.0544 +2097149,27.6777 +4194301,53.9156 +8388605,105.388 +16777213,211.057 +33554429,424.715 +67108861,848.261 +13,0.775168 +29,0.806912 +61,0.828416 +125,0.78848 +253,0.864256 +509,0.77312 +1021,0.77824 +2045,0.739328 +4093,0.81408 +8189,1.15098 +16381,0.975872 +32765,1.15507 +65533,1.52064 +131069,2.58765 +262141,4.49946 +524285,7.54483 +1048573,15.2924 +2097149,27.6552 +4194301,54.3427 +8388605,105.466 +16777213,210.477 +33554429,423.71 +67108861,851.516 +13,0.909312 +29,0.774144 +61,0.772096 +125,0.780288 +253,0.719872 +509,0.731136 +1021,0.800768 +2045,0.756736 +4093,1.01069 +8189,1.02195 +16381,0.963584 +32765,1.12845 +65533,1.45203 +131069,2.62451 +262141,4.38272 +524285,8.36813 +1048573,14.2633 +2097149,27.2159 +4194301,52.9889 +8388605,105.769 +16777213,212.002 +33554429,425.215 +67108861,849.571 +13,0.910336 +29,0.930816 +61,0.7424 +125,0.769024 +253,0.666624 +509,0.765952 +1021,0.73216 +2045,0.714752 +4093,0.823296 +8189,1.01274 +16381,0.914432 +32765,1.17658 +65533,1.9968 +131069,2.55386 +262141,4.31616 +524285,7.52026 +1048573,14.7896 +2097149,27.3961 +4194301,53.334 +8388605,106.878 +16777213,211.91 +33554429,424.136 +67108861,851.686 +13,0.734208 +29,0.613376 +61,0.684032 +125,1.09568 +253,0.75776 +509,0.664576 +1021,0.764928 +2045,0.74752 +4093,0.87552 +8189,0.843776 +16381,0.945152 +32765,1.12845 +65533,1.60563 +131069,2.43814 +262141,4.37965 +524285,7.89606 +1048573,15.0938 +2097149,27.0131 +4194301,54.6161 +8388605,105.526 +16777213,211.371 +33554429,423.865 +67108861,850.693 +13,0.88064 +29,0.882688 +61,0.790528 +125,1.35578 +253,0.796672 +509,0.78336 +1021,0.738304 +2045,0.789504 +4093,0.781312 +8189,0.77824 +16381,0.859136 +32765,1.18067 +65533,1.46227 +131069,2.46579 +262141,4.48614 +524285,7.83155 +1048573,15.2074 +2097149,27.6142 +4194301,53.7846 +8388605,104.878 +16777213,211.838 +33554429,423.38 +67108861,847.087 +13,1.3527 +29,0.896 +61,0.590848 +125,0.556032 +253,0.745472 +509,0.9728 +1021,0.832512 +2045,0.8448 +4093,0.591872 +8189,1.24928 +16381,0.94208 +32765,0.924672 +65533,1.34349 +131069,2.8887 +262141,4.74726 +524285,7.95341 +1048573,15.0374 +2097149,27.733 +4194301,53.9924 +8388605,106.159 +16777213,211.486 +33554429,424.99 +67108861,848.082 +13,0.521216 +29,0.92672 +61,0.676864 +125,0.715776 +253,0.77824 +509,0.78848 +1021,0.821248 +2045,0.774144 +4093,0.79872 +8189,0.771072 +16381,0.95744 +32765,1.20115 +65533,1.57389 +131069,2.92557 +262141,4.39706 +524285,7.55814 +1048573,14.0247 +2097149,27.3132 +4194301,55.1168 +8388605,105.334 +16777213,209.164 +33554429,427.569 +67108861,847.834 +13,0.551936 +29,1.1735 +61,0.608256 +125,0.760832 +253,1.01274 +509,0.794624 +1021,0.809984 +2045,0.8448 +4093,1.64147 +8189,1.06803 +16381,0.867328 +32765,1.31482 +65533,1.54419 +131069,2.68698 +262141,4.46566 +524285,7.9913 +1048573,14.1855 +2097149,27.518 +4194301,53.6433 +8388605,105.973 +16777213,212.244 +33554429,425.264 +67108861,850.51 +13,1.41414 +29,0.889856 +61,0.781312 +125,0.86528 +253,0.877568 +509,0.910336 +1021,0.787456 +2045,0.713728 +4093,0.575488 +8189,0.857088 +16381,0.881664 +32765,1.09158 +65533,1.72544 +131069,2.89587 +262141,4.65203 +524285,7.64826 +1048573,14.7016 +2097149,27.7699 +4194301,53.6515 +8388605,106.481 +16777213,209.831 +33554429,422.657 +67108861,852.3 +13,0.909312 +29,1.01069 +61,0.786432 +125,0.77312 +253,0.7936 +509,0.776192 +1021,0.789504 +2045,0.751616 +4093,0.858112 +8189,0.874496 +16381,0.969728 +32765,1.34451 +65533,1.53293 +131069,2.53235 +262141,4.49536 +524285,8.07117 +1048573,15.4819 +2097149,27.7187 +4194301,55.6308 +8388605,105.954 +16777213,212.462 +33554429,425.028 +67108861,851.296 +13,0.910336 +29,0.927744 +61,0.761856 +125,0.833536 +253,0.758784 +509,0.705536 +1021,0.753664 +2045,0.899072 +4093,1.17555 +8189,1.0199 +16381,0.872448 +32765,1.14074 +65533,2.37875 +131069,2.52109 +262141,4.89882 +524285,7.57862 +1048573,14.1138 +2097149,27.479 +4194301,55.2847 +8388605,106.199 +16777213,211.465 +33554429,423.423 +67108861,852.551 +13,0.84992 +29,0.87552 +61,0.90624 +125,0.871424 +253,0.607232 +509,1.02912 +1021,0.611328 +2045,0.772096 +4093,0.800768 +8189,0.904192 +16381,0.969728 +32765,1.14176 +65533,1.49914 +131069,2.62451 +262141,4.52403 +524285,8.37325 +1048573,14.4466 +2097149,28.4058 +4194301,54.4051 +8388605,105.67 +16777213,210.637 +33554429,423.493 +67108861,853.4 +13,0.904192 +29,0.785408 +61,0.802816 +125,0.884736 +253,1.64557 +509,0.751616 +1021,0.790528 +2045,0.7936 +4093,0.817152 +8189,0.872448 +16381,1.18886 +32765,1.11002 +65533,1.75309 +131069,2.64704 +262141,4.44211 +524285,7.82746 +1048573,15.1593 +2097149,28.0463 +4194301,54.8782 +8388605,104.812 +16777213,210.727 +33554429,424.472 +67108861,847.562 +13,0.80384 +29,0.877568 +61,0.806912 +125,0.781312 +253,0.775168 +509,0.784384 +1021,1.00557 +2045,0.65536 +4093,0.852992 +8189,0.87552 +16381,1.00045 +32765,1.1305 +65533,1.50938 +131069,2.83341 +262141,4.75443 +524285,7.45779 +1048573,13.8455 +2097149,28.4129 +4194301,52.9265 +8388605,106.379 +16777213,212.22 +33554429,422.05 +67108861,849.745 +13,0.859136 +29,0.723968 +61,0.861184 +125,0.841728 +253,0.692224 +509,0.62464 +1021,0.816128 +2045,0.787456 +4093,0.805888 +8189,0.842752 +16381,1.00966 +32765,1.15302 +65533,1.49709 +131069,2.45862 +262141,4.29568 +524285,7.75782 +1048573,13.8977 +2097149,28.0965 +4194301,53.9873 +8388605,106.493 +16777213,211.189 +33554429,423.127 +67108861,848.665 +13,1.30765 +29,0.927744 +61,0.777216 +125,0.735232 +253,0.795648 +509,0.6912 +1021,0.795648 +2045,0.797696 +4093,0.83968 +8189,0.884736 +16381,0.884736 +32765,1.10592 +65533,1.59027 +131069,3.03514 +262141,5.42106 +524285,7.66157 +1048573,14.4415 +2097149,27.7821 +4194301,53.802 +8388605,105.62 +16777213,213.186 +33554429,423.151 +67108861,850.085 +13,0.817152 +29,0.698368 +61,0.754688 +125,0.6912 +253,0.825344 +509,0.89088 +1021,0.822272 +2045,0.817152 +4093,0.812032 +8189,0.846848 +16381,0.904192 +32765,1.13869 +65533,1.52474 +131069,3.05869 +262141,4.54349 +524285,8.06912 +1048573,14.6278 +2097149,28.5962 +4194301,54.9222 +8388605,105.43 +16777213,211.912 +33554429,423.929 +67108861,849.746 +13,1.73568 +29,0.842752 +61,0.600064 +125,0.872448 +253,0.75264 +509,0.7424 +1021,0.792576 +2045,0.822272 +4093,0.805888 +8189,1.05574 +16381,0.877568 +32765,1.12333 +65533,1.54624 +131069,2.89178 +262141,4.41651 +524285,7.77114 +1048573,14.6371 +2097149,28.1119 +4194301,54.3334 +8388605,106.27 +16777213,209.037 +33554429,425.072 +67108861,847.868 +13,0.917504 +29,1.22778 +61,0.777216 +125,0.759808 +253,0.772096 +509,0.488448 +1021,0.823296 +2045,0.8192 +4093,0.82944 +8189,0.73728 +16381,0.991232 +32765,1.11206 +65533,1.45306 +131069,3.10374 +262141,4.21581 +524285,7.94931 +1048573,14.7876 +2097149,28.4252 +4194301,53.0022 +8388605,106.462 +16777213,209.434 +33554429,423.541 +67108861,852.864 +13,0.914432 +29,0.758784 +61,0.764928 +125,0.833536 +253,0.795648 +509,0.710656 +1021,0.858112 +2045,0.77824 +4093,0.831488 +8189,0.88064 +16381,0.9984 +32765,1.2841 +65533,1.52678 +131069,3.06074 +262141,4.86912 +524285,7.90426 +1048573,14.5551 +2097149,27.605 +4194301,53.076 +8388605,105.907 +16777213,211.723 +33554429,424.157 +67108861,854.324 +13,0.779264 +29,0.776192 +61,0.692224 +125,0.730112 +253,0.907264 +509,0.764928 +1021,0.8192 +2045,0.822272 +4093,0.800768 +8189,0.910336 +16381,1.0025 +32765,1.11309 +65533,1.96608 +131069,2.69005 +262141,5.10874 +524285,8.26266 +1048573,15.1316 +2097149,28.5911 +4194301,53.5378 +8388605,105.497 +16777213,210.73 +33554429,421.631 +67108861,853.861 +13,0.913408 +29,0.941056 +61,0.55296 +125,0.606208 +253,0.804864 +509,0.789504 +1021,0.800768 +2045,0.807936 +4093,0.79872 +8189,0.833536 +16381,0.94208 +32765,1.1561 +65533,1.44794 +131069,2.69722 +262141,4.3776 +524285,7.49363 +1048573,14.1056 +2097149,28.8246 +4194301,53.9546 +8388605,105.818 +16777213,210.546 +33554429,424.119 +67108861,850.029 +13,0.955392 +29,0.905216 +61,0.776192 +125,0.76288 +253,0.75776 +509,0.777216 +1021,0.821248 +2045,0.786432 +4093,0.833536 +8189,0.884736 +16381,0.908288 +32765,1.09773 +65533,1.50426 +131069,2.52416 +262141,4.72166 +524285,7.60525 +1048573,14.6616 +2097149,27.2916 +4194301,53.7774 +8388605,105.868 +16777213,211.915 +33554429,423.128 +67108861,849.39 +13,0.935936 +29,1.06803 +61,0.89088 +125,0.743424 +253,0.75776 +509,0.754688 +1021,0.891904 +2045,1.23494 +4093,1.26464 +8189,0.847872 +16381,0.945152 +32765,1.15302 +65533,1.48173 +131069,2.48934 +262141,4.45542 +524285,8.03123 +1048573,14.5121 +2097149,28.1088 +4194301,53.8061 +8388605,105.869 +16777213,210.52 +33554429,420.702 +67108861,850.727 +13,0.909312 +29,0.873472 +61,0.678912 +125,0.775168 +253,0.937984 +509,0.765952 +1021,0.765952 +2045,0.811008 +4093,0.800768 +8189,0.898048 +16381,0.830464 +32765,1.11616 +65533,1.5319 +131069,2.6921 +262141,4.98893 +524285,8.03942 +1048573,15.2474 +2097149,27.8405 +4194301,53.9976 +8388605,107.149 +16777213,213.016 +33554429,423.164 +67108861,851.662 +13,0.96768 +29,0.908288 +61,0.90112 +125,0.736256 +253,0.790528 +509,0.760832 +1021,1.08646 +2045,0.763904 +4093,0.841728 +8189,0.835584 +16381,1.01376 +32765,1.17453 +65533,1.66093 +131069,2.65011 +262141,4.56192 +524285,7.63392 +1048573,15.0446 +2097149,27.7371 +4194301,53.5501 +8388605,106.899 +16777213,211.923 +33554429,424.321 +67108861,853.352 +13,0.840704 +29,0.832512 +61,0.73216 +125,0.731136 +253,0.746496 +509,0.68096 +1021,0.837632 +2045,0.766976 +4093,0.802816 +8189,0.830464 +16381,1.05267 +32765,1.40493 +65533,1.52166 +131069,2.78118 +262141,4.44723 +524285,7.96058 +1048573,14.5234 +2097149,27.2108 +4194301,54.9437 +8388605,105.657 +16777213,210.878 +33554429,423.879 +67108861,851.592 +13,0.920576 +29,0.726016 +61,0.786432 +125,0.766976 +253,0.914432 +509,0.78336 +1021,0.82432 +2045,0.854016 +4093,0.848896 +8189,0.864256 +16381,1.16326 +32765,1.11411 +65533,1.73978 +131069,3.04435 +262141,4.49024 +524285,8.02918 +1048573,14.5111 +2097149,27.5948 +4194301,53.502 +8388605,106.63 +16777213,211.15 +33554429,422.618 +67108861,841.29 +13,0.772096 +29,0.801792 +61,0.93696 +125,0.768 +253,0.92672 +509,0.776192 +1021,0.72704 +2045,0.8192 +4093,0.796672 +8189,0.817152 +16381,1.10182 +32765,1.17248 +65533,1.60973 +131069,2.60198 +262141,4.18509 +524285,7.60627 +1048573,14.9996 +2097149,28.6106 +4194301,53.5071 +8388605,107.076 +16777213,210.762 +33554429,423.779 +67108861,853.139 +13,0.759808 +29,0.77312 +61,0.733184 +125,0.744448 +253,0.75264 +509,0.751616 +1021,0.820224 +2045,0.760832 +4093,0.809984 +8189,1.01478 +16381,0.93696 +32765,1.04858 +65533,1.51347 +131069,2.47808 +262141,4.41549 +524285,7.70458 +1048573,14.3913 +2097149,27.5261 +4194301,53.931 +8388605,106.702 +16777213,212.43 +33554429,423.589 +67108861,850.981 +13,0.714752 +29,0.690176 +61,0.749568 +125,0.774144 +253,0.744448 +509,0.776192 +1021,0.836608 +2045,0.77312 +4093,0.823296 +8189,0.950272 +16381,1.1264 +32765,1.3353 +65533,1.59027 +131069,2.65523 +262141,4.31514 +524285,8.26573 +1048573,14.6319 +2097149,27.7955 +4194301,53.2777 +8388605,104.891 +16777213,212.389 +33554429,423.357 +67108861,848.54 +13,0.692224 +29,0.771072 +61,0.654336 +125,0.570368 +253,0.560128 +509,0.565248 +1021,0.8704 +2045,0.790528 +4093,0.841728 +8189,0.8448 +16381,0.918528 +32765,1.14893 +65533,1.52474 +131069,2.64806 +262141,4.73498 +524285,7.97901 +1048573,14.3503 +2097149,27.137 +4194301,54.2095 +8388605,105.918 +16777213,210.223 +33554429,424.081 +67108861,851.127 +13,0.766976 +29,0.828416 +61,0.792576 +125,0.739328 +253,0.708608 +509,0.6912 +1021,0.823296 +2045,0.761856 +4093,0.979968 +8189,0.884736 +16381,1.11923 +32765,1.21037 +65533,1.65376 +131069,2.95834 +262141,4.69504 +524285,7.04922 +1048573,14.1629 +2097149,27.008 +4194301,53.9228 +8388605,106.865 +16777213,211.523 +33554429,423.313 +67108861,841.837 +13,0.774144 +29,0.689152 +61,0.787456 +125,0.846848 +253,0.817152 +509,0.753664 +1021,0.847872 +2045,0.78848 +4093,0.83456 +8189,0.841728 +16381,0.963584 +32765,1.18272 +65533,1.59642 +131069,2.72691 +262141,4.3991 +524285,7.89504 +1048573,14.4916 +2097149,27.862 +4194301,53.6146 +8388605,106.017 +16777213,211.458 +33554429,425.287 +67108861,851.273 +13,0.868352 +29,0.889856 +61,0.7424 +125,0.812032 +253,0.786432 +509,0.720896 +1021,0.800768 +2045,0.764928 +4093,0.802816 +8189,0.845824 +16381,1.19603 +32765,1.08646 +65533,1.53395 +131069,2.67469 +262141,4.70733 +524285,7.66464 +1048573,14.8859 +2097149,27.0664 +4194301,53.1937 +8388605,106.318 +16777213,212.228 +33554429,423.589 +67108861,849.323 +13,1.38138 +29,0.78848 +61,0.714752 +125,0.710656 +253,1.00966 +509,0.753664 +1021,1.19398 +2045,0.800768 +4093,1.01786 +8189,0.8704 +16381,1.32403 +32765,1.34861 +65533,1.8985 +131069,2.59174 +262141,4.61517 +524285,7.89197 +1048573,14.6207 +2097149,28.0166 +4194301,53.6054 +8388605,107.556 +16777213,210.9 +33554429,423.64 +67108861,852.086 +13,0.784384 +29,0.65024 +61,0.60416 +125,0.918528 +253,0.95232 +509,0.857088 +1021,0.70144 +2045,0.750592 +4093,0.930816 +8189,0.961536 +16381,0.98304 +32765,1.408 +65533,1.49914 +131069,3.24198 +262141,4.49126 +524285,8.3712 +1048573,14.9473 +2097149,27.2599 +4194301,54.2341 +8388605,105.839 +16777213,210.527 +33554429,423.676 +67108861,849.331 +13,0.832512 +29,0.8448 +61,0.754688 +125,0.780288 +253,0.774144 +509,0.785408 +1021,0.784384 +2045,0.805888 +4093,0.817152 +8189,0.857088 +16381,0.955392 +32765,1.13152 +65533,1.4633 +131069,2.91123 +262141,4.56294 +524285,7.60422 +1048573,14.4855 +2097149,27.3111 +4194301,54.5618 +8388605,105.701 +16777213,210.235 +33554429,423.246 +67108861,846.935 +13,0.709632 +29,0.832512 +61,0.746496 +125,0.792576 +253,0.804864 +509,0.75776 +1021,0.777216 +2045,0.990208 +4093,0.785408 +8189,0.910336 +16381,1.00147 +32765,1.17555 +65533,1.52269 +131069,2.67674 +262141,4.44723 +524285,7.73018 +1048573,14.5961 +2097149,27.6623 +4194301,54.2597 +8388605,105.217 +16777213,211.797 +33554429,424.373 +67108861,847.683 +13,1.16838 +29,0.703488 +61,0.758784 +125,0.817152 +253,0.74752 +509,0.746496 +1021,1.17965 +2045,0.781312 +4093,0.836608 +8189,0.887808 +16381,1.00557 +32765,1.15405 +65533,1.52064 +131069,2.6583 +262141,4.68787 +524285,7.88787 +1048573,14.4691 +2097149,27.2394 +4194301,54.654 +8388605,105.175 +16777213,210.221 +33554429,424.374 +67108861,850.18 +13,0.781312 +29,0.78336 +61,0.790528 +125,0.70656 +253,0.787456 +509,0.823296 +1021,0.792576 +2045,0.782336 +4093,0.861184 +8189,0.835584 +16381,1.45408 +32765,1.44896 +65533,1.49709 +131069,2.83546 +262141,4.45331 +524285,7.91962 +1048573,14.3503 +2097149,27.4278 +4194301,54.7686 +8388605,105.105 +16777213,212.103 +33554429,424.476 +67108861,851.184 +13,0.739328 +29,0.717824 +61,0.754688 +125,0.697344 +253,2.39411 +509,0.714752 +1021,0.831488 +2045,0.72704 +4093,0.794624 +8189,0.847872 +16381,0.879616 +32765,1.3568 +65533,1.536 +131069,2.59072 +262141,4.48717 +524285,8.05786 +1048573,14.4783 +2097149,26.7305 +4194301,52.951 +8388605,105.742 +16777213,210.861 +33554429,422.829 +67108861,851.679 +13,0.93184 +29,0.877568 +61,0.771072 +125,0.736256 +253,0.69632 +509,0.804864 +1021,0.703488 +2045,0.77312 +4093,0.799744 +8189,0.994304 +16381,1.00147 +32765,1.12845 +65533,1.33837 +131069,2.70541 +262141,4.61722 +524285,7.74554 +1048573,14.4241 +2097149,27.8917 +4194301,53.675 +8388605,106.362 +16777213,210.235 +33554429,423.256 +67108861,851.744 +13,0.743424 +29,0.722944 +61,0.690176 +125,0.6144 +253,0.7936 +509,0.707584 +1021,0.766976 +2045,0.75264 +4093,0.809984 +8189,0.866304 +16381,1.00352 +32765,1.17862 +65533,1.52576 +131069,2.77606 +262141,4.67968 +524285,7.63085 +1048573,13.9971 +2097149,27.351 +4194301,53.932 +8388605,104.837 +16777213,211.734 +33554429,427.95 +67108861,851.699 +13,0.892928 +29,0.934912 +61,0.782336 +125,0.78336 +253,0.776192 +509,0.799744 +1021,0.795648 +2045,0.823296 +4093,0.693248 +8189,0.842752 +16381,1.02912 +32765,1.06906 +65533,1.55341 +131069,2.71872 +262141,4.77901 +524285,7.76909 +1048573,14.0339 +2097149,27.1647 +4194301,54.4123 +8388605,105.942 +16777213,210.314 +33554429,424.439 +67108861,849.253 +13,0.99328 +29,0.75776 +61,0.848896 +125,0.801792 +253,0.78848 +509,0.774144 +1021,0.791552 +2045,0.842752 +4093,0.774144 +8189,0.779264 +16381,1.44486 +32765,1.14381 +65533,2.13299 +131069,2.816 +262141,4.4288 +524285,7.78957 +1048573,14.0851 +2097149,27.6419 +4194301,54.6755 +8388605,106.143 +16777213,210.118 +33554429,424.655 +67108861,850.609 +13,0.912384 +29,0.799744 +61,0.9984 +125,0.79872 +253,0.637952 +509,0.815104 +1021,0.827392 +2045,0.815104 +4093,0.835584 +8189,0.900096 +16381,0.96768 +32765,1.32403 +65533,2.05005 +131069,2.73613 +262141,4.44723 +524285,7.84179 +1048573,14.0964 +2097149,27.3981 +4194301,54.6191 +8388605,106.581 +16777213,213.922 +33554429,422.466 +67108861,848.949 +13,0.715776 +29,0.719872 +61,0.744448 +125,0.7168 +253,0.784384 +509,0.76288 +1021,0.811008 +2045,0.774144 +4093,0.907264 +8189,0.886784 +16381,0.877568 +32765,1.26566 +65533,1.52883 +131069,2.59379 +262141,4.75341 +524285,7.66771 +1048573,15.0651 +2097149,27.7484 +4194301,54.0324 +8388605,105.815 +16777213,211.602 +33554429,422.659 +67108861,854.147 +13,0.687104 +29,0.626688 +61,0.613376 +125,0.612352 +253,1.48275 +509,0.672768 +1021,1.03629 +2045,0.759808 +4093,0.765952 +8189,0.833536 +16381,0.975872 +32765,1.12128 +65533,1.47251 +131069,2.63475 +262141,4.73702 +524285,7.85203 +1048573,14.4671 +2097149,27.5456 +4194301,54.3785 +8388605,104.721 +16777213,211.672 +33554429,423.921 +67108861,848.241 +13,0.731136 +29,0.843776 +61,0.882688 +125,0.94208 +253,0.713728 +509,0.872448 +1021,0.764928 +2045,0.756736 +4093,0.845824 +8189,0.886784 +16381,0.987136 +32765,1.41824 +65533,1.50528 +131069,2.75149 +262141,4.44006 +524285,9.12486 +1048573,14.849 +2097149,28.46 +4194301,53.5839 +8388605,105.221 +16777213,210.602 +33554429,424.199 +67108861,854.11 +13,0.857088 +29,0.83456 +61,0.782336 +125,0.751616 +253,0.84992 +509,0.780288 +1021,0.780288 +2045,0.807936 +4093,1.00352 +8189,0.815104 +16381,0.948224 +32765,1.27898 +65533,1.52678 +131069,2.47501 +262141,4.61005 +524285,8.72243 +1048573,15.532 +2097149,27.9163 +4194301,53.9085 +8388605,106.39 +16777213,210.161 +33554429,425.966 +67108861,852.782 +13,0.907264 +29,0.88064 +61,0.873472 +125,0.817152 +253,0.79872 +509,0.790528 +1021,0.787456 +2045,0.744448 +4093,0.929792 +8189,0.830464 +16381,0.934912 +32765,1.10797 +65533,1.53088 +131069,2.5559 +262141,4.8087 +524285,7.64211 +1048573,14.6319 +2097149,27.6951 +4194301,54.0447 +8388605,105.619 +16777213,211.844 +33554429,423.98 +67108861,851.07 +13,0.745472 +29,0.685056 +61,0.689152 +125,0.602112 +253,0.607232 +509,0.93184 +1021,0.772096 +2045,0.785408 +4093,0.792576 +8189,0.847872 +16381,0.9472 +32765,1.16941 +65533,1.57594 +131069,2.64397 +262141,4.88038 +524285,7.69024 +1048573,13.8486 +2097149,27.3756 +4194301,53.5501 +8388605,106.157 +16777213,210.591 +33554429,423.322 +67108861,848.388 +13,0.657408 +29,0.684032 +61,0.854016 +125,0.674816 +253,0.856064 +509,0.786432 +1021,0.756736 +2045,0.815104 +4093,0.843776 +8189,0.856064 +16381,0.847872 +32765,1.17862 +65533,1.53395 +131069,2.9481 +262141,4.56397 +524285,8.07424 +1048573,14.0032 +2097149,27.2353 +4194301,53.5296 +8388605,106.559 +16777213,211.201 +33554429,424.484 +67108861,848.873 +13,0.841728 +29,0.774144 +61,0.560128 +125,0.764928 +253,0.811008 +509,0.789504 +1021,0.7936 +2045,0.772096 +4093,0.785408 +8189,0.780288 +16381,0.994304 +32765,1.1776 +65533,1.51347 +131069,2.63987 +262141,4.99302 +524285,7.94214 +1048573,14.8091 +2097149,27.7299 +4194301,53.1784 +8388605,106.308 +16777213,212.069 +33554429,423.855 +67108861,851.435 +13,0.929792 +29,0.763904 +61,0.922624 +125,0.782336 +253,0.755712 +509,0.749568 +1021,1.04346 +2045,0.840704 +4093,0.786432 +8189,0.882688 +16381,1.00762 +32765,1.13869 +65533,1.536 +131069,2.61427 +262141,4.72166 +524285,7.64723 +1048573,14.6637 +2097149,27.9716 +4194301,53.417 +8388605,106.523 +16777213,210.967 +33554429,422.735 +67108861,846.1 +13,0.823296 +29,0.688128 +61,0.712704 +125,0.770048 +253,0.827392 +509,0.794624 +1021,0.949248 +2045,0.775168 +4093,0.796672 +8189,0.868352 +16381,0.976896 +32765,1.13562 +65533,1.53907 +131069,2.61837 +262141,4.44621 +524285,8.00256 +1048573,14.0012 +2097149,27.2763 +4194301,54.359 +8388605,104.668 +16777213,209.281 +33554429,420.729 +67108861,847.044 +13,0.95744 +29,0.923648 +61,0.93696 +125,0.678912 +253,0.813056 +509,0.777216 +1021,0.828416 +2045,0.785408 +4093,0.804864 +8189,0.831488 +16381,0.956416 +32765,1.16326 +65533,1.4807 +131069,2.60915 +262141,4.23117 +524285,7.92678 +1048573,14.0493 +2097149,28.29 +4194301,53.4026 +8388605,105.892 +16777213,210.327 +33554429,423.982 +67108861,849.721 +13,0.759808 +29,0.915456 +61,0.900096 +125,0.753664 +253,0.766976 +509,0.827392 +1021,0.784384 +2045,0.772096 +4093,0.774144 +8189,0.93184 +16381,0.968704 +32765,1.34451 +65533,1.6896 +131069,2.66752 +262141,4.44416 +524285,7.85613 +1048573,14.4886 +2097149,27.1565 +4194301,53.8102 +8388605,105.595 +16777213,211.492 +33554429,423.203 +67108861,847.636 +13,0.913408 +29,0.918528 +61,0.927744 +125,0.784384 +253,0.790528 +509,0.648192 +1021,0.804864 +2045,0.797696 +4093,0.920576 +8189,0.88576 +16381,1.152 +32765,1.2073 +65533,1.62509 +131069,2.59482 +262141,4.68992 +524285,7.66566 +1048573,14.4292 +2097149,27.6173 +4194301,53.3309 +8388605,103.924 +16777213,213.265 +33554429,420.377 +67108861,848.868 +13,0.69632 +29,0.966656 +61,0.826368 +125,0.755712 +253,0.743424 +509,0.7424 +1021,0.756736 +2045,0.775168 +4093,0.796672 +8189,0.856064 +16381,0.891904 +32765,1.31789 +65533,1.48685 +131069,2.48934 +262141,4.48717 +524285,8.00358 +1048573,14.4527 +2097149,27.5845 +4194301,53.761 +8388605,105.245 +16777213,211.984 +33554429,422.6 +67108861,849.093 +13,0.606208 +29,0.615424 +61,0.845824 +125,0.745472 +253,0.759808 +509,0.759808 +1021,0.828416 +2045,0.77312 +4093,0.851968 +8189,0.823296 +16381,0.9984 +32765,1.22675 +65533,1.57594 +131069,2.70131 +262141,4.30285 +524285,8.26163 +1048573,14.5224 +2097149,27.0592 +4194301,53.0749 +8388605,103.881 +16777213,211.324 +33554429,425.198 +67108861,841.332 +13,0.830464 +29,0.73728 +61,0.7424 +125,0.980992 +253,0.804864 +509,0.78336 +1021,0.75776 +2045,0.78848 +4093,0.804864 +8189,0.866304 +16381,0.953344 +32765,1.67834 +65533,1.68858 +131069,2.68902 +262141,4.44621 +524285,7.72813 +1048573,13.9366 +2097149,27.3213 +4194301,53.9873 +8388605,104.34 +16777213,210.123 +33554429,423.751 +67108861,844.806 +13,0.912384 +29,0.914432 +61,0.806912 +125,0.77312 +253,0.77824 +509,0.751616 +1021,0.688128 +2045,0.781312 +4093,0.830464 +8189,1.08442 +16381,0.975872 +32765,1.17453 +65533,1.55238 +131069,2.57741 +262141,4.80051 +524285,7.75168 +1048573,14.5172 +2097149,27.2108 +4194301,53.3606 +8388605,105.07 +16777213,211.679 +33554429,422.904 +67108861,850.691 +13,0.689152 +29,0.61952 +61,0.73216 +125,1.67117 +253,0.830464 +509,1.16736 +1021,0.795648 +2045,0.818176 +4093,0.835584 +8189,0.88576 +16381,1.00557 +32765,1.26771 +65533,1.55955 +131069,2.63475 +262141,4.51174 +524285,7.99334 +1048573,14.2653 +2097149,27.988 +4194301,53.0657 +8388605,105.54 +16777213,212.968 +33554429,426.078 +67108861,844.382 +13,0.925696 +29,0.924672 +61,0.77312 +125,1.29946 +253,0.68608 +509,1.08134 +1021,0.821248 +2045,0.794624 +4093,0.836608 +8189,0.886784 +16381,1.02298 +32765,1.1735 +65533,1.48787 +131069,2.57331 +262141,4.52301 +524285,8.15923 +1048573,14.633 +2097149,27.7893 +4194301,53.7303 +8388605,105.726 +16777213,211.697 +33554429,419.977 +67108861,848.116 +13,0.90624 +29,0.93184 +61,0.77312 +125,0.80384 +253,0.934912 +509,0.780288 +1021,0.77312 +2045,0.687104 +4093,0.88064 +8189,0.750592 +16381,1.11411 +32765,1.11002 +65533,1.48275 +131069,2.89075 +262141,4.41958 +524285,8.10803 +1048573,14.378 +2097149,27.4299 +4194301,53.7805 +8388605,105.971 +16777213,210.971 +33554429,420.968 +67108861,850.762 +13,0.91648 +29,0.912384 +61,0.755712 +125,0.765952 +253,0.815104 +509,0.800768 +1021,0.791552 +2045,0.763904 +4093,0.861184 +8189,1.03014 +16381,0.91648 +32765,1.16736 +65533,1.52678 +131069,2.46067 +262141,5.12512 +524285,7.77011 +1048573,14.591 +2097149,27.7934 +4194301,52.9613 +8388605,105.569 +16777213,211.988 +33554429,423.679 +67108861,839.881 +13,0.927744 +29,0.924672 +61,0.719872 +125,0.72704 +253,0.782336 +509,0.780288 +1021,0.774144 +2045,0.807936 +4093,0.786432 +8189,0.838656 +16381,1.05984 +32765,1.27078 +65533,1.49197 +131069,2.91942 +262141,4.44621 +524285,8.07526 +1048573,14.5377 +2097149,27.9398 +4194301,53.8266 +8388605,106.067 +16777213,212.69 +33554429,423.227 +67108861,851.047 +13,0.710656 +29,0.841728 +61,0.765952 +125,0.807936 +253,0.771072 +509,0.790528 +1021,0.826368 +2045,0.820224 +4093,0.856064 +8189,1.1735 +16381,1.25952 +32765,1.25952 +65533,1.51245 +131069,2.62758 +262141,4.44826 +524285,7.66669 +1048573,14.6432 +2097149,27.3275 +4194301,53.2029 +8388605,106.056 +16777213,211.185 +33554429,426.579 +67108861,847.178 +13,0.908288 +29,0.914432 +61,0.904192 +125,0.774144 +253,0.598016 +509,0.57344 +1021,0.785408 +2045,0.787456 +4093,0.789504 +8189,1.06701 +16381,1.01376 +32765,1.12128 +65533,1.52371 +131069,3.01056 +262141,4.50765 +524285,8.02304 +1048573,14.295 +2097149,27.6541 +4194301,53.9187 +8388605,106.147 +16777213,210.413 +33554429,422.122 +67108861,848.205 +13,0.689152 +29,0.71168 +61,0.674816 +125,0.618496 +253,0.786432 +509,0.676864 +1021,0.905216 +2045,0.807936 +4093,0.843776 +8189,0.823296 +16381,0.996352 +32765,1.17453 +65533,1.51347 +131069,2.64294 +262141,4.49434 +524285,8.18074 +1048573,14.4794 +2097149,27.1544 +4194301,54.101 +8388605,105.519 +16777213,212.144 +33554429,423.674 +67108861,848.113 +13,0.866304 +29,0.932864 +61,0.903168 +125,0.776192 +253,0.78848 +509,0.78336 +1021,0.78336 +2045,0.831488 +4093,0.83456 +8189,0.886784 +16381,0.9472 +32765,1.10694 +65533,1.7623 +131069,2.68083 +262141,3.8615 +524285,7.49875 +1048573,14.1097 +2097149,27.2466 +4194301,53.2623 +8388605,106.6 +16777213,211.303 +33554429,424.251 +67108861,836.092 +13,0.914432 +29,0.910336 +61,0.963584 +125,0.668672 +253,0.930816 +509,0.751616 +1021,0.579584 +2045,0.785408 +4093,0.857088 +8189,0.856064 +16381,0.958464 +32765,1.15712 +65533,1.51654 +131069,2.62554 +262141,4.51277 +524285,7.86739 +1048573,14.3821 +2097149,27.5661 +4194301,53.2357 +8388605,105.656 +16777213,210.851 +33554429,425.001 +67108861,850.449 +13,0.739328 +29,0.794624 +61,0.756736 +125,0.792576 +253,0.780288 +509,0.786432 +1021,0.822272 +2045,1.12742 +4093,0.863232 +8189,1.13254 +16381,0.934912 +32765,1.152 +65533,1.58618 +131069,2.58355 +262141,5.10054 +524285,8.0169 +1048573,14.4333 +2097149,27.8241 +4194301,53.674 +8388605,106.086 +16777213,212.003 +33554429,422.77 +67108861,842.278 +13,0.736256 +29,0.724992 +61,0.75776 +125,0.820224 +253,0.774144 +509,0.918528 +1021,0.652288 +2045,0.770048 +4093,0.831488 +8189,0.817152 +16381,0.91136 +32765,1.11718 +65533,1.51859 +131069,2.93069 +262141,4.49024 +524285,7.88582 +1048573,14.3841 +2097149,27.2947 +4194301,53.1753 +8388605,105.813 +16777213,210.814 +33554429,422.916 +67108861,851.446 +13,0.914432 +29,0.924672 +61,0.928768 +125,0.76288 +253,0.776192 +509,0.781312 +1021,0.78336 +2045,0.782336 +4093,0.7936 +8189,0.909312 +16381,1.15302 +32765,1.61997 +65533,1.58618 +131069,2.57638 +262141,4.77491 +524285,7.89197 +1048573,14.6033 +2097149,27.3121 +4194301,53.8429 +8388605,105.68 +16777213,209.857 +33554429,423.943 +67108861,851.189 +13,0.958464 +29,0.761856 +61,0.838656 +125,0.899072 +253,0.772096 +509,0.684032 +1021,1.17453 +2045,0.748544 +4093,0.73216 +8189,0.802816 +16381,1.13152 +32765,1.11309 +65533,2.47296 +131069,2.63066 +262141,4.46157 +524285,7.95341 +1048573,14.1558 +2097149,26.8913 +4194301,53.0299 +8388605,105.576 +16777213,210.836 +33554429,424.062 +67108861,842.382 +13,0.714752 +29,0.804864 +61,0.873472 +125,0.688128 +253,0.848896 +509,0.765952 +1021,0.8704 +2045,0.823296 +4093,1.27386 +8189,0.8448 +16381,1.00762 +32765,1.12128 +65533,1.60768 +131069,2.61018 +262141,4.48512 +524285,7.58579 +1048573,14.3555 +2097149,27.69 +4194301,53.3146 +8388605,105.8 +16777213,211.224 +33554429,421.934 +67108861,848.385 +13,0.915456 +29,0.925696 +61,0.745472 +125,0.765952 +253,0.736256 +509,0.770048 +1021,0.797696 +2045,0.715776 +4093,0.8192 +8189,0.850944 +16381,0.971776 +32765,1.12026 +65533,1.53088 +131069,2.36851 +262141,5.0903 +524285,7.91757 +1048573,14.3892 +2097149,27.6797 +4194301,53.6535 +8388605,105.266 +16777213,210.902 +33554429,419.465 +67108861,852.791 +13,0.917504 +29,0.881664 +61,0.8704 +125,0.638976 +253,0.744448 +509,0.785376 +1021,0.77312 +2045,1.11104 +4093,0.93184 +8189,1.24928 +16381,0.941056 +32765,1.05779 +65533,2.12275 +131069,2.53235 +262141,4.53734 +524285,8.18381 +1048573,14.3165 +2097149,27.5528 +4194301,53.5204 +8388605,105.071 +16777213,209.277 +33554429,422.381 +67108861,846.65 +13,0.612352 +29,0.628736 +61,0.836608 +125,0.815104 +253,0.77824 +509,0.8192 +1021,0.842752 +2045,1.34656 +4093,0.917504 +8189,0.903168 +16381,0.9216 +32765,1.13459 +65533,1.61997 +131069,2.48627 +262141,4.44621 +524285,7.79162 +1048573,14.7722 +2097149,27.6685 +4194301,53.7457 +8388605,105.495 +16777213,209.878 +33554429,421.541 +67108861,848.086 +13,0.610304 +29,0.759808 +61,0.75264 +125,0.811008 +253,0.954368 +509,0.718848 +1021,0.792576 +2045,0.820224 +4093,0.755712 +8189,0.877568 +16381,0.995328 +32765,1.32198 +65533,1.51859 +131069,2.6112 +262141,4.51994 +524285,8.19917 +1048573,14.379 +2097149,27.4903 +4194301,53.7713 +8388605,105.364 +16777213,211.703 +33554429,425.694 +67108861,845.9 +13,0.932864 +29,1.58618 +61,0.743424 +125,0.832512 +253,0.78336 +509,0.882688 +1021,0.786432 +2045,1.10899 +4093,1.1223 +8189,0.821248 +16381,1.1479 +32765,1.21856 +65533,1.52166 +131069,2.68288 +262141,4.42778 +524285,7.80493 +1048573,14.4415 +2097149,26.9312 +4194301,53.4764 +8388605,106.177 +16777213,209.176 +33554429,421.374 +67108861,847.493 +13,0.71168 +29,0.86016 +61,0.771072 +125,0.772096 +253,0.781312 +509,0.784384 +1021,0.794624 +2045,0.776192 +4093,0.842752 +8189,0.884736 +16381,1.00045 +32765,1.17248 +65533,1.52781 +131069,2.59174 +262141,4.49741 +524285,7.80288 +1048573,14.3196 +2097149,27.4463 +4194301,53.2654 +8388605,106.153 +16777213,209.768 +33554429,424.928 +67108861,849.749 +13,0.929792 +29,0.868352 +61,0.804864 +125,0.790528 +253,0.779264 +509,0.80384 +1021,0.93184 +2045,0.77312 +4093,0.800768 +8189,0.868352 +16381,0.965632 +32765,1.13664 +65533,1.68858 +131069,3.67411 +262141,4.41037 +524285,7.8551 +1048573,14.3063 +2097149,27.3695 +4194301,53.6515 +8388605,106.621 +16777213,212.604 +33554429,422.483 +67108861,849.792 +13,0.889856 +29,0.915456 +61,0.899072 +125,0.745472 +253,0.765952 +509,0.7936 +1021,0.75264 +2045,0.76288 +4093,0.806912 +8189,1.17453 +16381,0.9984 +32765,1.1776 +65533,1.54624 +131069,2.70746 +262141,4.54349 +524285,7.71686 +1048573,14.4108 +2097149,27.4196 +4194301,53.3484 +8388605,105.095 +16777213,211.885 +33554429,422.898 +67108861,846.804 +13,0.894976 +29,0.922624 +61,0.610304 +125,0.66048 +253,0.608256 +509,0.789504 +1021,0.779264 +2045,0.794624 +4093,0.823296 +8189,1.00147 +16381,0.959488 +32765,1.14074 +65533,1.50938 +131069,3.07507 +262141,4.65818 +524285,7.64928 +1048573,14.293 +2097149,28.2419 +4194301,53.0862 +8388605,104.978 +16777213,210.384 +33554429,424.153 +67108861,848.186 +13,0.877568 +29,0.922624 +61,0.89088 +125,0.923648 +253,0.866304 +509,0.602112 +1021,0.608256 +2045,0.697344 +4093,0.80384 +8189,0.864256 +16381,0.958464 +32765,1.17043 +65533,1.54624 +131069,2.62042 +262141,4.42368 +524285,7.61037 +1048573,14.4517 +2097149,27.1575 +4194301,54.4328 +8388605,106.355 +16777213,208.25 +33554429,424.623 +67108861,848.601 +13,0.79872 +29,0.826368 +61,0.753664 +125,0.745472 +253,1.08544 +509,1.16531 +1021,0.795648 +2045,1.10592 +4093,0.807936 +8189,0.83456 +16381,0.939008 +32765,1.1305 +65533,1.53702 +131069,3.60243 +262141,4.54349 +524285,8.0937 +1048573,14.2848 +2097149,27.9276 +4194301,54.3416 +8388605,105.602 +16777213,206.412 +33554429,422.697 +67108861,933.574 +13,0.565248 +29,0.534528 +61,0.586752 +125,0.52224 +253,0.592896 +509,2.8631 +1021,0.523264 +2045,0.596992 +4093,1.19194 +8189,0.986112 +16381,1.3015 +32765,1.28819 +65533,1.31789 +131069,2.68902 +262141,4.61824 +524285,8.38656 +1048573,14.5418 +2097149,27.265 +4194301,54.2454 +8388605,106.376 +16777213,213.45 +33554429,424.862 +67108861,853.031 +13,0.86016 +29,0.93696 +61,0.729088 +125,0.9216 +253,0.6912 +509,1.17555 +1021,0.649216 +2045,0.772096 +4093,0.817152 +8189,0.83968 +16381,0.93696 +32765,1.1305 +65533,1.47866 +131069,2.80166 +262141,4.53632 +524285,8.00461 +1048573,14.3176 +2097149,26.8687 +4194301,53.3586 +8388605,107.213 +16777213,210.725 +33554429,423.113 +67108861,849.254 +13,0.842752 +29,0.8704 +61,0.925696 +125,0.557056 +253,0.610304 +509,1.61997 +1021,0.898048 +2045,0.811008 +4093,0.749568 +8189,0.869376 +16381,1.04448 +32765,1.78995 +65533,1.64147 +131069,2.50061 +262141,4.33152 +524285,8.27392 +1048573,14.846 +2097149,27.8477 +4194301,53.5634 +8388605,105.08 +16777213,211.736 +33554429,425.632 +67108861,851.393 +13,0.643072 +29,0.671744 +61,0.877568 +125,0.607232 +253,0.627712 +509,0.695296 +1021,0.779264 +2045,0.776192 +4093,0.772096 +8189,1.06291 +16381,0.935936 +32765,1.14278 +65533,1.78074 +131069,2.63578 +262141,4.5056 +524285,7.77728 +1048573,14.2264 +2097149,26.8698 +4194301,53.6003 +8388605,106.562 +16777213,210.355 +33554429,427.601 +67108861,853.192 +13,0.728064 +29,0.944128 +61,0.933888 +125,0.6144 +253,0.776192 +509,0.801792 +1021,0.797696 +2045,0.845824 +4093,0.782336 +8189,0.8192 +16381,1.10592 +32765,1.22266 +65533,1.53088 +131069,2.57741 +262141,4.49331 +524285,8.4265 +1048573,14.8132 +2097149,27.7545 diff --git a/Project2-Stream-Compaction/data/Scan_data/data_nonpow2/thrust.csv b/Project2-Stream-Compaction/data/Scan_data/data_nonpow2/thrust.csv new file mode 100644 index 0000000..cf98541 --- /dev/null +++ b/Project2-Stream-Compaction/data/Scan_data/data_nonpow2/thrust.csv @@ -0,0 +1,3467 @@ +13,0.731104 +29,0.567296 +61,0.78336 +125,0.64 +253,0.656384 +509,0.59904 +1021,0.688128 +2045,0.569344 +4093,0.535552 +8189,0.603104 +16381,0.703488 +32765,2.29376 +65533,1.72646 +131069,2.95632 +262141,4.63258 +524285,8.52685 +1048573,15.0088 +2097149,29.5444 +4194301,54.1522 +8388605,108.373 +16777213,214.377 +33554429,424.74 +67108861,849.39 +13,0.902144 +29,0.739328 +61,0.681984 +125,0.68096 +253,0.703488 +509,0.889856 +1021,0.813056 +2045,0.736256 +4093,0.63488 +8189,0.756736 +16381,1.01581 +32765,1.0967 +65533,1.46534 +131069,3.1447 +262141,4.84966 +524285,8.51558 +1048573,15.2842 +2097149,27.3203 +4194301,52.9981 +8388605,105.59 +16777213,208.991 +33554429,421.916 +67108861,843.378 +13,0.697344 +29,0.649216 +61,1.10797 +125,0.676864 +253,0.667648 +509,0.658432 +1021,0.591872 +2045,0.679936 +4093,0.978944 +8189,0.73728 +16381,0.837632 +32765,1.12026 +65533,1.72851 +131069,2.95322 +262141,5.13741 +524285,8.2217 +1048573,14.5879 +2097149,26.9128 +4194301,53.7917 +8388605,106.443 +16777213,209.703 +33554429,421.019 +67108861,852.817 +13,0.76288 +29,0.738304 +61,0.685056 +125,0.57856 +253,0.607232 +509,0.589824 +1021,0.617472 +2045,0.923648 +4093,0.685056 +8189,0.845824 +16381,1.11411 +32765,1.06598 +65533,1.44077 +131069,3.09453 +262141,4.88653 +524285,8.37018 +1048573,14.5357 +2097149,27.819 +4194301,53.8296 +8388605,109.691 +16777213,210.656 +33554429,423.736 +67108861,844.404 +13,0.920576 +29,0.779264 +61,0.67584 +125,0.796672 +253,0.623616 +509,0.748544 +1021,0.770048 +2045,0.602112 +4093,0.661504 +8189,0.851968 +16381,0.894976 +32765,1.1008 +65533,1.48992 +131069,3.67616 +262141,4.77389 +524285,8.39885 +1048573,15.6375 +2097149,27.2364 +4194301,53.8685 +8388605,105.99 +16777213,211.406 +33554429,422.215 +67108861,841.851 +13,1.19398 +29,0.772096 +61,0.770048 +125,0.763904 +253,0.677888 +509,0.62464 +1021,0.806912 +2045,0.68096 +4093,0.770048 +8189,0.791552 +16381,0.897024 +32765,1.0752 +65533,1.58208 +131069,3.15085 +262141,4.82611 +524285,8.20122 +1048573,14.8285 +2097149,27.4862 +4194301,53.8808 +8388605,108.685 +16777213,209.821 +33554429,421.071 +67108861,852.606 +13,0.78848 +29,0.859136 +61,0.828416 +125,0.693248 +253,0.65536 +509,0.714752 +1021,0.695296 +2045,0.734208 +4093,0.703488 +8189,0.842752 +16381,0.94208 +32765,1.13664 +65533,1.4336 +131069,3.03514 +262141,4.87731 +524285,8.41318 +1048573,14.7425 +2097149,27.7617 +4194301,53.8388 +8388605,104.497 +16777213,209.439 +33554429,419.612 +67108861,846.669 +13,0.666624 +29,0.766976 +61,0.862208 +125,0.88576 +253,0.83968 +509,0.82944 +1021,0.83968 +2045,0.799744 +4093,0.58368 +8189,0.61952 +16381,0.753664 +32765,1.09568 +65533,1.47661 +131069,3.03616 +262141,5.74771 +524285,8.27597 +1048573,14.6125 +2097149,28.4242 +4194301,55.7578 +8388605,105.669 +16777213,215.086 +33554429,422.132 +67108861,850.23 +13,0.932864 +29,0.882688 +61,0.707584 +125,0.709632 +253,0.75776 +509,1.03014 +1021,0.642048 +2045,0.83968 +4093,0.730112 +8189,0.750592 +16381,0.925696 +32765,1.0967 +65533,1.52576 +131069,2.94298 +262141,5.63712 +524285,8.32717 +1048573,14.4712 +2097149,27.4145 +4194301,53.3299 +8388605,105.172 +16777213,209.461 +33554429,421.006 +67108861,844.531 +13,1.07418 +29,0.81408 +61,0.71168 +125,0.785408 +253,0.75264 +509,0.594944 +1021,0.621568 +2045,0.70144 +4093,1.08442 +8189,0.734208 +16381,0.959488 +32765,1.32096 +65533,1.88109 +131069,3.18874 +262141,4.60288 +524285,7.86432 +1048573,14.9484 +2097149,27.5046 +4194301,53.7272 +8388605,103.917 +16777213,210.137 +33554429,420.972 +67108861,847.056 +13,0.6912 +29,1.2288 +61,0.730112 +125,0.724992 +253,0.690176 +509,0.636928 +1021,0.677888 +2045,0.65024 +4093,0.69632 +8189,0.868352 +16381,0.93696 +32765,1.07622 +65533,1.43667 +131069,3.01363 +262141,4.6121 +524285,7.96058 +1048573,15.3989 +2097149,27.7914 +4194301,53.5808 +8388605,105.091 +16777213,210.381 +33554429,421.467 +67108861,838.826 +13,0.812032 +29,0.738304 +61,0.528384 +125,0.574464 +253,0.591872 +509,0.759808 +1021,0.626688 +2045,0.851968 +4093,0.730112 +8189,0.8192 +16381,0.792576 +32765,1.12333 +65533,1.52474 +131069,2.99622 +262141,4.92032 +524285,7.91245 +1048573,15.3672 +2097149,28.0115 +4194301,53.6392 +8388605,106.44 +16777213,210.856 +33554429,419.796 +67108861,849.398 +13,0.715776 +29,0.662528 +61,0.638976 +125,0.612352 +253,0.88064 +509,0.656384 +1021,0.677888 +2045,0.70656 +4093,0.720896 +8189,0.70656 +16381,0.909312 +32765,1.13971 +65533,1.48685 +131069,3.26451 +262141,4.87936 +524285,8.43776 +1048573,14.9033 +2097149,27.8446 +4194301,55.2888 +8388605,106.162 +16777213,209.142 +33554429,420.75 +67108861,851.155 +13,0.68608 +29,0.598016 +61,0.627712 +125,0.876544 +253,0.704512 +509,0.782336 +1021,1.1735 +2045,0.789504 +4093,0.693248 +8189,0.784384 +16381,0.93184 +32765,1.13459 +65533,1.49299 +131069,3.0976 +262141,4.75238 +524285,8.77363 +1048573,15.0845 +2097149,28.0893 +4194301,53.4641 +8388605,106.172 +16777213,210.987 +33554429,421.01 +67108861,848.459 +13,0.647168 +29,0.65024 +61,0.654336 +125,0.833536 +253,0.621568 +509,0.717824 +1021,0.748544 +2045,0.664576 +4093,0.743424 +8189,0.74752 +16381,1.10694 +32765,1.11821 +65533,1.41722 +131069,3.2727 +262141,4.74522 +524285,8.00352 +1048573,14.677 +2097149,27.2404 +4194301,53.676 +8388605,105.472 +16777213,208.338 +33554429,421.361 +67108861,844.271 +13,0.723968 +29,0.959488 +61,0.724992 +125,0.796672 +253,0.6656 +509,0.626688 +1021,0.891904 +2045,0.709632 +4093,0.72192 +8189,0.724992 +16381,0.941056 +32765,1.26157 +65533,1.46637 +131069,3.05664 +262141,4.82406 +524285,8.17971 +1048573,14.8296 +2097149,29.527 +4194301,54.7656 +8388605,105.923 +16777213,210.928 +33554429,422.782 +67108861,846.926 +13,0.743424 +29,0.570368 +61,0.602112 +125,0.57344 +253,0.751616 +509,0.700416 +1021,0.799744 +2045,1.44077 +4093,0.79872 +8189,0.744448 +16381,0.929792 +32765,1.05779 +65533,1.47046 +131069,3.51642 +262141,4.97562 +524285,8.06605 +1048573,15.4655 +2097149,27.9624 +4194301,53.1558 +8388605,106.173 +16777213,210.875 +33554429,421.057 +67108861,843.993 +13,0.509952 +29,0.60928 +61,0.520192 +125,0.539648 +253,0.766976 +509,0.642048 +1021,0.688128 +2045,0.935936 +4093,0.733184 +8189,0.748544 +16381,0.9728 +32765,1.06701 +65533,1.88211 +131069,2.88051 +262141,5.47738 +524285,8.02406 +1048573,14.8818 +2097149,27.3213 +4194301,52.4861 +8388605,105.138 +16777213,209.673 +33554429,422.11 +67108861,840.994 +13,0.851968 +29,0.713728 +61,0.755712 +125,0.755712 +253,0.729088 +509,0.65536 +1021,0.81408 +2045,1.03427 +4093,1.42234 +8189,0.710656 +16381,0.840704 +32765,1.14074 +65533,1.46432 +131069,2.97677 +262141,5.74362 +524285,8.76442 +1048573,14.2438 +2097149,27.8241 +4194301,53.7764 +8388605,105.9 +16777213,210.475 +33554429,422.713 +67108861,842.733 +13,0.806912 +29,0.643072 +61,0.657408 +125,0.646144 +253,0.84992 +509,0.712704 +1021,0.714752 +2045,0.673792 +4093,0.794624 +8189,1.04243 +16381,1.29126 +32765,1.20422 +65533,1.61997 +131069,3.53587 +262141,4.87219 +524285,8.44186 +1048573,14.7354 +2097149,27.5835 +4194301,53.7436 +8388605,107.529 +16777213,208.857 +33554429,424.162 +67108861,844.974 +13,0.736256 +29,0.946176 +61,0.801792 +125,0.663552 +253,0.813056 +509,0.88064 +1021,0.774144 +2045,0.774144 +4093,0.820224 +8189,0.799744 +16381,0.86528 +32765,1.07725 +65533,1.50016 +131069,3.14778 +262141,5.40262 +524285,8.09574 +1048573,14.9146 +2097149,27.5436 +4194301,53.6842 +8388605,106.893 +16777213,210.788 +33554429,420.422 +67108861,844.555 +13,0.893952 +29,0.708608 +61,1.31789 +125,0.894976 +253,0.781312 +509,0.831488 +1021,0.761856 +2045,0.668672 +4093,0.738304 +8189,0.806912 +16381,0.868352 +32765,1.13357 +65533,1.93331 +131069,4.3817 +262141,5.08109 +524285,8.064 +1048573,14.7036 +2097149,27.8405 +4194301,53.6125 +8388605,105.715 +16777213,210.831 +33554429,422.491 +67108861,845.674 +13,0.656384 +29,0.840704 +61,0.687104 +125,0.843776 +253,0.88064 +509,0.761856 +1021,0.698368 +2045,0.677888 +4093,0.782336 +8189,0.81408 +16381,0.892928 +32765,1.06086 +65533,1.73056 +131069,3.4816 +262141,5.18042 +524285,8.03021 +1048573,14.9309 +2097149,27.7811 +4194301,54.0621 +8388605,105.542 +16777213,210.041 +33554429,422.044 +67108861,842.562 +13,0.866304 +29,1.03117 +61,0.995328 +125,0.653312 +253,0.96768 +509,0.811008 +1021,0.730112 +2045,0.659456 +4093,0.755712 +8189,1.19603 +16381,0.986112 +32765,1.25952 +65533,1.55238 +131069,3.04947 +262141,5.10976 +524285,8.04762 +1048573,14.6268 +2097149,29.5199 +4194301,54.1655 +8388605,106.359 +16777213,209.469 +33554429,422.297 +67108861,845.543 +13,0.896 +29,0.667648 +61,0.695296 +125,0.74752 +253,0.749568 +509,1.09056 +1021,0.673792 +2045,0.722944 +4093,0.703488 +8189,0.794624 +16381,0.982016 +32765,1.03014 +65533,1.51654 +131069,3.12422 +262141,5.29818 +524285,8.47565 +1048573,14.6862 +2097149,28.9147 +4194301,54.185 +8388605,105.564 +16777213,209.907 +33554429,422.348 +67108861,845.924 +13,0.925696 +29,0.75264 +61,1.2073 +125,2.39104 +253,0.616448 +509,0.531456 +1021,0.60928 +2045,0.600064 +4093,0.776192 +8189,0.897024 +16381,0.975872 +32765,1.21242 +65533,1.5319 +131069,3.17645 +262141,5.08109 +524285,8.3671 +1048573,14.4671 +2097149,27.6152 +4194301,53.6248 +8388605,104.907 +16777213,211.065 +33554429,420.345 +67108861,844.226 +13,0.812032 +29,0.768 +61,0.664576 +125,0.715776 +253,0.687104 +509,0.733184 +1021,0.7424 +2045,0.708608 +4093,0.82944 +8189,0.765952 +16381,0.879616 +32765,1.08032 +65533,1.56979 +131069,3.08838 +262141,4.97869 +524285,8.51661 +1048573,14.293 +2097149,28.1958 +4194301,53.8655 +8388605,104.654 +16777213,209.677 +33554429,421.716 +67108861,844.234 +13,0.67072 +29,0.713728 +61,0.72192 +125,0.6912 +253,0.729088 +509,1.07213 +1021,0.782336 +2045,0.755712 +4093,0.724992 +8189,0.842752 +16381,0.990208 +32765,1.09466 +65533,1.56262 +131069,3.13754 +262141,4.87731 +524285,8.2391 +1048573,14.4763 +2097149,27.8938 +4194301,53.3791 +8388605,105.488 +16777213,209.506 +33554429,421.82 +67108861,843.663 +13,0.840704 +29,0.73216 +61,0.699392 +125,0.800768 +253,0.695296 +509,0.66048 +1021,0.748544 +2045,0.816128 +4093,1.31072 +8189,0.83968 +16381,0.937984 +32765,1.1479 +65533,1.49402 +131069,2.98803 +262141,4.73395 +524285,7.9657 +1048573,14.9617 +2097149,27.5886 +4194301,54.2208 +8388605,105.019 +16777213,210.551 +33554429,420.46 +67108861,842.131 +13,0.718848 +29,0.641024 +61,0.729088 +125,0.768 +253,0.729088 +509,0.746496 +1021,0.71168 +2045,0.753664 +4093,0.81408 +8189,0.723968 +16381,0.894976 +32765,1.05779 +65533,1.53702 +131069,3.0505 +262141,4.90291 +524285,8.01178 +1048573,14.5357 +2097149,28.0689 +4194301,53.3709 +8388605,106.926 +16777213,210.613 +33554429,420.196 +67108861,845.79 +13,1.27898 +29,0.739264 +61,0.754688 +125,0.971776 +253,0.771072 +509,0.743424 +1021,0.764928 +2045,0.76288 +4093,0.766976 +8189,0.851968 +16381,0.93184 +32765,1.09773 +65533,1.53293 +131069,3.04947 +262141,4.53018 +524285,8.24115 +1048573,14.7476 +2097149,28.3884 +4194301,53.5665 +8388605,105.004 +16777213,211.528 +33554429,420.002 +67108861,843.456 +13,0.710656 +29,0.729088 +61,1.04346 +125,1.17965 +253,0.749568 +509,0.702464 +1021,0.736256 +2045,0.750592 +4093,0.801792 +8189,0.850944 +16381,0.935936 +32765,1.11104 +65533,1.58822 +131069,3.12934 +262141,4.70938 +524285,8.09779 +1048573,14.7948 +2097149,27.5794 +4194301,53.6269 +8388605,105.978 +16777213,208.907 +33554429,422.719 +67108861,843.554 +13,0.637952 +29,1.22778 +61,0.740352 +125,1.79098 +253,0.754688 +509,0.98816 +1021,0.753664 +2045,0.77312 +4093,0.679936 +8189,0.805888 +16381,0.95744 +32765,1.09158 +65533,1.55955 +131069,2.82317 +262141,4.56294 +524285,8.65798 +1048573,15.4675 +2097149,27.648 +4194301,54.6345 +8388605,105.007 +16777213,210.969 +33554429,420.205 +67108861,840.478 +13,0.848896 +29,0.830464 +61,0.70656 +125,0.779264 +253,0.657408 +509,0.736256 +1021,0.787456 +2045,0.82944 +4093,1.03219 +8189,0.955392 +16381,1.05062 +32765,1.36602 +65533,1.50221 +131069,3.67002 +262141,4.86605 +524285,9.07469 +1048573,14.9156 +2097149,27.6603 +4194301,53.929 +8388605,104.173 +16777213,209.303 +33554429,420.543 +67108861,843.342 +13,0.8704 +29,0.678912 +61,0.690176 +125,0.73728 +253,0.733184 +509,0.784384 +1021,0.766976 +2045,0.74752 +4093,0.76592 +8189,0.923648 +16381,1.15814 +32765,1.12026 +65533,1.51245 +131069,3.09453 +262141,5.17939 +524285,8.64563 +1048573,14.3391 +2097149,28.1948 +4194301,53.9761 +8388605,105.854 +16777213,212.022 +33554429,419.199 +67108861,844.932 +13,0.786432 +29,1.21242 +61,1.67731 +125,0.572416 +253,0.570368 +509,0.755712 +1021,0.71168 +2045,0.661504 +4093,0.776192 +8189,0.830464 +16381,0.9472 +32765,1.06906 +65533,1.46944 +131069,3.95776 +262141,6.12045 +524285,8.03021 +1048573,14.7016 +2097149,27.5333 +4194301,53.4528 +8388605,105.197 +16777213,210.511 +33554429,420.308 +67108861,843.719 +13,1.45408 +29,1.23802 +61,0.723968 +125,0.726016 +253,0.744448 +509,0.94208 +1021,0.840704 +2045,0.775168 +4093,0.703488 +8189,0.73728 +16381,0.840704 +32765,1.67526 +65533,1.5104 +131069,3.01466 +262141,4.95002 +524285,8.56269 +1048573,14.4916 +2097149,27.5292 +4194301,53.9279 +8388605,105.14 +16777213,210.183 +33554429,421.56 +67108861,843.759 +13,0.741376 +29,0.797696 +61,0.730112 +125,0.78336 +253,0.748544 +509,0.694272 +1021,1.00966 +2045,0.744448 +4093,0.888832 +8189,0.751616 +16381,0.850944 +32765,1.13766 +65533,1.48582 +131069,3.02592 +262141,4.98176 +524285,8.75315 +1048573,14.6237 +2097149,27.1329 +4194301,53.1497 +8388605,106.358 +16777213,210.353 +33554429,423.052 +67108861,844.332 +13,0.994304 +29,0.751616 +61,0.961536 +125,0.590848 +253,0.519168 +509,0.7424 +1021,0.672768 +2045,0.685056 +4093,0.910336 +8189,0.854016 +16381,0.949248 +32765,1.12128 +65533,1.62611 +131069,3.12013 +262141,5.18758 +524285,8.76237 +1048573,14.3145 +2097149,28.0095 +4194301,53.547 +8388605,105.495 +16777213,210.942 +33554429,421.042 +67108861,845.292 +13,0.664576 +29,0.774144 +61,0.932864 +125,0.792576 +253,0.881664 +509,0.76288 +1021,0.9472 +2045,0.81408 +4093,0.671744 +8189,0.867328 +16381,0.90112 +32765,1.11309 +65533,1.56262 +131069,3.21229 +262141,4.90189 +524285,8.09779 +1048573,14.6729 +2097149,28.0883 +4194301,53.8593 +8388605,105.035 +16777213,212.137 +33554429,424.744 +67108861,842.355 +13,0.621568 +29,0.674816 +61,0.832512 +125,0.753664 +253,0.698368 +509,0.883712 +1021,1.3353 +2045,0.812032 +4093,0.780288 +8189,0.851968 +16381,0.948224 +32765,1.13869 +65533,2.048 +131069,3.10784 +262141,5.43232 +524285,8.7552 +1048573,14.463 +2097149,27.3428 +4194301,53.7743 +8388605,105.957 +16777213,211.515 +33554429,423.047 +67108861,845.05 +13,0.683008 +29,0.676864 +61,0.823296 +125,0.70656 +253,0.713728 +509,0.678912 +1021,0.940032 +2045,0.771072 +4093,0.73728 +8189,0.738304 +16381,0.968704 +32765,1.0793 +65533,1.62406 +131069,3.18566 +262141,4.73293 +524285,8.60672 +1048573,15.1081 +2097149,27.4248 +4194301,54.0047 +8388605,106.125 +16777213,210.925 +33554429,423.054 +67108861,843.558 +13,1.05984 +29,0.74752 +61,0.733184 +125,0.763904 +253,0.794624 +509,0.73728 +1021,0.787456 +2045,0.7168 +4093,0.709632 +8189,0.816128 +16381,0.95744 +32765,1.09875 +65533,1.55034 +131069,3.10886 +262141,5.13536 +524285,8.54118 +1048573,14.5715 +2097149,27.9306 +4194301,53.5255 +8388605,104.701 +16777213,208.45 +33554429,418.217 +67108861,848.204 +13,0.654336 +29,0.832512 +61,0.75776 +125,1.03219 +253,0.88064 +509,1.08851 +1021,0.736256 +2045,0.671744 +4093,0.837632 +8189,0.818176 +16381,0.9216 +32765,1.10797 +65533,1.95994 +131069,3.14061 +262141,5.33606 +524285,8.56064 +1048573,14.5562 +2097149,28.2286 +4194301,54.6099 +8388605,105.07 +16777213,209.307 +33554429,420.878 +67108861,843.575 +13,0.743424 +29,0.662528 +61,0.858112 +125,0.565248 +253,0.700416 +509,0.580608 +1021,0.576512 +2045,0.960512 +4093,0.739328 +8189,0.78336 +16381,0.86528 +32765,1.07315 +65533,1.54214 +131069,3.02285 +262141,5.15891 +524285,7.8807 +1048573,14.9821 +2097149,28.0289 +4194301,53.6259 +8388605,104.283 +16777213,211.189 +33554429,421.276 +67108861,845.259 +13,0.741376 +29,0.7168 +61,0.786432 +125,0.76288 +253,1.01171 +509,0.70144 +1021,0.775168 +2045,0.779264 +4093,0.772096 +8189,0.7424 +16381,1.15098 +32765,1.21446 +65533,1.51142 +131069,3.06995 +262141,4.75341 +524285,8.80026 +1048573,14.7569 +2097149,27.7596 +4194301,53.9699 +8388605,105.459 +16777213,209.972 +33554429,420.49 +67108861,840.242 +13,0.596992 +29,0.86528 +61,0.753664 +125,0.730112 +253,0.751616 +509,0.77312 +1021,0.761856 +2045,1.0281 +4093,0.789504 +8189,0.847872 +16381,0.969728 +32765,1.3056 +65533,1.44282 +131069,3.35258 +262141,4.77184 +524285,8.03635 +1048573,14.7118 +2097149,27.1688 +4194301,53.588 +8388605,106.105 +16777213,210.037 +33554429,421.584 +67108861,840.562 +13,0.896 +29,0.82944 +61,0.5632 +125,0.584704 +253,0.724992 +509,0.664576 +1021,0.67072 +2045,0.761856 +4093,0.771072 +8189,0.813056 +16381,0.845824 +32765,1.06291 +65533,1.70701 +131069,3.16928 +262141,4.9623 +524285,7.96365 +1048573,15.6488 +2097149,28.2296 +4194301,53.6453 +8388605,105.236 +16777213,209.012 +33554429,420.485 +67108861,846.217 +13,0.835584 +29,1.19603 +61,0.748544 +125,0.722944 +253,0.751616 +509,0.657408 +1021,0.714752 +2045,0.714752 +4093,0.756736 +8189,0.749568 +16381,0.912384 +32765,1.14586 +65533,1.58925 +131069,2.92557 +262141,4.93466 +524285,8.22477 +1048573,14.548 +2097149,27.7473 +4194301,53.5808 +8388605,106.071 +16777213,209.33 +33554429,420.71 +67108861,843.458 +13,0.73728 +29,0.826368 +61,0.7936 +125,0.731136 +253,0.712704 +509,1.0711 +1021,0.738304 +2045,0.847872 +4093,0.766976 +8189,0.791552 +16381,0.950272 +32765,1.07827 +65533,1.49914 +131069,3.14266 +262141,5.47328 +524285,8.50534 +1048573,14.7937 +2097149,27.3859 +4194301,53.0084 +8388605,104.855 +16777213,210.225 +33554429,419.526 +67108861,844.634 +13,0.772096 +29,0.781312 +61,0.842752 +125,0.703488 +253,0.657408 +509,0.749568 +1021,0.720896 +2045,0.715776 +4093,0.713728 +8189,0.80896 +16381,0.893952 +32765,1.07827 +65533,1.51552 +131069,3.05971 +262141,4.9367 +524285,8.53504 +1048573,14.6319 +2097149,27.5896 +4194301,53.7938 +8388605,105.553 +16777213,209.531 +33554429,424.162 +67108861,840.391 +13,0.813056 +29,0.543744 +61,0.777216 +125,0.717824 +253,0.879616 +509,0.62976 +1021,0.739328 +2045,0.780288 +4093,0.743424 +8189,0.75264 +16381,0.776192 +32765,1.10694 +65533,1.70701 +131069,3.41504 +262141,4.93261 +524285,8.38246 +1048573,14.7333 +2097149,27.7944 +4194301,54.1614 +8388605,105.718 +16777213,209.42 +33554429,421.756 +67108861,842.727 +13,0.72192 +29,0.755712 +61,0.667648 +125,0.772096 +253,0.758784 +509,0.683008 +1021,0.782336 +2045,0.760832 +4093,0.777216 +8189,1.30048 +16381,1.31584 +32765,1.54829 +65533,1.54726 +131069,2.93069 +262141,4.95821 +524285,8.59443 +1048573,14.6606 +2097149,27.4821 +4194301,54.2003 +8388605,105.198 +16777213,208.965 +33554429,422.46 +67108861,845.135 +13,0.904192 +29,0.77824 +61,0.756736 +125,0.75264 +253,0.735232 +509,0.765952 +1021,0.802816 +2045,0.980992 +4093,0.827392 +8189,0.792576 +16381,0.939008 +32765,1.12026 +65533,1.54214 +131069,3.15699 +262141,4.79744 +524285,8.59034 +1048573,14.6729 +2097149,27.9388 +4194301,52.6254 +8388605,105.99 +16777213,209.179 +33554429,421.455 +67108861,841.313 +13,0.730112 +29,0.710656 +61,0.759808 +125,0.80896 +253,1.01786 +509,0.919552 +1021,0.763904 +2045,1.33837 +4093,0.818176 +8189,0.751616 +16381,0.846848 +32765,1.31379 +65533,1.5616 +131069,3.0505 +262141,4.81485 +524285,8.2647 +1048573,14.7466 +2097149,27.9552 +4194301,53.9689 +8388605,105.072 +16777213,209.857 +33554429,421.275 +67108861,845.295 +13,0.83456 +29,0.848896 +61,0.823296 +125,0.754688 +253,0.744448 +509,0.758784 +1021,0.771072 +2045,0.813056 +4093,0.825344 +8189,0.859136 +16381,0.894976 +32765,1.31072 +65533,1.54931 +131069,3.10272 +262141,4.91418 +524285,8.06195 +1048573,15.1194 +2097149,27.9347 +4194301,53.7549 +8388605,104.104 +16777213,211.709 +33554429,421.171 +67108861,844.15 +13,0.693248 +29,0.782336 +61,0.605184 +125,0.760832 +253,0.791552 +509,0.718848 +1021,1.20422 +2045,0.816128 +4093,0.687104 +8189,1.25952 +16381,0.898048 +32765,1.10899 +65533,1.56058 +131069,3.32083 +262141,4.71859 +524285,7.88992 +1048573,15.5791 +2097149,27.5958 +4194301,54.0672 +8388605,105.433 +16777213,212.129 +33554429,420.172 +67108861,841.16 +13,0.6912 +29,0.74752 +61,0.67584 +125,0.760832 +253,2.16371 +509,0.688128 +1021,0.7168 +2045,0.770048 +4093,0.761856 +8189,0.786432 +16381,0.960512 +32765,1.16736 +65533,1.47558 +131069,3.02182 +262141,5.04109 +524285,8.46029 +1048573,14.2643 +2097149,28.0033 +4194301,53.2797 +8388605,103.675 +16777213,210.119 +33554429,421.178 +67108861,837.052 +13,0.883712 +29,0.888832 +61,0.774144 +125,1.13152 +253,0.668672 +509,0.7424 +1021,0.677888 +2045,0.6656 +4093,0.726016 +8189,0.79872 +16381,0.907264 +32765,1.09158 +65533,1.61894 +131069,3.10067 +262141,4.71142 +524285,8.43981 +1048573,14.1885 +2097149,27.5313 +4194301,53.3934 +8388605,105.035 +16777213,210.557 +33554429,421.291 +67108861,840.086 +13,0.734208 +29,0.594944 +61,0.520192 +125,0.805888 +253,0.718848 +509,0.70656 +1021,0.951296 +2045,0.723968 +4093,0.801792 +8189,0.832512 +16381,0.893952 +32765,1.54829 +65533,2.08691 +131069,3.07507 +262141,5.4528 +524285,9.2201 +1048573,14.5674 +2097149,27.4995 +4194301,53.844 +8388605,106.445 +16777213,211.192 +33554429,420.586 +67108861,842.278 +13,0.832512 +29,0.82944 +61,0.749568 +125,0.774144 +253,0.715776 +509,0.658432 +1021,0.672768 +2045,0.83456 +4093,1.1561 +8189,0.775168 +16381,0.887808 +32765,1.14893 +65533,1.53088 +131069,3.19795 +262141,4.95616 +524285,8.50944 +1048573,14.3872 +2097149,27.5005 +4194301,53.5265 +8388605,105.638 +16777213,210.126 +33554429,421.164 +67108861,843.517 +13,0.843776 +29,0.523264 +61,0.485376 +125,0.559104 +253,0.657408 +509,0.602112 +1021,0.684032 +2045,0.787456 +4093,0.804864 +8189,0.7168 +16381,0.705536 +32765,0.939008 +65533,2.31117 +131069,3.0976 +262141,4.19123 +524285,8.7552 +1048573,15.2443 +2097149,27.5313 +4194301,54.0887 +8388605,106.052 +16777213,208.078 +33554429,419.835 +67108861,837.751 +13,1.14074 +29,0.841728 +61,0.699392 +125,0.664576 +253,0.749568 +509,0.65024 +1021,1.24211 +2045,0.759808 +4093,0.809984 +8189,0.777216 +16381,0.909312 +32765,1.05574 +65533,1.51245 +131069,3.26042 +262141,4.52403 +524285,7.81312 +1048573,15.8925 +2097149,28.329 +4194301,53.3883 +8388605,105.402 +16777213,209.643 +33554429,421.378 +67108861,843.463 +13,0.749568 +29,0.649216 +61,0.567296 +125,0.768 +253,0.82432 +509,0.77312 +1021,0.744448 +2045,0.830464 +4093,0.804864 +8189,0.801792 +16381,1.03731 +32765,1.61894 +65533,1.69062 +131069,3.74989 +262141,4.88141 +524285,8.03021 +1048573,15.5054 +2097149,28.1979 +4194301,54.7891 +8388605,105.456 +16777213,208.509 +33554429,422.284 +67108861,844.26 +13,0.818176 +29,0.859136 +61,0.80384 +125,0.731136 +253,0.722944 +509,0.813056 +1021,0.755712 +2045,0.731136 +4093,1.00762 +8189,0.909312 +16381,0.956416 +32765,1.08749 +65533,1.42438 +131069,2.9655 +262141,4.69914 +524285,8.04045 +1048573,14.8603 +2097149,27.4924 +4194301,54.5597 +8388605,105.683 +16777213,210.849 +33554429,425.206 +67108861,842.412 +13,0.828416 +29,0.833536 +61,0.73216 +125,0.735232 +253,1.4295 +509,0.8192 +1021,0.734208 +2045,0.663552 +4093,0.723968 +8189,0.828416 +16381,0.905216 +32765,1.03424 +65533,1.52474 +131069,2.99418 +262141,5.3289 +524285,8.74496 +1048573,14.7425 +2097149,27.4043 +4194301,54.2474 +8388605,105.538 +16777213,212.137 +33554429,420.545 +67108861,843.51 +13,1.36602 +29,0.84992 +61,0.65024 +125,0.759808 +253,0.651264 +509,0.700416 +1021,0.726016 +2045,0.668672 +4093,0.794624 +8189,0.867328 +16381,0.91648 +32765,1.05882 +65533,1.55136 +131069,3.0167 +262141,4.96742 +524285,7.9831 +1048573,15.0784 +2097149,27.9224 +4194301,53.9771 +8388605,105.351 +16777213,208.944 +33554429,420.749 +67108861,837.507 +13,0.934912 +29,0.856064 +61,1.05472 +125,0.826368 +253,0.559104 +509,0.520192 +1021,0.76288 +2045,0.759808 +4093,0.772096 +8189,1.024 +16381,0.969728 +32765,1.4295 +65533,1.57082 +131069,3.5328 +262141,4.92851 +524285,8.97331 +1048573,14.6217 +2097149,28.116 +4194301,54.0334 +8388605,105.427 +16777213,211.549 +33554429,419.017 +67108861,845.511 +13,0.887808 +29,0.67584 +61,0.781312 +125,0.77824 +253,0.749568 +509,0.720896 +1021,0.766976 +2045,0.768 +4093,0.796672 +8189,0.87552 +16381,0.95744 +32765,1.152 +65533,1.54829 +131069,3.41914 +262141,5.00019 +524285,8.0855 +1048573,15.1204 +2097149,27.4135 +4194301,53.9535 +8388605,105.599 +16777213,210.017 +33554429,419.944 +67108861,842.065 +13,0.777216 +29,0.827392 +61,0.753664 +125,0.950272 +253,0.708608 +509,0.791552 +1021,0.750592 +2045,0.944128 +4093,1.09978 +8189,0.86016 +16381,1.11002 +32765,1.47354 +65533,1.5401 +131069,3.61165 +262141,4.91213 +524285,7.92166 +1048573,14.7343 +2097149,27.7883 +4194301,55.167 +8388605,107.418 +16777213,210.399 +33554429,421.254 +67108861,845.573 +13,0.960512 +29,0.743424 +61,0.835584 +125,0.836608 +253,0.571392 +509,0.886784 +1021,0.908288 +2045,1.56877 +4093,0.812032 +8189,0.847872 +16381,0.932864 +32765,1.13254 +65533,1.57594 +131069,3.00237 +262141,5.09645 +524285,8.36198 +1048573,14.6002 +2097149,27.3818 +4194301,53.9177 +8388605,105.77 +16777213,210.322 +33554429,420.028 +67108861,840.905 +13,0.897024 +29,0.888832 +61,0.748544 +125,0.649216 +253,0.843776 +509,0.657408 +1021,0.718848 +2045,0.817152 +4093,0.830464 +8189,0.840704 +16381,0.923648 +32765,1.1305 +65533,1.51142 +131069,3.26861 +262141,4.91315 +524285,7.90016 +1048573,15.8423 +2097149,27.5855 +4194301,55.0738 +8388605,107.672 +16777213,208.085 +33554429,422.446 +67108861,844.892 +13,0.815104 +29,0.641024 +61,0.74752 +125,0.712704 +253,1.04653 +509,0.75264 +1021,0.796672 +2045,0.78848 +4093,0.82944 +8189,0.656384 +16381,0.973824 +32765,1.11411 +65533,1.47661 +131069,3.14061 +262141,5.2777 +524285,8.14285 +1048573,15.6232 +2097149,27.561 +4194301,53.0616 +8388605,105.295 +16777213,210.385 +33554429,422.527 +67108861,840.763 +13,0.886784 +29,0.82432 +61,0.562176 +125,0.571392 +253,0.57856 +509,1.05574 +1021,0.766976 +2045,0.735232 +4093,0.831488 +8189,0.883712 +16381,0.94208 +32765,1.11002 +65533,1.55034 +131069,4.01203 +262141,5.13126 +524285,8.61389 +1048573,15.2156 +2097149,28.0003 +4194301,53.8819 +8388605,105.486 +16777213,209.325 +33554429,421.074 +67108861,846.013 +13,0.886784 +29,0.769024 +61,0.630784 +125,0.75264 +253,0.902144 +509,0.708608 +1021,0.76288 +2045,0.79872 +4093,0.838656 +8189,0.70144 +16381,1.00045 +32765,1.11002 +65533,1.51757 +131069,3.14163 +262141,5.33299 +524285,8.2985 +1048573,15.1316 +2097149,27.0766 +4194301,54.657 +8388605,104.89 +16777213,209.914 +33554429,420.883 +67108861,844.07 +13,1.24006 +29,0.75264 +61,0.768 +125,0.766976 +253,0.823296 +509,0.758784 +1021,0.792576 +2045,0.718848 +4093,0.833536 +8189,0.879616 +16381,0.986112 +32765,1.16736 +65533,1.54931 +131069,3.05459 +262141,4.76774 +524285,8.70912 +1048573,14.9494 +2097149,28.5286 +4194301,54.0498 +8388605,106.785 +16777213,211.202 +33554429,419.525 +67108861,841.826 +13,0.755712 +29,0.83968 +61,0.649216 +125,0.871424 +253,0.730112 +509,0.712704 +1021,0.763904 +2045,0.790528 +4093,0.806912 +8189,0.950272 +16381,0.968704 +32765,1.13357 +65533,1.51142 +131069,3.56045 +262141,4.96947 +524285,8.06502 +1048573,15.1767 +2097149,28.3156 +4194301,53.0432 +8388605,103.871 +16777213,209.86 +33554429,420.618 +67108861,840.729 +13,0.887808 +29,0.868352 +61,0.766976 +125,0.592896 +253,0.735232 +509,0.768 +1021,0.781312 +2045,1.64659 +4093,0.9984 +8189,0.832512 +16381,0.950272 +32765,1.46842 +65533,1.51757 +131069,4.3991 +262141,5.02272 +524285,8.4009 +1048573,14.7354 +2097149,28.2255 +4194301,53.7774 +8388605,105.915 +16777213,210.361 +33554429,423.246 +67108861,840.258 +13,0.85504 +29,1.2759 +61,0.741376 +125,0.736256 +253,0.728064 +509,0.81408 +1021,0.806912 +2045,2.11558 +4093,0.877568 +8189,0.88064 +16381,0.927744 +32765,1.36192 +65533,1.52064 +131069,3.06381 +262141,4.95923 +524285,8.21862 +1048573,14.9955 +2097149,27.8876 +4194301,54.017 +8388605,106.061 +16777213,210.685 +33554429,420.303 +67108861,841.351 +13,0.8704 +29,0.882688 +61,0.7168 +125,0.794624 +253,0.714752 +509,0.72192 +1021,0.879616 +2045,0.76288 +4093,0.806912 +8189,0.811008 +16381,0.892928 +32765,1.15814 +65533,1.4377 +131069,4.18611 +262141,5.27565 +524285,8.59546 +1048573,14.9535 +2097149,27.6756 +4194301,52.4861 +8388605,104.661 +16777213,210.464 +33554429,418.691 +67108861,846.219 +13,0.866304 +29,0.902144 +61,0.873472 +125,0.662528 +253,0.687072 +509,0.741376 +1021,0.79872 +2045,0.801792 +4093,0.779264 +8189,1.00454 +16381,0.935936 +32765,1.28205 +65533,1.55443 +131069,3.11296 +262141,4.66739 +524285,8.00051 +1048573,15.1695 +2097149,28.4109 +4194301,53.8573 +8388605,105.735 +16777213,210.917 +33554429,422.288 +67108861,842.564 +13,0.77312 +29,0.883712 +61,0.755712 +125,0.708608 +253,0.734208 +509,0.768 +1021,0.795648 +2045,0.980992 +4093,0.764928 +8189,1.00352 +16381,0.950272 +32765,1.16941 +65533,1.52371 +131069,3.07712 +262141,5.0729 +524285,8.45722 +1048573,15.66 +2097149,27.5026 +4194301,53.5921 +8388605,107.296 +16777213,209.711 +33554429,420.933 +67108861,844.678 +13,0.813056 +29,0.705536 +61,0.953344 +125,0.726016 +253,0.77312 +509,0.759808 +1021,0.75776 +2045,0.985088 +4093,0.812032 +8189,0.77312 +16381,1.0025 +32765,1.29638 +65533,1.46227 +131069,3.00237 +262141,4.8128 +524285,8.6825 +1048573,14.9699 +2097149,28.2696 +4194301,53.2367 +8388605,106.777 +16777213,209.505 +33554429,421.308 +67108861,841.389 +13,0.787456 +29,1.46432 +61,0.730112 +125,1.47354 +253,0.801792 +509,0.70144 +1021,0.807936 +2045,0.806912 +4093,0.831488 +8189,0.784384 +16381,0.954368 +32765,1.05267 +65533,1.61997 +131069,2.76992 +262141,5.06982 +524285,8.25446 +1048573,14.4486 +2097149,27.35 +4194301,54.3171 +8388605,106.171 +16777213,210.016 +33554429,421.1 +67108861,844.946 +13,0.806912 +29,0.771072 +61,0.579584 +125,0.745472 +253,0.823296 +509,1.06394 +1021,0.690176 +2045,0.81408 +4093,0.996352 +8189,0.811008 +16381,0.978944 +32765,1.13459 +65533,1.62509 +131069,3.40275 +262141,4.92954 +524285,8.42138 +1048573,14.5162 +2097149,27.8958 +4194301,54.6519 +8388605,105.141 +16777213,210.025 +33554429,421.966 +67108861,842.764 +13,0.949248 +29,0.82432 +61,0.666624 +125,0.730112 +253,0.73728 +509,0.7424 +1021,0.708608 +2045,0.806912 +4093,0.832512 +8189,0.821248 +16381,0.877568 +32765,1.02502 +65533,1.46739 +131069,3.712 +262141,4.84352 +524285,8.44698 +1048573,14.4261 +2097149,27.5272 +4194301,53.5398 +8388605,106.671 +16777213,210.254 +33554429,420.636 +67108861,844.804 +13,0.67072 +29,0.666624 +61,0.676864 +125,0.763904 +253,0.692224 +509,0.763904 +1021,0.746496 +2045,1.36806 +4093,0.904192 +8189,1.04141 +16381,0.951296 +32765,1.21037 +65533,1.54522 +131069,3.08736 +262141,4.83328 +524285,8.49818 +1048573,14.3708 +2097149,27.903 +4194301,53.2521 +8388605,104.8 +16777213,210.491 +33554429,421.385 +67108861,847.14 +13,0.715776 +29,0.669696 +61,0.562176 +125,0.613376 +253,0.5376 +509,0.529408 +1021,0.688128 +2045,0.669696 +4093,0.794624 +8189,0.871424 +16381,0.994304 +32765,1.21242 +65533,1.62406 +131069,3.16928 +262141,5.3289 +524285,8.57395 +1048573,15.2259 +2097149,28.6812 +4194301,53.3053 +8388605,104.878 +16777213,210.339 +33554429,420.457 +67108861,843.655 +13,0.787456 +29,0.671744 +61,0.801792 +125,0.685056 +253,0.672768 +509,0.65536 +1021,0.805888 +2045,0.70144 +4093,0.835584 +8189,0.82944 +16381,0.976896 +32765,1.152 +65533,1.50835 +131069,3.34131 +262141,4.76467 +524285,8.0128 +1048573,14.6719 +2097149,27.2138 +4194301,54.2136 +8388605,105.036 +16777213,212.424 +33554429,421.217 +67108861,845.645 +13,0.681984 +29,0.695296 +61,0.744448 +125,0.753664 +253,0.780288 +509,0.743424 +1021,0.796672 +2045,0.724992 +4093,0.761856 +8189,0.83968 +16381,1.03834 +32765,1.11309 +65533,1.61075 +131069,3.39046 +262141,4.89165 +524285,8.56166 +1048573,14.6596 +2097149,27.8559 +4194301,53.6627 +8388605,106.406 +16777213,208.952 +33554429,421.319 +67108861,843.586 +13,0.946176 +29,0.854016 +61,0.806912 +125,1.08339 +253,0.709632 +509,0.760832 +1021,0.772096 +2045,0.769024 +4093,0.801792 +8189,0.82944 +16381,0.933888 +32765,1.10899 +65533,1.55238 +131069,3.1959 +262141,4.92851 +524285,8.07936 +1048573,14.8767 +2097149,27.3316 +4194301,53.7917 +8388605,105.069 +16777213,209.653 +33554429,420.413 +67108861,843.08 +13,0.898048 +29,0.830464 +61,0.656384 +125,0.656384 +253,0.755712 +509,0.731136 +1021,0.771072 +2045,0.831488 +4093,0.65024 +8189,0.796672 +16381,0.927744 +32765,1.14483 +65533,1.68653 +131069,3.16723 +262141,4.94899 +524285,8.19507 +1048573,14.6258 +2097149,28.544 +4194301,54.0754 +8388605,105.26 +16777213,209.385 +33554429,424.816 +67108861,840.676 +13,0.713728 +29,0.648192 +61,0.559104 +125,0.565248 +253,0.702464 +509,0.736256 +1021,0.843776 +2045,0.724992 +4093,0.881664 +8189,0.861184 +16381,0.932864 +32765,1.14995 +65533,1.73568 +131069,3.13242 +262141,5.38624 +524285,8.98765 +1048573,14.7855 +2097149,27.5855 +4194301,55.2366 +8388605,107.171 +16777213,210.387 +33554429,419.732 +67108861,842.035 +13,0.795648 +29,0.765952 +61,0.763904 +125,0.736256 +253,0.67584 +509,0.677888 +1021,1.14688 +2045,0.779264 +4093,0.913408 +8189,0.84992 +16381,1.05165 +32765,1.51654 +65533,1.42541 +131069,3.01261 +262141,4.92134 +524285,9.01427 +1048573,15.2955 +2097149,28.3525 +4194301,52.8978 +8388605,105.79 +16777213,209.588 +33554429,420.374 +67108861,844.282 +13,0.67584 +29,0.613376 +61,0.567296 +125,0.771072 +253,0.746496 +509,0.671744 +1021,0.76288 +2045,0.804864 +4093,0.779264 +8189,0.882688 +16381,1.08134 +32765,1.50221 +65533,1.92102 +131069,3.20307 +262141,5.25824 +524285,9.38598 +1048573,14.3677 +2097149,27.6234 +4194301,53.9146 +8388605,106.473 +16777213,212.723 +33554429,420.846 +67108861,845.991 +13,0.694272 +29,0.663552 +61,0.775168 +125,0.760832 +253,0.970752 +509,0.726016 +1021,0.678912 +2045,0.811008 +4093,0.918528 +8189,0.884736 +16381,0.976896 +32765,1.12742 +65533,1.68243 +131069,3.13651 +262141,4.91418 +524285,8.00051 +1048573,15.3139 +2097149,29.0591 +4194301,53.4508 +8388605,105.836 +16777213,210.614 +33554429,421.189 +67108861,846.448 +13,1.14586 +29,0.77824 +61,0.71168 +125,0.69632 +253,0.751616 +509,0.683008 +1021,0.66048 +2045,0.909312 +4093,0.79872 +8189,0.872448 +16381,0.974848 +32765,1.10694 +65533,1.51757 +131069,3.10989 +262141,4.87014 +524285,8.3159 +1048573,15.3375 +2097149,29.0355 +4194301,54.4942 +8388605,105.635 +16777213,209.91 +33554429,421.23 +67108861,842.541 +13,0.836608 +29,0.80384 +61,0.750592 +125,0.643072 +253,0.804864 +509,0.827392 +1021,0.7424 +2045,0.8192 +4093,0.811008 +8189,0.7936 +16381,0.914432 +32765,1.07315 +65533,1.49504 +131069,3.34643 +262141,4.84762 +524285,8.13875 +1048573,14.2469 +2097149,27.862 +4194301,53.5429 +8388605,106.124 +16777213,209.392 +33554429,420.48 +67108861,841.922 +13,0.902144 +29,0.958464 +61,0.7424 +125,0.70144 +253,1.01581 +509,0.756736 +1021,0.724992 +2045,0.80896 +4093,0.755712 +8189,0.813056 +16381,0.979968 +32765,1.1479 +65533,1.29024 +131069,3.13446 +262141,4.92134 +524285,7.99539 +1048573,15.4122 +2097149,28.1149 +4194301,53.3391 +8388605,106.385 +16777213,212.245 +33554429,420.022 +67108861,841.994 +13,0.764928 +29,0.748544 +61,0.713728 +125,0.564224 +253,0.833536 +509,0.658432 +1021,0.76288 +2045,0.733184 +4093,0.823296 +8189,0.873472 +16381,0.969728 +32765,1.14381 +65533,1.65478 +131069,3.14368 +262141,4.87834 +524285,8.09062 +1048573,14.9647 +2097149,29.2526 +4194301,53.4149 +8388605,105.715 +16777213,209.811 +33554429,420.452 +67108861,841.786 +13,1.13869 +29,0.919552 +61,0.86016 +125,0.722944 +253,0.739328 +509,0.754688 +1021,0.751616 +2045,1.05267 +4093,0.776192 +8189,0.813056 +16381,0.9728 +32765,1.1008 +65533,1.54419 +131069,3.1191 +262141,5.16198 +524285,8.95283 +1048573,14.5019 +2097149,28.417 +4194301,54.6263 +8388605,106.458 +16777213,209.053 +33554429,421.613 +67108861,843.502 +13,0.867328 +29,0.859136 +61,0.825344 +125,0.756736 +253,0.738304 +509,0.679936 +1021,0.735232 +2045,0.781312 +4093,0.772096 +8189,0.754688 +16381,0.943104 +32765,1.11514 +65533,1.67629 +131069,3.34234 +262141,4.81997 +524285,8.13261 +1048573,15.5597 +2097149,28.4078 +4194301,53.718 +8388605,105.683 +16777213,210.773 +33554429,420.585 +67108861,844.644 +13,0.90112 +29,0.90624 +61,0.749568 +125,0.966656 +253,0.693248 +509,0.712704 +1021,1.01171 +2045,0.80384 +4093,0.863232 +8189,0.864256 +16381,0.940032 +32765,1.13459 +65533,1.50835 +131069,3.25222 +262141,5.59514 +524285,8.36301 +1048573,15.1818 +2097149,28.3064 +4194301,54.3099 +8388605,106.238 +16777213,208.955 +33554429,422.028 +67108861,841.054 +13,0.68096 +29,0.709632 +61,0.884736 +125,0.692224 +253,1.3568 +509,0.799744 +1021,0.744448 +2045,0.751616 +4093,0.587776 +8189,0.77824 +16381,0.900096 +32765,1.09773 +65533,1.51142 +131069,3.0679 +262141,4.95718 +524285,8.09984 +1048573,14.6258 +2097149,28.1938 +4194301,54.0928 +8388605,105.548 +16777213,208.996 +33554429,420.261 +67108861,846.336 +13,0.581632 +29,0.771072 +61,0.574464 +125,0.562176 +253,0.82944 +509,0.789504 +1021,0.782336 +2045,0.74752 +4093,0.76288 +8189,0.862208 +16381,0.908288 +32765,1.09978 +65533,1.51757 +131069,2.9655 +262141,4.91622 +524285,8.00051 +1048573,14.8204 +2097149,27.4166 +4194301,53.4159 +8388605,105.003 +16777213,212.045 +33554429,420.503 +67108861,845.749 +13,0.723968 +29,0.791552 +61,0.735232 +125,0.749568 +253,0.746496 +509,0.661504 +1021,0.6656 +2045,1.15405 +4093,0.83968 +8189,0.8448 +16381,0.95232 +32765,1.06189 +65533,1.61382 +131069,3.14163 +262141,5.30125 +524285,8.00051 +1048573,14.7425 +2097149,27.8743 +4194301,53.3012 +8388605,105.398 +16777213,210.763 +33554429,421.115 +67108861,842.413 +13,1.27283 +29,0.689152 +61,0.715776 +125,1.02502 +253,0.758784 +509,0.70656 +1021,0.777216 +2045,0.658432 +4093,0.718848 +8189,0.904192 +16381,0.968704 +32765,1.14278 +65533,1.5104 +131069,3.08838 +262141,5.0135 +524285,8.7511 +1048573,15.0641 +2097149,27.7197 +4194301,54.1952 +8388605,105.685 +16777213,209.062 +33554429,420.251 +67108861,842.798 +13,0.872448 +29,0.88064 +61,0.772096 +125,0.707584 +253,0.728064 +509,1.24621 +1021,0.771072 +2045,0.781312 +4093,0.832512 +8189,0.871424 +16381,0.946176 +32765,1.78176 +65533,1.53498 +131069,3.34848 +262141,4.92851 +524285,7.95238 +1048573,14.9955 +2097149,27.7535 +4194301,53.3668 +8388605,106.092 +16777213,210.683 +33554429,422.165 +67108861,841.563 +13,0.72704 +29,0.697344 +61,0.704512 +125,0.800768 +253,0.740352 +509,0.779264 +1021,0.90112 +2045,0.750592 +4093,0.664576 +8189,0.835584 +16381,0.982016 +32765,1.43872 +65533,1.57184 +131069,3.45907 +262141,4.93773 +524285,8.32614 +1048573,14.7087 +2097149,27.9562 +4194301,52.991 +8388605,104.81 +16777213,207.868 +33554429,419.747 +67108861,844.251 +13,0.57344 +29,0.70144 +61,0.753664 +125,0.6656 +253,0.719872 +509,0.75776 +1021,0.719872 +2045,0.93184 +4093,0.833536 +8189,0.876544 +16381,0.86016 +32765,1.15098 +65533,1.86982 +131069,3.13446 +262141,5.15379 +524285,8.2432 +1048573,14.7128 +2097149,28.032 +4194301,53.0278 +8388605,105.301 +16777213,209.906 +33554429,420.86 +67108861,842.013 +13,0.973824 +29,0.744448 +61,0.723968 +125,0.718848 +253,0.750592 +509,0.750592 +1021,0.723968 +2045,0.743424 +4093,0.801792 +8189,0.749568 +16381,0.919552 +32765,1.14381 +65533,1.55955 +131069,3.13446 +262141,4.93261 +524285,8.52685 +1048573,14.7323 +2097149,27.5528 +4194301,53.6003 +8388605,106.037 +16777213,208.869 +33554429,419.957 +67108861,836.038 +13,0.902144 +29,1.10797 +61,0.789504 +125,0.75264 +253,0.710656 +509,0.746496 +1021,0.760832 +2045,0.71168 +4093,0.86016 +8189,0.850944 +16381,0.946176 +32765,1.10797 +65533,1.55341 +131069,3.57786 +262141,4.90803 +524285,8.09677 +1048573,14.9473 +2097149,27.3152 +4194301,54.1983 +8388605,105.487 +16777213,209.329 +33554429,421.026 +67108861,842.611 +13,0.816128 +29,0.984064 +61,0.738304 +125,0.683008 +253,0.862208 +509,0.718848 +1021,0.71168 +2045,0.821248 +4093,0.769024 +8189,0.867328 +16381,0.975872 +32765,1.11718 +65533,1.5063 +131069,3.14061 +262141,5.83475 +524285,8.36301 +1048573,14.7036 +2097149,27.1524 +4194301,53.3514 +8388605,105.524 +16777213,210.047 +33554429,420.048 +67108861,846.069 +13,0.892928 +29,0.876544 +61,0.847872 +125,0.672768 +253,0.738304 +509,0.693248 +1021,0.771072 +2045,0.776192 +4093,0.892928 +8189,0.800768 +16381,0.919552 +32765,1.10899 +65533,2.2016 +131069,3.00646 +262141,4.71859 +524285,8.11315 +1048573,15.8208 +2097149,27.6101 +4194301,53.7108 +8388605,106.21 +16777213,210.807 +33554429,418.245 +67108861,840.315 +13,0.717824 +29,1.11411 +61,0.782336 +125,0.755712 +253,0.750592 +509,0.784384 +1021,0.775168 +2045,0.771072 +4093,0.804864 +8189,0.868352 +16381,0.96256 +32765,1.12128 +65533,1.50426 +131069,3.12832 +262141,4.95821 +524285,8.03533 +1048573,14.5357 +2097149,27.6193 +4194301,53.6689 +8388605,105.845 +16777213,211.982 +33554429,421.176 +67108861,839.058 +13,0.667648 +29,0.841728 +61,1.01683 +125,0.75776 +253,0.74752 +509,0.669696 +1021,0.719872 +2045,0.780288 +4093,0.575488 +8189,0.869376 +16381,0.915456 +32765,1.16019 +65533,1.49606 +131069,3.16621 +262141,4.92339 +524285,8.0128 +1048573,15.1245 +2097149,27.4514 +4194301,54.1921 +8388605,105.885 +16777213,209.567 +33554429,423.262 +67108861,842.098 +13,0.720896 +29,0.89088 +61,0.825344 +125,0.693248 +253,1.23802 +509,0.720896 +1021,0.669696 +2045,0.715776 +4093,0.78848 +8189,0.795648 +16381,0.887808 +32765,1.10694 +65533,1.49914 +131069,3.07098 +262141,4.9111 +524285,8.44698 +1048573,14.9012 +2097149,26.6629 +4194301,53.5409 +8388605,104.202 +16777213,211.9 +33554429,421.235 +67108861,847.488 +13,0.582656 +29,0.613376 +61,0.626688 +125,0.970752 +253,0.67072 +509,0.751616 +1021,0.766976 +2045,0.795648 +4093,0.789504 +8189,0.82944 +16381,0.968704 +32765,1.08544 +65533,1.81043 +131069,3.12832 +262141,5.0473 +524285,8.24218 +1048573,15.0262 +2097149,27.7565 +4194301,53.3975 +8388605,105.297 +16777213,211.096 +33554429,423.172 +67108861,843.284 +13,0.806912 +29,0.807936 +61,0.723968 +125,0.75264 +253,0.739328 +509,0.72192 +1021,1.08544 +2045,0.774144 +4093,0.797696 +8189,0.813056 +16381,0.932864 +32765,1.14381 +65533,1.45715 +131069,3.14163 +262141,5.14048 +524285,8.50022 +1048573,14.5244 +2097149,27.6367 +4194301,53.291 +8388605,106.116 +16777213,213.102 +33554429,419.288 +67108861,845.219 +13,0.879616 +29,0.903168 +61,0.733184 +125,0.723968 +253,0.7424 +509,0.894976 +1021,0.774144 +2045,0.736256 +4093,0.823296 +8189,0.877568 +16381,0.973824 +32765,1.07725 +65533,1.51757 +131069,3.11706 +262141,4.92134 +524285,8.05171 +1048573,14.5306 +2097149,27.6767 +4194301,53.9126 +8388605,104.545 +16777213,209.894 +33554429,420.513 +67108861,838.778 +13,0.68096 +29,0.641024 +61,0.708608 +125,0.768 +253,0.749568 +509,0.748544 +1021,0.72704 +2045,0.840704 +4093,0.780288 +8189,0.841728 +16381,0.97792 +32765,1.27283 +65533,1.53907 +131069,3.12422 +262141,4.90189 +524285,8.45517 +1048573,14.7016 +2097149,26.7162 +4194301,52.7268 +8388605,105.45 +16777213,209.367 +33554429,419.561 +67108861,839.58 +13,0.894976 +29,0.899072 +61,0.7424 +125,0.896 +253,0.636928 +509,0.746496 +1021,0.74752 +2045,0.776192 +4093,1.22573 +8189,0.874496 +16381,0.97792 +32765,1.08954 +65533,1.49094 +131069,3.05459 +262141,5.08109 +524285,7.93293 +1048573,14.9207 +2097149,27.8467 +4194301,53.7979 +8388605,105.906 +16777213,210.554 +33554429,420.514 +67108861,845.132 +13,0.9216 +29,0.89088 +61,0.731136 +125,0.713728 +253,0.7936 +509,0.748544 +1021,0.688128 +2045,0.699392 +4093,0.785408 +8189,0.74752 +16381,0.932864 +32765,1.05984 +65533,1.52474 +131069,3.16621 +262141,5.04832 +524285,8.42752 +1048573,15.0385 +2097149,27.2005 +4194301,53.7569 +8388605,105.981 +16777213,210.058 +33554429,421.762 +67108861,840.707 +13,0.887808 +29,0.847872 +61,0.748544 +125,0.700416 +253,0.882688 +509,0.744448 +1021,0.751616 +2045,0.68608 +4093,1.03424 +8189,0.939008 +16381,0.932864 +32765,1.10797 +65533,1.4889 +131069,3.12525 +262141,4.84864 +524285,7.94931 +1048573,14.5633 +2097149,27.7637 +4194301,53.8604 +8388605,105.192 +16777213,211.679 +33554429,420.301 +67108861,841.066 +13,0.88064 +29,0.87552 +61,0.791552 +125,1.01274 +253,0.6912 +509,0.741376 +1021,0.724992 +2045,0.758784 +4093,0.760832 +8189,0.820224 +16381,1.1305 +32765,1.13357 +65533,1.77869 +131069,3.12013 +262141,5.06368 +524285,8.03123 +1048573,14.5295 +2097149,27.1022 +4194301,53.7385 +8388605,105.781 +16777213,208.817 +33554429,421.328 +67108861,844.543 +13,0.817152 +29,0.75776 +61,0.79872 +125,0.67584 +253,0.978944 +509,0.791552 +1021,0.73728 +2045,0.8192 +4093,0.823296 +8189,0.861184 +16381,0.92672 +32765,1.1479 +65533,1.51552 +131069,3.35258 +262141,4.8937 +524285,8.07526 +1048573,15.1962 +2097149,28.6423 +4194301,54.3273 +8388605,105.593 +16777213,207.844 +33554429,422.789 +67108861,837.455 +13,0.884736 +29,0.874496 +61,0.854016 +125,0.871424 +253,0.596992 +509,0.745472 +1021,0.72704 +2045,0.745472 +4093,0.700416 +8189,0.84992 +16381,0.978944 +32765,1.09363 +65533,1.47763 +131069,3.12934 +262141,4.97869 +524285,8.24013 +1048573,14.8992 +2097149,28.2286 +4194301,53.8317 +8388605,106.68 +16777213,210.063 +33554429,420.277 +67108861,840.51 +13,0.657408 +29,0.683008 +61,0.72192 +125,0.572416 +253,0.760832 +509,0.656384 +1021,0.817152 +2045,0.817152 +4093,1.05574 +8189,0.8192 +16381,0.996352 +32765,1.14278 +65533,1.66093 +131069,3.10989 +262141,5.29306 +524285,8.4992 +1048573,15.2105 +2097149,28.8031 +4194301,54.4092 +8388605,104.947 +16777213,208.587 +33554429,420.973 +67108861,835.433 +13,0.87552 +29,0.893952 +61,0.799744 +125,0.77312 +253,0.760832 +509,0.750592 +1021,0.76288 +2045,0.815104 +4093,0.77312 +8189,0.95744 +16381,0.924672 +32765,1.15405 +65533,1.50733 +131069,3.20205 +262141,4.4032 +524285,8.08141 +1048573,14.976 +2097149,27.7309 +4194301,54.8096 +8388605,104.346 +16777213,209.825 +33554429,418.701 +67108861,839.899 +13,0.896 +29,0.871424 +61,0.758784 +125,0.73728 +253,0.76288 +509,0.7424 +1021,0.472064 +2045,0.816128 +4093,1.18067 +8189,0.818176 +16381,0.910336 +32765,1.10797 +65533,2.06336 +131069,3.14368 +262141,5.5296 +524285,8.41421 +1048573,14.9585 +2097149,27.8098 +4194301,53.6801 +8388605,104.907 +16777213,210.274 +33554429,420.959 +67108861,842.977 +13,0.695296 +29,0.813056 +61,1.2329 +125,0.72192 +253,0.75776 +509,0.723968 +1021,0.769024 +2045,0.734208 +4093,0.831488 +8189,0.825344 +16381,0.93696 +32765,1.152 +65533,1.52474 +131069,3.58093 +262141,4.68992 +524285,8.14592 +1048573,14.9043 +2097149,27.2794 +4194301,53.7723 +8388605,104.789 +16777213,210.528 +33554429,419.842 +67108861,841.771 +13,0.7168 +29,0.683008 +61,0.74752 +125,0.72704 +253,0.780288 +509,0.766976 +1021,0.699392 +2045,0.812032 +4093,0.830464 +8189,0.811008 +16381,0.927744 +32765,1.15814 +65533,1.47763 +131069,3.13958 +262141,5.48352 +524285,8.38349 +1048573,15.0354 +2097149,27.3828 +4194301,53.3166 +8388605,105.78 +16777213,210.219 +33554429,422.525 +67108861,841.487 +13,0.828416 +29,0.879616 +61,0.807936 +125,0.707584 +253,0.687104 +509,0.70144 +1021,0.702464 +2045,0.723968 +4093,0.733184 +8189,0.854016 +16381,0.980992 +32765,1.1735 +65533,1.52064 +131069,3.10886 +262141,4.93466 +524285,8.03533 +1048573,14.7057 +2097149,28.5942 +4194301,54.0549 +8388605,104.86 +16777213,209.084 +33554429,419.023 +67108861,836.988 +13,0.792576 +29,0.683008 +61,0.7936 +125,0.713728 +253,0.648192 +509,0.674816 +1021,0.756736 +2045,0.664576 +4093,0.72192 +8189,1.024 +16381,1.42746 +32765,1.04346 +65533,1.53088 +131069,3.33926 +262141,4.91827 +524285,7.97184 +1048573,15.3754 +2097149,27.7402 +4194301,54.4481 +8388605,105.313 +16777213,210.265 +33554429,419.711 +67108861,836.824 +13,0.68096 +29,0.739328 +61,0.787456 +125,0.644096 +253,0.831488 +509,0.800768 +1021,0.893952 +2045,0.812032 +4093,0.758784 +8189,0.792576 +16381,1.01888 +32765,1.44998 +65533,1.52883 +131069,3.24301 +262141,4.92442 +524285,8.13568 +1048573,14.423 +2097149,27.7381 +4194301,53.8788 +8388605,104.656 +16777213,208.333 +33554429,413.945 +67108861,842.82 +13,0.892928 +29,0.75776 +61,0.744448 +125,0.85504 +253,0.644096 +509,0.657408 +1021,0.740352 +2045,0.704512 +4093,0.776192 +8189,0.821248 +16381,0.935936 +32765,1.09466 +65533,1.42131 +131069,3.01261 +262141,4.85478 +524285,8.3753 +1048573,15.1521 +2097149,28.0381 +4194301,52.5251 +8388605,105.69 +16777213,210.543 +33554429,421.574 +67108861,843.017 +13,1.25542 +29,0.821248 +61,1.35885 +125,0.488448 +253,0.70656 +509,0.72704 +1021,0.689152 +2045,0.764928 +4093,0.770048 +8189,0.791552 +16381,0.953344 +32765,1.06803 +65533,1.55853 +131069,3.54714 +262141,5.0391 +524285,8.34662 +1048573,14.6381 +2097149,27.2292 +4194301,53.9382 +8388605,105.814 +16777213,210.171 +33554429,419.549 +67108861,843.122 +13,0.587776 +29,0.77312 +61,0.75776 +125,0.99328 +253,0.751616 +509,0.789504 +1021,0.735232 +2045,0.812032 +4093,0.796672 +8189,0.872448 +16381,0.90624 +32765,1.07827 +65533,1.51347 +131069,3.46829 +262141,4.92339 +524285,8.00358 +1048573,14.7456 +2097149,27.8723 +4194301,53.1395 +8388605,105.419 +16777213,209.772 +33554429,417.256 +67108861,843.189 +13,0.595968 +29,0.807936 +61,0.758784 +125,0.658432 +253,0.930816 +509,0.780288 +1021,0.763904 +2045,0.905216 +4093,0.83456 +8189,0.87552 +16381,1.00147 +32765,1.08851 +65533,1.57184 +131069,3.14778 +262141,4.94182 +524285,9.16378 +1048573,15.1788 +2097149,27.5333 +4194301,53.4047 +8388605,105.524 +16777213,208.867 +33554429,419.456 +67108861,840.687 +13,0.881664 +29,0.832512 +61,0.748544 +125,0.772096 +253,0.746496 +509,0.750592 +1021,0.69632 +2045,0.77824 +4093,0.832512 +8189,0.887808 +16381,0.914432 +32765,1.14586 +65533,1.47763 +131069,3.12934 +262141,5.21216 +524285,8.01485 +1048573,14.8705 +2097149,27.5743 +4194301,53.7027 +8388605,105.175 +16777213,210.189 +33554429,420.331 +67108861,840.953 +13,0.718848 +29,0.83968 +61,0.74752 +125,0.731136 +253,1.01274 +509,0.7168 +1021,0.77312 +2045,1.33632 +4093,0.774144 +8189,0.881664 +16381,0.949248 +32765,1.14688 +65533,1.51757 +131069,3.1017 +262141,5.14458 +524285,8.68557 +1048573,14.5592 +2097149,27.7094 +4194301,54.3908 +8388605,105.822 +16777213,209.488 +33554429,419.176 +67108861,841.1 +13,0.848896 +29,0.872448 +61,0.760832 +125,0.744448 +253,0.759808 +509,0.76288 +1021,0.673792 +2045,0.708608 +4093,0.782336 +8189,0.912384 +16381,1.2759 +32765,1.2841 +65533,1.54931 +131069,3.02797 +262141,4.70938 +524285,8.10496 +1048573,14.4108 +2097149,27.2968 +4194301,54.3058 +8388605,105.571 +16777213,209.959 +33554429,421.289 +67108861,838.573 +13,0.881664 +29,0.850944 +61,1.1264 +125,0.657408 +253,0.656384 +509,0.723968 +1021,0.698368 +2045,0.7168 +4093,0.713728 +8189,0.818176 +16381,0.943104 +32765,1.1305 +65533,1.47763 +131069,3.25427 +262141,4.64077 +524285,8.19814 +1048573,14.5398 +2097149,27.4483 +4194301,55.4097 +8388605,104.854 +16777213,209.473 +33554429,419.764 +67108861,844.241 +13,0.903168 +29,0.868352 +61,0.600064 +125,0.575488 +253,0.61952 +509,0.765952 +1021,1.05984 +2045,0.769024 +4093,0.827392 +8189,0.84992 +16381,0.9216 +32765,1.1264 +65533,1.51962 +131069,3.17338 +262141,4.98483 +524285,8.22784 +1048573,14.3596 +2097149,27.4227 +4194301,53.8194 +8388605,105.791 +16777213,210.829 +33554429,421.685 +67108861,844.734 +13,0.857088 +29,0.7936 +61,0.790528 +125,0.8448 +253,0.873472 +509,0.7168 +1021,0.592896 +2045,0.809984 +4093,0.825344 +8189,0.837632 +16381,0.954368 +32765,1.11411 +65533,1.54829 +131069,3.02592 +262141,4.96538 +524285,8.11008 +1048573,14.463 +2097149,27.435 +4194301,53.5101 +8388605,106.642 +16777213,209.373 +33554429,420.329 +67108861,844.865 +13,0.677888 +29,0.813056 +61,0.748544 +125,0.642048 +253,0.739328 +509,0.749568 +1021,0.77824 +2045,0.776192 +4093,0.787456 +8189,0.835584 +16381,1.06701 +32765,1.14176 +65533,1.54522 +131069,3.11091 +262141,5.34426 +524285,8.27494 +1048573,14.8224 +2097149,28.0873 +4194301,54.0897 +8388605,105.304 +16777213,209.501 +33554429,422.501 +67108861,1285.29 +13,0.516096 +29,0.565248 +61,0.5376 +125,0.529408 +253,1.10387 +509,0.475136 +1021,0.55296 +2045,0.551936 +4093,0.910336 +8189,0.896 +16381,1.01478 +32765,1.11309 +65533,1.29946 +131069,3.08224 +262141,5.47635 +524285,8.31795 +1048573,14.3636 +2097149,27.1084 +4194301,54.2321 +8388605,105.519 +16777213,211.189 +33554429,420.134 +67108861,843.881 +13,0.97792 +29,0.89088 +61,0.866304 +125,0.80896 +253,0.674816 +509,0.764928 +1021,0.707584 +2045,0.715776 +4093,0.764928 +8189,0.743424 +16381,0.852992 +32765,1.12026 +65533,2.16269 +131069,3.14266 +262141,5.51322 +524285,8.46029 +1048573,15.145 +2097149,29.2864 +4194301,53.4712 +8388605,108.667 +16777213,212.412 +33554429,423.509 +67108861,848.602 +13,0.882688 +29,0.841728 +61,0.893952 +125,0.56832 +253,0.55808 +509,0.764928 +1021,0.761856 +2045,0.75264 +4093,0.96256 +8189,0.83456 +16381,0.93184 +32765,1.10182 +65533,1.83706 +131069,3.00339 +262141,5.45997 +524285,8.73882 +1048573,14.9289 +2097149,28.1139 +4194301,52.9275 +8388605,106.961 +16777213,211.198 +33554429,423.478 +67108861,842.249 +13,0.724992 +29,0.991232 +61,0.884736 +125,0.873472 +253,0.761856 +509,0.722944 +1021,0.759808 +2045,0.760832 +4093,0.713728 +8189,0.78848 +16381,0.978944 +32765,1.17555 +65533,1.66298 +131069,3.52666 +262141,5.08006 +524285,8.2903 +1048573,16.341 +2097149,27.7094 +4194301,54.101 +8388605,105.925 +16777213,210.678 +33554429,423.485 +67108861,847.609 +13,0.842752 +29,0.892928 +61,0.610304 +125,0.943104 +253,0.78848 +509,0.73728 +1021,0.684032 +2045,0.811008 +4093,0.761856 +8189,0.816128 +16381,0.980992 +32765,1.11411 +65533,1.52166 +131069,2.96038 +262141,5.3545 +524285,8.27392 +1048573,14.3882 diff --git a/Project2-Stream-Compaction/data/Scan_data/data_pow2/cpu.csv b/Project2-Stream-Compaction/data/Scan_data/data_pow2/cpu.csv new file mode 100644 index 0000000..e3049d8 --- /dev/null +++ b/Project2-Stream-Compaction/data/Scan_data/data_pow2/cpu.csv @@ -0,0 +1,4548 @@ +16,0.0002 +32,0.0002 +64,0.0002 +128,0.0001 +256,0.0002 +512,0.0004 +1024,0.0008 +2048,0.002 +4096,0.0029 +8192,0.0083 +16384,0.0137 +32768,0.0295 +65536,0.0414 +131072,0.6711 +262144,1.2246 +524288,2.5844 +1048576,4.8169 +2097152,10.2835 +4194304,19.9311 +8388608,39.4534 +16777216,86.4599 +33554432,146.658 +67108864,289.208 +16,0.0001 +32,0.0001 +64,0.0001 +128,0.0001 +256,0.0004 +512,0.0006 +1024,0.0005 +2048,0.0025 +4096,0.0022 +8192,0.0036 +16384,0.0082 +32768,0.0894 +65536,0.035 +131072,0.6027 +262144,1.4756 +524288,2.3412 +1048576,4.4376 +2097152,8.8704 +4194304,22.23 +8388608,37.1867 +16777216,74.6926 +33554432,144.794 +67108864,293.571 +16,0.0001 +32,0.0001 +64,0.0001 +128,0.0002 +256,0.0003 +512,0.0005 +1024,0.0011 +2048,0.002 +4096,0.002 +8192,0.0036 +16384,0.0091 +32768,0.0177 +65536,0.0396 +131072,0.5993 +262144,1.2009 +524288,2.8533 +1048576,4.4369 +2097152,8.8769 +4194304,18.3903 +8388608,39.1622 +16777216,77.3177 +33554432,148.779 +67108864,288.71 +16,0.0001 +32,0.0001 +64,0.0002 +128,0.0001 +256,0.0004 +512,0.0002 +1024,0.0005 +2048,0.001 +4096,0.0023 +8192,0.0039 +16384,0.0079 +32768,0.018 +65536,0.035 +131072,0.5994 +262144,1.169 +524288,2.4081 +1048576,4.4357 +2097152,9.4816 +4194304,19.7495 +8388608,38.4657 +16777216,74.9305 +33554432,150.431 +67108864,297.901 +16,0 +32,0.0002 +64,0.0001 +128,0.0003 +256,0.0003 +512,0.0005 +1024,0.0004 +2048,0.0022 +4096,0.0022 +8192,0.0038 +16384,0.0084 +32768,0.0183 +65536,0.037 +131072,0.5859 +262144,1.168 +524288,2.4099 +1048576,4.7601 +2097152,11.2358 +4194304,19.0272 +8388608,40.7059 +16777216,78.2271 +33554432,147.858 +67108864,290.926 +16,0.0001 +32,0.0003 +64,0.0002 +128,0.0002 +256,0.0003 +512,0.0003 +1024,0.0014 +2048,0.0011 +4096,0.0023 +8192,0.0036 +16384,0.0345 +32768,0.0315 +65536,0.0401 +131072,0.5855 +262144,1.1683 +524288,2.4722 +1048576,4.4368 +2097152,9.2444 +4194304,18.1786 +8388608,38.9367 +16777216,73.1124 +33554432,148.591 +67108864,291.12 +16,0 +32,0.0003 +64,0.0001 +128,0.0003 +256,0.0004 +512,0.0003 +1024,0.0012 +2048,0.0011 +4096,0.0039 +8192,0.0036 +16384,0.0098 +32768,0.0178 +65536,0.04 +131072,0.7182 +262144,1.1691 +524288,2.2631 +1048576,4.683 +2097152,9.4421 +4194304,20.2012 +8388608,37.2257 +16777216,75.8632 +33554432,144.02 +67108864,293.347 +16,0.0001 +32,0.0002 +64,0.0003 +128,0.0002 +256,0.0003 +512,0.0006 +1024,0.0004 +2048,0.0011 +4096,0.002 +8192,0.0038 +16384,0.0089 +32768,0.0642 +65536,0.0365 +131072,0.5996 +262144,1.4698 +524288,2.353 +1048576,4.4385 +2097152,9.2296 +4194304,18.1051 +8388608,39.2887 +16777216,76.2492 +33554432,145.501 +67108864,293.566 +16,0.0001 +32,0.0002 +64,0.0002 +128,0.0004 +256,0.0003 +512,0.0003 +1024,0.001 +2048,0.0009 +4096,0.0021 +8192,0.0046 +16384,0.008 +32768,0.0187 +65536,0.0372 +131072,0.5993 +262144,1.1689 +524288,2.7603 +1048576,4.4383 +2097152,8.9986 +4194304,18.118 +8388608,37.4561 +16777216,80.23 +33554432,150.026 +67108864,291.399 +16,0.0001 +32,0.0002 +64,0.0002 +128,0.0002 +256,0.0005 +512,0.0007 +1024,0.0004 +2048,0.001 +4096,0.0022 +8192,0.0037 +16384,0.0078 +32768,0.0199 +65536,0.0383 +131072,0.5856 +262144,1.1678 +524288,2.4077 +1048576,4.7058 +2097152,9.4731 +4194304,20.2805 +8388608,36.9878 +16777216,76.7461 +33554432,143.342 +67108864,296.679 +16,0.0001 +32,0.0002 +64,0.0002 +128,0.0002 +256,0.0004 +512,0.0007 +1024,0.0004 +2048,0.001 +4096,0.0021 +8192,0.0034 +16384,0.008 +32768,0.0177 +65536,0.0364 +131072,0.5996 +262144,1.9451 +524288,2.4701 +1048576,4.6823 +2097152,10.7964 +4194304,19.4816 +8388608,42.4102 +16777216,80.3387 +33554432,147.967 +67108864,294.756 +16,0.0001 +32,0.0001 +64,0.0002 +128,0.0002 +256,0.0004 +512,0.0005 +1024,0.0005 +2048,0.0011 +4096,0.0022 +8192,0.0035 +16384,0.009 +32768,0.32 +65536,0.0376 +131072,0.586 +262144,1.2027 +524288,2.3423 +1048576,4.4363 +2097152,10.2931 +4194304,19.4157 +8388608,36.7958 +16777216,73.5186 +33554432,147.671 +67108864,302.375 +16,0 +32,0.0001 +64,0.0001 +128,0.0002 +256,0.0005 +512,0.0007 +1024,0.0005 +2048,0.0009 +4096,0.0025 +8192,0.0033 +16384,0.0083 +32768,0.028 +65536,0.0366 +131072,0.5846 +262144,1.1736 +524288,2.3398 +1048576,4.6849 +2097152,9.3726 +4194304,18.0549 +8388608,42.3555 +16777216,78.4507 +33554432,146.89 +67108864,290.541 +16,0.0001 +32,0.0001 +64,0.0003 +128,0.0004 +256,0.0002 +512,0.0005 +1024,0.001 +2048,0.001 +4096,0.0022 +8192,0.0038 +16384,0.0082 +32768,0.0434 +65536,0.0394 +131072,0.7429 +262144,1.2216 +524288,2.5869 +1048576,4.7946 +2097152,9.0147 +4194304,18.3886 +8388608,39.1411 +16777216,74.7091 +33554432,145.865 +67108864,293.248 +16,0 +32,0.0001 +64,0.0002 +128,0.0002 +256,0.0003 +512,0.0003 +1024,0.0005 +2048,0.0009 +4096,0.0021 +8192,0.0034 +16384,0.009 +32768,0.0195 +65536,0.0388 +131072,0.6028 +262144,1.1736 +524288,2.3398 +1048576,4.7958 +2097152,8.9272 +4194304,20.8182 +8388608,36.3988 +16777216,75.6793 +33554432,144.483 +67108864,293.098 +16,0.0001 +32,0.0003 +64,0.0003 +128,0.0004 +256,0.0003 +512,0.0006 +1024,0.0004 +2048,0.0023 +4096,0.0021 +8192,0.0034 +16384,0.0082 +32768,0.0247 +65536,0.0358 +131072,0.6001 +262144,1.2412 +524288,2.3419 +1048576,4.4364 +2097152,9.4433 +4194304,18.0027 +8388608,40.0993 +16777216,74.8599 +33554432,154.498 +67108864,290.222 +16,0 +32,0.0002 +64,0.0003 +128,0.0002 +256,0.0003 +512,0.0007 +1024,0.0005 +2048,0.0162 +4096,0.0023 +8192,0.0038 +16384,0.0079 +32768,0.0256 +65536,0.0411 +131072,0.585 +262144,1.2172 +524288,2.3418 +1048576,4.7202 +2097152,9.5472 +4194304,19.5396 +8388608,39.8298 +16777216,74.9795 +33554432,148.93 +67108864,292.637 +16,0.0001 +32,0.0001 +64,0.0003 +128,0.0003 +256,0.0003 +512,0.0005 +1024,0.0008 +2048,0.0024 +4096,0.0169 +8192,0.0034 +16384,0.0079 +32768,0.0256 +65536,0.0398 +131072,0.5993 +262144,1.1693 +524288,2.3397 +1048576,4.965 +2097152,9.4571 +4194304,22.4838 +8388608,36.0812 +16777216,77.3565 +33554432,146.795 +67108864,293.482 +16,0.0001 +32,0.0002 +64,0.0002 +128,0.0133 +256,0.0002 +512,0.0005 +1024,0.0009 +2048,0.001 +4096,0.0023 +8192,0.0038 +16384,0.0083 +32768,0.0211 +65536,0.0375 +131072,0.5995 +262144,1.201 +524288,2.2884 +1048576,5.4632 +2097152,10.2198 +4194304,21.4403 +8388608,37.6876 +16777216,76.6264 +33554432,145.061 +67108864,292.212 +16,0.0001 +32,0.0003 +64,0.0003 +128,0.0003 +256,0.0004 +512,0.0004 +1024,0.0012 +2048,0.0023 +4096,0.0042 +8192,0.0036 +16384,0.0079 +32768,0.019 +65536,0.0369 +131072,0.7199 +262144,1.1678 +524288,2.3427 +1048576,4.5363 +2097152,8.8734 +4194304,20.1842 +8388608,36.3016 +16777216,79.2694 +33554432,151.279 +67108864,293.435 +16,0.0001 +32,0.0002 +64,0.0002 +128,0.0002 +256,0.0003 +512,0.0004 +1024,0.0009 +2048,0.0011 +4096,0.0021 +8192,0.0039 +16384,0.0084 +32768,0.0194 +65536,0.0407 +131072,0.5828 +262144,1.1679 +524288,2.3417 +1048576,4.7097 +2097152,9.1236 +4194304,20.6234 +8388608,38.6445 +16777216,77.8651 +33554432,145.094 +67108864,300.426 +16,0 +32,0.0001 +64,0.0001 +128,0.0003 +256,0.0004 +512,0.0005 +1024,0.0004 +2048,0.0011 +4096,0.0023 +8192,0.004 +16384,0.0083 +32768,0.0266 +65536,0.039 +131072,0.5827 +262144,1.1688 +524288,2.3418 +1048576,4.4379 +2097152,9.4509 +4194304,20.7965 +8388608,44.4546 +16777216,76.9285 +33554432,151.447 +67108864,294.586 +16,0.0001 +32,0.0003 +64,0.0001 +128,0.0003 +256,0.0003 +512,0.0007 +1024,0.0012 +2048,0.0024 +4096,0.002 +8192,0.0034 +16384,0.008 +32768,0.0221 +65536,0.0412 +131072,0.585 +262144,1.202 +524288,2.3412 +1048576,4.732 +2097152,9.1658 +4194304,18.3997 +8388608,36.8384 +16777216,77.0074 +33554432,147.147 +67108864,293.934 +16,0.0001 +32,0.0002 +64,0.0002 +128,0.0004 +256,0.0003 +512,0.0007 +1024,0.0005 +2048,0.0011 +4096,0.0021 +8192,0.0037 +16384,0.0082 +32768,0.0177 +65536,0.0351 +131072,0.5866 +262144,1.1737 +524288,2.9894 +1048576,4.6837 +2097152,8.8771 +4194304,20.0033 +8388608,38.3448 +16777216,74.6337 +33554432,148.423 +67108864,296.49 +16,0 +32,0.0003 +64,0.0002 +128,0.0003 +256,0.0006 +512,0.0005 +1024,0.0007 +2048,0.0009 +4096,0.0039 +8192,0.0036 +16384,0.0109 +32768,0.0187 +65536,0.0467 +131072,0.5837 +262144,1.3369 +524288,2.3839 +1048576,4.6833 +2097152,8.8771 +4194304,18.0994 +8388608,39.9552 +16777216,79.2876 +33554432,146.499 +67108864,293.626 +16,0 +32,0.0001 +64,0.0002 +128,0.0003 +256,0.0002 +512,0.0004 +1024,0.0008 +2048,0.001 +4096,0.0021 +8192,0.0058 +16384,0.0088 +32768,0.0373 +65536,0.0493 +131072,0.8219 +262144,1.169 +524288,2.6156 +1048576,4.9826 +2097152,10.6454 +4194304,18.4308 +8388608,37.3255 +16777216,78.5521 +33554432,149.493 +67108864,296.501 +16,0.0001 +32,0.0001 +64,0.0001 +128,0.0001 +256,0.0002 +512,0.0008 +1024,0.0005 +2048,0.001 +4096,0.0021 +8192,0.0034 +16384,0.008 +32768,0.0187 +65536,0.0387 +131072,0.5861 +262144,1.2882 +524288,2.5164 +1048576,4.9688 +2097152,9.6662 +4194304,19.0625 +8388608,39.0755 +16777216,76.1309 +33554432,153.723 +67108864,298.72 +16,0.0001 +32,0.0003 +64,0.0002 +128,0.0002 +256,0.0006 +512,0.0002 +1024,0.0197 +2048,0.0022 +4096,0.0042 +8192,0.0037 +16384,0.0081 +32768,0.0189 +65536,0.0391 +131072,0.7449 +262144,1.2015 +524288,2.8255 +1048576,4.6837 +2097152,8.8734 +4194304,19.9859 +8388608,38.5532 +16777216,81.1802 +33554432,146.013 +67108864,294.938 +16,0.0001 +32,0.0001 +64,0.0001 +128,0.0002 +256,0.0002 +512,0.0005 +1024,0.0005 +2048,0.0012 +4096,0.0023 +8192,0.0033 +16384,0.0078 +32768,0.0187 +65536,0.0378 +131072,0.5829 +262144,1.2016 +524288,2.3444 +1048576,4.9313 +2097152,9.1474 +4194304,17.9545 +8388608,37.6289 +16777216,75.4405 +33554432,149.194 +67108864,300.701 +16,0.0001 +32,0.0002 +64,0.0001 +128,0.0004 +256,0.0003 +512,0.0005 +1024,0.0004 +2048,0.0011 +4096,0.0022 +8192,0.0037 +16384,0.0082 +32768,0.0326 +65536,0.0386 +131072,0.602 +262144,1.1749 +524288,2.5165 +1048576,4.8133 +2097152,9.2803 +4194304,18.0787 +8388608,40.0773 +16777216,78.8491 +33554432,150.63 +67108864,194.475 +16,0.0001 +32,0.0001 +64,0.0002 +128,0.0002 +256,0.0004 +512,0.0007 +1024,0.0011 +2048,0.0022 +4096,0.0038 +8192,0.0039 +16384,0.008 +32768,0.0206 +65536,0.0378 +131072,0.7433 +262144,1.2031 +524288,2.3404 +1048576,4.6021 +2097152,9.1957 +4194304,19.4007 +8388608,37.0381 +16777216,78.1645 +33554432,145.118 +67108864,297.334 +16,0.0001 +32,0.0003 +64,0.0003 +128,0.0003 +256,0.0003 +512,0.0007 +1024,0.0013 +2048,0.0024 +4096,0.0021 +8192,0.0038 +16384,0.0081 +32768,0.0184 +65536,0.0363 +131072,0.5831 +262144,1.1898 +524288,2.3413 +1048576,5.0305 +2097152,9.0268 +4194304,18.2463 +8388608,38.8524 +16777216,74.2334 +33554432,149.299 +67108864,299.093 +16,0.0001 +32,0.0001 +64,0.0003 +128,0.0001 +256,0.0004 +512,0.0004 +1024,0.001 +2048,0.0015 +4096,0.0042 +8192,0.0037 +16384,0.0083 +32768,0.0199 +65536,0.0369 +131072,0.5993 +262144,1.2026 +524288,2.3166 +1048576,4.6847 +2097152,8.8731 +4194304,20.2255 +8388608,36.6941 +16777216,77.4098 +33554432,147.522 +67108864,290.745 +16,0.0001 +32,0.0003 +64,0.0002 +128,0.0004 +256,0.0005 +512,0.0004 +1024,0.0004 +2048,0.0022 +4096,0.0038 +8192,0.0038 +16384,0.0079 +32768,0.0333 +65536,0.0369 +131072,0.7319 +262144,1.1681 +524288,2.3549 +1048576,4.5431 +2097152,11.3201 +4194304,18.1981 +8388608,36.7454 +16777216,83.3876 +33554432,150.152 +67108864,295.078 +16,0 +32,0.0001 +64,0.0001 +128,0.0002 +256,0.0006 +512,0.0006 +1024,0.0008 +2048,0.001 +4096,0.0021 +8192,0.0037 +16384,0.0083 +32768,0.0658 +65536,0.0402 +131072,0.5826 +262144,1.2011 +524288,2.3538 +1048576,4.6837 +2097152,9.1307 +4194304,18.9279 +8388608,35.9252 +16777216,78.3972 +33554432,149.81 +67108864,292.487 +16,0.0001 +32,0.0001 +64,0.0003 +128,0.0004 +256,0.0002 +512,0.0006 +1024,0.0004 +2048,0.0199 +4096,0.0021 +8192,0.0035 +16384,0.0079 +32768,0.0204 +65536,0.2442 +131072,0.5858 +262144,1.1741 +524288,2.3419 +1048576,4.5357 +2097152,12.0112 +4194304,18.0297 +8388608,36.4436 +16777216,78.6329 +33554432,150.437 +67108864,293.879 +16,0.0001 +32,0.0001 +64,0.0004 +128,0.0002 +256,0.0003 +512,0.0005 +1024,0.0004 +2048,0.0019 +4096,0.0021 +8192,0.004 +16384,0.0233 +32768,0.0191 +65536,0.0386 +131072,0.5857 +262144,1.2011 +524288,2.3411 +1048576,4.6813 +2097152,9.5968 +4194304,18.7045 +8388608,37.2428 +16777216,78.1777 +33554432,159.379 +67108864,293.777 +16,0.0001 +32,0.0001 +64,0.0001 +128,0.0002 +256,0.0006 +512,0.0003 +1024,0.0004 +2048,0.0015 +4096,0.0021 +8192,0.0035 +16384,0.0081 +32768,0.0191 +65536,0.0393 +131072,0.583 +262144,1.1685 +524288,2.339 +1048576,5.2993 +2097152,8.8725 +4194304,19.6314 +8388608,40.7619 +16777216,76.1333 +33554432,147.104 +67108864,298.243 +16,0 +32,0.0001 +64,0.0002 +128,0.0001 +256,0.0005 +512,0.0004 +1024,0.0004 +2048,0.0024 +4096,0.002 +8192,0.0038 +16384,0.008 +32768,0.0211 +65536,0.0406 +131072,0.5828 +262144,1.1685 +524288,2.3433 +1048576,5.0411 +2097152,9.6396 +4194304,19.6922 +8388608,37.4624 +16777216,76.1774 +33554432,149.501 +67108864,296.833 +16,0.0002 +32,0.0004 +64,0.0001 +128,0.0004 +256,0.0003 +512,0.0005 +1024,0.0004 +2048,0.0009 +4096,0.002 +8192,0.0035 +16384,0.0088 +32768,0.0174 +65536,0.0393 +131072,0.5827 +262144,1.1755 +524288,2.9971 +1048576,4.6822 +2097152,9.4419 +4194304,18.6181 +8388608,39.5772 +16777216,74.5116 +33554432,149.846 +67108864,296.55 +16,0.0001 +32,0.0002 +64,0.0001 +128,0.0001 +256,0.0003 +512,0.0004 +1024,0.0005 +2048,0.0023 +4096,0.0021 +8192,0.0035 +16384,0.0083 +32768,0.0354 +65536,0.0371 +131072,0.5831 +262144,1.1686 +524288,2.4195 +1048576,4.7465 +2097152,9.1145 +4194304,18.002 +8388608,36.7329 +16777216,82.3489 +33554432,147.804 +67108864,294.87 +16,0.0002 +32,0.0001 +64,0.0001 +128,0.0004 +256,0.0004 +512,0.0004 +1024,0.0005 +2048,0.0021 +4096,0.0172 +8192,0.0038 +16384,0.0077 +32768,0.0234 +65536,0.0381 +131072,0.6024 +262144,1.2057 +524288,2.4086 +1048576,4.4373 +2097152,9.4526 +4194304,19.3615 +8388608,37.4548 +16777216,76.7306 +33554432,152.951 +67108864,299.151 +16,0.0001 +32,0.0003 +64,0.0001 +128,0.0002 +256,0.0004 +512,0.0007 +1024,0.001 +2048,0.0025 +4096,0.0041 +8192,0.0037 +16384,0.0623 +32768,0.0184 +65536,0.0377 +131072,0.6018 +262144,1.1678 +524288,2.6945 +1048576,4.6868 +2097152,8.874 +4194304,18.12 +8388608,36.1023 +16777216,74.6842 +33554432,147.59 +67108864,291.596 +16,0.0001 +32,0.0002 +64,0.0003 +128,0.0004 +256,0.0003 +512,0.0006 +1024,0.0005 +2048,0.0199 +4096,0.0021 +8192,0.0042 +16384,0.0083 +32768,0.0185 +65536,0.036 +131072,0.5826 +262144,1.1692 +524288,3.0459 +1048576,4.4373 +2097152,9.1971 +4194304,19.8675 +8388608,37.6496 +16777216,78.541 +33554432,153.367 +67108864,293.694 +16,0.0001 +32,0.0002 +64,0.0003 +128,0.0003 +256,0.0003 +512,0.0006 +1024,0.0005 +2048,0.0009 +4096,0.0021 +8192,0.0037 +16384,0.0112 +32768,0.0335 +65536,0.037 +131072,0.5858 +262144,1.2798 +524288,2.3421 +1048576,5.8968 +2097152,9.1105 +4194304,19.3819 +8388608,37.5773 +16777216,78.0202 +33554432,148.678 +67108864,298.257 +16,0.0001 +32,0.0001 +64,0.0003 +128,0.0002 +256,0.0003 +512,0.0006 +1024,0.0004 +2048,0.0012 +4096,0.0021 +8192,0.005 +16384,0.0079 +32768,0.0179 +65536,0.038 +131072,0.5831 +262144,1.1974 +524288,2.8831 +1048576,4.9485 +2097152,9.5396 +4194304,17.8976 +8388608,36.2493 +16777216,75.5289 +33554432,156.543 +67108864,305.373 +16,0.0001 +32,0.0002 +64,0.0001 +128,0.0001 +256,0.0004 +512,0.0005 +1024,0.0005 +2048,0.0024 +4096,0.004 +8192,0.0036 +16384,0.0086 +32768,0.0179 +65536,0.037 +131072,0.5827 +262144,1.1691 +524288,2.4072 +1048576,4.5561 +2097152,9.1277 +4194304,17.9118 +8388608,42.9538 +16777216,75.982 +33554432,149.63 +67108864,295.726 +16,0.0001 +32,0.0002 +64,0.0001 +128,0.0002 +256,0.0004 +512,0.0004 +1024,0.0013 +2048,0.0025 +4096,0.0047 +8192,0.0037 +16384,0.0082 +32768,0.0181 +65536,0.0392 +131072,0.5829 +262144,1.2064 +524288,2.3394 +1048576,4.7742 +2097152,9.0019 +4194304,18.8786 +8388608,40.707 +16777216,74.549 +33554432,149.27 +67108864,295.857 +16,0.0001 +32,0.0001 +64,0.0003 +128,0.0002 +256,0.0004 +512,0.0006 +1024,0.0011 +2048,0.0011 +4096,0.0029 +8192,0.0034 +16384,0.0077 +32768,0.0676 +65536,0.0391 +131072,0.6003 +262144,1.1684 +524288,2.342 +1048576,4.9249 +2097152,9.3016 +4194304,19.8558 +8388608,43.1209 +16777216,79.9105 +33554432,145.107 +67108864,324.681 +16,0.0002 +32,0.0003 +64,0.0003 +128,0.0004 +256,0.0003 +512,0.0005 +1024,0.0005 +2048,0.001 +4096,0.0023 +8192,0.0037 +16384,0.0078 +32768,0.0406 +65536,0.0364 +131072,0.5852 +262144,1.1728 +524288,2.4633 +1048576,4.4388 +2097152,10.317 +4194304,18.8086 +8388608,37.9598 +16777216,75.4927 +33554432,150.189 +67108864,301.598 +16,0.0001 +32,0.0001 +64,0.0002 +128,0.0001 +256,0.0003 +512,0.0006 +1024,0.0005 +2048,0.0009 +4096,0.0022 +8192,0.0215 +16384,0.0279 +32768,0.0176 +65536,0.04 +131072,0.5996 +262144,1.2012 +524288,2.4083 +1048576,4.7138 +2097152,9.365 +4194304,19.8958 +8388608,42.0111 +16777216,73.5197 +33554432,147.192 +67108864,296.699 +16,0.0001 +32,0.0001 +64,0.0002 +128,0.0002 +256,0.0004 +512,0.0008 +1024,0.0005 +2048,0.0024 +4096,0.0043 +8192,0.0034 +16384,0.0084 +32768,0.0173 +65536,0.0381 +131072,0.7621 +262144,1.2014 +524288,2.3419 +1048576,4.4374 +2097152,9.1167 +4194304,19.985 +8388608,37.8831 +16777216,81.4748 +33554432,148.06 +67108864,292.174 +16,0.0001 +32,0.0001 +64,0.0002 +128,0.0001 +256,0.0003 +512,0.0005 +1024,0.0007 +2048,0.0011 +4096,0.0041 +8192,0.004 +16384,0.0083 +32768,0.0422 +65536,0.0385 +131072,0.8054 +262144,1.1685 +524288,2.4079 +1048576,5.1883 +2097152,10.0605 +4194304,20.854 +8388608,37.1531 +16777216,76.1561 +33554432,150.594 +67108864,300.012 +16,0.0002 +32,0.0002 +64,0.0002 +128,0.0004 +256,0.0006 +512,0.0005 +1024,0.0147 +2048,0.0024 +4096,0.004 +8192,0.0034 +16384,0.0077 +32768,0.0171 +65536,0.0387 +131072,0.6017 +262144,1.2016 +524288,2.4059 +1048576,4.6836 +2097152,8.8726 +4194304,18.1492 +8388608,39.5689 +16777216,74.5481 +33554432,148.36 +67108864,301.835 +16,0.0002 +32,0.0002 +64,0.0003 +128,0.0002 +256,0.0002 +512,0.0006 +1024,0.0004 +2048,0.0021 +4096,0.0039 +8192,0.0033 +16384,0.0086 +32768,0.0177 +65536,0.0377 +131072,0.5993 +262144,1.1741 +524288,2.3756 +1048576,5.3231 +2097152,9.4501 +4194304,18.6451 +8388608,42.2186 +16777216,79.1185 +33554432,147.984 +67108864,301.342 +16,0 +32,0.0002 +64,0.0001 +128,0.0002 +256,0.0004 +512,0.0005 +1024,0.0012 +2048,0.0009 +4096,0.0034 +8192,0.0039 +16384,0.008 +32768,0.0324 +65536,0.0379 +131072,0.5826 +262144,1.1698 +524288,2.3553 +1048576,4.4369 +2097152,9.5991 +4194304,21.0171 +8388608,39.5608 +16777216,77.4605 +33554432,152.724 +67108864,295.506 +16,0.0001 +32,0.0002 +64,0.0001 +128,0.0002 +256,0.0003 +512,0.0007 +1024,0.0012 +2048,0.0022 +4096,0.0021 +8192,0.0033 +16384,0.0094 +32768,0.0174 +65536,0.0377 +131072,0.5828 +262144,1.8687 +524288,2.3418 +1048576,4.6834 +2097152,10.5024 +4194304,19.6749 +8388608,38.5403 +16777216,80.4846 +33554432,149.945 +67108864,294.538 +16,0.0001 +32,0.0002 +64,0.0002 +128,0.0003 +256,0.0003 +512,0.0003 +1024,0.0004 +2048,0.0011 +4096,0.0022 +8192,0.0037 +16384,0.0077 +32768,0.019 +65536,0.0364 +131072,0.5858 +262144,1.1746 +524288,2.4764 +1048576,4.4495 +2097152,9.2307 +4194304,19.298 +8388608,41.8463 +16777216,74.8993 +33554432,152.039 +67108864,296.206 +16,0.0001 +32,0.0003 +64,0.0002 +128,0.0002 +256,0.0005 +512,0.0003 +1024,0.0008 +2048,0.0022 +4096,0.004 +8192,0.0035 +16384,0.0081 +32768,0.0187 +65536,0.0412 +131072,0.5851 +262144,1.1675 +524288,2.4225 +1048576,4.8077 +2097152,9.2691 +4194304,19.3432 +8388608,38.2334 +16777216,77.5406 +33554432,149.705 +67108864,297.443 +16,0.0001 +32,0.0001 +64,0.0002 +128,0.0001 +256,0.0003 +512,0.0006 +1024,0.0005 +2048,0.001 +4096,0.0021 +8192,0.0035 +16384,0.0086 +32768,0.0178 +65536,0.0378 +131072,0.5827 +262144,1.1677 +524288,2.3416 +1048576,4.5098 +2097152,10.142 +4194304,18.9341 +8388608,37.5746 +16777216,76.3817 +33554432,147.529 +67108864,292.667 +16,0.0001 +32,0.0001 +64,0.0001 +128,0.0003 +256,0.0003 +512,0.0004 +1024,0.0012 +2048,0.0023 +4096,0.0038 +8192,0.0036 +16384,0.019 +32768,0.0297 +65536,0.037 +131072,0.5828 +262144,1.1747 +524288,2.5711 +1048576,4.4374 +2097152,9.5578 +4194304,19.0459 +8388608,38.18 +16777216,82.1088 +33554432,147.928 +67108864,293.423 +16,0.0002 +32,0.0002 +64,0.0003 +128,0.0003 +256,0.0003 +512,0.0002 +1024,0.0004 +2048,0.001 +4096,0.0021 +8192,0.0035 +16384,0.0097 +32768,0.0539 +65536,0.0436 +131072,0.5843 +262144,1.2031 +524288,2.9775 +1048576,5.635 +2097152,9.0447 +4194304,20.1964 +8388608,41.0299 +16777216,77.1316 +33554432,148.399 +67108864,298.39 +16,0.0001 +32,0.0002 +64,0.0002 +128,0.0001 +256,0.0004 +512,0.0006 +1024,0.0004 +2048,0.0024 +4096,0.0041 +8192,0.0035 +16384,0.023 +32768,0.0243 +65536,0.0383 +131072,0.5827 +262144,1.3413 +524288,2.3798 +1048576,4.8855 +2097152,9.431 +4194304,21.2717 +8388608,39.2815 +16777216,78.1136 +33554432,150.568 +67108864,296.976 +16,0.0001 +32,0.0002 +64,0.0003 +128,0.0002 +256,0.0003 +512,0.0005 +1024,0.0008 +2048,0.0009 +4096,0.0043 +8192,0.0178 +16384,0.0085 +32768,0.0212 +65536,0.0367 +131072,0.6021 +262144,1.1676 +524288,2.5379 +1048576,4.4364 +2097152,9.6125 +4194304,18.4903 +8388608,36.9333 +16777216,80.4827 +33554432,148.519 +67108864,293.823 +16,0.0001 +32,0.0002 +64,0.0001 +128,0.0002 +256,0.0003 +512,0.0005 +1024,0.0005 +2048,0.0011 +4096,0.0041 +8192,0.0036 +16384,0.0075 +32768,0.0205 +65536,0.0383 +131072,0.6676 +262144,1.2064 +524288,2.342 +1048576,4.6223 +2097152,11.2296 +4194304,18.3982 +8388608,37.0481 +16777216,80.168 +33554432,147.878 +67108864,296.506 +16,0.0001 +32,0.0001 +64,0.0001 +128,0.0003 +256,0.0002 +512,0.0003 +1024,0.0011 +2048,0.001 +4096,0.0019 +8192,0.003 +16384,0.007 +32768,0.0174 +65536,0.0659 +131072,0.6328 +262144,1.1734 +524288,2.6063 +1048576,4.7642 +2097152,9.7686 +4194304,19.2794 +8388608,37.9563 +16777216,78.2856 +33554432,149.053 +67108864,291.605 +16,0.0001 +32,0.0001 +64,0.0001 +128,0.0002 +256,0.0002 +512,0.0003 +1024,0.0004 +2048,0.0009 +4096,0.002 +8192,0.0031 +16384,0.0096 +32768,0.0169 +65536,0.0419 +131072,0.6715 +262144,1.1741 +524288,2.4102 +1048576,5.1171 +2097152,10.0457 +4194304,18.1646 +8388608,37.0732 +16777216,73.7685 +33554432,148.417 +67108864,297.061 +16,0.0001 +32,0.0001 +64,0.0001 +128,0.0001 +256,0.0002 +512,0.0002 +1024,0.0005 +2048,0.001 +4096,0.0019 +8192,0.0049 +16384,0.0109 +32768,0.0172 +65536,0.0398 +131072,0.6549 +262144,1.5943 +524288,2.6643 +1048576,4.4373 +2097152,9.3653 +4194304,18.4652 +8388608,41.0673 +16777216,79.7054 +33554432,149.751 +67108864,296.955 +16,0 +32,0.0001 +64,0.0001 +128,0.0002 +256,0.0002 +512,0.0007 +1024,0.0005 +2048,0.0009 +4096,0.002 +8192,0.0031 +16384,0.0071 +32768,0.0396 +65536,0.0393 +131072,0.5843 +262144,1.1701 +524288,2.7321 +1048576,4.4366 +2097152,9.3437 +4194304,19.8343 +8388608,38.4463 +16777216,78.2647 +33554432,148.969 +67108864,292.218 +16,0.0001 +32,0.0001 +64,0.0001 +128,0.0001 +256,0.0001 +512,0.0006 +1024,0.0004 +2048,0.001 +4096,0.002 +8192,0.0031 +16384,0.0117 +32768,0.0166 +65536,0.0381 +131072,0.6025 +262144,1.1694 +524288,2.546 +1048576,4.438 +2097152,9.1659 +4194304,18.6093 +8388608,41.2207 +16777216,72.9407 +33554432,148.378 +67108864,295.554 +16,0.0001 +32,0.0003 +64,0.0001 +128,0.0001 +256,0.0001 +512,0.0002 +1024,0.0004 +2048,0.001 +4096,0.003 +8192,0.0033 +16384,0.0071 +32768,0.017 +65536,0.0398 +131072,0.5862 +262144,1.1885 +524288,2.4793 +1048576,4.4363 +2097152,10.0621 +4194304,18.5405 +8388608,39.4983 +16777216,74.1475 +33554432,158.19 +67108864,295.943 +16,0.0001 +32,0.0001 +64,0.0001 +128,0.0002 +256,0.0002 +512,0.0003 +1024,0.0004 +2048,0.001 +4096,0.0019 +8192,0.0031 +16384,0.0094 +32768,0.0162 +65536,0.0379 +131072,0.6013 +262144,1.2076 +524288,2.8542 +1048576,4.4372 +2097152,9.0995 +4194304,18.1453 +8388608,36.3008 +16777216,80.5818 +33554432,149.09 +67108864,302.32 +16,0.0001 +32,0.0001 +64,0.0001 +128,0.0002 +256,0.0002 +512,0.0003 +1024,0.0005 +2048,0.001 +4096,0.002 +8192,0.0033 +16384,0.0071 +32768,0.0171 +65536,0.0399 +131072,0.5845 +262144,1.1694 +524288,3.0195 +1048576,4.6507 +2097152,9.0758 +4194304,19.5385 +8388608,39.1712 +16777216,79.2736 +33554432,157.941 +67108864,295.956 +16,0.0001 +32,0.0001 +64,0.0001 +128,0.0002 +256,0.0002 +512,0.0002 +1024,0.0004 +2048,0.0009 +4096,0.002 +8192,0.0032 +16384,0.0075 +32768,0.0165 +65536,0.0375 +131072,0.7379 +262144,1.2413 +524288,2.341 +1048576,4.7742 +2097152,10.302 +4194304,18.0399 +8388608,37.7121 +16777216,78.698 +33554432,148.453 +67108864,290.26 +16,0 +32,0.0001 +64,0.0001 +128,0.0001 +256,0.0002 +512,0.0003 +1024,0.0004 +2048,0.0011 +4096,0.0019 +8192,0.0054 +16384,0.0075 +32768,0.0167 +65536,0.0627 +131072,0.7461 +262144,1.1726 +524288,2.3538 +1048576,4.5378 +2097152,8.877 +4194304,20.1099 +8388608,41.2731 +16777216,80.126 +33554432,148.393 +67108864,292.169 +16,0.0001 +32,0.0001 +64,0.0001 +128,0.0001 +256,0.0002 +512,0.0003 +1024,0.0004 +2048,0.001 +4096,0.002 +8192,0.0033 +16384,0.0072 +32768,0.0177 +65536,0.0662 +131072,0.5851 +262144,1.4132 +524288,2.6569 +1048576,4.4373 +2097152,9.2857 +4194304,19.3217 +8388608,39.7428 +16777216,78.1408 +33554432,148.739 +67108864,300.151 +16,0 +32,0.0002 +64,0.0001 +128,0.0001 +256,0.0001 +512,0.0003 +1024,0.0005 +2048,0.001 +4096,0.0025 +8192,0.0032 +16384,0.0069 +32768,0.0159 +65536,0.0378 +131072,0.6023 +262144,1.1702 +524288,2.353 +1048576,4.5661 +2097152,9.1036 +4194304,18.9246 +8388608,39.6615 +16777216,73.1945 +33554432,147.49 +67108864,292.665 +16,0.0001 +32,0.0001 +64,0.0004 +128,0.0001 +256,0.0002 +512,0.0003 +1024,0.0007 +2048,0.0009 +4096,0.0231 +8192,0.0033 +16384,0.0087 +32768,0.0164 +65536,0.0383 +131072,0.5854 +262144,1.6547 +524288,2.3408 +1048576,4.4367 +2097152,9.0455 +4194304,18.1364 +8388608,39.2407 +16777216,74.6502 +33554432,147.485 +67108864,301.349 +16,0.0001 +32,0.0001 +64,0.0001 +128,0.0135 +256,0.0001 +512,0.0002 +1024,0.0005 +2048,0.001 +4096,0.0022 +8192,0.0035 +16384,0.007 +32768,0.0159 +65536,0.039 +131072,0.7079 +262144,1.2096 +524288,2.2193 +1048576,4.8828 +2097152,10.7993 +4194304,18.6301 +8388608,36.3873 +16777216,76.2573 +33554432,151.719 +67108864,297.734 +16,0.0002 +32,0.0002 +64,0.0001 +128,0.0001 +256,0.0002 +512,0.0002 +1024,0.0005 +2048,0.0025 +4096,0.002 +8192,0.0037 +16384,0.0071 +32768,0.0174 +65536,0.0382 +131072,0.5852 +262144,1.1686 +524288,2.447 +1048576,4.6816 +2097152,9.4977 +4194304,18.5874 +8388608,37.2788 +16777216,76.4809 +33554432,149.63 +67108864,290.548 +16,0.0001 +32,0.0001 +64,0.0002 +128,0.0001 +256,0.0002 +512,0.0003 +1024,0.0004 +2048,0.001 +4096,0.002 +8192,0.0031 +16384,0.0069 +32768,0.0169 +65536,0.0395 +131072,0.6026 +262144,1.4942 +524288,2.3546 +1048576,4.8937 +2097152,9.0413 +4194304,20.947 +8388608,41.9568 +16777216,78.8223 +33554432,145.64 +67108864,295.857 +16,0.0001 +32,0.0001 +64,0.0001 +128,0.0002 +256,0.0002 +512,0.0002 +1024,0.0005 +2048,0.001 +4096,0.0019 +8192,0.0032 +16384,0.0069 +32768,0.0171 +65536,0.0346 +131072,0.5852 +262144,1.7087 +524288,2.3414 +1048576,4.5183 +2097152,9.722 +4194304,18.9315 +8388608,40.0802 +16777216,74.1246 +33554432,147.615 +67108864,292.751 +16,0.0001 +32,0 +64,0.0001 +128,0.0004 +256,0.0002 +512,0.0003 +1024,0.0005 +2048,0.001 +4096,0.002 +8192,0.006 +16384,0.0071 +32768,0.0167 +65536,0.0469 +131072,0.601 +262144,1.1733 +524288,2.3533 +1048576,4.7569 +2097152,9.3417 +4194304,18.1624 +8388608,39.3753 +16777216,75.1592 +33554432,155.298 +67108864,296.547 +16,0.0001 +32,0.0001 +64,0.0001 +128,0.0001 +256,0.0001 +512,0.0003 +1024,0.0005 +2048,0.001 +4096,0.002 +8192,0.0032 +16384,0.0071 +32768,0.0163 +65536,0.0379 +131072,0.7053 +262144,1.1727 +524288,2.3419 +1048576,4.4364 +2097152,8.8725 +4194304,19.5239 +8388608,36.3185 +16777216,79.0536 +33554432,147.499 +67108864,301.362 +16,0.0001 +32,0.0001 +64,0.0001 +128,0.0001 +256,0.0002 +512,0.0003 +1024,0.0004 +2048,0.001 +4096,0.002 +8192,0.0031 +16384,0.0071 +32768,0.0679 +65536,0.0387 +131072,0.5859 +262144,1.2017 +524288,2.3416 +1048576,4.4371 +2097152,9.8262 +4194304,17.9776 +8388608,41.773 +16777216,73.3328 +33554432,150.768 +67108864,294.008 +16,0.0001 +32,0.0001 +64,0.0133 +128,0.0001 +256,0.0001 +512,0.0002 +1024,0.0005 +2048,0.0009 +4096,0.002 +8192,0.0031 +16384,0.0071 +32768,0.0169 +65536,0.0384 +131072,0.5857 +262144,1.1737 +524288,2.3551 +1048576,4.9732 +2097152,10.5699 +4194304,20.0532 +8388608,36.7292 +16777216,78.5239 +33554432,150.514 +67108864,294.324 +16,0.0001 +32,0.0001 +64,0.0001 +128,0.0002 +256,0.0001 +512,0.0003 +1024,0.0138 +2048,0.001 +4096,0.0019 +8192,0.0033 +16384,0.0069 +32768,0.0301 +65536,0.0396 +131072,0.5863 +262144,1.1734 +524288,2.3415 +1048576,5.0581 +2097152,9.49 +4194304,19.1251 +8388608,37.1389 +16777216,80.7955 +33554432,149.884 +67108864,294.925 +16,0.0001 +32,0.0001 +64,0.0001 +128,0.0135 +256,0.0003 +512,0.0003 +1024,0.0005 +2048,0.001 +4096,0.002 +8192,0.0031 +16384,0.0072 +32768,0.0164 +65536,0.0378 +131072,0.5853 +262144,1.1931 +524288,2.9547 +1048576,4.6841 +2097152,8.8745 +4194304,18.8603 +8388608,37.4491 +16777216,79.1134 +33554432,147.226 +67108864,300.951 +16,0.0001 +32,0.0001 +64,0.0001 +128,0.0001 +256,0.0002 +512,0.0138 +1024,0.0004 +2048,0.001 +4096,0.0022 +8192,0.0032 +16384,0.008 +32768,0.0179 +65536,0.0388 +131072,0.5857 +262144,1.173 +524288,2.3438 +1048576,4.6838 +2097152,9.5411 +4194304,18.0263 +8388608,39.5634 +16777216,78.3876 +33554432,149.98 +67108864,298.994 +16,0.0001 +32,0.0002 +64,0.0001 +128,0.0001 +256,0.0001 +512,0.0003 +1024,0.0004 +2048,0.0009 +4096,0.002 +8192,0.0032 +16384,0.0071 +32768,0.0167 +65536,0.0381 +131072,0.5854 +262144,1.1676 +524288,2.4966 +1048576,4.6383 +2097152,10.988 +4194304,20.2524 +8388608,38.2143 +16777216,79.4699 +33554432,146.984 +67108864,292.347 +16,0.0001 +32,0.0001 +64,0.0002 +128,0.0002 +256,0.0001 +512,0.0003 +1024,0.0005 +2048,0.0014 +4096,0.0019 +8192,0.0031 +16384,0.0068 +32768,0.0166 +65536,0.0397 +131072,0.601 +262144,1.173 +524288,2.3548 +1048576,4.437 +2097152,10.1256 +4194304,18.7743 +8388608,39.8065 +16777216,80.4707 +33554432,148.925 +67108864,296.724 +16,0 +32,0.0001 +64,0.0001 +128,0.0001 +256,0.0002 +512,0.0002 +1024,0.0005 +2048,0.0143 +4096,0.0019 +8192,0.0031 +16384,0.0069 +32768,0.0163 +65536,0.0388 +131072,1.0864 +262144,1.1694 +524288,2.4526 +1048576,4.4379 +2097152,9.0511 +4194304,18.1439 +8388608,37.4342 +16777216,76.2038 +33554432,146.042 +67108864,303.242 +16,0.0001 +32,0.0002 +64,0.0002 +128,0.0001 +256,0.0002 +512,0.0003 +1024,0.0004 +2048,0.0009 +4096,0.0041 +8192,0.0031 +16384,0.007 +32768,0.0159 +65536,0.0388 +131072,0.6345 +262144,1.1738 +524288,2.3419 +1048576,4.7672 +2097152,9.123 +4194304,18.1265 +8388608,39.8873 +16777216,74.1988 +33554432,149.765 +67108864,297.464 +16,0.0001 +32,0.0001 +64,0.0001 +128,0.0001 +256,0.0002 +512,0.0003 +1024,0.0004 +2048,0.001 +4096,0.0021 +8192,0.0031 +16384,0.0072 +32768,0.0163 +65536,0.0388 +131072,0.5874 +262144,1.2487 +524288,2.3418 +1048576,4.5348 +2097152,9.5047 +4194304,18.1822 +8388608,39.0919 +16777216,76.1235 +33554432,146.627 +67108864,296.079 +16,0.0001 +32,0.0001 +64,0.0001 +128,0.0001 +256,0.0001 +512,0.0003 +1024,0.0004 +2048,0.001 +4096,0.0021 +8192,0.0031 +16384,0.0073 +32768,0.0175 +65536,0.0401 +131072,0.6962 +262144,1.2062 +524288,2.2204 +1048576,4.6828 +2097152,9.3648 +4194304,18.0121 +8388608,39.7672 +16777216,72.6283 +33554432,150.089 +67108864,298.948 +16,0.0001 +32,0.0001 +64,0.0001 +128,0.0001 +256,0.0002 +512,0.0003 +1024,0.0004 +2048,0.001 +4096,0.0021 +8192,0.0031 +16384,0.0077 +32768,0.0162 +65536,0.0369 +131072,0.5858 +262144,1.1688 +524288,2.3418 +1048576,4.6658 +2097152,9.7289 +4194304,18.2558 +8388608,39.5971 +16777216,77.214 +33554432,150.016 +67108864,295.004 +16,0.0001 +32,0.0002 +64,0.0001 +128,0.0001 +256,0.0004 +512,0.0003 +1024,0.0004 +2048,0.001 +4096,0.0041 +8192,0.0032 +16384,0.0074 +32768,0.0163 +65536,0.0387 +131072,0.5846 +262144,1.2071 +524288,2.3529 +1048576,4.4377 +2097152,9.3144 +4194304,18.2123 +8388608,39.6724 +16777216,74.8721 +33554432,152.521 +67108864,297.268 +16,0 +32,0.0001 +64,0.0001 +128,0.0001 +256,0.0001 +512,0.0002 +1024,0.0005 +2048,0.001 +4096,0.0152 +8192,0.0032 +16384,0.007 +32768,0.017 +65536,0.0372 +131072,0.5868 +262144,1.1729 +524288,2.3435 +1048576,4.7931 +2097152,9.8441 +4194304,18.3347 +8388608,36.4644 +16777216,80.5874 +33554432,149.629 +67108864,292.488 +16,0.0001 +32,0.0001 +64,0.0001 +128,0.0002 +256,0.0002 +512,0.0003 +1024,0.0006 +2048,0.001 +4096,0.0019 +8192,0.0031 +16384,0.0071 +32768,0.0161 +65536,0.0386 +131072,0.7599 +262144,1.1741 +524288,2.2327 +1048576,4.7869 +2097152,9.495 +4194304,20.3041 +8388608,39.1292 +16777216,74.982 +33554432,146.918 +67108864,293.265 +16,0.0001 +32,0.0001 +64,0.0001 +128,0.0001 +256,0.0003 +512,0.0002 +1024,0.0005 +2048,0.001 +4096,0.0019 +8192,0.0031 +16384,0.0069 +32768,0.0161 +65536,0.0372 +131072,0.5847 +262144,1.1729 +524288,2.4067 +1048576,4.8316 +2097152,9.9782 +4194304,18.0681 +8388608,39.3769 +16777216,73.9444 +33554432,146.515 +67108864,292.351 +16,0.0001 +32,0.0001 +64,0.0001 +128,0.0001 +256,0.0001 +512,0.0006 +1024,0.0005 +2048,0.001 +4096,0.0019 +8192,0.0032 +16384,0.0076 +32768,0.0168 +65536,0.0394 +131072,0.5839 +262144,1.1684 +524288,2.4955 +1048576,4.4363 +2097152,9.0939 +4194304,20.6765 +8388608,37.549 +16777216,79.7074 +33554432,145.898 +67108864,296.535 +16,0.0001 +32,0.0002 +64,0.0001 +128,0.0001 +256,0.0002 +512,0.0002 +1024,0.0004 +2048,0.0009 +4096,0.0019 +8192,0.0031 +16384,0.0067 +32768,0.0167 +65536,0.0386 +131072,0.5846 +262144,1.1745 +524288,2.7065 +1048576,4.438 +2097152,8.8724 +4194304,19.6576 +8388608,39.286 +16777216,80.4088 +33554432,147.678 +67108864,293.616 +16,0.0001 +32,0.0001 +64,0.0001 +128,0.0001 +256,0.0002 +512,0.0003 +1024,0.0004 +2048,0.0009 +4096,0.0021 +8192,0.0033 +16384,0.0072 +32768,0.0161 +65536,0.0393 +131072,0.5838 +262144,1.1737 +524288,2.4337 +1048576,4.9663 +2097152,8.8743 +4194304,20.087 +8388608,36.9702 +16777216,78.3315 +33554432,145.554 +67108864,292.261 +16,0.0001 +32,0.0001 +64,0.0001 +128,0.0001 +256,0.0002 +512,0.0003 +1024,0.0005 +2048,0.001 +4096,0.0032 +8192,0.0031 +16384,0.0067 +32768,0.0166 +65536,0.0386 +131072,0.5839 +262144,1.1727 +524288,2.3401 +1048576,4.6217 +2097152,9.9779 +4194304,18.6124 +8388608,37.597 +16777216,74.7071 +33554432,149.51 +67108864,301.498 +16,0.0001 +32,0.0001 +64,0.0002 +128,0.0001 +256,0.0001 +512,0.0003 +1024,0.0005 +2048,0.001 +4096,0.0019 +8192,0.0031 +16384,0.0069 +32768,0.0166 +65536,0.0404 +131072,0.5853 +262144,1.172 +524288,2.516 +1048576,4.437 +2097152,9.0451 +4194304,18.869 +8388608,38.049 +16777216,79.9235 +33554432,153.085 +67108864,294.974 +16,0 +32,0.0001 +64,0.0001 +128,0.0002 +256,0.0004 +512,0.0007 +1024,0.0004 +2048,0.0009 +4096,0.0019 +8192,0.0031 +16384,0.0073 +32768,0.0325 +65536,0.3428 +131072,0.5845 +262144,1.168 +524288,2.2344 +1048576,4.4356 +2097152,10.2623 +4194304,20.2405 +8388608,39.4347 +16777216,77.1125 +33554432,147.164 +67108864,295.013 +16,0.0001 +32,0.0001 +64,0.0001 +128,0.0001 +256,0.0002 +512,0.0002 +1024,0.0004 +2048,0.001 +4096,0.0019 +8192,0.0031 +16384,0.0074 +32768,0.017 +65536,0.0402 +131072,0.5828 +262144,1.1738 +524288,2.3408 +1048576,4.4379 +2097152,8.8708 +4194304,18.3452 +8388608,38.7453 +16777216,80.8386 +33554432,152.096 +67108864,294.997 +16,0.0001 +32,0.0001 +64,0.0002 +128,0.0001 +256,0.0002 +512,0.0004 +1024,0.0004 +2048,0.001 +4096,0.0019 +8192,0.0031 +16384,0.007 +32768,0.0171 +65536,0.0374 +131072,0.5849 +262144,1.107 +524288,2.3397 +1048576,5.7408 +2097152,9.0412 +4194304,20.9916 +8388608,38.4566 +16777216,72.9559 +33554432,143.576 +67108864,297.566 +16,0.0001 +32,0.0001 +64,0.0001 +128,0.0002 +256,0.0001 +512,0.0003 +1024,0.0005 +2048,0.001 +4096,0.0021 +8192,0.0031 +16384,0.0085 +32768,0.0168 +65536,0.038 +131072,0.586 +262144,1.1705 +524288,2.3536 +1048576,4.4347 +2097152,9.7942 +4194304,17.9749 +8388608,40.1584 +16777216,73.3278 +33554432,148.799 +67108864,294.423 +16,0.0001 +32,0.0001 +64,0.0002 +128,0.0001 +256,0.0002 +512,0.0003 +1024,0.0005 +2048,0.001 +4096,0.002 +8192,0.0032 +16384,0.0073 +32768,0.0167 +65536,0.0383 +131072,0.5833 +262144,1.1749 +524288,2.3431 +1048576,4.4364 +2097152,9.2598 +4194304,18.9758 +8388608,36.7641 +16777216,81.2548 +33554432,148.8 +67108864,293.866 +16,0.0001 +32,0.0002 +64,0.0001 +128,0.0001 +256,0.0001 +512,0.0003 +1024,0.0007 +2048,0.001 +4096,0.002 +8192,0.0032 +16384,0.007 +32768,0.016 +65536,0.0467 +131072,0.5827 +262144,1.1744 +524288,2.2188 +1048576,5.3278 +2097152,9.0139 +4194304,20.4905 +8388608,40.3759 +16777216,77.5772 +33554432,145.52 +67108864,302.875 +16,0 +32,0.0001 +64,0.0001 +128,0.0002 +256,0.0001 +512,0.0137 +1024,0.0005 +2048,0.001 +4096,0.002 +8192,0.0032 +16384,0.0071 +32768,0.0165 +65536,0.0373 +131072,0.5862 +262144,1.1677 +524288,2.3417 +1048576,4.437 +2097152,8.8744 +4194304,19.5002 +8388608,37.3748 +16777216,74.1998 +33554432,147.899 +67108864,291.094 +16,0.0001 +32,0.0001 +64,0.0001 +128,0.0001 +256,0.0002 +512,0.0002 +1024,0.0005 +2048,0.0009 +4096,0.002 +8192,0.0031 +16384,0.0072 +32768,0.0168 +65536,0.0399 +131072,0.6024 +262144,1.1735 +524288,2.2769 +1048576,4.6836 +2097152,10.7717 +4194304,18.2062 +8388608,36.0965 +16777216,77.2274 +33554432,147.447 +67108864,294.097 +16,0.0001 +32,0.0001 +64,0.0001 +128,0.0001 +256,0.0001 +512,0.0002 +1024,0.0004 +2048,0.001 +4096,0.0019 +8192,0.0031 +16384,0.0073 +32768,0.0169 +65536,0.0385 +131072,0.5855 +262144,1.1676 +524288,2.3426 +1048576,4.438 +2097152,10.6584 +4194304,19.3591 +8388608,38.1717 +16777216,78.6804 +33554432,154.564 +67108864,293.585 +16,0.0001 +32,0.0001 +64,0.0002 +128,0.0002 +256,0.0001 +512,0.0003 +1024,0.0005 +2048,0.001 +4096,0.0018 +8192,0.003 +16384,0.0105 +32768,0.0164 +65536,0.0393 +131072,0.5827 +262144,1.1705 +524288,2.3424 +1048576,4.9604 +2097152,9.4746 +4194304,18.4516 +8388608,38.5808 +16777216,78.7057 +33554432,152.126 +67108864,296.895 +16,0.0001 +32,0.0002 +64,0.0001 +128,0.0001 +256,0.0001 +512,0.0003 +1024,0.0004 +2048,0.001 +4096,0.002 +8192,0.0031 +16384,0.0069 +32768,0.0165 +65536,0.0385 +131072,0.5851 +262144,1.1744 +524288,2.3419 +1048576,4.4373 +2097152,8.8747 +4194304,17.945 +8388608,39.0332 +16777216,76.2081 +33554432,151.025 +67108864,293.145 +16,0.0001 +32,0.0001 +64,0.0001 +128,0.0001 +256,0.0001 +512,0.0003 +1024,0.0005 +2048,0.0009 +4096,0.002 +8192,0.0031 +16384,0.0073 +32768,0.017 +65536,0.0386 +131072,0.583 +262144,1.2397 +524288,2.2169 +1048576,4.8245 +2097152,9.0992 +4194304,18.2517 +8388608,36.0444 +16777216,84.9043 +33554432,148.889 +67108864,297.67 +16,0.0001 +32,0.0002 +64,0.0001 +128,0.0001 +256,0.0001 +512,0.0002 +1024,0.0005 +2048,0.001 +4096,0.002 +8192,0.0031 +16384,0.0206 +32768,0.0176 +65536,0.0368 +131072,0.6016 +262144,1.1681 +524288,2.3399 +1048576,4.4378 +2097152,10.0612 +4194304,18.7843 +8388608,38.559 +16777216,80.5494 +33554432,145.605 +67108864,293.967 +16,0.0001 +32,0.0001 +64,0.0001 +128,0.0001 +256,0.0002 +512,0.0002 +1024,0.0005 +2048,0.001 +4096,0.0018 +8192,0.003 +16384,0.007 +32768,0.019 +65536,0.0722 +131072,0.5849 +262144,1.391 +524288,2.3576 +1048576,4.4385 +2097152,9.0416 +4194304,18.0834 +8388608,38.3286 +16777216,76.8367 +33554432,150.026 +67108864,304.846 +16,0.0001 +32,0.0001 +64,0.0002 +128,0.0001 +256,0.0001 +512,0.0003 +1024,0.0005 +2048,0.001 +4096,0.0018 +8192,0.0035 +16384,0.007 +32768,0.016 +65536,0.0466 +131072,0.5862 +262144,1.6621 +524288,2.3417 +1048576,4.4376 +2097152,9.0919 +4194304,17.8566 +8388608,40.5776 +16777216,74.3319 +33554432,150.106 +67108864,298.504 +16,0.0001 +32,0.0003 +64,0.0002 +128,0.0002 +256,0.0002 +512,0.0003 +1024,0.0004 +2048,0.001 +4096,0.0019 +8192,0.0032 +16384,0.007 +32768,0.0174 +65536,0.0396 +131072,0.6451 +262144,1.6099 +524288,2.3424 +1048576,4.4353 +2097152,10.5637 +4194304,18.1775 +8388608,38.0247 +16777216,73.6713 +33554432,149.947 +67108864,295.745 +16,0.0001 +32,0.0001 +64,0.0002 +128,0.0002 +256,0.0002 +512,0.0002 +1024,0.0005 +2048,0.0009 +4096,0.0019 +8192,0.0036 +16384,0.0067 +32768,0.0186 +65536,0.0363 +131072,0.6003 +262144,1.2051 +524288,2.3414 +1048576,4.7618 +2097152,8.8741 +4194304,19.9503 +8388608,37.3785 +16777216,75.3217 +33554432,147.232 +67108864,297.046 +16,0.0002 +32,0.0002 +64,0.0001 +128,0.0001 +256,0.0002 +512,0.0003 +1024,0.0004 +2048,0.001 +4096,0.0019 +8192,0.0055 +16384,0.0073 +32768,0.0166 +65536,0.0388 +131072,0.7339 +262144,1.1745 +524288,2.4098 +1048576,6.0921 +2097152,9.364 +4194304,17.9992 +8388608,36.6749 +16777216,78.3793 +33554432,147.342 +67108864,290.604 +16,0.0001 +32,0.0001 +64,0.0002 +128,0.0001 +256,0.0002 +512,0.0003 +1024,0.0004 +2048,0.001 +4096,0.0019 +8192,0.0032 +16384,0.0081 +32768,0.018 +65536,0.037 +131072,0.5837 +262144,1.208 +524288,2.4929 +1048576,4.4361 +2097152,9.0443 +4194304,18.8164 +8388608,40.7567 +16777216,78.5254 +33554432,155.797 +67108864,294.363 +16,0.0001 +32,0.0002 +64,0.0002 +128,0.0001 +256,0.0002 +512,0.0135 +1024,0.0005 +2048,0.0139 +4096,0.002 +8192,0.0031 +16384,0.0075 +32768,0.0163 +65536,0.038 +131072,0.5858 +262144,1.1692 +524288,2.4203 +1048576,4.6036 +2097152,9.0483 +4194304,17.9825 +8388608,39.7236 +16777216,79.9202 +33554432,148.433 +67108864,296.297 +16,0.0001 +32,0.0001 +64,0.0002 +128,0.0002 +256,0.0001 +512,0.0003 +1024,0.0004 +2048,0.001 +4096,0.002 +8192,0.0033 +16384,0.0069 +32768,0.0167 +65536,0.0377 +131072,0.5853 +262144,1.3692 +524288,2.3418 +1048576,4.4384 +2097152,9.2642 +4194304,17.9068 +8388608,43.2932 +16777216,74.2488 +33554432,153.134 +67108864,297.023 +16,0.0001 +32,0.0001 +64,0.0001 +128,0.0002 +256,0.0001 +512,0.0002 +1024,0.0005 +2048,0.001 +4096,0.0019 +8192,0.0031 +16384,0.0072 +32768,0.0166 +65536,0.0402 +131072,0.5849 +262144,1.112 +524288,2.4395 +1048576,4.6828 +2097152,8.8735 +4194304,20.2305 +8388608,37.6744 +16777216,79.4497 +33554432,146.165 +67108864,292.568 +16,0.0001 +32,0.0001 +64,0.0001 +128,0.0002 +256,0.0002 +512,0.0006 +1024,0.0005 +2048,0.001 +4096,0.0019 +8192,0.0032 +16384,0.0069 +32768,0.0166 +65536,0.0334 +131072,0.5855 +262144,1.2866 +524288,2.3537 +1048576,5.6833 +2097152,10.8787 +4194304,19.6461 +8388608,40.4327 +16777216,79.5389 +33554432,149.066 +67108864,295.692 +16,0 +32,0.0002 +64,0.0001 +128,0.0003 +256,0.0003 +512,0.0003 +1024,0.0004 +2048,0.001 +4096,0.002 +8192,0.0071 +16384,0.0073 +32768,0.019 +65536,0.0393 +131072,0.5854 +262144,1.1692 +524288,2.4089 +1048576,4.4375 +2097152,9.5297 +4194304,19.1924 +8388608,36.3258 +16777216,81.1201 +33554432,153.315 +67108864,294.263 +16,0 +32,0.0001 +64,0.0001 +128,0.0001 +256,0.0001 +512,0.0136 +1024,0.0005 +2048,0.001 +4096,0.002 +8192,0.0041 +16384,0.0073 +32768,0.0167 +65536,0.0386 +131072,0.5845 +262144,1.174 +524288,2.9982 +1048576,4.6805 +2097152,9.3689 +4194304,18.0817 +8388608,37.048 +16777216,74.8984 +33554432,146.794 +67108864,302.2 +16,0.0001 +32,0.0001 +64,0.0001 +128,0.0001 +256,0.0001 +512,0.0004 +1024,0.0004 +2048,0.0018 +4096,0.002 +8192,0.0031 +16384,0.0075 +32768,0.0172 +65536,0.041 +131072,0.5865 +262144,1.2028 +524288,2.34 +1048576,4.571 +2097152,9.1156 +4194304,19.1642 +8388608,35.9602 +16777216,77.1243 +33554432,149.249 +67108864,291.874 +16,0.0001 +32,0.0002 +64,0.0001 +128,0.0001 +256,0.0002 +512,0.0003 +1024,0.0005 +2048,0.001 +4096,0.0019 +8192,0.0033 +16384,0.0069 +32768,0.0167 +65536,0.0431 +131072,0.6024 +262144,1.1692 +524288,2.4086 +1048576,5.8738 +2097152,9.4245 +4194304,19.2795 +8388608,40.3651 +16777216,83.5668 +33554432,150.721 +67108864,296.368 +16,0.0001 +32,0.0001 +64,0.0001 +128,0.0001 +256,0.0002 +512,0.0002 +1024,0.0004 +2048,0.001 +4096,0.002 +8192,0.0031 +16384,0.0072 +32768,0.0164 +65536,0.0391 +131072,0.5856 +262144,1.1736 +524288,2.342 +1048576,4.6831 +2097152,9.1163 +4194304,18.9278 +8388608,36.3455 +16777216,77.3548 +33554432,148.532 +67108864,289.166 +16,0.0001 +32,0.0003 +64,0.0001 +128,0.0001 +256,0.0002 +512,0.0003 +1024,0.0005 +2048,0.001 +4096,0.002 +8192,0.0031 +16384,0.0068 +32768,0.0164 +65536,0.0329 +131072,0.5861 +262144,1.1734 +524288,2.4849 +1048576,4.6852 +2097152,9.6923 +4194304,19.3863 +8388608,36.5026 +16777216,75.7468 +33554432,145.191 +67108864,293.501 +16,0.0001 +32,0.0001 +64,0.0001 +128,0.0002 +256,0.0001 +512,0.0003 +1024,0.0004 +2048,0.001 +4096,0.002 +8192,0.0031 +16384,0.0073 +32768,0.0205 +65536,0.0376 +131072,0.6003 +262144,1.3103 +524288,2.5571 +1048576,5.6024 +2097152,9.8827 +4194304,19.8792 +8388608,42.103 +16777216,78.0536 +33554432,148.874 +67108864,291.851 +16,0.0001 +32,0.0001 +64,0.0001 +128,0.0001 +256,0.0002 +512,0.0002 +1024,0.0005 +2048,0.001 +4096,0.0019 +8192,0.0031 +16384,0.0069 +32768,0.0166 +65536,0.035 +131072,0.5853 +262144,1.3075 +524288,2.2179 +1048576,5.0182 +2097152,9.052 +4194304,19.3508 +8388608,38.7918 +16777216,79.2077 +33554432,151.998 +67108864,298.852 +16,0 +32,0.0001 +64,0.0001 +128,0.0001 +256,0.0002 +512,0.0004 +1024,0.0004 +2048,0.001 +4096,0.0019 +8192,0.0032 +16384,0.0073 +32768,0.0164 +65536,0.0395 +131072,0.5855 +262144,1.1697 +524288,2.6625 +1048576,4.4373 +2097152,8.8719 +4194304,19.6802 +8388608,38.4906 +16777216,76.9532 +33554432,145.335 +67108864,295.291 +16,0.0001 +32,0.0002 +64,0.0001 +128,0.0002 +256,0.0001 +512,0.0002 +1024,0.0004 +2048,0.001 +4096,0.0019 +8192,0.0032 +16384,0.0076 +32768,0.0162 +65536,0.0378 +131072,0.5859 +262144,1.2067 +524288,2.3525 +1048576,5.8241 +2097152,9.1207 +4194304,19.3522 +8388608,37.5202 +16777216,79.1651 +33554432,149.135 +67108864,291.139 +16,0.0001 +32,0.0001 +64,0.0002 +128,0.0001 +256,0.0001 +512,0.0003 +1024,0.0005 +2048,0.0023 +4096,0.0035 +8192,0.0032 +16384,0.0071 +32768,0.0165 +65536,0.0366 +131072,0.5868 +262144,1.1742 +524288,2.3423 +1048576,4.4364 +2097152,9.7367 +4194304,18.2921 +8388608,40.8872 +16777216,72.2401 +33554432,147.511 +67108864,295.125 +16,0.0001 +32,0.0002 +64,0.0001 +128,0.0002 +256,0.0002 +512,0.0003 +1024,0.0005 +2048,0.001 +4096,0.002 +8192,0.0032 +16384,0.0069 +32768,0.0206 +65536,0.0389 +131072,0.5828 +262144,1.1732 +524288,2.856 +1048576,4.438 +2097152,9.0394 +4194304,18.1548 +8388608,37.735 +16777216,78.1823 +33554432,149.297 +67108864,294.147 +16,0.0001 +32,0.0001 +64,0.0001 +128,0.0001 +256,0.0002 +512,0.0004 +1024,0.0005 +2048,0.0009 +4096,0.0019 +8192,0.0032 +16384,0.007 +32768,0.016 +65536,0.0376 +131072,0.6738 +262144,1.1684 +524288,3.2724 +1048576,4.4392 +2097152,8.9608 +4194304,19.3772 +8388608,39.1082 +16777216,74.664 +33554432,147.252 +67108864,296.116 +16,0.0001 +32,0.0001 +64,0.0001 +128,0.0001 +256,0.0002 +512,0.0003 +1024,0.0005 +2048,0.001 +4096,0.0019 +8192,0.0035 +16384,0.0069 +32768,0.0164 +65536,0.0403 +131072,0.5851 +262144,1.1678 +524288,3.2064 +1048576,4.4389 +2097152,9.1108 +4194304,18.9324 +8388608,38.1801 +16777216,77.3751 +33554432,145.359 +67108864,300.869 +16,0.0001 +32,0.0001 +64,0.0001 +128,0.0001 +256,0.0002 +512,0.0003 +1024,0.0004 +2048,0.001 +4096,0.002 +8192,0.0034 +16384,0.007 +32768,0.0164 +65536,0.0392 +131072,0.5848 +262144,1.1735 +524288,2.3546 +1048576,4.4376 +2097152,8.8743 +4194304,18.7351 +8388608,39.2063 +16777216,81.1555 +33554432,148.936 +67108864,290.905 +16,0.0001 +32,0.0001 +64,0.0001 +128,0.0001 +256,0.0002 +512,0.0004 +1024,0.0004 +2048,0.0021 +4096,0.0019 +8192,0.0031 +16384,0.0074 +32768,0.0171 +65536,0.0396 +131072,0.5848 +262144,1.1681 +524288,2.3427 +1048576,4.6379 +2097152,8.8733 +4194304,19.8822 +8388608,36.9008 +16777216,72.9444 +33554432,150.206 +67108864,294.753 +16,0.0001 +32,0.0001 +64,0.0002 +128,0.0001 +256,0.0001 +512,0.0002 +1024,0.0004 +2048,0.0141 +4096,0.0019 +8192,0.003 +16384,0.0086 +32768,0.0167 +65536,0.0354 +131072,0.5852 +262144,1.1731 +524288,2.4085 +1048576,4.4385 +2097152,9.6023 +4194304,18.211 +8388608,37.5299 +16777216,76.2051 +33554432,148.124 +67108864,295.243 +16,0.0001 +32,0.0001 +64,0.0003 +128,0.0001 +256,0.0002 +512,0.0003 +1024,0.0005 +2048,0.001 +4096,0.002 +8192,0.0031 +16384,0.0072 +32768,0.0167 +65536,0.0327 +131072,0.5853 +262144,1.1678 +524288,2.34 +1048576,4.6409 +2097152,8.8714 +4194304,19.7795 +8388608,39.2116 +16777216,78.7709 +33554432,148.081 +67108864,292.315 +16,0.0001 +32,0.0001 +64,0.0001 +128,0.0133 +256,0.0002 +512,0.0003 +1024,0.0005 +2048,0.001 +4096,0.0021 +8192,0.003 +16384,0.0074 +32768,0.0163 +65536,0.0367 +131072,1.2036 +262144,1.2009 +524288,2.3527 +1048576,4.4357 +2097152,9.0461 +4194304,18.591 +8388608,37.5492 +16777216,74.53 +33554432,147.792 +67108864,296.914 +16,0 +32,0.0001 +64,0.0001 +128,0.0002 +256,0.0002 +512,0.0003 +1024,0.0004 +2048,0.0009 +4096,0.002 +8192,0.0031 +16384,0.0088 +32768,0.0166 +65536,0.0328 +131072,0.6013 +262144,1.1678 +524288,2.3521 +1048576,5.8758 +2097152,9.1727 +4194304,20.2278 +8388608,38.0519 +16777216,74.7777 +33554432,147.329 +67108864,291.695 +16,0 +32,0.0003 +64,0.0001 +128,0.0001 +256,0.0001 +512,0.0003 +1024,0.0004 +2048,0.001 +4096,0.002 +8192,0.0031 +16384,0.0072 +32768,0.0167 +65536,0.0379 +131072,0.6644 +262144,1.2057 +524288,2.3421 +1048576,4.4366 +2097152,9.4599 +4194304,18.1768 +8388608,41.3023 +16777216,77.8979 +33554432,148.646 +67108864,298.471 +16,0.0001 +32,0.0002 +64,0.0001 +128,0.0001 +256,0.0002 +512,0.0003 +1024,0.0004 +2048,0.001 +4096,0.002 +8192,0.0031 +16384,0.0071 +32768,0.0184 +65536,0.0488 +131072,0.5857 +262144,1.1736 +524288,2.3431 +1048576,4.4372 +2097152,9.5654 +4194304,19.1666 +8388608,37.8003 +16777216,77.9504 +33554432,145.132 +67108864,295.048 +16,0.0001 +32,0.0001 +64,0.0002 +128,0.0002 +256,0.0002 +512,0.0002 +1024,0.0005 +2048,0.001 +4096,0.0019 +8192,0.0039 +16384,0.0069 +32768,0.0169 +65536,0.0384 +131072,0.586 +262144,1.237 +524288,2.3559 +1048576,4.4369 +2097152,9.3672 +4194304,18.1537 +8388608,37.3251 +16777216,78.4687 +33554432,148.673 +67108864,295.068 +16,0.0001 +32,0.0002 +64,0.0001 +128,0.0001 +256,0.0003 +512,0.0003 +1024,0.0005 +2048,0.0009 +4096,0.002 +8192,0.0035 +16384,0.0068 +32768,0.0187 +65536,0.0336 +131072,0.5852 +262144,1.2025 +524288,2.8797 +1048576,4.7446 +2097152,10.7843 +4194304,17.9552 +8388608,37.7674 +16777216,80.7148 +33554432,150.311 +67108864,293.5 +16,0.0001 +32,0.0001 +64,0.0001 +128,0.0002 +256,0.0001 +512,0.0002 +1024,0.0004 +2048,0.001 +4096,0.002 +8192,0.0032 +16384,0.007 +32768,0.0163 +65536,0.0358 +131072,0.5846 +262144,1.1698 +524288,3.3771 +1048576,4.6415 +2097152,9.0392 +4194304,19.7469 +8388608,35.7936 +16777216,76.4362 +33554432,144.432 +67108864,292.47 +16,0.0001 +32,0.0001 +64,0.0001 +128,0.0002 +256,0.0002 +512,0.0003 +1024,0.0005 +2048,0.001 +4096,0.0019 +8192,0.0031 +16384,0.0071 +32768,0.0164 +65536,0.0375 +131072,0.5853 +262144,1.3516 +524288,2.3427 +1048576,4.6678 +2097152,9.8457 +4194304,18.5244 +8388608,37.6329 +16777216,74.5059 +33554432,150.023 +67108864,291.47 +16,0.0001 +32,0.0003 +64,0.0001 +128,0.0002 +256,0.0002 +512,0.0003 +1024,0.0005 +2048,0.0008 +4096,0.002 +8192,0.0031 +16384,0.0073 +32768,0.0538 +65536,0.0405 +131072,0.5854 +262144,1.1687 +524288,2.9115 +1048576,4.4366 +2097152,9.4837 +4194304,20.2417 +8388608,36.6623 +16777216,80.0242 +33554432,146.723 +67108864,293.588 +16,0.0001 +32,0.0161 +64,0.0002 +128,0.0002 +256,0.0002 +512,0.0003 +1024,0.0005 +2048,0.001 +4096,0.0019 +8192,0.0032 +16384,0.007 +32768,0.0164 +65536,0.038 +131072,0.585 +262144,1.1691 +524288,2.6286 +1048576,4.4367 +2097152,8.8741 +4194304,18.4275 +8388608,39.3215 +16777216,73.2063 +33554432,154.076 +67108864,297.191 +16,0.0001 +32,0.0001 +64,0.0001 +128,0.0002 +256,0.0002 +512,0.0002 +1024,0.0005 +2048,0.001 +4096,0.002 +8192,0.0032 +16384,0.007 +32768,0.0164 +65536,0.0393 +131072,0.5852 +262144,1.17 +524288,2.3538 +1048576,4.438 +2097152,9.0299 +4194304,18.5012 +8388608,36.4056 +16777216,79.2248 +33554432,145.652 +67108864,290.427 +16,0.0001 +32,0.0001 +64,0.0001 +128,0.0002 +256,0.0001 +512,0.0002 +1024,0.0005 +2048,0.001 +4096,0.002 +8192,0.0031 +16384,0.007 +32768,0.0166 +65536,0.038 +131072,0.5856 +262144,1.1719 +524288,2.3534 +1048576,4.4369 +2097152,9.4768 +4194304,18.3334 +8388608,40.6461 +16777216,77.5513 +33554432,148.425 +67108864,291.957 +16,0.0001 +32,0.0001 +64,0.0001 +128,0.0002 +256,0.0002 +512,0.0002 +1024,0.0005 +2048,0.001 +4096,0.0019 +8192,0.0031 +16384,0.0073 +32768,0.021 +65536,0.0388 +131072,0.5833 +262144,1.1723 +524288,2.3547 +1048576,4.4362 +2097152,10.1236 +4194304,19.164 +8388608,35.8954 +16777216,78.8352 +33554432,147.654 +67108864,291.536 +16,0.0001 +32,0.0001 +64,0.0001 +128,0.0002 +256,0.0001 +512,0.0003 +1024,0.0005 +2048,0.001 +4096,0.0021 +8192,0.0031 +16384,0.0072 +32768,0.0166 +65536,0.0326 +131072,0.5859 +262144,1.1706 +524288,3.505 +1048576,4.4368 +2097152,9.0193 +4194304,18.4972 +8388608,37.8309 +16777216,74.5008 +33554432,146.013 +67108864,299.022 +16,0.0001 +32,0.0001 +64,0.0002 +128,0.0002 +256,0.0002 +512,0.0006 +1024,0.0004 +2048,0.001 +4096,0.0032 +8192,0.0031 +16384,0.0071 +32768,0.0168 +65536,0.0366 +131072,0.5862 +262144,1.1731 +524288,2.4207 +1048576,4.4366 +2097152,8.8753 +4194304,18.4913 +8388608,41.0339 +16777216,78.1409 +33554432,149.54 +67108864,292.042 +16,0.0001 +32,0.0001 +64,0.0001 +128,0.0001 +256,0.0001 +512,0.0002 +1024,0.0005 +2048,0.001 +4096,0.0019 +8192,0.0031 +16384,0.0106 +32768,0.0194 +65536,0.0354 +131072,0.5828 +262144,1.1753 +524288,2.3525 +1048576,4.6854 +2097152,8.873 +4194304,19.6248 +8388608,37.7779 +16777216,75.807 +33554432,152.136 +67108864,294.87 +16,0.0001 +32,0.0001 +64,0.0001 +128,0.0001 +256,0.0002 +512,0.0003 +1024,0.0004 +2048,0.001 +4096,0.0019 +8192,0.0031 +16384,0.0069 +32768,0.0191 +65536,0.0384 +131072,0.6401 +262144,1.2024 +524288,2.3429 +1048576,4.4347 +2097152,9.2525 +4194304,18.6123 +8388608,41.6469 +16777216,71.6103 +33554432,148.582 +67108864,299.149 +16,0.0001 +32,0.0001 +64,0.0001 +128,0.0001 +256,0.0001 +512,0.0002 +1024,0.0005 +2048,0.0009 +4096,0.002 +8192,0.003 +16384,0.0069 +32768,0.0164 +65536,0.0388 +131072,0.8089 +262144,1.1736 +524288,2.3409 +1048576,4.6668 +2097152,9.3712 +4194304,18.0943 +8388608,39.7184 +16777216,79.8045 +33554432,148.192 +67108864,290.397 +16,0.0001 +32,0.0001 +64,0.0001 +128,0.0001 +256,0.0001 +512,0.0003 +1024,0.0004 +2048,0.001 +4096,0.002 +8192,0.0031 +16384,0.0072 +32768,0.016 +65536,0.0388 +131072,0.5856 +262144,1.1703 +524288,2.5942 +1048576,4.4812 +2097152,9.2812 +4194304,19.1505 +8388608,41.3566 +16777216,73.8712 +33554432,149.808 +67108864,294.33 +16,0.0001 +32,0.0003 +64,0.0001 +128,0.0001 +256,0.0002 +512,0.0003 +1024,0.0005 +2048,0.001 +4096,0.0019 +8192,0.0032 +16384,0.0069 +32768,0.016 +65536,0.0396 +131072,0.5827 +262144,1.1688 +524288,2.4619 +1048576,4.4374 +2097152,11.3818 +4194304,18.568 +8388608,37.8887 +16777216,78.0317 +33554432,149.375 +67108864,293.663 +16,0.0001 +32,0.0001 +64,0.0001 +128,0.0002 +256,0.0002 +512,0.0003 +1024,0.0005 +2048,0.001 +4096,0.0019 +8192,0.0031 +16384,0.0071 +32768,0.0157 +65536,0.0391 +131072,0.5856 +262144,1.1717 +524288,2.4105 +1048576,4.4376 +2097152,8.9916 +4194304,20.1855 +8388608,39.4862 +16777216,77.2671 +33554432,149.294 +67108864,296.495 +16,0.0001 +32,0.0002 +64,0.0001 +128,0.0001 +256,0.0004 +512,0.0005 +1024,0.0004 +2048,0.0009 +4096,0.002 +8192,0.0031 +16384,0.007 +32768,0.0184 +65536,0.037 +131072,0.5852 +262144,1.1733 +524288,2.3428 +1048576,4.4377 +2097152,10.9751 +4194304,19.1931 +8388608,37.2873 +16777216,79.3004 +33554432,146.6 +67108864,291.476 +16,0.0001 +32,0.0001 +64,0.0001 +128,0.0002 +256,0.0002 +512,0.0003 +1024,0.0004 +2048,0.001 +4096,0.0019 +8192,0.0031 +16384,0.0074 +32768,0.0165 +65536,0.0388 +131072,0.586 +262144,1.1736 +524288,2.3404 +1048576,4.4388 +2097152,11.0208 +4194304,18.9857 +8388608,37.2301 +16777216,79.386 +33554432,149.533 +67108864,289.498 +16,0.0001 +32,0.0001 +64,0.0001 +128,0.0002 +256,0.0002 +512,0.0005 +1024,0.0005 +2048,0.001 +4096,0.002 +8192,0.0031 +16384,0.0071 +32768,0.0395 +65536,0.038 +131072,0.5839 +262144,1.1757 +524288,2.3503 +1048576,4.955 +2097152,8.8737 +4194304,19.9253 +8388608,37.1167 +16777216,81.7435 +33554432,145.575 +67108864,298.909 +16,0.0001 +32,0.0001 +64,0.0001 +128,0.0001 +256,0.0002 +512,0.0003 +1024,0.0005 +2048,0.001 +4096,0.0019 +8192,0.0035 +16384,0.0072 +32768,0.0159 +65536,0.0407 +131072,0.5833 +262144,1.602 +524288,2.3522 +1048576,4.4374 +2097152,9.0588 +4194304,18.8722 +8388608,39.4999 +16777216,76.9839 +33554432,149.059 +67108864,291.253 +16,0.0001 +32,0.0002 +64,0.0002 +128,0.0002 +256,0.0002 +512,0.0003 +1024,0.0426 +2048,0.001 +4096,0.002 +8192,0.0031 +16384,0.0078 +32768,0.0163 +65536,0.0325 +131072,0.6804 +262144,1.2744 +524288,2.5526 +1048576,4.6976 +2097152,8.9949 +4194304,19.552 +8388608,36.3874 +16777216,76.2666 +33554432,148.653 +67108864,293.515 +16,0.0001 +32,0.0001 +64,0.0002 +128,0.0001 +256,0.0001 +512,0.0002 +1024,0.0004 +2048,0.001 +4096,0.002 +8192,0.0031 +16384,0.007 +32768,0.0154 +65536,0.038 +131072,0.5853 +262144,1.1685 +524288,2.3594 +1048576,5.0408 +2097152,11.3707 +4194304,17.9998 +8388608,37.9892 +16777216,73.5814 +33554432,144.188 +67108864,295.87 +16,0.0001 +32,0.0003 +64,0.0002 +128,0.0001 +256,0.0002 +512,0.0003 +1024,0.0004 +2048,0.001 +4096,0.0018 +8192,0.0038 +16384,0.01 +32768,0.0161 +65536,0.0332 +131072,0.5861 +262144,1.1747 +524288,2.4075 +1048576,4.6676 +2097152,8.8738 +4194304,18.3218 +8388608,38.2548 +16777216,75.569 +33554432,150.145 +67108864,292.116 +16,0.0001 +32,0.0001 +64,0.0001 +128,0.0001 +256,0.0002 +512,0.0003 +1024,0.0005 +2048,0.001 +4096,0.0019 +8192,0.003 +16384,0.0071 +32768,0.0159 +65536,0.039 +131072,0.7391 +262144,1.1735 +524288,2.354 +1048576,4.437 +2097152,9.2107 +4194304,19.615 +8388608,37.5096 +16777216,77.777 +33554432,145.458 +67108864,296.096 +16,0.0001 +32,0.0001 +64,0.0001 +128,0.0001 +256,0.0002 +512,0.0002 +1024,0.0005 +2048,0.001 +4096,0.0019 +8192,0.0057 +16384,0.0072 +32768,0.0166 +65536,0.0358 +131072,0.5848 +262144,1.1727 +524288,2.4639 +1048576,4.4385 +2097152,9.2186 +4194304,18.9488 +8388608,40.0815 +16777216,77.9367 +33554432,148.216 +67108864,292.832 +16,0.0001 +32,0.0003 +64,0.0001 +128,0.0001 +256,0.0002 +512,0.0003 +1024,0.0005 +2048,0.0011 +4096,0.002 +8192,0.0032 +16384,0.0069 +32768,0.0544 +65536,0.0382 +131072,0.5828 +262144,1.1719 +524288,2.3402 +1048576,4.5692 +2097152,8.8728 +4194304,19.2392 +8388608,38.2331 +16777216,76.4732 +33554432,148.53 +67108864,294.121 +16,0.0001 +32,0.0001 +64,0.0001 +128,0.0001 +256,0.0001 +512,0.0003 +1024,0.0004 +2048,0.001 +4096,0.0019 +8192,0.0031 +16384,0.0083 +32768,0.0163 +65536,0.0325 +131072,0.5859 +262144,1.1679 +524288,2.341 +1048576,4.4363 +2097152,9.0414 +4194304,18.0271 +8388608,38.5993 +16777216,73.7206 +33554432,151.897 +67108864,299.237 +16,0 +32,0.0001 +64,0.0001 +128,0.0001 +256,0.0002 +512,0.0002 +1024,0.0004 +2048,0.0011 +4096,0.002 +8192,0.0032 +16384,0.0074 +32768,0.0167 +65536,0.0613 +131072,0.5857 +262144,1.2027 +524288,2.3412 +1048576,4.6731 +2097152,9.5457 +4194304,19.2918 +8388608,40.5504 +16777216,73.555 +33554432,147.064 +67108864,295.897 +16,0.0001 +32,0.0001 +64,0.0001 +128,0.0002 +256,0.0001 +512,0.0003 +1024,0.006 +2048,0.001 +4096,0.0022 +8192,0.0031 +16384,0.0069 +32768,0.0185 +65536,0.0565 +131072,0.6537 +262144,1.1679 +524288,2.2177 +1048576,5.0681 +2097152,8.8753 +4194304,21.2709 +8388608,35.9436 +16777216,79.7522 +33554432,152.023 +67108864,294.292 +16,0.0001 +32,0.0001 +64,0.0001 +128,0.0002 +256,0.0001 +512,0.0003 +1024,0.0004 +2048,0.001 +4096,0.002 +8192,0.0031 +16384,0.007 +32768,0.0167 +65536,0.0401 +131072,0.5867 +262144,1.1733 +524288,2.2188 +1048576,5.6589 +2097152,9.5001 +4194304,18.7963 +8388608,38.9331 +16777216,77.8149 +33554432,149.184 +67108864,293.463 +16,0.0001 +32,0.0001 +64,0.0001 +128,0.0001 +256,0.0001 +512,0.0005 +1024,0.0007 +2048,0.001 +4096,0.0019 +8192,0.0032 +16384,0.0074 +32768,0.0165 +65536,0.0364 +131072,0.5844 +262144,1.1745 +524288,2.2536 +1048576,4.6827 +2097152,9.6463 +4194304,19.7865 +8388608,38.5929 +16777216,73.948 +33554432,150.945 +67108864,291.524 +16,0.0001 +32,0.0001 +64,0.0001 +128,0.0001 +256,0.0001 +512,0.0003 +1024,0.0004 +2048,0.001 +4096,0.002 +8192,0.0034 +16384,0.007 +32768,0.0168 +65536,0.0402 +131072,0.5858 +262144,1.1686 +524288,2.4234 +1048576,4.438 +2097152,8.8734 +4194304,18.8723 +8388608,37.306 +16777216,79.8102 +33554432,148.027 +67108864,297.827 +16,0.0001 +32,0.0001 +64,0.0001 +128,0.0002 +256,0.0002 +512,0.0003 +1024,0.0004 +2048,0.0009 +4096,0.002 +8192,0.0032 +16384,0.0073 +32768,0.0165 +65536,0.0377 +131072,0.6002 +262144,1.1735 +524288,2.2182 +1048576,4.439 +2097152,9.6189 +4194304,18.232 +8388608,44.8052 +16777216,78.1213 +33554432,145.116 +67108864,294.346 +16,0.0001 +32,0.0003 +64,0.0001 +128,0.0002 +256,0.0001 +512,0.0003 +1024,0.0004 +2048,0.001 +4096,0.002 +8192,0.003 +16384,0.0089 +32768,0.0165 +65536,0.0395 +131072,0.5869 +262144,1.1732 +524288,2.23 +1048576,4.4854 +2097152,9.3912 +4194304,19.0288 +8388608,38.372 +16777216,75.9949 +33554432,144.337 +67108864,292.095 +16,0.0001 +32,0.0001 +64,0.0002 +128,0.0001 +256,0.0002 +512,0.0003 +1024,0.0005 +2048,0.001 +4096,0.0019 +8192,0.003 +16384,0.0072 +32768,0.0278 +65536,0.0362 +131072,0.5861 +262144,2.467 +524288,2.3485 +1048576,4.44 +2097152,9.8635 +4194304,18.6022 +8388608,40.2402 +16777216,76.6575 +33554432,148.758 +67108864,292.141 +16,0.0001 +32,0.0002 +64,0.0001 +128,0.0001 +256,0.0002 +512,0.0003 +1024,0.0004 +2048,0.0009 +4096,0.0021 +8192,0.0033 +16384,0.007 +32768,0.0159 +65536,0.036 +131072,0.6006 +262144,1.8757 +524288,2.3417 +1048576,4.4372 +2097152,9.032 +4194304,18.3317 +8388608,38.3572 +16777216,76.7291 +33554432,147.583 +67108864,293.614 +16,0 +32,0.0001 +64,0.0001 +128,0.0002 +256,0.0002 +512,0.0004 +1024,0.0004 +2048,0.001 +4096,0.0019 +8192,0.0031 +16384,0.0073 +32768,0.0164 +65536,0.0352 +131072,0.6428 +262144,1.1737 +524288,2.3415 +1048576,4.4382 +2097152,9.7734 +4194304,18.9535 +8388608,38.4031 +16777216,75.595 +33554432,150.496 +67108864,289.186 +16,0.0001 +32,0.0003 +64,0.0001 +128,0.0002 +256,0.0001 +512,0.0003 +1024,0.0004 +2048,0.001 +4096,0.0021 +8192,0.003 +16384,0.0068 +32768,0.0156 +65536,0.0401 +131072,0.5858 +262144,1.1742 +524288,2.4508 +1048576,4.4365 +2097152,8.9745 +4194304,18.6702 +8388608,41.4368 +16777216,78.4365 +33554432,149.735 +67108864,294.34 +16,0.0001 +32,0.0003 +64,0.0001 +128,0.0002 +256,0.0002 +512,0.0002 +1024,0.0005 +2048,0.001 +4096,0.002 +8192,0.0031 +16384,0.007 +32768,0.017 +65536,0.036 +131072,0.5834 +262144,1.1728 +524288,2.3423 +1048576,4.7968 +2097152,8.8749 +4194304,18.6437 +8388608,41.6469 +16777216,73.659 +33554432,146.874 +67108864,296.991 +16,0.0001 +32,0.0003 +64,0.0001 +128,0.0002 +256,0.0002 +512,0.0002 +1024,0.0005 +2048,0.001 +4096,0.0018 +8192,0.0031 +16384,0.0074 +32768,0.0169 +65536,0.0386 +131072,0.5846 +262144,1.1746 +524288,2.6444 +1048576,4.6843 +2097152,9.368 +4194304,18.0872 +8388608,36.1566 +16777216,73.7778 +33554432,148.252 +67108864,291.077 +16,0.0001 +32,0.0001 +64,0.0001 +128,0.0001 +256,0.0002 +512,0.0003 +1024,0.0004 +2048,0.0009 +4096,0.0019 +8192,0.003 +16384,0.0068 +32768,0.0168 +65536,0.0353 +131072,0.7413 +262144,1.1678 +524288,2.2188 +1048576,4.4373 +2097152,10.2311 +4194304,18.6208 +8388608,37.6954 +16777216,76.0119 +33554432,151.53 +67108864,296.902 +16,0.0001 +32,0.0002 +64,0.0001 +128,0.0001 +256,0.0001 +512,0.0003 +1024,0.0004 +2048,0.001 +4096,0.002 +8192,0.0033 +16384,0.0073 +32768,0.0157 +65536,0.0411 +131072,0.5846 +262144,1.1702 +524288,2.3395 +1048576,4.6855 +2097152,9.3679 +4194304,20.0158 +8388608,38.0587 +16777216,76.3338 +33554432,151.665 +67108864,293.437 +16,0.0001 +32,0.0001 +64,0.0001 +128,0.0001 +256,0.0002 +512,0.0002 +1024,0.0005 +2048,0.0018 +4096,0.0019 +8192,0.0037 +16384,0.007 +32768,0.0166 +65536,0.0358 +131072,0.5858 +262144,1.1681 +524288,2.3528 +1048576,4.864 +2097152,9.7316 +4194304,18.4308 +8388608,40.0615 +16777216,74.8634 +33554432,150.383 +67108864,297.08 +16,0 +32,0.0001 +64,0.0001 +128,0.0001 +256,0.0002 +512,0.0002 +1024,0.0004 +2048,0.0009 +4096,0.002 +8192,0.0034 +16384,0.0069 +32768,0.0161 +65536,0.0382 +131072,0.5851 +262144,1.223 +524288,2.3518 +1048576,4.4721 +2097152,8.8724 +4194304,18.8864 +8388608,38.9836 +16777216,76.8814 +33554432,146.224 +67108864,293.191 +16,0.0001 +32,0.0001 +64,0.0001 +128,0.0001 +256,0.0002 +512,0.0003 +1024,0.0005 +2048,0.001 +4096,0.0019 +8192,0.003 +16384,0.0144 +32768,0.0169 +65536,0.033 +131072,0.5857 +262144,1.1729 +524288,3.1374 +1048576,4.4373 +2097152,8.8738 +4194304,19.8148 +8388608,36.593 +16777216,76.5413 +33554432,194.26 +67108864,294.829 +16,0 +32,0.0001 +64,0.0001 +128,0.0001 +256,0.0002 +512,0.0003 +1024,0.0004 +2048,0.0021 +4096,0.002 +8192,0.0031 +16384,0.0075 +32768,0.0165 +65536,0.0398 +131072,0.7073 +262144,1.2632 +524288,2.4074 +1048576,4.8649 +2097152,12.8588 +4194304,19.6326 +8388608,40.3929 +16777216,82.2408 +33554432,155.661 +67108864,299.664 +16,0.0001 +32,0.0003 +64,0.0002 +128,0.0001 +256,0.0002 +512,0.0003 +1024,0.0014 +2048,0.001 +4096,0.0018 +8192,0.0031 +16384,0.0072 +32768,0.0165 +65536,0.0351 +131072,0.8566 +262144,1.2568 +524288,3.015 +1048576,4.8003 diff --git a/Project2-Stream-Compaction/data/Scan_data/data_pow2/eff.csv b/Project2-Stream-Compaction/data/Scan_data/data_pow2/eff.csv new file mode 100644 index 0000000..3a43476 --- /dev/null +++ b/Project2-Stream-Compaction/data/Scan_data/data_pow2/eff.csv @@ -0,0 +1,4547 @@ +16,0.557024 +32,0.614368 +64,0.865312 +128,0.5376 +256,0.692224 +512,0.693248 +1024,0.75264 +2048,0.751616 +4096,0.852992 +8192,0.922624 +16384,1.00762 +32768,1.09158 +65536,1.64454 +131072,2.62144 +262144,4.75034 +524288,8.80333 +1048576,15.0088 +2097152,29.8496 +4194304,56.3794 +8388608,112.068 +16777216,219.236 +33554432,448.326 +67108864,887.672 +16,0.515072 +32,0.495616 +64,0.538624 +128,0.524288 +256,1.35987 +512,0.856064 +1024,0.831488 +2048,0.662528 +4096,0.7168 +8192,0.817152 +16384,0.923648 +32768,1.42541 +65536,1.58106 +131072,2.45453 +262144,3.95366 +524288,7.7056 +1048576,14.5428 +2097152,28.9331 +4194304,57.3563 +8388608,110.331 +16777216,224.396 +33554432,437.437 +67108864,902.723 +16,0.828416 +32,0.774144 +64,0.77824 +128,0.790528 +256,0.807936 +512,0.754688 +1024,0.786432 +2048,0.746496 +4096,0.949248 +8192,0.862208 +16384,1.02195 +32768,1.28922 +65536,1.68141 +131072,2.5856 +262144,4.09702 +524288,7.78035 +1048576,14.8644 +2097152,29.5352 +4194304,56.7818 +8388608,111.139 +16777216,218.581 +33554432,446.011 +67108864,884.522 +16,0.516096 +32,0.605184 +64,0.553984 +128,0.570368 +256,0.6144 +512,0.6144 +1024,0.72192 +2048,0.678912 +4096,0.748544 +8192,0.831488 +16384,0.954368 +32768,1.17862 +65536,1.74387 +131072,2.46886 +262144,3.98746 +524288,7.48339 +1048576,15.0548 +2097152,28.1108 +4194304,57.1382 +8388608,111.152 +16777216,225.71 +33554432,439.022 +67108864,902.526 +16,0.479232 +32,0.861184 +64,0.546816 +128,0.592896 +256,0.612352 +512,0.61952 +1024,0.608256 +2048,0.704512 +4096,1.09466 +8192,0.7936 +16384,1.00864 +32768,1.17555 +65536,1.64352 +131072,2.45862 +262144,3.88813 +524288,7.95238 +1048576,15.4952 +2097152,29.6571 +4194304,55.7128 +8388608,109.79 +16777216,218.044 +33554432,447.336 +67108864,888.753 +16,0.596992 +32,0.584704 +64,0.631808 +128,0.52736 +256,0.672768 +512,0.606208 +1024,0.636928 +2048,0.673792 +4096,0.705536 +8192,0.789504 +16384,1.024 +32768,1.17555 +65536,1.64557 +131072,2.49958 +262144,4.05606 +524288,7.78547 +1048576,15.2474 +2097152,28.6106 +4194304,56.9999 +8388608,111.565 +16777216,224.024 +33554432,435.956 +67108864,899.405 +16,0.625664 +32,0.763904 +64,0.820224 +128,0.801792 +256,0.693248 +512,0.6144 +1024,0.851968 +2048,0.90112 +4096,0.894976 +8192,0.900096 +16384,1.1049 +32768,1.30765 +65536,1.65786 +131072,2.48218 +262144,4.09088 +524288,7.9575 +1048576,14.7405 +2097152,30.1681 +4194304,55.254 +8388608,110.085 +16777216,220.304 +33554432,446.1 +67108864,887.123 +16,0.596992 +32,0.561152 +64,0.534528 +128,0.564224 +256,0.651264 +512,0.569344 +1024,0.618496 +2048,0.6912 +4096,0.733184 +8192,0.84992 +16384,1.01786 +32768,1.16429 +65536,1.6384 +131072,2.4657 +262144,4.08166 +524288,7.75578 +1048576,15.1214 +2097152,29.5557 +4194304,57.2426 +8388608,110.343 +16777216,224.939 +33554432,437.006 +67108864,905.755 +16,0.4864 +32,0.494592 +64,0.528384 +128,0.576512 +256,0.60928 +512,0.67584 +1024,0.70144 +2048,0.740352 +4096,0.791552 +8192,0.80896 +16384,0.940032 +32768,1.15405 +65536,1.65274 +131072,2.3808 +262144,3.99258 +524288,7.44448 +1048576,14.3309 +2097152,29.057 +4194304,57.8683 +8388608,110.85 +16777216,220.259 +33554432,448.814 +67108864,889.918 +16,0.46592 +32,0.492544 +64,0.579584 +128,0.581632 +256,0.59904 +512,0.72192 +1024,0.648192 +2048,0.68608 +4096,0.730112 +8192,0.81408 +16384,0.9728 +32768,1.17965 +65536,2.03366 +131072,2.45658 +262144,3.92909 +524288,7.5049 +1048576,15.3846 +2097152,28.2061 +4194304,57.0163 +8388608,110.588 +16777216,223.134 +33554432,438.201 +67108864,902.959 +16,0.748544 +32,0.54784 +64,0.57344 +128,0.582656 +256,0.73728 +512,0.608256 +1024,1.07213 +2048,0.694272 +4096,0.718848 +8192,0.805888 +16384,1.01888 +32768,1.25747 +65536,1.64454 +131072,2.39309 +262144,3.92909 +524288,7.52845 +1048576,14.7763 +2097152,28.884 +4194304,56.3743 +8388608,110.107 +16777216,219.933 +33554432,446.595 +67108864,884.75 +16,0.766976 +32,0.567296 +64,1.17555 +128,0.5888 +256,0.591872 +512,0.628736 +1024,0.700416 +2048,0.736256 +4096,0.797696 +8192,0.800768 +16384,0.944128 +32768,1.22163 +65536,1.92614 +131072,2.44429 +262144,4.02637 +524288,8.17562 +1048576,15.1173 +2097152,28.3935 +4194304,57.0726 +8388608,111.408 +16777216,223.792 +33554432,440.414 +67108864,905.057 +16,0.505856 +32,0.600064 +64,0.613376 +128,0.56832 +256,0.714752 +512,0.632832 +1024,0.6656 +2048,0.718848 +4096,1.29331 +8192,0.856064 +16384,1.00045 +32768,1.16736 +65536,1.64147 +131072,2.44122 +262144,4.03456 +524288,8.13978 +1048576,14.2756 +2097152,29.1 +4194304,57.9758 +8388608,110.966 +16777216,219.126 +33554432,445.118 +67108864,887.232 +16,0.688128 +32,0.820224 +64,0.790528 +128,0.792576 +256,0.606208 +512,0.651264 +1024,0.685056 +2048,0.698368 +4096,0.782336 +8192,0.899072 +16384,0.930816 +32768,1.22982 +65536,1.63738 +131072,2.45453 +262144,3.97824 +524288,7.72506 +1048576,15.1634 +2097152,28.7416 +4194304,56.5402 +8388608,111.08 +16777216,224.574 +33554432,435.304 +67108864,903.378 +16,0.712672 +32,0.544768 +64,0.564224 +128,0.74752 +256,0.59392 +512,0.60416 +1024,0.642048 +2048,0.754688 +4096,0.709632 +8192,0.796672 +16384,0.991232 +32768,1.16326 +65536,1.89645 +131072,2.4023 +262144,3.99155 +524288,7.51104 +1048576,14.4282 +2097152,28.8573 +4194304,55.8459 +8388608,109.743 +16777216,221.208 +33554432,445.898 +67108864,884.581 +16,0.516096 +32,0.545792 +64,0.566272 +128,0.572416 +256,0.649216 +512,0.693248 +1024,0.704512 +2048,0.698368 +4096,0.649216 +8192,0.80384 +16384,1.60666 +32768,1.2841 +65536,2.0265 +131072,2.61837 +262144,4.01613 +524288,7.60627 +1048576,15.3364 +2097152,27.9235 +4194304,57.1054 +8388608,111.107 +16777216,224.843 +33554432,436.568 +67108864,902.91 +16,0.490496 +32,0.520192 +64,0.603136 +128,0.577536 +256,0.687104 +512,0.607232 +1024,0.695296 +2048,0.723968 +4096,0.724992 +8192,0.78336 +16384,1.10387 +32768,1.14688 +65536,1.63942 +131072,2.41152 +262144,4.02739 +524288,7.85818 +1048576,14.7948 +2097152,29.2239 +4194304,57.9277 +8388608,114.873 +16777216,220.13 +33554432,447.305 +67108864,886.61 +16,0.76288 +32,0.750592 +64,0.775168 +128,0.838656 +256,0.823296 +512,0.779264 +1024,0.809984 +2048,0.846848 +4096,0.814048 +8192,0.928768 +16384,1.11411 +32768,1.3312 +65536,1.66195 +131072,2.43814 +262144,3.96902 +524288,7.66259 +1048576,14.6432 +2097152,28.3535 +4194304,57.2334 +8388608,111.346 +16777216,223.647 +33554432,435.531 +67108864,904.378 +16,0.690176 +32,0.608256 +64,0.734208 +128,0.67072 +256,0.596992 +512,0.620544 +1024,0.714752 +2048,0.67584 +4096,0.717824 +8192,0.785408 +16384,1.00762 +32768,1.22982 +65536,1.65171 +131072,2.51085 +262144,4.49843 +524288,7.65747 +1048576,14.2367 +2097152,30.0769 +4194304,55.5018 +8388608,109.571 +16777216,219.07 +33554432,447.158 +67108864,884.712 +16,0.703488 +32,0.713728 +64,1.13152 +128,0.689152 +256,0.841728 +512,0.81408 +1024,0.785408 +2048,0.939008 +4096,1.01069 +8192,0.97792 +16384,1.04858 +32768,1.25747 +65536,1.70394 +131072,2.75456 +262144,4.49843 +524288,8.07014 +1048576,14.8255 +2097152,28.6546 +4194304,57.855 +8388608,111.445 +16777216,222.787 +33554432,437.708 +67108864,905.912 +16,0.772096 +32,0.763904 +64,0.769024 +128,0.585728 +256,0.653312 +512,0.6144 +1024,0.637952 +2048,0.681984 +4096,0.723968 +8192,0.790528 +16384,0.93184 +32768,1.21958 +65536,1.65478 +131072,3.14163 +262144,4.20045 +524288,7.78854 +1048576,14.6842 +2097152,29.31 +4194304,55.6032 +8388608,111.23 +16777216,220.073 +33554432,446.487 +67108864,884.661 +16,0.516096 +32,0.502784 +64,0.570368 +128,0.801792 +256,0.787456 +512,0.621568 +1024,0.641024 +2048,0.774144 +4096,0.722944 +8192,0.804864 +16384,1.01581 +32768,1.16019 +65536,1.62611 +131072,2.4576 +262144,4.40218 +524288,7.5049 +1048576,15.3487 +2097152,28.542 +4194304,57.0358 +8388608,111.123 +16777216,225.028 +33554432,435.791 +67108864,902.285 +16,0.738304 +32,0.679936 +64,0.818176 +128,0.738304 +256,1.04755 +512,0.823296 +1024,0.889856 +2048,0.969728 +4096,0.86528 +8192,0.9472 +16384,1.04243 +32768,1.37421 +65536,1.72339 +131072,2.47296 +262144,4.2281 +524288,8.92109 +1048576,15.6498 +2097152,28.6679 +4194304,56.1183 +8388608,111.269 +16777216,218.437 +33554432,445.952 +67108864,885.135 +16,0.992256 +32,0.815104 +64,0.760832 +128,0.744448 +256,0.78336 +512,1.28205 +1024,0.70144 +2048,0.688128 +4096,0.82432 +8192,0.820224 +16384,1.00966 +32768,1.24416 +65536,1.7111 +131072,2.66342 +262144,4.03456 +524288,7.48442 +1048576,15.5197 +2097152,28.9587 +4194304,56.9262 +8388608,110.683 +16777216,223.048 +33554432,438.573 +67108864,903.693 +16,0.720896 +32,0.700416 +64,0.580608 +128,0.631808 +256,1.17965 +512,0.677888 +1024,0.726016 +2048,0.748544 +4096,0.730112 +8192,1.13254 +16384,0.950272 +32768,1.1561 +65536,1.56672 +131072,3.11808 +262144,3.9895 +524288,7.62573 +1048576,14.2305 +2097152,29.399 +4194304,55.1885 +8388608,110.105 +16777216,220.406 +33554432,445.705 +67108864,885.137 +16,0.676864 +32,0.699392 +64,0.765952 +128,0.765952 +256,0.910336 +512,0.669696 +1024,0.876544 +2048,0.935936 +4096,1.024 +8192,0.876544 +16384,1.0455 +32768,1.55648 +65536,1.7961 +131072,2.59379 +262144,4.22093 +524288,8.07731 +1048576,15.1736 +2097152,28.9638 +4194304,59.0991 +8388608,110.626 +16777216,223.434 +33554432,437.065 +67108864,901.838 +16,0.626688 +32,0.564224 +64,0.748544 +128,0.562176 +256,0.654336 +512,0.631808 +1024,0.738304 +2048,0.74752 +4096,0.900096 +8192,0.809984 +16384,0.96256 +32768,1.17453 +65536,1.80736 +131072,2.38797 +262144,4.40422 +524288,7.73837 +1048576,14.5623 +2097152,30.1128 +4194304,55.1424 +8388608,110.998 +16777216,220.884 +33554432,451.104 +67108864,884.615 +16,0.886784 +32,0.731136 +64,0.736256 +128,0.800768 +256,0.719872 +512,1.15405 +1024,1.21037 +2048,0.970752 +4096,0.878592 +8192,0.96768 +16384,1.04243 +32768,1.28614 +65536,1.73158 +131072,2.74842 +262144,4.10112 +524288,8.18688 +1048576,14.8244 +2097152,28.6771 +4194304,56.6948 +8388608,111.043 +16777216,224.799 +33554432,436.638 +67108864,902.924 +16,0.9216 +32,0.75776 +64,0.789504 +128,0.790528 +256,1.15098 +512,0.7936 +1024,0.81408 +2048,0.970752 +4096,0.7936 +8192,0.958464 +16384,1.09466 +32768,1.29126 +65536,1.79917 +131072,2.46886 +262144,4.26291 +524288,7.49261 +1048576,14.42 +2097152,29.5311 +4194304,56.4378 +8388608,110.176 +16777216,219.789 +33554432,445.274 +67108864,888.065 +16,0.704512 +32,0.768 +64,0.822272 +128,0.637952 +256,1.1264 +512,0.678912 +1024,0.70144 +2048,0.741376 +4096,0.73728 +8192,1.11923 +16384,1.12128 +32768,1.59232 +65536,1.61894 +131072,2.39002 +262144,4.01203 +524288,8.13261 +1048576,14.9064 +2097152,28.1702 +4194304,57.1955 +8388608,111.487 +16777216,225.206 +33554432,440.694 +67108864,903.644 +16,0.789504 +32,0.718848 +64,0.821248 +128,0.766976 +256,0.804864 +512,0.800768 +1024,0.796672 +2048,0.996352 +4096,0.847872 +8192,0.96768 +16384,1.08544 +32768,1.29946 +65536,1.83603 +131072,2.99418 +262144,4.16563 +524288,7.5223 +1048576,14.6473 +2097152,29.5987 +4194304,56.5412 +8388608,112.128 +16777216,217.137 +33554432,442.477 +67108864,888.427 +16,0.695296 +32,0.717824 +64,0.825344 +128,0.784384 +256,0.780288 +512,0.567296 +1024,0.833536 +2048,0.695296 +4096,0.724992 +8192,0.812032 +16384,0.955392 +32768,1.15302 +65536,1.58618 +131072,2.45453 +262144,3.95366 +524288,7.86835 +1048576,15.1327 +2097152,29.2598 +4194304,56.9702 +8388608,110.832 +16777216,225.622 +33554432,434.736 +67108864,906.246 +16,0.825344 +32,0.812032 +64,0.823296 +128,0.800768 +256,0.598016 +512,0.662528 +1024,0.638976 +2048,0.741376 +4096,0.781312 +8192,0.816128 +16384,0.9984 +32768,1.22573 +65536,2.24768 +131072,2.43814 +262144,4.02125 +524288,7.72506 +1048576,14.5142 +2097152,29.0591 +4194304,55.6524 +8388608,111.448 +16777216,219.618 +33554432,447.674 +67108864,886.917 +16,0.74752 +32,0.695296 +64,0.796672 +128,0.780288 +256,0.75264 +512,0.769024 +1024,1.01888 +2048,0.96256 +4096,0.722944 +8192,1.05984 +16384,1.32915 +32768,1.36192 +65536,1.7623 +131072,2.46886 +262144,4.18714 +524288,7.95034 +1048576,15.7112 +2097152,28.6024 +4194304,56.9262 +8388608,111.688 +16777216,223.597 +33554432,438.847 +67108864,899.435 +16,0.78336 +32,0.746496 +64,0.842752 +128,0.815104 +256,0.827392 +512,0.903168 +1024,0.869376 +2048,0.739328 +4096,0.726016 +8192,0.799744 +16384,1.0199 +32768,1.15098 +65536,1.6599 +131072,3.08531 +262144,3.98541 +524288,7.3943 +1048576,14.2029 +2097152,29.015 +4194304,56.2237 +8388608,111.057 +16777216,217.785 +33554432,446.619 +67108864,886.813 +16,0.758784 +32,0.710656 +64,0.833536 +128,0.861184 +256,0.795648 +512,0.755712 +1024,0.638976 +2048,0.726016 +4096,0.809984 +8192,0.79872 +16384,0.941056 +32768,1.16122 +65536,1.64147 +131072,2.37363 +262144,4.06835 +524288,7.49875 +1048576,15.1982 +2097152,28.2388 +4194304,56.6067 +8388608,112.382 +16777216,223.491 +33554432,438.146 +67108864,904.424 +16,0.652288 +32,0.758784 +64,0.561152 +128,0.671744 +256,0.598016 +512,0.756736 +1024,0.809984 +2048,0.695296 +4096,0.735232 +8192,0.792576 +16384,1.15814 +32768,1.38854 +65536,1.63942 +131072,2.44634 +262144,4.02125 +524288,7.91757 +1048576,14.2612 +2097152,28.1487 +4194304,56.9098 +8388608,110.683 +16777216,219.241 +33554432,447.832 +67108864,882.747 +16,0.627712 +32,0.586752 +64,0.734208 +128,0.581632 +256,0.659456 +512,0.676864 +1024,0.648192 +2048,0.937984 +4096,0.872448 +8192,0.866304 +16384,0.953344 +32768,1.13869 +65536,1.73875 +131072,2.4361 +262144,3.97312 +524288,7.42502 +1048576,14.9688 +2097152,28.6505 +4194304,56.9426 +8388608,110.628 +16777216,224.826 +33554432,435.882 +67108864,903.027 +16,0.914432 +32,0.672768 +64,0.722944 +128,0.843776 +256,0.536576 +512,0.816128 +1024,1.08442 +2048,0.847872 +4096,1.05267 +8192,0.934912 +16384,1.19091 +32768,1.35782 +65536,1.62714 +131072,2.5047 +262144,4.08064 +524288,7.92371 +1048576,14.5797 +2097152,28.8666 +4194304,56.1285 +8388608,109.897 +16777216,219.464 +33554432,445.253 +67108864,889.948 +16,0.756736 +32,0.520192 +64,0.5632 +128,0.555008 +256,0.56832 +512,0.62976 +1024,0.700416 +2048,0.677888 +4096,0.734208 +8192,0.88064 +16384,1.12538 +32768,1.23392 +65536,1.57286 +131072,2.43712 +262144,3.95878 +524288,7.53152 +1048576,15.4563 +2097152,27.734 +4194304,56.4204 +8388608,109.557 +16777216,223.099 +33554432,439.168 +67108864,902.554 +16,1.3783 +32,0.744448 +64,0.709632 +128,0.851968 +256,0.785408 +512,0.755712 +1024,0.812032 +2048,0.789504 +4096,0.827392 +8192,0.987136 +16384,1.42438 +32768,1.28102 +65536,1.72646 +131072,2.4576 +262144,4.48 +524288,7.94829 +1048576,14.8972 +2097152,28.6976 +4194304,55.9483 +8388608,109.871 +16777216,219.288 +33554432,445.961 +67108864,889.837 +16,0.816128 +32,0.80384 +64,0.57344 +128,0.726016 +256,0.78336 +512,0.848896 +1024,0.795648 +2048,0.996352 +4096,0.92672 +8192,0.937984 +16384,1.06496 +32768,1.7152 +65536,1.67526 +131072,2.46579 +262144,4.68787 +524288,7.95853 +1048576,15.2289 +2097152,28.3597 +4194304,58.2267 +8388608,110.886 +16777216,223.897 +33554432,438.629 +67108864,903.461 +16,0.82944 +32,0.715776 +64,0.734208 +128,0.78848 +256,0.80384 +512,1.24006 +1024,0.899072 +2048,1.28614 +4096,0.932864 +8192,0.894976 +16384,1.10797 +32768,1.30867 +65536,1.68243 +131072,2.83034 +262144,4.06938 +524288,8.05786 +1048576,15.1839 +2097152,29.4113 +4194304,55.68 +8388608,110.011 +16777216,221.279 +33554432,447.97 +67108864,883.195 +16,0.738304 +32,0.693248 +64,0.804864 +128,0.789504 +256,1.35885 +512,0.852992 +1024,0.643072 +2048,0.695296 +4096,0.719872 +8192,0.789504 +16384,0.93696 +32768,1.1561 +65536,2.16781 +131072,2.43507 +262144,3.97517 +524288,7.5776 +1048576,14.8644 +2097152,28.0883 +4194304,57.7188 +8388608,111.117 +16777216,225.512 +33554432,438.816 +67108864,901.307 +16,0.794624 +32,0.661504 +64,0.816128 +128,0.607232 +256,0.621568 +512,0.630784 +1024,0.647168 +2048,0.684032 +4096,0.72704 +8192,0.76288 +16384,0.945152 +32768,1.13869 +65536,1.57389 +131072,2.45146 +262144,4.0745 +524288,7.51309 +1048576,14.38 +2097152,28.9229 +4194304,56.0609 +8388608,110.605 +16777216,223.123 +33554432,445.791 +67108864,887.939 +16,0.912384 +32,0.689152 +64,0.851968 +128,0.700416 +256,0.801792 +512,0.807936 +1024,0.713728 +2048,0.7424 +4096,0.790528 +8192,0.864256 +16384,0.929792 +32768,1.19194 +65536,1.55955 +131072,2.45453 +262144,4.00384 +524288,8.20941 +1048576,14.8797 +2097152,28.884 +4194304,56.8842 +8388608,110.638 +16777216,224.686 +33554432,439.208 +67108864,904.225 +16,0.746496 +32,0.857088 +64,0.826368 +128,0.913408 +256,0.768 +512,1.2288 +1024,1.11002 +2048,0.98816 +4096,1.09363 +8192,0.958464 +16384,1.00147 +32768,1.23085 +65536,1.64557 +131072,2.4535 +262144,4.11853 +524288,7.68717 +1048576,15.743 +2097152,29.5414 +4194304,55.6749 +8388608,109.929 +16777216,218.737 +33554432,445.29 +67108864,887.567 +16,0.904192 +32,0.811008 +64,0.758784 +128,0.761856 +256,0.897024 +512,0.815104 +1024,0.823296 +2048,0.907264 +4096,1.1264 +8192,1.03936 +16384,1.07213 +32768,1.31174 +65536,1.75718 +131072,2.51699 +262144,4.11136 +524288,8.12851 +1048576,14.462 +2097152,28.8911 +4194304,56.8381 +8388608,110.837 +16777216,225.981 +33554432,439.741 +67108864,901.037 +16,0.886784 +32,0.76288 +64,0.72192 +128,0.815104 +256,0.80384 +512,0.789504 +1024,0.69632 +2048,0.726016 +4096,0.797696 +8192,0.864256 +16384,0.934912 +32768,1.27386 +65536,1.72442 +131072,2.5385 +262144,4.11341 +524288,8.0169 +1048576,14.9606 +2097152,28.7089 +4194304,55.1332 +8388608,109.456 +16777216,217.972 +33554432,445.14 +67108864,881.882 +16,0.7424 +32,0.77824 +64,0.777216 +128,1.02298 +256,0.602112 +512,0.635904 +1024,0.6912 +2048,0.770048 +4096,0.730112 +8192,0.76288 +16384,0.950272 +32768,1.17043 +65536,1.55238 +131072,2.87539 +262144,4.78618 +524288,8.31898 +1048576,15.0682 +2097152,28.1989 +4194304,57.2385 +8388608,111.378 +16777216,225.017 +33554432,436.341 +67108864,890.599 +16,0.690176 +32,0.70144 +64,0.75776 +128,1.34963 +256,0.815104 +512,0.867328 +1024,0.854016 +2048,0.954368 +4096,0.90624 +8192,0.971776 +16384,1.16429 +32768,1.34042 +65536,1.75206 +131072,2.60915 +262144,4.84557 +524288,8.0599 +1048576,14.6289 +2097152,28.5327 +4194304,56.2391 +8388608,109.74 +16777216,220.53 +33554432,447.634 +67108864,886.928 +16,0.702464 +32,0.611328 +64,0.891904 +128,0.784384 +256,0.758784 +512,0.792576 +1024,0.785408 +2048,0.898048 +4096,0.876544 +8192,0.971776 +16384,1.11411 +32768,1.27693 +65536,1.71418 +131072,2.52826 +262144,4.5271 +524288,7.50797 +1048576,15.5412 +2097152,29.1471 +4194304,56.8812 +8388608,110.927 +16777216,222.645 +33554432,437.498 +67108864,899.677 +16,0.809984 +32,0.695296 +64,0.669696 +128,0.785408 +256,0.789504 +512,0.679936 +1024,0.797696 +2048,0.934912 +4096,0.920576 +8192,0.986112 +16384,1.08646 +32768,1.31482 +65536,1.57798 +131072,2.7904 +262144,4.35814 +524288,7.39328 +1048576,14.9606 +2097152,29.1287 +4194304,57.13 +8388608,110.322 +16777216,219.57 +33554432,449.053 +67108864,886.4 +16,0.83456 +32,0.70656 +64,0.756736 +128,0.791552 +256,0.73728 +512,1.19296 +1024,0.835584 +2048,0.961536 +4096,0.720896 +8192,0.8192 +16384,0.961536 +32768,1.22778 +65536,1.63123 +131072,2.40435 +262144,3.9936 +524288,8.28211 +1048576,15.1081 +2097152,28.4682 +4194304,56.7869 +8388608,110.744 +16777216,225.945 +33554432,436.177 +67108864,902.659 +16,0.835584 +32,0.777216 +64,0.674816 +128,0.78336 +256,0.807936 +512,0.821248 +1024,0.787456 +2048,0.984064 +4096,0.995328 +8192,1.12742 +16384,1.12947 +32768,1.25542 +65536,1.70189 +131072,2.47398 +262144,4.09805 +524288,7.80493 +1048576,15.2279 +2097152,29.3857 +4194304,55.5561 +8388608,109.763 +16777216,220.147 +33554432,445.804 +67108864,884.397 +16,0.677888 +32,0.75264 +64,0.761856 +128,0.763904 +256,0.78848 +512,0.816128 +1024,0.786432 +2048,0.780288 +4096,0.9984 +8192,1.31891 +16384,1.10694 +32768,1.25235 +65536,1.73466 +131072,2.4873 +262144,4.05914 +524288,7.60013 +1048576,15.2402 +2097152,28.6597 +4194304,56.8463 +8388608,110.557 +16777216,224.865 +33554432,437.74 +67108864,899.766 +16,0.913408 +32,0.807936 +64,0.728064 +128,0.764928 +256,0.695296 +512,0.765952 +1024,0.845824 +2048,0.8448 +4096,0.929792 +8192,0.9984 +16384,1.08954 +32768,1.28922 +65536,1.70598 +131072,2.48115 +262144,4.22707 +524288,8.08243 +1048576,14.3555 +2097152,29.1604 +4194304,55.7548 +8388608,111.922 +16777216,219.454 +33554432,445.181 +67108864,884.642 +16,0.723968 +32,0.943104 +64,0.743424 +128,0.581632 +256,0.541696 +512,0.646144 +1024,0.663552 +2048,0.886784 +4096,0.73216 +8192,0.801792 +16384,1.01786 +32768,1.57594 +65536,2.1719 +131072,2.38592 +262144,3.9383 +524288,7.54176 +1048576,15.4163 +2097152,28.9761 +4194304,57.0747 +8388608,110.752 +16777216,225.63 +33554432,436.258 +67108864,901.416 +16,0.765952 +32,0.714752 +64,0.649216 +128,0.797696 +256,0.782336 +512,0.75776 +1024,0.820224 +2048,0.878592 +4096,0.677888 +8192,0.930816 +16384,1.08954 +32768,1.24109 +65536,1.7193 +131072,2.55283 +262144,4.05914 +524288,7.87046 +1048576,14.5111 +2097152,28.9669 +4194304,56.0947 +8388608,110.353 +16777216,220.119 +33554432,445.532 +67108864,886.54 +16,0.659456 +32,0.761856 +64,0.514048 +128,0.621568 +256,0.601088 +512,0.607232 +1024,0.65536 +2048,0.689152 +4096,0.7936 +8192,0.934912 +16384,1.0025 +32768,1.27386 +65536,1.68038 +131072,2.51494 +262144,4.07245 +524288,8.15821 +1048576,17.4725 +2097152,28.3904 +4194304,57.2703 +8388608,111.764 +16777216,225.221 +33554432,435.249 +67108864,901.976 +16,0.78336 +32,0.723968 +64,0.850944 +128,0.776192 +256,0.772096 +512,0.785408 +1024,0.847872 +2048,0.955392 +4096,0.790528 +8192,1.43155 +16384,1.1049 +32768,1.24416 +65536,1.94355 +131072,2.53645 +262144,4.08064 +524288,7.87661 +1048576,15.2136 +2097152,29.2239 +4194304,55.7394 +8388608,109.705 +16777216,218.612 +33554432,446.299 +67108864,884.732 +16,0.792576 +32,0.774144 +64,0.818176 +128,0.818176 +256,0.654336 +512,0.904192 +1024,0.775168 +2048,0.6912 +4096,0.77824 +8192,0.868352 +16384,1.21651 +32768,1.21139 +65536,1.63123 +131072,2.66035 +262144,4.19226 +524288,7.41683 +1048576,14.7784 +2097152,29.7964 +4194304,57.516 +8388608,111.265 +16777216,224.872 +33554432,430.679 +67108864,903.962 +16,1.02707 +32,0.684032 +64,0.787456 +128,0.70144 +256,0.806912 +512,0.744448 +1024,1.1776 +2048,0.943104 +4096,1.02298 +8192,0.90624 +16384,1.13357 +32768,1.24518 +65536,1.7193 +131072,2.5344 +262144,4.00589 +524288,8.064 +1048576,14.8726 +2097152,28.9413 +4194304,56.3538 +8388608,111.007 +16777216,218.015 +33554432,446.86 +67108864,883.746 +16,0.809984 +32,0.822272 +64,0.86016 +128,0.654336 +256,1.1305 +512,0.884736 +1024,0.818176 +2048,0.913408 +4096,0.963584 +8192,0.939008 +16384,0.986112 +32768,1.29843 +65536,1.7111 +131072,2.52518 +262144,4.03866 +524288,7.52947 +1048576,15.1235 +2097152,27.9665 +4194304,56.5012 +8388608,112.046 +16777216,225.016 +33554432,436.367 +67108864,902.431 +16,0.772096 +32,0.776192 +64,0.734208 +128,0.724992 +256,1.11002 +512,0.777216 +1024,0.826368 +2048,0.954368 +4096,0.935936 +8192,0.97792 +16384,1.07725 +32768,1.28512 +65536,1.66912 +131072,3.17952 +262144,4.37965 +524288,7.59296 +1048576,14.5459 +2097152,30.4568 +4194304,57.7096 +8388608,111.926 +16777216,218.894 +33554432,446.047 +67108864,889.12 +16,0.689152 +32,0.556032 +64,0.57344 +128,0.56832 +256,0.668672 +512,0.630784 +1024,0.825344 +2048,1.04346 +4096,0.881664 +8192,0.953344 +16384,1.07315 +32768,1.32915 +65536,1.79712 +131072,2.89382 +262144,4.07552 +524288,7.67795 +1048576,14.8992 +2097152,27.8446 +4194304,56.3732 +8388608,110.998 +16777216,223.198 +33554432,437.028 +67108864,901.478 +16,0.62464 +32,0.759808 +64,0.833536 +128,0.817152 +256,0.73728 +512,0.766976 +1024,0.796672 +2048,0.8704 +4096,0.70656 +8192,1.02298 +16384,1.22982 +32768,1.36704 +65536,1.72544 +131072,2.59379 +262144,4.03763 +524288,7.48544 +1048576,14.4261 +2097152,29.5967 +4194304,56.3978 +8388608,110.642 +16777216,220.123 +33554432,444.948 +67108864,884.609 +16,0.807936 +32,0.54272 +64,0.892928 +128,0.804864 +256,0.76288 +512,0.781312 +1024,0.813056 +2048,0.790528 +4096,1.1264 +8192,0.932864 +16384,1.08442 +32768,1.35373 +65536,1.69882 +131072,2.49242 +262144,4.14618 +524288,7.64416 +1048576,15.0333 +2097152,29.1779 +4194304,56.6528 +8388608,111.63 +16777216,223.94 +33554432,436.765 +67108864,899.83 +16,0.8704 +32,0.923648 +64,0.738304 +128,0.929792 +256,1.06291 +512,0.805888 +1024,0.828416 +2048,0.980992 +4096,0.84992 +8192,0.984064 +16384,1.07418 +32768,1.3865 +65536,1.90976 +131072,2.55795 +262144,4.11024 +524288,7.49158 +1048576,14.2705 +2097152,29.0017 +4194304,56.2125 +8388608,110.634 +16777216,220.266 +33554432,446.79 +67108864,887.083 +16,0.785408 +32,0.811008 +64,0.816128 +128,0.800768 +256,0.80896 +512,0.897024 +1024,0.766976 +2048,0.76288 +4096,0.859136 +8192,1.01274 +16384,1.08134 +32768,1.28307 +65536,1.68448 +131072,2.48934 +262144,4.04685 +524288,8.064 +1048576,15.0446 +2097152,29.2188 +4194304,56.4388 +8388608,111.4 +16777216,224.965 +33554432,437.776 +67108864,903.778 +16,0.88576 +32,0.815104 +64,0.777216 +128,0.821248 +256,0.755712 +512,0.78336 +1024,1.31584 +2048,0.970752 +4096,0.847872 +8192,0.903168 +16384,1.07008 +32768,1.26771 +65536,1.69882 +131072,2.51187 +262144,4.03149 +524288,7.74656 +1048576,14.6012 +2097152,28.9823 +4194304,56.0435 +8388608,110.584 +16777216,221.584 +33554432,447.854 +67108864,886.911 +16,1.23392 +32,0.78848 +64,0.791552 +128,0.730112 +256,0.823296 +512,0.759808 +1024,0.821248 +2048,0.857088 +4096,0.871424 +8192,0.959488 +16384,1.16634 +32768,1.26669 +65536,1.73056 +131072,2.47603 +262144,4.05606 +524288,8.23706 +1048576,14.8244 +2097152,28.2122 +4194304,56.4756 +8388608,113.686 +16777216,224.504 +33554432,436.551 +67108864,899.554 +16,0.88576 +32,0.613376 +64,0.90112 +128,0.761856 +256,0.82944 +512,0.805888 +1024,0.821248 +2048,0.745472 +4096,1.07213 +8192,0.932864 +16384,1.08032 +32768,1.2585 +65536,1.78995 +131072,2.50778 +262144,4.03763 +524288,8.00358 +1048576,14.9422 +2097152,28.8891 +4194304,56.6641 +8388608,111.472 +16777216,219.638 +33554432,450.356 +67108864,888.464 +16,0.900096 +32,0.702464 +64,0.80896 +128,0.77312 +256,0.720896 +512,0.818176 +1024,0.90112 +2048,1.14278 +4096,0.985088 +8192,0.914432 +16384,1.0967 +32768,1.26464 +65536,1.69062 +131072,2.94195 +262144,4.43187 +524288,7.53869 +1048576,14.5971 +2097152,28.3597 +4194304,56.3046 +8388608,110.998 +16777216,224.458 +33554432,435.137 +67108864,903.776 +16,0.705536 +32,0.781312 +64,0.772096 +128,0.702464 +256,0.625664 +512,1.0967 +1024,0.827392 +2048,1.21446 +4096,0.874496 +8192,0.90624 +16384,0.941056 +32768,1.28922 +65536,1.69882 +131072,2.58458 +262144,4.07142 +524288,7.48339 +1048576,14.4497 +2097152,28.8461 +4194304,55.5848 +8388608,110.663 +16777216,218.976 +33554432,448.423 +67108864,884.088 +16,0.920576 +32,1.58106 +64,0.815104 +128,0.851968 +256,0.828416 +512,0.796672 +1024,0.859136 +2048,0.990208 +4096,0.796672 +8192,0.883712 +16384,1.15507 +32768,1.22573 +65536,2.01216 +131072,2.45043 +262144,4.06323 +524288,7.62163 +1048576,15.0876 +2097152,28.6198 +4194304,57.0972 +8388608,111.966 +16777216,225.711 +33554432,435.449 +67108864,904.206 +16,0.836608 +32,0.848896 +64,1.43053 +128,0.782336 +256,0.830464 +512,0.79872 +1024,0.805888 +2048,0.862208 +4096,0.83456 +8192,0.862208 +16384,1.00659 +32768,1.22368 +65536,1.88416 +131072,2.42893 +262144,3.89837 +524288,7.79674 +1048576,14.3811 +2097152,29.3417 +4194304,56.1848 +8388608,109.91 +16777216,219.302 +33554432,448.623 +67108864,887.433 +16,0.724992 +32,0.723968 +64,0.73216 +128,0.618496 +256,0.65024 +512,0.616448 +1024,0.70144 +2048,0.877568 +4096,0.70144 +8192,0.872448 +16384,1.01888 +32768,1.15814 +65536,1.62304 +131072,2.43507 +262144,3.99258 +524288,7.52333 +1048576,14.977 +2097152,28.073 +4194304,56.5207 +8388608,112.511 +16777216,223.292 +33554432,437.657 +67108864,903.848 +16,0.709632 +32,0.807936 +64,0.799744 +128,0.792576 +256,0.657408 +512,0.669696 +1024,0.77824 +2048,0.69632 +4096,0.715776 +8192,1.40493 +16384,1.1776 +32768,1.22163 +65536,1.8944 +131072,2.92762 +262144,4.89165 +524288,7.39123 +1048576,14.5336 +2097152,28.8143 +4194304,57.2457 +8388608,110.638 +16777216,219.74 +33554432,446.66 +67108864,889.677 +16,0.896 +32,0.861184 +64,0.822272 +128,0.792576 +256,0.647168 +512,0.673792 +1024,0.694272 +2048,0.750592 +4096,0.720896 +8192,0.871424 +16384,1.21446 +32768,1.20934 +65536,1.7961 +131072,2.43917 +262144,4.04173 +524288,7.73325 +1048576,14.935 +2097152,28.5798 +4194304,57.1863 +8388608,110.505 +16777216,222.468 +33554432,439.313 +67108864,898.284 +16,0.710656 +32,0.749568 +64,0.745472 +128,0.775168 +256,0.662528 +512,0.95232 +1024,0.64 +2048,0.739328 +4096,0.720896 +8192,0.932864 +16384,1.03014 +32768,1.23392 +65536,1.55853 +131072,2.55181 +262144,4.75136 +524288,7.40557 +1048576,15.2105 +2097152,28.5768 +4194304,55.8531 +8388608,110.883 +16777216,219.19 +33554432,433.614 +67108864,886.56 +16,0.86528 +32,0.77824 +64,0.759808 +128,0.888832 +256,0.748544 +512,0.80896 +1024,0.899072 +2048,0.858112 +4096,0.905216 +8192,1.0711 +16384,1.12947 +32768,1.27078 +65536,1.62509 +131072,2.39309 +262144,4.64077 +524288,7.53766 +1048576,15.2013 +2097152,29.7554 +4194304,56.66 +8388608,111.878 +16777216,224.771 +33554432,435.659 +67108864,903.088 +16,0.707584 +32,0.796672 +64,0.799744 +128,0.77312 +256,0.69632 +512,0.820224 +1024,0.709632 +2048,0.741376 +4096,0.790528 +8192,0.863232 +16384,1.04653 +32768,1.21549 +65536,1.58106 +131072,2.43302 +262144,4.0151 +524288,7.44653 +1048576,14.8081 +2097152,29.2434 +4194304,56.0886 +8388608,110.945 +16777216,218.866 +33554432,442.234 +67108864,888.781 +16,0.80384 +32,0.768 +64,0.795648 +128,0.717824 +256,0.779264 +512,0.687104 +1024,1.15507 +2048,0.753664 +4096,0.796672 +8192,0.927744 +16384,0.937984 +32768,1.22266 +65536,1.54112 +131072,3.33414 +262144,3.97517 +524288,8.09782 +1048576,14.8756 +2097152,28.1969 +4194304,56.3487 +8388608,111.621 +16777216,224.112 +33554432,435.397 +67108864,905.108 +16,0.8192 +32,0.73216 +64,0.781312 +128,0.8704 +256,0.801792 +512,0.746496 +1024,0.83456 +2048,0.888832 +4096,1.00659 +8192,0.909312 +16384,1.01171 +32768,1.2329 +65536,1.64454 +131072,2.44838 +262144,3.94752 +524288,7.3728 +1048576,14.6934 +2097152,29.271 +4194304,55.7619 +8388608,109.728 +16777216,218.084 +33554432,447.015 +67108864,883.558 +16,0.77824 +32,0.735232 +64,0.786432 +128,0.64512 +256,0.652288 +512,0.811008 +1024,1.3783 +2048,0.753664 +4096,0.792576 +8192,0.869376 +16384,1.00557 +32768,1.2247 +65536,1.61075 +131072,2.44736 +262144,4.06323 +524288,8.22067 +1048576,14.8265 +2097152,28.3331 +4194304,57.1136 +8388608,111.664 +16777216,224.878 +33554432,437.658 +67108864,902.677 +16,0.82944 +32,0.777216 +64,0.81408 +128,0.846848 +256,0.784384 +512,0.78848 +1024,0.644096 +2048,0.746496 +4096,0.76288 +8192,1.00755 +16384,1.58822 +32768,1.43974 +65536,1.57389 +131072,2.43098 +262144,3.9977 +524288,8.15923 +1048576,14.591 +2097152,28.5573 +4194304,55.6124 +8388608,110.832 +16777216,220.195 +33554432,448.427 +67108864,888.236 +16,0.751616 +32,0.744448 +64,0.92672 +128,0.82432 +256,0.705536 +512,1.1008 +1024,0.889856 +2048,0.751616 +4096,0.789504 +8192,0.859136 +16384,1.09773 +32768,1.15405 +65536,1.62304 +131072,2.44531 +262144,3.98336 +524288,7.42707 +1048576,14.9309 +2097152,28.3423 +4194304,56.4623 +8388608,110.65 +16777216,225.356 +33554432,435.775 +67108864,900.847 +16,0.809984 +32,0.995328 +64,0.760832 +128,0.769024 +256,0.898048 +512,0.93696 +1024,1.03117 +2048,0.744448 +4096,0.796672 +8192,0.934912 +16384,0.913408 +32768,1.17248 +65536,1.66502 +131072,2.44736 +262144,4.11955 +524288,7.98106 +1048576,14.334 +2097152,29.1246 +4194304,55.4916 +8388608,110.879 +16777216,219.453 +33554432,448.475 +67108864,886.752 +16,0.713728 +32,0.913408 +64,1.0752 +128,0.69632 +256,0.647168 +512,0.60928 +1024,0.693248 +2048,0.741376 +4096,0.749568 +8192,0.805888 +16384,1.01478 +32768,1.16326 +65536,1.59334 +131072,2.44122 +262144,4.02637 +524288,8.10906 +1048576,14.8511 +2097152,28.7508 +4194304,57.8038 +8388608,111.318 +16777216,226.05 +33554432,438.439 +67108864,904.009 +16,0.509952 +32,0.817152 +64,1.21958 +128,0.789504 +256,0.772096 +512,0.8192 +1024,0.884736 +2048,0.980992 +4096,0.792576 +8192,0.863232 +16384,1.01069 +32768,1.21549 +65536,1.5575 +131072,2.46886 +262144,4.00077 +524288,7.60525 +1048576,14.8009 +2097152,29.3878 +4194304,56.4142 +8388608,111.66 +16777216,217.947 +33554432,446.982 +67108864,885.642 +16,0.714752 +32,0.927744 +64,0.733184 +128,0.789504 +256,0.917504 +512,0.79872 +1024,0.827392 +2048,0.858112 +4096,0.97792 +8192,0.9472 +16384,1.1479 +32768,1.3097 +65536,1.71725 +131072,2.75968 +262144,4.0192 +524288,7.40557 +1048576,15.0835 +2097152,29.0888 +4194304,57.343 +8388608,111.564 +16777216,222.561 +33554432,439.924 +67108864,903.014 +16,0.755712 +32,0.830464 +64,0.86528 +128,0.78848 +256,0.792576 +512,0.833536 +1024,0.833536 +2048,0.888832 +4096,0.7936 +8192,0.868352 +16384,1.00454 +32768,1.21139 +65536,1.64147 +131072,2.74842 +262144,3.97005 +524288,8.54426 +1048576,14.8787 +2097152,29.3509 +4194304,55.7128 +8388608,111.241 +16777216,218.185 +33554432,445.378 +67108864,887.925 +16,0.723968 +32,0.67072 +64,0.794624 +128,0.842752 +256,0.795648 +512,0.781312 +1024,0.795648 +2048,1.08954 +4096,0.776192 +8192,0.991232 +16384,1.02298 +32768,1.22368 +65536,1.64659 +131072,2.4535 +262144,4.61722 +524288,7.42605 +1048576,15.4788 +2097152,29.3407 +4194304,56.363 +8388608,110.967 +16777216,223.27 +33554432,436.301 +67108864,902.843 +16,0.62464 +32,0.796672 +64,0.64 +128,0.800768 +256,0.965632 +512,0.669696 +1024,0.703488 +2048,0.746496 +4096,0.8448 +8192,0.85504 +16384,1.00454 +32768,1.19091 +65536,1.62509 +131072,2.61632 +262144,4.42573 +524288,7.44141 +1048576,15.1931 +2097152,29.2311 +4194304,56.1285 +8388608,110.648 +16777216,218.408 +33554432,446.138 +67108864,884.813 +16,0.820224 +32,0.637952 +64,0.833536 +128,0.746496 +256,0.785408 +512,0.674816 +1024,1.152 +2048,0.748544 +4096,0.724992 +8192,0.95744 +16384,0.997376 +32768,1.54522 +65536,1.64557 +131072,2.44326 +262144,4.04992 +524288,7.72608 +1048576,15.4255 +2097152,27.8671 +4194304,56.6231 +8388608,111.047 +16777216,224.942 +33554432,439.465 +67108864,904.186 +16,0.724992 +32,0.764928 +64,0.745472 +128,0.631808 +256,0.659456 +512,0.697344 +1024,0.710656 +2048,0.738304 +4096,0.800768 +8192,0.873472 +16384,1.00659 +32768,1.22368 +65536,1.63635 +131072,2.85082 +262144,4.10726 +524288,7.48339 +1048576,15.1603 +2097152,29.0611 +4194304,55.6452 +8388608,110.077 +16777216,220.449 +33554432,447.13 +67108864,884.437 +16,0.651264 +32,0.785408 +64,0.917504 +128,0.753664 +256,0.848896 +512,0.674816 +1024,0.689152 +2048,0.743424 +4096,0.790528 +8192,0.854016 +16384,1.024 +32768,1.22266 +65536,1.61587 +131072,2.65011 +262144,3.99258 +524288,7.54381 +1048576,14.848 +2097152,28.3986 +4194304,56.5361 +8388608,110.663 +16777216,224.545 +33554432,436.181 +67108864,899.784 +16,0.85504 +32,0.785408 +64,0.72704 +128,0.789504 +256,0.786432 +512,0.787456 +1024,0.776192 +2048,0.867328 +4096,0.735232 +8192,0.9728 +16384,1.00864 +32768,1.2073 +65536,1.64557 +131072,2.45043 +262144,4.2967 +524288,7.51616 +1048576,14.8582 +2097152,28.6761 +4194304,55.4854 +8388608,109.704 +16777216,217.739 +33554432,444.603 +67108864,883.939 +16,0.651264 +32,0.765952 +64,0.759808 +128,0.763904 +256,0.81408 +512,0.79872 +1024,0.842752 +2048,0.837632 +4096,1.38035 +8192,0.837632 +16384,0.978944 +32768,1.23392 +65536,1.64864 +131072,2.43814 +262144,4.31309 +524288,7.63187 +1048576,15.5464 +2097152,28.3156 +4194304,56.7665 +8388608,110.887 +16777216,223.172 +33554432,436.548 +67108864,902.18 +16,0.84992 +32,0.7936 +64,0.769024 +128,0.83968 +256,0.8704 +512,0.764928 +1024,0.804864 +2048,0.836608 +4096,0.845824 +8192,1.30253 +16384,1.99987 +32768,1.28102 +65536,1.84832 +131072,2.54669 +262144,4.02125 +524288,8.03738 +1048576,14.805 +2097152,29.3345 +4194304,55.509 +8388608,110.303 +16777216,218.841 +33554432,447.709 +67108864,884.796 +16,0.729088 +32,0.72192 +64,0.74752 +128,0.813056 +256,0.796672 +512,0.786432 +1024,1.11002 +2048,0.876544 +4096,1.00557 +8192,1.0711 +16384,1.54522 +32768,1.63635 +65536,1.70906 +131072,2.51597 +262144,4.04992 +524288,7.65747 +1048576,14.5981 +2097152,27.9869 +4194304,56.2248 +8388608,111.861 +16777216,223.87 +33554432,436.496 +67108864,902.224 +16,0.787456 +32,0.777216 +64,0.774144 +128,0.888832 +256,0.78848 +512,0.610304 +1024,1.00659 +2048,0.738304 +4096,0.789504 +8192,0.89088 +16384,1.01171 +32768,1.34554 +65536,1.7408 +131072,2.45453 +262144,3.9721 +524288,7.33901 +1048576,14.6821 +2097152,29.0796 +4194304,56.4787 +8388608,109.909 +16777216,219.152 +33554432,446.16 +67108864,884.856 +16,0.649216 +32,0.785408 +64,0.786432 +128,0.749568 +256,0.779264 +512,0.850944 +1024,0.781312 +2048,1.11411 +4096,0.984064 +8192,1.04038 +16384,1.05984 +32768,1.30662 +65536,1.68141 +131072,3.71098 +262144,4.03558 +524288,7.7097 +1048576,15.0671 +2097152,27.9562 +4194304,57.3194 +8388608,109.592 +16777216,223.934 +33554432,432.689 +67108864,900.691 +16,0.813056 +32,1.25542 +64,0.846848 +128,0.813056 +256,0.821248 +512,0.822272 +1024,0.806912 +2048,0.894976 +4096,0.872448 +8192,0.902144 +16384,1.13766 +32768,1.38035 +65536,1.70496 +131072,2.52621 +262144,4.06528 +524288,7.65747 +1048576,14.3452 +2097152,28.7048 +4194304,56.0794 +8388608,110.418 +16777216,218.687 +33554432,446.453 +67108864,884.968 +16,0.70656 +32,0.802816 +64,0.871424 +128,0.497664 +256,0.789504 +512,0.789504 +1024,0.7936 +2048,0.95744 +4096,0.980992 +8192,0.961536 +16384,1.16736 +32768,1.23802 +65536,1.70291 +131072,2.52109 +262144,4.12467 +524288,7.55712 +1048576,14.7855 +2097152,27.6449 +4194304,57.1023 +8388608,110.298 +16777216,222.812 +33554432,438.304 +67108864,900.568 +16,0.772096 +32,0.758784 +64,0.724992 +128,0.990208 +256,1.08749 +512,0.811008 +1024,0.831488 +2048,0.995328 +4096,0.999424 +8192,1.05472 +16384,1.11411 +32768,1.31072 +65536,1.73158 +131072,2.4576 +262144,4.05197 +524288,8.15309 +1048576,14.5009 +2097152,28.6167 +4194304,55.1117 +8388608,111.107 +16777216,219.171 +33554432,446.018 +67108864,882.976 +16,0.789504 +32,0.75776 +64,0.86528 +128,0.676864 +256,0.707584 +512,0.82944 +1024,0.705536 +2048,0.862208 +4096,0.7936 +8192,0.862208 +16384,1.01478 +32768,1.2073 +65536,1.61792 +131072,2.45453 +262144,4.57626 +524288,8.1664 +1048576,14.9893 +2097152,27.9695 +4194304,55.9094 +8388608,111.818 +16777216,223.809 +33554432,435.175 +67108864,898.918 +16,0.776192 +32,0.72704 +64,0.8448 +128,0.7424 +256,0.843776 +512,0.688128 +1024,0.705536 +2048,0.678912 +4096,0.842752 +8192,0.935936 +16384,1.00045 +32768,1.22368 +65536,1.95277 +131072,2.4617 +262144,3.97619 +524288,7.38509 +1048576,15.3876 +2097152,28.7058 +4194304,55.5991 +8388608,110.242 +16777216,219.633 +33554432,445.876 +67108864,882.541 +16,0.869376 +32,0.801792 +64,0.730112 +128,0.768 +256,1.00352 +512,0.791552 +1024,0.8192 +2048,0.741376 +4096,0.787456 +8192,0.854016 +16384,1.5831 +32768,1.21344 +65536,1.61587 +131072,2.85491 +262144,4.33869 +524288,7.8377 +1048576,14.9586 +2097152,29.1226 +4194304,56.4869 +8388608,111.251 +16777216,223.958 +33554432,434.416 +67108864,900.831 +16,0.878592 +32,0.695296 +64,0.750592 +128,0.781312 +256,0.801792 +512,0.9216 +1024,0.70656 +2048,0.744448 +4096,0.786432 +8192,0.858112 +16384,0.995328 +32768,1.19706 +65536,1.61997 +131072,2.43814 +262144,3.98746 +524288,8.12749 +1048576,14.2111 +2097152,28.6362 +4194304,55.9278 +8388608,111.215 +16777216,219.131 +33554432,444.589 +67108864,882.304 +16,0.896 +32,0.807936 +64,0.662528 +128,1.11923 +256,0.823296 +512,0.784384 +1024,0.78336 +2048,0.744448 +4096,0.780288 +8192,0.940032 +16384,1.44794 +32768,1.21037 +65536,1.88211 +131072,2.43405 +262144,4.07552 +524288,7.58374 +1048576,15.0712 +2097152,28.034 +4194304,57.5365 +8388608,110.531 +16777216,224.048 +33554432,435.2 +67108864,897.944 +16,0.838656 +32,1.02605 +64,0.873472 +128,0.60928 +256,0.654336 +512,0.68096 +1024,0.749568 +2048,0.746496 +4096,0.774144 +8192,0.864256 +16384,1.00864 +32768,1.21242 +65536,1.77357 +131072,2.44122 +262144,3.98336 +524288,7.83258 +1048576,14.5736 +2097152,28.5297 +4194304,55.4834 +8388608,111.513 +16777216,217.175 +33554432,448.797 +67108864,884.005 +16,0.797696 +32,0.857088 +64,0.77824 +128,0.62976 +256,0.666624 +512,0.684032 +1024,0.720896 +2048,0.723968 +4096,0.7936 +8192,0.93696 +16384,1.01888 +32768,1.22675 +65536,1.64045 +131072,2.70029 +262144,3.99872 +524288,7.77728 +1048576,15.1624 +2097152,28.7959 +4194304,57.2406 +8388608,110.263 +16777216,222.61 +33554432,435.901 +67108864,896.799 +16,0.86528 +32,0.812032 +64,0.769024 +128,0.681984 +256,0.796672 +512,0.786432 +1024,0.804864 +2048,0.961536 +4096,0.996352 +8192,1.06906 +16384,0.945152 +32768,1.2073 +65536,1.63533 +131072,2.44634 +262144,4.00589 +524288,7.96058 +1048576,14.8265 +2097152,28.9178 +4194304,55.9258 +8388608,109.976 +16777216,217.805 +33554432,444.04 +67108864,885.796 +16,0.741376 +32,0.704512 +64,0.743424 +128,0.574464 +256,0.662528 +512,0.61952 +1024,1.03629 +2048,0.750592 +4096,0.786432 +8192,1.07418 +16384,0.997376 +32768,1.21242 +65536,1.60461 +131072,2.44122 +262144,4.56602 +524288,7.94419 +1048576,14.8572 +2097152,29.269 +4194304,56.2893 +8388608,109.442 +16777216,224.134 +33554432,436.985 +67108864,894.948 +16,0.912384 +32,0.758784 +64,0.94208 +128,0.79872 +256,1.16634 +512,0.792576 +1024,0.705536 +2048,0.7424 +4096,0.78848 +8192,0.973824 +16384,0.982016 +32768,1.30253 +65536,1.62714 +131072,2.47091 +262144,3.93011 +524288,7.3687 +1048576,14.9309 +2097152,28.8276 +4194304,56.1889 +8388608,110.394 +16777216,218.328 +33554432,447.732 +67108864,883.082 +16,0.797696 +32,0.802816 +64,0.858112 +128,0.792576 +256,0.790528 +512,0.674816 +1024,0.703488 +2048,0.739328 +4096,0.785408 +8192,0.847872 +16384,1.21139 +32768,1.33325 +65536,1.63942 +131072,2.43712 +262144,3.98643 +524288,7.61242 +1048576,14.8797 +2097152,28.9526 +4194304,56.5617 +8388608,111.791 +16777216,222.845 +33554432,434.639 +67108864,900.779 +16,0.758784 +32,0.823296 +64,0.705536 +128,0.754688 +256,0.663552 +512,0.613376 +1024,0.712704 +2048,0.755712 +4096,0.960512 +8192,0.948224 +16384,0.9984 +32768,1.21344 +65536,1.64557 +131072,2.50163 +262144,4.27827 +524288,7.50694 +1048576,14.6698 +2097152,28.5225 +4194304,56.0282 +8388608,111.407 +16777216,220.182 +33554432,446.544 +67108864,885.451 +16,0.54272 +32,1.02912 +64,1.06086 +128,0.700416 +256,0.827392 +512,0.835584 +1024,0.787456 +2048,1.00966 +4096,0.871424 +8192,0.86016 +16384,0.990208 +32768,1.21037 +65536,1.62202 +131072,2.45555 +262144,4.3049 +524288,7.51104 +1048576,15.572 +2097152,28.0064 +4194304,56.3241 +8388608,110.28 +16777216,223.409 +33554432,439.441 +67108864,898.509 +16,0.925696 +32,0.787456 +64,0.8192 +128,0.63488 +256,0.658432 +512,0.69632 +1024,1.38035 +2048,0.741376 +4096,0.792576 +8192,0.866304 +16384,0.994304 +32768,1.36602 +65536,1.64864 +131072,2.74227 +262144,4.01203 +524288,7.68819 +1048576,14.5449 +2097152,28.5737 +4194304,56.2985 +8388608,109.905 +16777216,218.897 +33554432,446.939 +67108864,888.162 +16,0.713728 +32,0.60928 +64,1.024 +128,0.571392 +256,0.646144 +512,0.663552 +1024,0.69632 +2048,0.736256 +4096,0.796672 +8192,0.821248 +16384,1.15507 +32768,1.2329 +65536,1.61178 +131072,2.56922 +262144,3.93728 +524288,7.8121 +1048576,14.4937 +2097152,28.5645 +4194304,55.7722 +8388608,111.236 +16777216,224.411 +33554432,437.47 +67108864,899.477 +16,0.676864 +32,0.75264 +64,0.809984 +128,0.782336 +256,0.785408 +512,0.840704 +1024,0.8192 +2048,0.822272 +4096,0.955392 +8192,0.932864 +16384,1.14483 +32768,1.2759 +65536,1.72646 +131072,2.80883 +262144,4.2025 +524288,7.79469 +1048576,14.9146 +2097152,28.9526 +4194304,55.9462 +8388608,110.837 +16777216,218.39 +33554432,446.629 +67108864,884.455 +16,0.87552 +32,0.75264 +64,0.816128 +128,0.755712 +256,0.726016 +512,0.809984 +1024,0.843776 +2048,0.935936 +4096,1.01478 +8192,1.4336 +16384,1.26157 +32768,1.28717 +65536,1.70189 +131072,2.60915 +262144,4.16973 +524288,7.77216 +1048576,15.1183 +2097152,29.055 +4194304,57.0665 +8388608,111.496 +16777216,223.699 +33554432,436.208 +67108864,898.231 +16,0.763904 +32,0.77824 +64,0.775168 +128,0.830464 +256,0.831488 +512,0.933888 +1024,0.826368 +2048,0.739328 +4096,0.73728 +8192,0.806912 +16384,0.99328 +32768,1.22266 +65536,1.63226 +131072,2.43917 +262144,4.02842 +524288,7.83565 +1048576,14.8644 +2097152,28.7242 +4194304,55.1772 +8388608,110.617 +16777216,218.27 +33554432,445.982 +67108864,884.274 +16,0.64512 +32,0.766976 +64,0.580608 +128,0.628736 +256,0.815104 +512,0.77312 +1024,0.80384 +2048,0.681984 +4096,0.791552 +8192,0.935936 +16384,1.01581 +32768,1.20525 +65536,1.61792 +131072,2.42176 +262144,4.38477 +524288,7.4752 +1048576,15.0743 +2097152,28.5819 +4194304,57.1648 +8388608,110.324 +16777216,225.693 +33554432,436.747 +67108864,903.173 +16,0.595968 +32,0.939008 +64,0.755712 +128,0.848896 +256,0.837632 +512,0.73728 +1024,0.848896 +2048,0.915456 +4096,0.987136 +8192,0.919552 +16384,1.04755 +32768,1.31482 +65536,1.91386 +131072,2.51392 +262144,4.07859 +524288,7.62061 +1048576,14.3503 +2097152,28.6638 +4194304,55.7998 +8388608,111.313 +16777216,219.497 +33554432,445.78 +67108864,883.378 +16,0.893952 +32,1.04858 +64,0.731136 +128,0.812032 +256,0.799744 +512,0.76288 +1024,0.912384 +2048,0.883712 +4096,0.77824 +8192,0.891904 +16384,1.00966 +32768,1.21651 +65536,1.5575 +131072,2.42483 +262144,4.01818 +524288,7.51002 +1048576,15.5085 +2097152,28.2225 +4194304,56.3261 +8388608,111.435 +16777216,225.399 +33554432,436.237 +67108864,898.617 +16,0.83968 +32,0.769024 +64,0.718848 +128,0.786432 +256,0.766976 +512,0.864256 +1024,0.668672 +2048,1.43462 +4096,1.0025 +8192,1.09261 +16384,1.08339 +32768,1.14483 +65536,1.75616 +131072,2.51699 +262144,4.04685 +524288,7.47418 +1048576,14.7128 +2097152,29.3652 +4194304,55.8735 +8388608,110.515 +16777216,219.255 +33554432,443.636 +67108864,884.803 +16,0.826368 +32,0.692224 +64,0.799744 +128,0.874496 +256,0.806912 +512,0.974848 +1024,0.852992 +2048,0.850944 +4096,0.835584 +8192,0.925696 +16384,1.10182 +32768,1.3056 +65536,1.70803 +131072,2.81498 +262144,4.87731 +524288,8.29542 +1048576,14.8367 +2097152,28.2952 +4194304,55.5889 +8388608,110.453 +16777216,224.34 +33554432,435.774 +67108864,898.601 +16,0.851968 +32,0.958464 +64,0.792576 +128,0.924672 +256,0.809984 +512,0.806912 +1024,0.809984 +2048,0.982016 +4096,0.845824 +8192,0.980992 +16384,1.08749 +32768,1.50016 +65536,2.11149 +131072,2.48832 +262144,4.09088 +524288,7.64109 +1048576,14.6811 +2097152,28.7846 +4194304,55.9555 +8388608,110.363 +16777216,216.136 +33554432,443.711 +67108864,880.231 +16,0.909312 +32,0.770048 +64,0.802816 +128,1.25235 +256,0.802816 +512,0.800768 +1024,0.8448 +2048,0.965632 +4096,0.85504 +8192,1.18784 +16384,1.0537 +32768,1.26054 +65536,1.81555 +131072,2.49344 +262144,4.17075 +524288,7.66259 +1048576,15.0159 +2097152,28.8993 +4194304,56.5094 +8388608,110.542 +16777216,223.204 +33554432,436.517 +67108864,895.354 +16,0.918528 +32,0.760832 +64,0.772096 +128,0.805888 +256,0.787456 +512,0.828416 +1024,0.799744 +2048,0.900096 +4096,0.974848 +8192,0.922624 +16384,1.04755 +32768,1.26054 +65536,1.68653 +131072,2.47091 +262144,4.2025 +524288,8.27597 +1048576,14.6309 +2097152,29.0324 +4194304,55.9892 +8388608,109.753 +16777216,219.067 +33554432,445.027 +67108864,885.794 +16,0.769024 +32,0.800768 +64,0.787456 +128,0.82432 +256,0.740352 +512,0.872448 +1024,0.772096 +2048,0.748544 +4096,0.78336 +8192,0.92672 +16384,1.00147 +32768,1.20013 +65536,1.6384 +131072,2.432 +262144,3.9936 +524288,7.47213 +1048576,15.2207 +2097152,28.8881 +4194304,56.8494 +8388608,110.717 +16777216,224.036 +33554432,435.747 +67108864,899.381 +16,0.74752 +32,0.615424 +64,0.738304 +128,0.80384 +256,0.918528 +512,0.759808 +1024,0.813056 +2048,1.12128 +4096,0.795648 +8192,0.796672 +16384,1.00659 +32768,1.35373 +65536,2.53338 +131072,2.7095 +262144,4.15232 +524288,7.8377 +1048576,14.3145 +2097152,29.3499 +4194304,55.6431 +8388608,111.069 +16777216,219.667 +33554432,448.275 +67108864,885.939 +16,0.89088 +32,0.731136 +64,0.84992 +128,1.22573 +256,0.795648 +512,0.807936 +1024,0.800768 +2048,1.80122 +4096,0.919552 +8192,0.928768 +16384,0.996352 +32768,1.23187 +65536,1.63123 +131072,2.45043 +262144,4.01408 +524288,7.54688 +1048576,14.4978 +2097152,28.6136 +4194304,56.3005 +8388608,110.066 +16777216,224.208 +33554432,433.913 +67108864,898.057 +16,0.641024 +32,0.74752 +64,0.815104 +128,0.784384 +256,0.85504 +512,0.837632 +1024,0.774144 +2048,0.970752 +4096,1.00966 +8192,0.935936 +16384,1.06803 +32768,1.30662 +65536,1.73773 +131072,2.44019 +262144,4.03866 +524288,7.52333 +1048576,14.422 +2097152,29.2065 +4194304,55.6534 +8388608,111.701 +16777216,217.967 +33554432,446.372 +67108864,883.012 +16,0.638976 +32,0.681984 +64,0.766976 +128,0.786432 +256,1.03117 +512,0.779264 +1024,0.758784 +2048,0.951296 +4096,0.990208 +8192,0.917504 +16384,1.12026 +32768,1.29843 +65536,1.87904 +131072,2.53338 +262144,4.08064 +524288,7.79264 +1048576,14.7272 +2097152,28.4836 +4194304,57.3368 +8388608,112.046 +16777216,222.821 +33554432,434.755 +67108864,899.613 +16,0.754688 +32,0.64 +64,0.723968 +128,0.719872 +256,0.648192 +512,0.671744 +1024,0.653312 +2048,0.758784 +4096,0.712704 +8192,0.932864 +16384,1.01786 +32768,1.23392 +65536,2.32858 +131072,2.39104 +262144,4.32742 +524288,8.13158 +1048576,14.5521 +2097152,30.3002 +4194304,56.8801 +8388608,109.966 +16777216,217.829 +33554432,444.194 +67108864,883.881 +16,0.749568 +32,0.805888 +64,0.818176 +128,1.08032 +256,0.775168 +512,0.601088 +1024,0.704512 +2048,0.744448 +4096,0.789504 +8192,0.859136 +16384,0.905216 +32768,1.37728 +65536,1.63738 +131072,2.57126 +262144,4.00282 +524288,8.10291 +1048576,15.1951 +2097152,29.4236 +4194304,56.7777 +8388608,111.018 +16777216,222.956 +33554432,435.767 +67108864,899.723 +16,0.8704 +32,0.80896 +64,0.820224 +128,0.779264 +256,0.846848 +512,0.820224 +1024,1.08237 +2048,0.825344 +4096,1.02093 +8192,1.24211 +16384,0.990208 +32768,1.22266 +65536,1.63942 +131072,2.52826 +262144,4.01818 +524288,7.57658 +1048576,15.234 +2097152,28.4037 +4194304,55.3697 +8388608,110.558 +16777216,220.921 +33554432,446.852 +67108864,881.738 +16,0.827392 +32,0.794624 +64,0.746496 +128,0.781312 +256,0.95232 +512,0.840704 +1024,0.80896 +2048,0.918528 +4096,0.974848 +8192,1.65478 +16384,1.01888 +32768,1.15302 +65536,1.6128 +131072,2.44122 +262144,3.91168 +524288,7.73939 +1048576,15.5208 +2097152,28.4979 +4194304,56.7736 +8388608,111.605 +16777216,222.962 +33554432,436.724 +67108864,900.605 +16,0.748544 +32,0.697344 +64,0.622592 +128,0.86528 +256,0.804864 +512,0.688128 +1024,0.646144 +2048,0.707584 +4096,1.10592 +8192,0.863232 +16384,1.00762 +32768,1.2329 +65536,1.62918 +131072,2.432 +262144,4.26803 +524288,8.07936 +1048576,14.9432 +2097152,29.7155 +4194304,56.3302 +8388608,110.6 +16777216,219.378 +33554432,441.842 +67108864,884.873 +16,0.953344 +32,0.730112 +64,0.690176 +128,0.78336 +256,0.744448 +512,0.830464 +1024,0.825344 +2048,0.978944 +4096,0.791552 +8192,1.29741 +16384,1.00557 +32768,1.23392 +65536,1.60973 +131072,2.43917 +262144,3.91373 +524288,8.06093 +1048576,15.1624 +2097152,27.8313 +4194304,55.767 +8388608,110.388 +16777216,223.464 +33554432,435.931 +67108864,897.235 +16,0.843776 +32,0.740352 +64,0.777216 +128,0.823296 +256,0.585728 +512,0.681984 +1024,0.699392 +2048,0.7424 +4096,0.79872 +8192,0.949248 +16384,1.00352 +32768,1.24109 +65536,1.64147 +131072,2.77811 +262144,4.10317 +524288,7.40557 +1048576,14.549 +2097152,28.7734 +4194304,55.0062 +8388608,110.447 +16777216,220.188 +33554432,446.728 +67108864,884.189 +16,0.590848 +32,0.653312 +64,0.637952 +128,0.632832 +256,0.646144 +512,0.62976 +1024,0.646144 +2048,0.75776 +4096,0.72704 +8192,0.937984 +16384,1.00966 +32768,1.18067 +65536,1.63226 +131072,2.3808 +262144,3.97824 +524288,7.68614 +1048576,14.7917 +2097152,28.8532 +4194304,57.174 +8388608,109.781 +16777216,224.212 +33554432,436.061 +67108864,899.449 +16,0.854016 +32,0.806912 +64,0.857088 +128,0.769024 +256,0.812032 +512,1.08544 +1024,1.65069 +2048,1.24826 +4096,0.776192 +8192,0.93696 +16384,0.997376 +32768,1.21651 +65536,1.64659 +131072,2.64602 +262144,4.19533 +524288,7.40966 +1048576,15.0589 +2097152,28.886 +4194304,55.1936 +8388608,110.266 +16777216,218.941 +33554432,445.344 +67108864,885.807 +16,0.638976 +32,0.903168 +64,0.805888 +128,0.786432 +256,0.74752 +512,0.677888 +1024,0.62976 +2048,0.743424 +4096,0.78336 +8192,0.852992 +16384,0.997376 +32768,1.20934 +65536,1.56058 +131072,2.44634 +262144,4.01613 +524288,7.54586 +1048576,15.1644 +2097152,27.9654 +4194304,56.7255 +8388608,110.259 +16777216,224.546 +33554432,434.974 +67108864,897.184 +16,0.912384 +32,0.846848 +64,0.760832 +128,0.777216 +256,0.78848 +512,0.782336 +1024,1.06086 +2048,0.949248 +4096,0.87552 +8192,0.925696 +16384,1.07725 +32768,1.31072 +65536,1.71622 +131072,2.88256 +262144,4.39706 +524288,7.55098 +1048576,15.191 +2097152,29.2024 +4194304,55.1844 +8388608,110.385 +16777216,219.806 +33554432,445.577 +67108864,886.785 +16,0.756736 +32,0.649216 +64,0.8192 +128,0.735232 +256,0.806912 +512,0.7936 +1024,0.714752 +2048,0.741376 +4096,0.780288 +8192,0.856064 +16384,1.36909 +32768,1.21344 +65536,1.62816 +131072,2.4535 +262144,3.968 +524288,8.48691 +1048576,14.8552 +2097152,28.2378 +4194304,56.8218 +8388608,111.627 +16777216,222.783 +33554432,437.979 +67108864,900.435 +16,0.888832 +32,0.825344 +64,0.869376 +128,0.792576 +256,0.837632 +512,0.78848 +1024,0.815104 +2048,0.914432 +4096,1.00147 +8192,0.887808 +16384,0.989184 +32768,1.23392 +65536,1.63328 +131072,2.44634 +262144,3.97107 +524288,7.63392 +1048576,14.8552 +2097152,28.9751 +4194304,55.7537 +8388608,111.16 +16777216,218.911 +33554432,447.217 +67108864,884.811 +16,0.929792 +32,1.33325 +64,0.610304 +128,0.567296 +256,0.644096 +512,0.687104 +1024,0.697344 +2048,0.762848 +4096,0.779264 +8192,0.876544 +16384,1.01274 +32768,1.15405 +65536,1.62918 +131072,2.44531 +262144,4.02944 +524288,8.26778 +1048576,14.9811 +2097152,28.4785 +4194304,57.9359 +8388608,111.489 +16777216,222.167 +33554432,435.843 +67108864,905.475 +16,0.900096 +32,0.769024 +64,0.872448 +128,0.659456 +256,0.845824 +512,0.953344 +1024,0.809984 +2048,0.959488 +4096,0.791552 +8192,0.873472 +16384,1.04243 +32768,1.22778 +65536,1.56365 +131072,2.43917 +262144,3.96493 +524288,7.49875 +1048576,14.8234 +2097152,29.2157 +4194304,55.508 +8388608,110.115 +16777216,218.21 +33554432,443.669 +67108864,883.346 +16,0.924672 +32,0.868352 +64,0.751616 +128,0.827392 +256,0.816128 +512,0.785408 +1024,0.812032 +2048,0.966656 +4096,0.989184 +8192,0.980992 +16384,1.30662 +32768,1.28102 +65536,2.1033 +131072,2.5088 +262144,4.0919 +524288,7.56122 +1048576,14.9463 +2097152,28.5133 +4194304,55.6728 +8388608,111.435 +16777216,225.416 +33554432,436.093 +67108864,899.64 +16,0.736256 +32,0.794624 +64,0.617472 +128,0.643072 +256,0.842752 +512,0.674816 +1024,0.70144 +2048,0.782336 +4096,0.785408 +8192,0.91136 +16384,0.999424 +32768,1.16019 +65536,1.78586 +131072,2.43917 +262144,3.93728 +524288,7.98413 +1048576,14.2305 +2097152,29.1174 +4194304,56.6764 +8388608,110.712 +16777216,218.693 +33554432,443.475 +67108864,880.776 +16,0.790528 +32,0.800768 +64,0.802816 +128,0.78848 +256,0.729088 +512,0.7424 +1024,0.786432 +2048,1.13254 +4096,1.92205 +8192,1.11616 +16384,0.990208 +32768,1.22675 +65536,1.74899 +131072,2.44838 +262144,3.99258 +524288,7.53971 +1048576,14.9504 +2097152,27.8682 +4194304,56.5238 +8388608,110.246 +16777216,223.795 +33554432,436.615 +67108864,899.327 +16,0.837632 +32,0.74752 +64,0.785408 +128,0.600064 +256,0.70656 +512,0.618496 +1024,0.71168 +2048,0.733184 +4096,0.772096 +8192,0.879616 +16384,1.00659 +32768,1.31277 +65536,1.64147 +131072,2.44736 +262144,4.01715 +524288,7.76602 +1048576,14.5664 +2097152,28.5082 +4194304,56.4173 +8388608,111.237 +16777216,217.449 +33554432,445.563 +67108864,881.697 +16,0.805888 +32,0.800768 +64,0.774144 +128,0.815104 +256,0.79872 +512,0.941056 +1024,1.49709 +2048,0.971776 +4096,0.88064 +8192,0.937984 +16384,1.03731 +32768,1.56365 +65536,1.85651 +131072,2.43712 +262144,4.10931 +524288,7.6841 +1048576,14.8654 +2097152,29.3857 +4194304,56.746 +8388608,110.423 +16777216,223.721 +33554432,436.07 +67108864,900.441 +16,0.758784 +32,0.827392 +64,0.78336 +128,0.774144 +256,0.779264 +512,1.51347 +1024,0.842752 +2048,0.945152 +4096,1.01683 +8192,0.937984 +16384,1.1223 +32768,1.28717 +65536,1.7152 +131072,2.5385 +262144,4.05197 +524288,7.56838 +1048576,14.1261 +2097152,28.4621 +4194304,55.7353 +8388608,110.326 +16777216,218.707 +33554432,444.897 +67108864,885.025 +16,0.869376 +32,0.714752 +64,0.812032 +128,0.86016 +256,1.1223 +512,0.78336 +1024,0.86016 +2048,0.851968 +4096,0.817152 +8192,0.86528 +16384,1.0025 +32768,1.23187 +65536,1.64762 +131072,2.88256 +262144,4.02842 +524288,7.58477 +1048576,14.6606 +2097152,28.9864 +4194304,56.4685 +8388608,110.164 +16777216,225.621 +33554432,435.22 +67108864,901.009 +16,0.817152 +32,0.801792 +64,0.755712 +128,0.775168 +256,0.78336 +512,0.82432 +1024,0.827392 +2048,0.76288 +4096,0.746496 +8192,0.88064 +16384,1.31174 +32768,1.24006 +65536,1.62099 +131072,2.41664 +262144,3.9127 +524288,7.37997 +1048576,13.9674 +2097152,29.2506 +4194304,55.1209 +8388608,110.591 +16777216,219.739 +33554432,447.506 +67108864,885.183 +16,0.838656 +32,0.807936 +64,0.6144 +128,0.627712 +256,0.596992 +512,0.663552 +1024,0.70656 +2048,0.748544 +4096,0.794624 +8192,0.899072 +16384,0.93696 +32768,1.2288 +65536,1.75104 +131072,2.43712 +262144,4.12979 +524288,7.69946 +1048576,14.9852 +2097152,28.1754 +4194304,56.5627 +8388608,111.501 +16777216,222.014 +33554432,436.558 +67108864,899.821 +16,0.826368 +32,0.740352 +64,0.764928 +128,0.776192 +256,0.763904 +512,0.782336 +1024,1.32301 +2048,0.95232 +4096,0.929792 +8192,1.37011 +16384,1.00864 +32768,1.2288 +65536,1.64352 +131072,2.77197 +262144,3.98746 +524288,7.72096 +1048576,14.805 +2097152,28.8768 +4194304,56.3569 +8388608,109.814 +16777216,218.589 +33554432,447.061 +67108864,885.735 +16,0.72192 +32,0.678912 +64,0.826368 +128,0.836608 +256,1.02298 +512,0.775168 +1024,0.786432 +2048,0.749568 +4096,0.7936 +8192,0.85504 +16384,0.93184 +32768,1.19091 +65536,1.76333 +131072,2.90509 +262144,4.20557 +524288,7.73222 +1048576,14.8644 +2097152,28.3075 +4194304,56.8596 +8388608,111.706 +16777216,222.075 +33554432,432.721 +67108864,900.699 +16,0.790528 +32,0.845824 +64,0.850944 +128,0.779264 +256,0.789504 +512,0.776192 +1024,0.851968 +2048,1.44691 +4096,1.01376 +8192,1.09466 +16384,1.00659 +32768,1.22982 +65536,1.64454 +131072,2.41766 +262144,4.00794 +524288,7.40557 +1048576,14.4538 +2097152,29.5485 +4194304,55.6001 +8388608,109.193 +16777216,219.355 +33554432,446.163 +67108864,880.817 +16,0.626688 +32,0.799744 +64,0.735232 +128,0.730112 +256,0.811008 +512,0.6144 +1024,0.70144 +2048,0.738304 +4096,0.7936 +8192,0.90112 +16384,0.992256 +32768,1.21344 +65536,1.82374 +131072,2.46374 +262144,3.98643 +524288,7.41888 +1048576,15.06 +2097152,28.375 +4194304,56.6682 +8388608,111.609 +16777216,223.984 +33554432,435.891 +67108864,899.941 +16,0.685056 +32,1.36602 +64,0.823296 +128,0.822272 +256,0.776192 +512,0.702464 +1024,0.700416 +2048,0.684032 +4096,0.792576 +8192,0.857088 +16384,1.0025 +32768,1.21344 +65536,1.63533 +131072,2.44736 +262144,3.97414 +524288,7.66054 +1048576,15.0354 +2097152,29.398 +4194304,55.8244 +8388608,110.462 +16777216,219.344 +33554432,446.744 +67108864,882.431 +16,0.815104 +32,0.780288 +64,0.761856 +128,0.758784 +256,0.673792 +512,0.69632 +1024,0.695296 +2048,0.996352 +4096,0.807936 +8192,0.925696 +16384,1.0199 +32768,1.44077 +65536,2.15245 +131072,2.4535 +262144,4.31206 +524288,8.2217 +1048576,14.8357 +2097152,28.5645 +4194304,57.1955 +8388608,112.338 +16777216,224.03 +33554432,438.054 +67108864,899.627 +16,0.846848 +32,0.914432 +64,0.784384 +128,0.728064 +256,1.09261 +512,1.72646 +1024,0.7936 +2048,0.975872 +4096,1.01069 +8192,0.93696 +16384,1.20832 +32768,1.31891 +65536,1.70189 +131072,3.31162 +262144,4.11955 +524288,7.54381 +1048576,14.7773 +2097152,28.5327 +4194304,55.6093 +8388608,109.684 +16777216,218.855 +33554432,445.046 +67108864,884.351 +16,0.734208 +32,0.73728 +64,0.806912 +128,1.0199 +256,0.777216 +512,0.813056 +1024,0.713728 +2048,0.68096 +4096,0.790528 +8192,1.28922 +16384,0.995328 +32768,1.20422 +65536,1.94867 +131072,2.47706 +262144,4.0151 +524288,7.57043 +1048576,14.976 +2097152,28.0934 +4194304,56.2606 +8388608,110.787 +16777216,223.769 +33554432,436.794 +67108864,900.824 +16,0.782336 +32,0.756736 +64,0.704512 +128,0.784384 +256,0.795648 +512,0.791552 +1024,0.80896 +2048,0.931776 +4096,1.03219 +8192,1.0455 +16384,1.05779 +32768,1.2841 +65536,1.73978 +131072,2.59891 +262144,4.47795 +524288,7.60013 +1048576,14.6944 +2097152,28.8307 +4194304,55.2479 +8388608,110.496 +16777216,218.206 +33554432,443.439 +67108864,883.943 +16,0.893952 +32,0.71168 +64,0.5632 +128,0.638976 +256,0.65024 +512,0.726016 +1024,0.702464 +2048,0.684032 +4096,0.786432 +8192,0.9216 +16384,1.02093 +32768,1.21242 +65536,1.61894 +131072,2.45146 +262144,3.98643 +524288,7.6841 +1048576,14.6975 +2097152,28.4078 +4194304,56.788 +8388608,111.618 +16777216,224.564 +33554432,437.522 +67108864,900.661 +16,0.763904 +32,0.774144 +64,0.801792 +128,0.792576 +256,0.761856 +512,0.785408 +1024,0.81408 +2048,0.970752 +4096,0.816128 +8192,1.17555 +16384,1.28717 +32768,1.51245 +65536,2.03674 +131072,2.46477 +262144,4.03866 +524288,7.48237 +1048576,14.423 +2097152,29.055 +4194304,55.5366 +8388608,110.483 +16777216,219.176 +33554432,444.322 +67108864,883.801 +16,0.779264 +32,0.763904 +64,0.787456 +128,0.927744 +256,1.15712 +512,0.827392 +1024,0.805888 +2048,0.94208 +4096,0.951296 +8192,0.932864 +16384,0.996352 +32768,1.22573 +65536,1.6169 +131072,2.42176 +262144,3.9895 +524288,7.39533 +1048576,15.1409 +2097152,27.7934 +4194304,56.3046 +8388608,110.715 +16777216,223.718 +33554432,434.612 +67108864,898.168 +16,0.81408 +32,0.729088 +64,0.817152 +128,0.82944 +256,0.78336 +512,0.835584 +1024,0.822272 +2048,1.24518 +4096,1.00864 +8192,0.910336 +16384,1.07418 +32768,1.21958 +65536,1.64762 +131072,2.7351 +262144,3.99974 +524288,7.69638 +1048576,14.551 +2097152,28.7334 +4194304,55.127 +8388608,109.99 +16777216,220.021 +33554432,443.631 +67108864,883.094 +16,0.827392 +32,0.907264 +64,0.652288 +128,0.772096 +256,0.786432 +512,0.765952 +1024,0.83456 +2048,0.862208 +4096,0.745472 +8192,1.0199 +16384,1.07622 +32768,1.28205 +65536,1.65376 +131072,2.49856 +262144,4.13184 +524288,7.83053 +1048576,14.9903 +2097152,27.989 +4194304,56.1285 +8388608,110.911 +16777216,224.205 +33554432,435.985 +67108864,899.578 +16,0.932864 +32,1.26157 +64,0.809984 +128,0.782336 +256,0.790528 +512,0.748544 +1024,0.648192 +2048,0.73728 +4096,0.80384 +8192,1.14688 +16384,1.01069 +32768,1.22061 +65536,1.6384 +131072,2.48218 +262144,4.00179 +524288,7.44346 +1048576,14.7241 +2097152,28.7642 +4194304,55.6247 +8388608,110.196 +16777216,219.906 +33554432,444.197 +67108864,883.286 +16,0.857088 +32,0.858112 +64,0.879616 +128,0.764928 +256,0.791552 +512,0.804864 +1024,0.8192 +2048,0.888832 +4096,1.0199 +8192,0.9216 +16384,1.03731 +32768,1.54419 +65536,1.67526 +131072,2.45862 +262144,3.98438 +524288,8.15616 +1048576,15.0682 +2097152,29.3939 +4194304,56.5617 +8388608,109.981 +16777216,222.776 +33554432,436.894 +67108864,899.537 +16,0.74752 +32,0.804864 +64,0.817152 +128,0.781312 +256,1.05779 +512,0.811008 +1024,0.809984 +2048,0.970752 +4096,0.777216 +8192,1.27386 +16384,1.18272 +32768,1.20934 +65536,1.94662 +131072,2.45555 +262144,4.08986 +524288,7.44141 +1048576,14.7046 +2097152,28.6372 +4194304,55.4025 +8388608,109.522 +16777216,217.844 +33554432,443.737 +67108864,883.236 +16,0.874496 +32,0.813056 +64,0.769024 +128,0.770048 +256,0.796672 +512,0.673792 +1024,0.687104 +2048,0.746496 +4096,0.786432 +8192,0.867328 +16384,0.9984 +32768,1.60666 +65536,1.84013 +131072,2.45453 +262144,3.99155 +524288,7.4455 +1048576,15.0508 +2097152,27.8856 +4194304,56.4429 +8388608,111.077 +16777216,222.949 +33554432,436.04 +67108864,899.174 +16,0.825344 +32,0.636928 +64,0.785408 +128,0.75776 +256,0.666624 +512,0.673792 +1024,0.70144 +2048,0.750592 +4096,0.777216 +8192,0.950272 +16384,0.95232 +32768,1.46432 +65536,1.65171 +131072,2.41766 +262144,4.00691 +524288,7.38509 +1048576,14.5377 +2097152,28.5143 +4194304,55.3165 +8388608,110.067 +16777216,219.422 +33554432,443.096 +67108864,881.753 +16,0.605184 +32,0.729088 +64,0.918528 +128,0.772096 +256,0.712704 +512,0.801792 +1024,0.779264 +2048,0.959488 +4096,0.917504 +8192,1.19091 +16384,1.05472 +32768,1.27488 +65536,1.67219 +131072,2.48218 +262144,4.03046 +524288,7.95341 +1048576,14.7558 +2097152,27.3613 +4194304,56.7777 +8388608,111.134 +16777216,224.128 +33554432,433.829 +67108864,902.571 +16,0.739328 +32,1.06803 +64,0.864256 +128,0.751616 +256,0.807936 +512,0.79872 +1024,0.822272 +2048,0.7424 +4096,1.11514 +8192,0.886784 +16384,1.02912 +32768,1.23392 +65536,1.64557 +131072,2.42381 +262144,3.97517 +524288,7.38611 +1048576,14.8306 +2097152,29.4185 +4194304,56.0998 +8388608,110.5 +16777216,217.514 +33554432,445.168 +67108864,882.455 +16,0.899072 +32,0.83456 +64,0.70656 +128,0.777216 +256,0.799744 +512,0.813056 +1024,0.784384 +2048,1.0496 +4096,0.929792 +8192,0.881664 +16384,1.2329 +32768,1.21242 +65536,1.61997 +131072,2.95424 +262144,3.97107 +524288,7.52435 +1048576,14.9596 +2097152,28.715 +4194304,56.5248 +8388608,111.223 +16777216,224.056 +33554432,435.761 +67108864,899.234 +16,0.805888 +32,0.694272 +64,0.746496 +128,0.72192 +256,0.856064 +512,0.782336 +1024,0.816128 +2048,1.02502 +4096,1.0199 +8192,0.943104 +16384,1.07418 +32768,1.20627 +65536,1.7367 +131072,2.47296 +262144,4.06835 +524288,7.75578 +1048576,14.5377 +2097152,29.2444 +4194304,56.6702 +8388608,110.326 +16777216,218.651 +33554432,443.908 +67108864,884.299 +16,0.791552 +32,2.48627 +64,0.802816 +128,0.88576 +256,0.789504 +512,0.781312 +1024,0.777216 +2048,0.976896 +4096,1.00966 +8192,0.92672 +16384,1.10797 +32768,1.27898 +65536,1.70803 +131072,2.50266 +262144,4.09088 +524288,7.8377 +1048576,14.7804 +2097152,30.0872 +4194304,56.0456 +8388608,111.658 +16777216,222.723 +33554432,434.443 +67108864,901.28 +16,0.859136 +32,0.521216 +64,0.914432 +128,0.683008 +256,0.657408 +512,0.667648 +1024,0.717824 +2048,0.734208 +4096,0.781312 +8192,0.883712 +16384,1.02912 +32768,1.2288 +65536,1.64352 +131072,2.44736 +262144,3.94342 +524288,7.72915 +1048576,14.5039 +2097152,28.4017 +4194304,55.935 +8388608,110.288 +16777216,218.893 +33554432,444.85 +67108864,884.048 +16,0.75776 +32,0.797696 +64,0.75776 +128,0.754688 +256,0.764928 +512,0.83968 +1024,0.8192 +2048,0.963584 +4096,1.01171 +8192,1.0496 +16384,1.08749 +32768,1.29024 +65536,1.67526 +131072,2.83034 +262144,4.6551 +524288,7.83565 +1048576,14.7282 +2097152,28.1436 +4194304,55.7967 +8388608,111.479 +16777216,223.688 +33554432,437.901 +67108864,898.951 +16,0.82432 +32,0.758784 +64,0.755712 +128,0.909312 +256,0.785408 +512,0.763904 +1024,0.83968 +2048,0.925696 +4096,0.768 +8192,0.960512 +16384,1.00147 +32768,1.24006 +65536,1.64762 +131072,2.43507 +262144,4.01408 +524288,7.4496 +1048576,14.7876 +2097152,29.0458 +4194304,56.2074 +8388608,110.121 +16777216,220.278 +33554432,446.106 +67108864,881.344 +16,0.795648 +32,0.932864 +64,0.81408 +128,0.729088 +256,1.23085 +512,0.786432 +1024,0.760832 +2048,0.95744 +4096,0.73728 +8192,0.86528 +16384,1.02707 +32768,1.45203 +65536,1.84832 +131072,2.72486 +262144,4.36531 +524288,7.72608 +1048576,15.19 +2097152,28.5563 +4194304,56.322 +8388608,110.356 +16777216,223.835 +33554432,436.265 +67108864,903.409 +16,0.792576 +32,1.62509 +64,0.755712 +128,0.768 +256,0.833536 +512,0.806912 +1024,0.823296 +2048,0.88064 +4096,0.886784 +8192,1.05165 +16384,1.17658 +32768,1.3097 +65536,1.6681 +131072,2.51085 +262144,4.08064 +524288,7.95648 +1048576,14.6401 +2097152,28.9454 +4194304,55.5028 +8388608,110.605 +16777216,218.246 +33554432,444.948 +67108864,882.526 +16,0.878592 +32,0.684032 +64,0.77824 +128,0.825344 +256,0.755712 +512,0.80384 +1024,0.772096 +2048,0.841728 +4096,0.971776 +8192,1.05984 +16384,1.07725 +32768,1.21242 +65536,1.61382 +131072,3.03002 +262144,3.97824 +524288,7.84794 +1048576,16.0666 +2097152,28.1242 +4194304,56.5402 +8388608,110.296 +16777216,224.589 +33554432,434.642 +67108864,900.224 +16,0.7936 +32,0.830464 +64,0.782336 +128,0.73728 +256,0.858112 +512,0.842752 +1024,0.841728 +2048,0.723968 +4096,0.792576 +8192,1.02502 +16384,1.00045 +32768,1.1561 +65536,1.62714 +131072,2.45965 +262144,4.00282 +524288,7.93395 +1048576,15.1409 +2097152,29.3294 +4194304,55.4445 +8388608,110.054 +16777216,219.136 +33554432,445.218 +67108864,883.508 +16,0.789504 +32,0.740352 +64,0.825344 +128,0.850944 +256,0.825344 +512,0.794624 +1024,0.792576 +2048,0.75776 +4096,0.856064 +8192,1.08339 +16384,1.08851 +32768,1.21037 +65536,1.65786 +131072,3.04026 +262144,3.98541 +524288,7.67795 +1048576,14.8081 +2097152,27.9562 +4194304,55.9442 +8388608,110.22 +16777216,224.099 +33554432,433.537 +67108864,900.071 +16,0.776192 +32,0.758784 +64,1.00352 +128,0.797696 +256,0.770048 +512,0.882688 +1024,0.80384 +2048,0.751616 +4096,0.7936 +8192,0.850944 +16384,0.997376 +32768,1.2288 +65536,1.64557 +131072,2.46477 +262144,3.99155 +524288,7.7353 +1048576,14.4056 +2097152,28.4846 +4194304,55.2765 +8388608,111.294 +16777216,219.343 +33554432,447.744 +67108864,884.187 +16,0.792576 +32,0.672768 +64,0.878592 +128,1.02605 +256,0.651264 +512,0.692224 +1024,0.718848 +2048,0.736256 +4096,0.774144 +8192,0.878592 +16384,1.14586 +32768,1.19194 +65536,1.6343 +131072,2.3767 +262144,4.04582 +524288,7.5223 +1048576,14.8613 +2097152,28.7212 +4194304,56.4511 +8388608,110.94 +16777216,222.72 +33554432,4.26401e+06 +67108864,903.76 +16,0.67584 +32,0.746496 +64,1.21242 +128,0.766976 +256,0.768 +512,0.763904 +1024,1.2032 +2048,0.964608 +4096,0.908288 +8192,0.90112 +16384,1.11821 +32768,1.26771 +65536,1.77152 +131072,2.37261 +262144,3.9168 +524288,7.4711 +1048576,14.5736 +2097152,30.1926 +4194304,55.5008 +8388608,110.71 +16777216,219.989 +33554432,448.017 +67108864,887.389 +16,0.774144 +32,0.826368 +64,0.852992 +128,0.779264 +256,0.826368 +512,0.986112 +1024,0.93184 +2048,0.673792 +4096,1.34451 +8192,1.08544 +16384,1.18886 +32768,1.26566 +65536,1.70598 +131072,2.51085 +262144,4.37658 +524288,7.99027 diff --git a/Project2-Stream-Compaction/data/Scan_data/data_pow2/naive.csv b/Project2-Stream-Compaction/data/Scan_data/data_pow2/naive.csv new file mode 100644 index 0000000..e63a877 --- /dev/null +++ b/Project2-Stream-Compaction/data/Scan_data/data_pow2/naive.csv @@ -0,0 +1,4548 @@ +16,0.627712 +32,0.48128 +64,0.508928 +128,0.717792 +256,0.538624 +512,0.551936 +1024,1.0537 +2048,0.531456 +4096,0.733184 +8192,0.727072 +16384,0.996352 +32768,0.939008 +65536,1.44592 +131072,2.38182 +262144,4.28954 +524288,7.90118 +1048576,14.8235 +2097152,36.31 +4194304,58.5708 +8388608,117.863 +16777216,233.671 +33554432,465.16 +67108864,937.827 +16,0.530432 +32,0.474112 +64,0.45056 +128,0.768 +256,0.570368 +512,0.731136 +1024,0.63488 +2048,0.653312 +4096,0.57344 +8192,0.666624 +16384,0.774144 +32768,0.973824 +65536,1.83091 +131072,2.23846 +262144,4.68275 +524288,7.59501 +1048576,15.5761 +2097152,29.7062 +4194304,60.0996 +8388608,115.229 +16777216,229.801 +33554432,465.141 +67108864,940.084 +16,0.48128 +32,0.745472 +64,0.6144 +128,0.4864 +256,0.72192 +512,0.54784 +1024,0.628736 +2048,0.601088 +4096,0.57856 +8192,0.840704 +16384,0.8704 +32768,0.939008 +65536,1.34042 +131072,2.23539 +262144,4.2537 +524288,8.02509 +1048576,15.6867 +2097152,29.0591 +4194304,58.0065 +8388608,114.598 +16777216,231.28 +33554432,463.702 +67108864,939.568 +16,0.494592 +32,0.482304 +64,0.681984 +128,0.557056 +256,0.738304 +512,0.509952 +1024,0.524288 +2048,0.512 +4096,0.576512 +8192,0.653312 +16384,0.7424 +32768,1.0905 +65536,1.34144 +131072,2.68691 +262144,4.22093 +524288,7.69331 +1048576,14.974 +2097152,30.166 +4194304,57.6276 +8388608,117.001 +16777216,231.218 +33554432,468.751 +67108864,938.879 +16,0.550912 +32,0.454656 +64,0.462848 +128,0.47104 +256,0.6144 +512,0.934912 +1024,0.574464 +2048,0.590848 +4096,0.592896 +8192,0.61952 +16384,0.779264 +32768,1.16326 +65536,1.33632 +131072,2.71462 +262144,4.5271 +524288,7.64928 +1048576,14.8582 +2097152,29.1564 +4194304,57.812 +8388608,115.611 +16777216,230.357 +33554432,463.228 +67108864,948.669 +16,0.611328 +32,0.49664 +64,0.46592 +128,0.514048 +256,0.489472 +512,0.500736 +1024,0.72704 +2048,0.550912 +4096,0.589824 +8192,0.969728 +16384,0.731136 +32768,0.973824 +65536,1.41517 +131072,2.24768 +262144,4.25779 +524288,8.47258 +1048576,15.5873 +2097152,29.5209 +4194304,58.1868 +8388608,114.802 +16777216,229.404 +33554432,466.807 +67108864,938.063 +16,0.51712 +32,0.463872 +64,0.468992 +128,0.48128 +256,0.53248 +512,0.800768 +1024,0.644096 +2048,0.683008 +4096,0.569344 +8192,0.915456 +16384,0.739328 +32768,0.94208 +65536,1.54522 +131072,2.19136 +262144,4.58854 +524288,8.21555 +1048576,15.3805 +2097152,30.9412 +4194304,57.943 +8388608,116.359 +16777216,231.536 +33554432,465.847 +67108864,938.596 +16,0.45056 +32,0.461824 +64,0.585728 +128,0.478208 +256,0.489472 +512,0.52736 +1024,0.551936 +2048,0.545792 +4096,0.59392 +8192,0.646144 +16384,0.786432 +32768,1.00147 +65536,1.37114 +131072,2.73408 +262144,4.1472 +524288,7.7271 +1048576,15.1204 +2097152,29.0652 +4194304,57.6225 +8388608,115.717 +16777216,230.266 +33554432,465.664 +67108864,941.268 +16,0.456704 +32,0.820224 +64,0.45568 +128,0.509952 +256,0.835584 +512,0.539648 +1024,0.543744 +2048,0.569344 +4096,1.15712 +8192,0.608256 +16384,0.780288 +32768,0.992256 +65536,1.47046 +131072,2.16986 +262144,4.60186 +524288,8.01075 +1048576,16.1157 +2097152,29.9428 +4194304,57.685 +8388608,113.651 +16777216,230.844 +33554432,467.326 +67108864,943.157 +16,0.493568 +32,0.498688 +64,0.499712 +128,0.548864 +256,0.530432 +512,0.774144 +1024,0.5376 +2048,0.651264 +4096,1.09363 +8192,0.62464 +16384,0.770048 +32768,0.966656 +65536,1.37011 +131072,2.2231 +262144,4.23117 +524288,7.76806 +1048576,15.3999 +2097152,30.4108 +4194304,59.477 +8388608,114.986 +16777216,230.269 +33554432,465.048 +67108864,940.78 +16,0.626688 +32,0.459776 +64,0.60928 +128,0.50176 +256,0.466944 +512,0.497664 +1024,0.52736 +2048,0.54784 +4096,0.567296 +8192,0.748544 +16384,0.738304 +32768,0.991232 +65536,1.33939 +131072,2.1248 +262144,4.0704 +524288,7.94931 +1048576,15.445 +2097152,29.2106 +4194304,58.5032 +8388608,115.372 +16777216,231.34 +33554432,467.243 +67108864,936.618 +16,0.530432 +32,0.528384 +64,0.530432 +128,0.47616 +256,0.487424 +512,0.530432 +1024,0.52224 +2048,0.564192 +4096,0.608256 +8192,0.6144 +16384,0.776192 +32768,0.98304 +65536,1.39674 +131072,2.23027 +262144,4.21478 +524288,7.70355 +1048576,15.2525 +2097152,29.481 +4194304,57.9584 +8388608,114.558 +16777216,230.139 +33554432,468.652 +67108864,938.951 +16,0.477184 +32,0.47104 +64,0.869376 +128,0.704512 +256,0.560128 +512,0.50176 +1024,0.989184 +2048,0.661504 +4096,1.49914 +8192,0.743424 +16384,1.12333 +32768,1.06598 +65536,2.23232 +131072,2.25382 +262144,4.06938 +524288,8.09984 +1048576,14.4108 +2097152,29.1133 +4194304,57.8038 +8388608,114.817 +16777216,230.921 +33554432,465.727 +67108864,938.719 +16,0.518144 +32,0.513024 +64,0.463872 +128,0.48128 +256,0.59392 +512,0.50176 +1024,0.58368 +2048,0.545792 +4096,0.569344 +8192,0.649216 +16384,0.745472 +32768,0.973824 +65536,1.37114 +131072,2.18726 +262144,4.21376 +524288,7.62675 +1048576,14.5735 +2097152,29.1236 +4194304,58.5585 +8388608,115.548 +16777216,230.774 +33554432,463.902 +67108864,940.152 +16,1.9927 +32,0.45056 +64,0.464896 +128,0.5632 +256,0.529408 +512,0.499712 +1024,0.526336 +2048,0.723968 +4096,0.579584 +8192,0.736256 +16384,0.800768 +32768,0.950272 +65536,1.38957 +131072,2.2569 +262144,4.48307 +524288,8.08448 +1048576,15.3539 +2097152,29.6643 +4194304,57.4474 +8388608,114.161 +16777216,231.057 +33554432,464.186 +67108864,937.216 +16,0.492544 +32,0.509952 +64,0.461824 +128,0.505856 +256,0.508928 +512,1.44589 +1024,0.55296 +2048,0.541696 +4096,0.651264 +8192,0.622592 +16384,0.745472 +32768,1.02912 +65536,2.00294 +131072,2.26202 +262144,4.14717 +524288,7.85613 +1048576,16.297 +2097152,29.7728 +4194304,57.5099 +8388608,114.75 +16777216,231.304 +33554432,464.327 +67108864,937.515 +16,0.472064 +32,0.499712 +64,0.756736 +128,0.498688 +256,0.744448 +512,0.533504 +1024,0.90624 +2048,0.57856 +4096,0.57856 +8192,0.663552 +16384,0.718848 +32768,0.992256 +65536,1.37114 +131072,2.13094 +262144,4.3008 +524288,8.52685 +1048576,15.3426 +2097152,29.5199 +4194304,57.7935 +8388608,115.233 +16777216,231.21 +33554432,467.787 +67108864,937.76 +16,0.475136 +32,0.553984 +64,0.52224 +128,0.590848 +256,0.484352 +512,0.561152 +1024,0.528384 +2048,0.637952 +4096,1.59539 +8192,0.616448 +16384,0.751616 +32768,0.9472 +65536,1.58618 +131072,2.18726 +262144,4.22195 +524288,8.03123 +1048576,14.8429 +2097152,30.0134 +4194304,58.0516 +8388608,114.573 +16777216,230.672 +33554432,464.937 +67108864,935.895 +16,0.50176 +32,0.451584 +64,0.545792 +128,0.81408 +256,0.4864 +512,0.502784 +1024,0.736256 +2048,0.543744 +4096,0.57856 +8192,0.693248 +16384,0.745472 +32768,1.49504 +65536,2.2825 +131072,2.4832 +262144,4.20352 +524288,7.62573 +1048576,15.2719 +2097152,28.9761 +4194304,58.7418 +8388608,116.295 +16777216,230.463 +33554432,465.522 +67108864,935.852 +16,0.446464 +32,0.500736 +64,0.483328 +128,0.600064 +256,0.519168 +512,0.540672 +1024,0.572416 +2048,0.559104 +4096,0.57344 +8192,0.944128 +16384,0.91648 +32768,0.945152 +65536,1.85446 +131072,2.30605 +262144,4.18816 +524288,7.7568 +1048576,15.0405 +2097152,29.099 +4194304,58.1448 +8388608,114.524 +16777216,229.671 +33554432,466.651 +67108864,940.405 +16,0.481248 +32,0.54272 +64,0.539648 +128,0.48128 +256,0.499712 +512,0.499712 +1024,0.5632 +2048,0.710656 +4096,0.575488 +8192,0.770048 +16384,0.770048 +32768,1.16634 +65536,1.94867 +131072,2.22515 +262144,4.21478 +524288,7.62982 +1048576,14.5142 +2097152,28.8072 +4194304,58.0239 +8388608,116.434 +16777216,230.596 +33554432,464.725 +67108864,940.391 +16,0.479232 +32,0.530432 +64,0.570368 +128,0.65536 +256,0.825344 +512,0.498688 +1024,0.5376 +2048,1.44589 +4096,0.571392 +8192,0.652288 +16384,0.77312 +32768,0.996352 +65536,1.39162 +131072,2.75354 +262144,4.21376 +524288,7.62266 +1048576,16.1106 +2097152,29.5516 +4194304,58.7766 +8388608,114.338 +16777216,228.565 +33554432,467.853 +67108864,939.542 +16,0.477184 +32,0.710656 +64,0.462848 +128,0.516096 +256,0.494592 +512,0.697344 +1024,0.530432 +2048,0.557056 +4096,0.572416 +8192,0.815104 +16384,0.946176 +32768,1.59334 +65536,1.67731 +131072,2.18726 +262144,4.19635 +524288,7.72608 +1048576,14.9463 +2097152,29.5096 +4194304,57.5468 +8388608,114.381 +16777216,229.625 +33554432,466.641 +67108864,939.092 +16,0.4608 +32,0.548864 +64,0.472064 +128,0.661504 +256,0.508928 +512,0.65024 +1024,0.523264 +2048,0.536576 +4096,0.816128 +8192,0.654336 +16384,0.7424 +32768,0.948224 +65536,1.3353 +131072,2.24973 +262144,5.16506 +524288,7.97491 +1048576,14.9821 +2097152,29.6837 +4194304,58.0454 +8388608,115.397 +16777216,230.532 +33554432,467.752 +67108864,941.31 +16,0.523264 +32,0.46592 +64,1.15098 +128,0.50688 +256,0.58368 +512,0.544768 +1024,0.594944 +2048,0.920576 +4096,1.05574 +8192,0.635904 +16384,0.891904 +32768,0.96768 +65536,1.34349 +131072,2.22822 +262144,4.1984 +524288,7.64621 +1048576,15.5546 +2097152,29.2157 +4194304,58.9455 +8388608,114.563 +16777216,230.131 +33554432,464.132 +67108864,945.135 +16,0.543744 +32,0.64512 +64,0.641024 +128,0.574464 +256,0.516096 +512,0.63488 +1024,0.70144 +2048,0.598016 +4096,0.570368 +8192,0.816128 +16384,0.90112 +32768,1.09568 +65536,1.53293 +131072,2.40845 +262144,4.48819 +524288,7.75066 +1048576,14.9299 +2097152,29.6202 +4194304,57.8642 +8388608,114.44 +16777216,230.314 +33554432,464.259 +67108864,943.115 +16,0.775168 +32,0.566272 +64,0.488448 +128,0.656384 +256,0.52224 +512,0.836608 +1024,0.513024 +2048,0.544768 +4096,1.11923 +8192,0.841728 +16384,1.02195 +32768,0.971776 +65536,1.34758 +131072,2.18624 +262144,4.17997 +524288,7.7353 +1048576,15.4552 +2097152,28.8215 +4194304,58.3803 +8388608,113.853 +16777216,231.175 +33554432,464.514 +67108864,936.616 +16,0.693248 +32,0.453632 +64,0.720896 +128,0.902144 +256,1.59027 +512,0.49664 +1024,0.524288 +2048,0.572416 +4096,0.574464 +8192,0.616448 +16384,0.907264 +32768,0.974848 +65536,1.35373 +131072,2.20262 +262144,4.84352 +524288,8.27699 +1048576,15.445 +2097152,29.5793 +4194304,57.0798 +8388608,114.815 +16777216,230.529 +33554432,465.477 +67108864,942.428 +16,0.557056 +32,0.457728 +64,0.495616 +128,0.620544 +256,0.514048 +512,0.493568 +1024,0.586752 +2048,0.543744 +4096,0.626688 +8192,1.64659 +16384,0.770048 +32768,1.26157 +65536,1.7193 +131072,2.29478 +262144,4.28442 +524288,7.7783 +1048576,15.702 +2097152,29.4052 +4194304,58.8483 +8388608,116.205 +16777216,230.328 +33554432,466.985 +67108864,938.969 +16,0.468992 +32,0.60416 +64,0.482304 +128,0.477184 +256,0.488448 +512,0.500736 +1024,0.521216 +2048,0.833536 +4096,0.606208 +8192,0.659456 +16384,0.776192 +32768,0.9728 +65536,1.83091 +131072,2.6368 +262144,4.14515 +524288,8.30464 +1048576,15.3979 +2097152,30.0104 +4194304,58.1335 +8388608,113.001 +16777216,229.25 +33554432,464.711 +67108864,937.397 +16,0.656352 +32,0.973824 +64,0.480256 +128,0.538624 +256,0.60416 +512,0.497664 +1024,0.751616 +2048,0.539648 +4096,0.570368 +8192,0.7936 +16384,0.905216 +32768,1.35168 +65536,1.93434 +131072,2.42381 +262144,4.24448 +524288,7.6759 +1048576,15.3539 +2097152,29.7861 +4194304,57.9092 +8388608,115.299 +16777216,229.519 +33554432,464.777 +67108864,937.957 +16,0.539648 +32,0.606208 +64,0.46592 +128,0.565248 +256,0.47616 +512,0.497664 +1024,0.524288 +2048,0.574464 +4096,0.846848 +8192,0.856064 +16384,0.836608 +32768,1.26362 +65536,2.03059 +131072,2.18829 +262144,4.19226 +524288,8.21965 +1048576,15.3692 +2097152,30.0063 +4194304,58.1089 +8388608,115.922 +16777216,231.349 +33554432,467.756 +67108864,940.266 +16,0.656384 +32,0.50176 +64,0.47104 +128,0.478208 +256,0.4864 +512,0.574464 +1024,0.572416 +2048,0.589824 +4096,0.575488 +8192,0.60928 +16384,0.766976 +32768,0.974848 +65536,1.4807 +131072,2.65626 +262144,4.11853 +524288,7.87456 +1048576,15.0446 +2097152,30.4916 +4194304,57.7004 +8388608,117.496 +16777216,231.195 +33554432,466.08 +67108864,938.511 +16,0.643072 +32,0.4608 +64,0.475136 +128,0.482304 +256,0.488448 +512,0.550912 +1024,0.516096 +2048,0.545792 +4096,0.571392 +8192,0.9216 +16384,0.827392 +32768,0.950272 +65536,1.3824 +131072,2.15142 +262144,4.20966 +524288,7.64416 +1048576,15.2791 +2097152,29.0365 +4194304,58.1693 +8388608,114.666 +16777216,230.137 +33554432,466.439 +67108864,938.264 +16,0.473088 +32,0.456704 +64,0.47104 +128,0.482304 +256,0.632832 +512,0.50176 +1024,0.550912 +2048,0.577536 +4096,0.60416 +8192,0.625664 +16384,0.766976 +32768,0.974848 +65536,1.46432 +131072,2.21082 +262144,4.77696 +524288,7.64928 +1048576,15.0671 +2097152,30.0442 +4194304,58.1847 +8388608,115.329 +16777216,231.094 +33554432,465.576 +67108864,935.934 +16,0.731136 +32,0.453632 +64,0.468992 +128,0.630784 +256,0.479232 +512,0.560128 +1024,0.549888 +2048,0.622592 +4096,0.82944 +8192,1.17043 +16384,0.946176 +32768,0.950272 +65536,1.34554 +131072,2.26611 +262144,4.18406 +524288,7.77728 +1048576,15.2084 +2097152,29.099 +4194304,57.9133 +8388608,113.742 +16777216,229.629 +33554432,461.734 +67108864,936.541 +16,0.641024 +32,0.477184 +64,0.468992 +128,0.515072 +256,0.512 +512,0.534528 +1024,0.596992 +2048,0.545792 +4096,0.566272 +8192,0.815104 +16384,0.89088 +32768,1.05165 +65536,1.36704 +131072,2.24051 +262144,4.21888 +524288,7.67386 +1048576,15.8013 +2097152,29.9397 +4194304,58.2902 +8388608,114.765 +16777216,232.208 +33554432,465.816 +67108864,939.154 +16,0.617472 +32,0.663552 +64,0.536576 +128,0.570368 +256,0.553984 +512,0.490496 +1024,0.632832 +2048,0.574464 +4096,0.708576 +8192,1.81555 +16384,0.730112 +32768,1.00454 +65536,1.42336 +131072,2.18522 +262144,4.34074 +524288,7.99642 +1048576,14.85 +2097152,30.2295 +4194304,58.0065 +8388608,114.476 +16777216,231.591 +33554432,468.5 +67108864,940.764 +16,0.847872 +32,0.533504 +64,0.654336 +128,0.472064 +256,0.489472 +512,0.494592 +1024,0.524288 +2048,0.545792 +4096,0.577536 +8192,0.623616 +16384,0.746496 +32768,1.0967 +65536,2.03162 +131072,2.19136 +262144,4.608 +524288,8.58214 +1048576,14.9873 +2097152,28.8522 +4194304,57.2324 +8388608,114.996 +16777216,229.773 +33554432,462.875 +67108864,939.1 +16,0.62464 +32,0.510976 +64,0.467968 +128,0.500736 +256,0.585728 +512,0.535552 +1024,0.571392 +2048,0.559104 +4096,0.591872 +8192,0.754688 +16384,0.7936 +32768,0.966656 +65536,1.40698 +131072,2.17702 +262144,4.32435 +524288,7.8336 +1048576,14.7425 +2097152,29.0734 +4194304,57.9881 +8388608,115.299 +16777216,229.896 +33554432,464.629 +67108864,938.563 +16,0.585728 +32,0.512 +64,0.534528 +128,0.600064 +256,0.596992 +512,0.65536 +1024,0.621568 +2048,0.726016 +4096,0.57344 +8192,0.681984 +16384,0.776192 +32768,1.13152 +65536,1.35475 +131072,2.36544 +262144,5.18042 +524288,8.26675 +1048576,15.2054 +2097152,29.1973 +4194304,58.7571 +8388608,114.582 +16777216,229.722 +33554432,466.059 +67108864,937.008 +16,0.55296 +32,0.493568 +64,0.470016 +128,0.531456 +256,0.483328 +512,0.837632 +1024,0.661504 +2048,0.55296 +4096,0.6912 +8192,0.83968 +16384,0.960512 +32768,1.17043 +65536,1.46022 +131072,2.33062 +262144,4.13901 +524288,7.77523 +1048576,15.0026 +2097152,29.0304 +4194304,59.5384 +8388608,114.557 +16777216,230.48 +33554432,468.098 +67108864,938.229 +16,0.54272 +32,0.452608 +64,0.470016 +128,0.47104 +256,0.493568 +512,0.502784 +1024,0.663552 +2048,0.545792 +4096,0.627712 +8192,0.746496 +16384,0.740352 +32768,0.944128 +65536,1.33939 +131072,2.40435 +262144,4.92646 +524288,8.00256 +1048576,14.7528 +2097152,29.055 +4194304,57.9461 +8388608,114.279 +16777216,229.398 +33554432,466.033 +67108864,938.081 +16,0.718848 +32,0.44544 +64,0.68608 +128,0.479232 +256,0.49152 +512,0.592896 +1024,0.627712 +2048,0.540672 +4096,0.746496 +8192,0.674816 +16384,0.75776 +32768,0.969728 +65536,1.3824 +131072,2.44019 +262144,4.28851 +524288,8.09165 +1048576,16.5089 +2097152,28.8543 +4194304,58.7131 +8388608,113.7 +16777216,230.871 +33554432,466.665 +67108864,938.039 +16,0.677888 +32,0.586752 +64,0.472064 +128,0.526336 +256,0.566272 +512,0.647168 +1024,0.580608 +2048,0.54272 +4096,0.571392 +8192,0.644096 +16384,0.750592 +32768,0.949248 +65536,1.3568 +131072,2.1801 +262144,4.2199 +524288,7.8848 +1048576,15.8874 +2097152,29.1369 +4194304,58.1427 +8388608,115.378 +16777216,231.331 +33554432,466.645 +67108864,941.853 +16,0.618496 +32,0.468992 +64,0.466944 +128,0.510976 +256,0.58368 +512,0.714752 +1024,0.822272 +2048,0.546784 +4096,0.569344 +8192,0.661504 +16384,1.21344 +32768,1.00966 +65536,1.42438 +131072,2.22618 +262144,4.12058 +524288,8.05376 +1048576,15.0876 +2097152,29.0836 +4194304,58.4069 +8388608,114.436 +16777216,230.587 +33554432,465.56 +67108864,938.007 +16,0.67584 +32,0.487424 +64,0.881664 +128,0.601088 +256,0.876544 +512,0.50176 +1024,0.521216 +2048,0.546816 +4096,0.571392 +8192,0.625664 +16384,0.7424 +32768,0.955392 +65536,1.43974 +131072,2.71565 +262144,4.21274 +524288,7.48237 +1048576,15.018 +2097152,29.3427 +4194304,58.9158 +8388608,114.948 +16777216,230.782 +33554432,463.791 +67108864,940.275 +16,0.560128 +32,0.461824 +64,0.524288 +128,0.514048 +256,0.775168 +512,0.494592 +1024,0.518144 +2048,0.544768 +4096,0.851968 +8192,0.794624 +16384,0.884736 +32768,1.46637 +65536,1.43667 +131072,2.20877 +262144,4.27725 +524288,8.49306 +1048576,14.7968 +2097152,29.0386 +4194304,57.7915 +8388608,115.2 +16777216,230.114 +33554432,469.055 +67108864,996.828 +16,0.519168 +32,0.449536 +64,0.608256 +128,0.925696 +256,0.544768 +512,0.697344 +1024,0.628736 +2048,0.550912 +4096,0.557056 +8192,0.65024 +16384,0.789504 +32768,0.986112 +65536,1.42131 +131072,2.2057 +262144,4.25882 +524288,7.94522 +1048576,14.4896 +2097152,29.5086 +4194304,56.8883 +8388608,115.287 +16777216,231.753 +33554432,464.672 +67108864,937.106 +16,0.498688 +32,0.488448 +64,0.475136 +128,0.520192 +256,0.53248 +512,0.538624 +1024,0.66048 +2048,0.546816 +4096,0.57856 +8192,0.663552 +16384,1.11002 +32768,1.07213 +65536,1.42029 +131072,2.82931 +262144,4.20557 +524288,7.80698 +1048576,14.7958 +2097152,30.1906 +4194304,57.726 +8388608,114.45 +16777216,229.887 +33554432,463.845 +67108864,947.16 +16,0.463872 +32,0.539648 +64,0.648192 +128,0.633856 +256,0.62976 +512,0.55808 +1024,0.60416 +2048,0.690176 +4096,0.633856 +8192,0.744448 +16384,0.86016 +32768,1.06189 +65536,1.49504 +131072,2.29683 +262144,4.2455 +524288,8.08448 +1048576,14.5981 +2097152,29.1062 +4194304,58.6076 +8388608,115.852 +16777216,230.553 +33554432,466.23 +67108864,940.224 +16,0.484352 +32,0.575488 +64,0.499712 +128,0.480256 +256,0.494592 +512,0.497664 +1024,0.521216 +2048,0.541696 +4096,0.632832 +8192,0.626688 +16384,0.748544 +32768,1.18374 +65536,1.34758 +131072,2.26406 +262144,4.27622 +524288,7.64006 +1048576,15.4235 +2097152,30.0083 +4194304,57.3757 +8388608,115.145 +16777216,228.875 +33554432,465.866 +67108864,943.01 +16,0.6144 +32,0.497664 +64,0.63488 +128,0.508928 +256,0.493568 +512,0.500736 +1024,0.519168 +2048,0.5376 +4096,0.60416 +8192,0.704512 +16384,0.741376 +32768,0.95232 +65536,1.33837 +131072,2.16064 +262144,4.64794 +524288,7.63085 +1048576,15.318 +2097152,29.9622 +4194304,58.6977 +8388608,114.578 +16777216,231.204 +33554432,463.968 +67108864,938.345 +16,0.65024 +32,0.447488 +64,0.63488 +128,0.718848 +256,0.544768 +512,0.521216 +1024,0.530432 +2048,0.662528 +4096,0.567296 +8192,0.745472 +16384,0.7424 +32768,0.991232 +65536,1.83091 +131072,3.18259 +262144,4.65613 +524288,7.94317 +1048576,15.9826 +2097152,29.3089 +4194304,57.6819 +8388608,114.953 +16777216,230.769 +33554432,463.925 +67108864,939.696 +16,0.519168 +32,0.484352 +64,0.463872 +128,0.504832 +256,0.49152 +512,0.499712 +1024,0.596992 +2048,0.75776 +4096,0.857088 +8192,0.620544 +16384,0.74752 +32768,0.943104 +65536,1.81965 +131072,2.22003 +262144,4.15846 +524288,7.63494 +1048576,14.7825 +2097152,29.2342 +4194304,58.6609 +8388608,114.636 +16777216,229.978 +33554432,465.231 +67108864,940.004 +16,0.6912 +32,0.671744 +64,0.47104 +128,0.480256 +256,0.484352 +512,0.630784 +1024,0.59392 +2048,0.662528 +4096,0.577536 +8192,0.623616 +16384,0.743424 +32768,1.12845 +65536,1.42438 +131072,2.18112 +262144,4.27622 +524288,7.97594 +1048576,15.4614 +2097152,29.4523 +4194304,57.4413 +8388608,115.67 +16777216,230.296 +33554432,466.552 +67108864,943.592 +16,0.774144 +32,0.451584 +64,0.564224 +128,0.67584 +256,0.626688 +512,0.562176 +1024,0.606208 +2048,0.539648 +4096,0.574464 +8192,1.12742 +16384,0.869376 +32768,0.946176 +65536,1.41926 +131072,2.17702 +262144,4.44826 +524288,7.76602 +1048576,15.7563 +2097152,29.2649 +4194304,58.6086 +8388608,114.049 +16777216,228.675 +33554432,465.764 +67108864,939.978 +16,0.764928 +32,0.626688 +64,0.468992 +128,0.518144 +256,1.24109 +512,0.528384 +1024,0.559104 +2048,0.892928 +4096,0.618496 +8192,1.52678 +16384,0.766976 +32768,1.56672 +65536,1.41517 +131072,2.19238 +262144,4.46054 +524288,7.80288 +1048576,15.2709 +2097152,29.2065 +4194304,57.4628 +8388608,114.347 +16777216,230.299 +33554432,465.199 +67108864,939.714 +16,0.756736 +32,0.453632 +64,0.668672 +128,0.489472 +256,0.4864 +512,0.781312 +1024,0.521216 +2048,0.541696 +4096,0.580608 +8192,0.677888 +16384,0.969728 +32768,0.945152 +65536,1.64557 +131072,2.26816 +262144,4.47488 +524288,7.65133 +1048576,15.0528 +2097152,29.4871 +4194304,59.3213 +8388608,115.287 +16777216,230.655 +33554432,465.208 +67108864,938.696 +16,0.637952 +32,0.492544 +64,0.666624 +128,0.524288 +256,0.516096 +512,0.544768 +1024,0.551936 +2048,0.538624 +4096,1.49811 +8192,0.642048 +16384,1.01581 +32768,1.12026 +65536,1.62304 +131072,2.24051 +262144,4.53734 +524288,7.76806 +1048576,14.9197 +2097152,29.7585 +4194304,58.5697 +8388608,114.353 +16777216,230.523 +33554432,466.707 +67108864,941.041 +16,0.523264 +32,0.57856 +64,0.487424 +128,0.478208 +256,0.64 +512,0.498688 +1024,0.526336 +2048,0.661504 +4096,0.579584 +8192,0.62464 +16384,0.743424 +32768,1.0711 +65536,1.40186 +131072,2.21286 +262144,4.28954 +524288,8.02099 +1048576,15.5085 +2097152,29.4021 +4194304,57.7034 +8388608,114.931 +16777216,231.519 +33554432,466.761 +67108864,938.625 +16,0.5632 +32,0.492544 +64,0.57856 +128,0.838656 +256,1.36294 +512,0.503808 +1024,0.62976 +2048,0.540672 +4096,1.00045 +8192,0.636928 +16384,0.908288 +32768,0.982016 +65536,1.37216 +131072,2.19024 +262144,4.19942 +524288,8.17357 +1048576,14.7026 +2097152,29.2547 +4194304,57.5293 +8388608,115.372 +16777216,230.311 +33554432,463.948 +67108864,942.48 +16,0.477184 +32,0.452608 +64,0.464896 +128,0.671744 +256,0.482304 +512,1.58618 +1024,0.524288 +2048,0.540672 +4096,0.585728 +8192,0.656384 +16384,1.03424 +32768,0.944128 +65536,1.3353 +131072,2.33677 +262144,4.48922 +524288,8.05171 +1048576,14.8634 +2097152,28.5768 +4194304,57.7987 +8388608,114.781 +16777216,231.512 +33554432,467.154 +67108864,938.653 +16,0.636928 +32,0.903168 +64,0.493568 +128,0.616448 +256,0.585728 +512,0.50688 +1024,0.540672 +2048,0.669696 +4096,0.584704 +8192,0.722944 +16384,0.80384 +32768,1.09466 +65536,1.6343 +131072,2.20979 +262144,4.29466 +524288,7.7783 +1048576,15.4245 +2097152,28.9044 +4194304,57.4444 +8388608,115.036 +16777216,230.923 +33554432,467.679 +67108864,943.895 +16,0.433152 +32,0.492544 +64,0.67072 +128,0.477184 +256,0.510976 +512,0.72192 +1024,0.534528 +2048,0.55296 +4096,1.28614 +8192,0.635904 +16384,1.07827 +32768,0.943104 +65536,1.65376 +131072,2.21491 +262144,4.28237 +524288,7.65133 +1048576,15.2668 +2097152,28.798 +4194304,57.8181 +8388608,115.154 +16777216,231.698 +33554432,466.472 +67108864,936.567 +16,0.59392 +32,0.559104 +64,0.561152 +128,0.50784 +256,0.485376 +512,0.594944 +1024,0.637952 +2048,0.59392 +4096,0.64 +8192,0.695296 +16384,0.795648 +32768,1.02605 +65536,1.4592 +131072,2.5047 +262144,4.52506 +524288,8.17562 +1048576,15.1122 +2097152,29.4943 +4194304,57.9625 +8388608,114.082 +16777216,230.242 +33554432,465.878 +67108864,936.938 +16,0.489472 +32,0.482304 +64,0.846848 +128,0.507904 +256,0.545792 +512,0.493568 +1024,0.523264 +2048,0.6144 +4096,0.601088 +8192,0.657408 +16384,0.82432 +32768,0.919552 +65536,1.38342 +131072,2.28557 +262144,4.24755 +524288,7.81312 +1048576,15.0948 +2097152,30.0349 +4194304,58.1253 +8388608,115.015 +16777216,230.461 +33554432,465.29 +67108864,940.206 +16,0.669696 +32,0.48128 +64,0.518144 +128,0.510976 +256,0.502784 +512,0.5376 +1024,0.764928 +2048,0.50176 +4096,0.533504 +8192,0.837632 +16384,0.733184 +32768,1.53907 +65536,1.43462 +131072,2.18829 +262144,4.2967 +524288,8.49613 +1048576,15.0682 +2097152,29.1287 +4194304,59.3449 +8388608,115.498 +16777216,231.758 +33554432,467.662 +67108864,938.266 +16,0.601088 +32,0.515072 +64,0.585728 +128,0.468992 +256,0.516096 +512,0.49152 +1024,0.516096 +2048,0.631808 +4096,0.569344 +8192,0.69632 +16384,0.77824 +32768,0.989184 +65536,1.38752 +131072,2.29069 +262144,4.19738 +524288,8.47462 +1048576,15.1972 +2097152,28.9935 +4194304,57.2129 +8388608,114.547 +16777216,230.285 +33554432,466.108 +67108864,941.127 +16,0.612352 +32,0.5632 +64,0.47104 +128,0.468992 +256,0.733184 +512,0.46592 +1024,0.77824 +2048,0.64512 +4096,0.586752 +8192,0.579584 +16384,0.886784 +32768,0.982016 +65536,1.31994 +131072,2.24256 +262144,4.22605 +524288,8.27085 +1048576,14.9647 +2097152,30.0605 +4194304,58.626 +8388608,114.961 +16777216,229.65 +33554432,464.561 +67108864,940.171 +16,0.446464 +32,0.53248 +64,0.601088 +128,0.493568 +256,0.512 +512,0.679936 +1024,0.485376 +2048,0.548864 +4096,0.768 +8192,0.616448 +16384,0.879616 +32768,1.41926 +65536,1.42029 +131072,2.24461 +262144,4.36941 +524288,8.22989 +1048576,15.2975 +2097152,29.3417 +4194304,58.4581 +8388608,113.896 +16777216,229.769 +33554432,465.352 +67108864,938.127 +16,0.602112 +32,0.489472 +64,0.494592 +128,0.702464 +256,0.6144 +512,0.516096 +1024,0.600064 +2048,0.753664 +4096,0.622592 +8192,0.674816 +16384,0.9472 +32768,1.19296 +65536,1.32096 +131072,2.33472 +262144,4.48512 +524288,8.38963 +1048576,15.573 +2097152,29.9725 +4194304,57.9359 +8388608,113.907 +16777216,230.284 +33554432,466.014 +67108864,937.05 +16,0.534528 +32,1.21139 +64,0.489472 +128,0.65024 +256,0.545792 +512,0.698368 +1024,0.643072 +2048,0.871424 +4096,0.644096 +8192,0.647168 +16384,0.774144 +32768,1.06701 +65536,1.54112 +131072,2.82931 +262144,4.49843 +524288,8.20838 +1048576,14.804 +2097152,29.7656 +4194304,57.1105 +8388608,113.699 +16777216,231.2 +33554432,464.931 +67108864,940.006 +16,0.695296 +32,0.48128 +64,0.531456 +128,0.760832 +256,0.859136 +512,0.487424 +1024,0.492544 +2048,0.544768 +4096,0.647168 +8192,0.577536 +16384,0.913408 +32768,0.961536 +65536,1.664 +131072,2.24973 +262144,4.2281 +524288,8.24422 +1048576,15.2146 +2097152,29.4574 +4194304,58.0321 +8388608,113.857 +16777216,230.323 +33554432,466.492 +67108864,941.881 +16,0.579584 +32,0.81408 +64,0.616448 +128,0.73728 +256,0.53248 +512,0.52224 +1024,0.544768 +2048,0.777216 +4096,0.980992 +8192,0.584704 +16384,0.789504 +32768,1.21344 +65536,1.40083 +131072,2.71462 +262144,4.42778 +524288,7.80698 +1048576,15.361 +2097152,29.1686 +4194304,57.8273 +8388608,114.365 +16777216,232.1 +33554432,469.025 +67108864,948.478 +16,0.65536 +32,0.550912 +64,0.459776 +128,0.520192 +256,0.507904 +512,0.530432 +1024,0.627712 +2048,0.5376 +4096,0.580608 +8192,0.641024 +16384,0.806912 +32768,1.00659 +65536,1.42643 +131072,2.54566 +262144,4.51174 +524288,8.26061 +1048576,15.5955 +2097152,29.823 +4194304,57.8693 +8388608,115.983 +16777216,231.41 +33554432,465.335 +67108864,938.019 +16,0.671744 +32,0.571392 +64,0.500736 +128,0.495616 +256,0.502784 +512,0.514048 +1024,0.559104 +2048,1.152 +4096,0.600064 +8192,1.30662 +16384,0.750592 +32768,0.974848 +65536,1.41926 +131072,2.22003 +262144,4.17485 +524288,7.72096 +1048576,15.0159 +2097152,29.7943 +4194304,57.7075 +8388608,115.554 +16777216,231.709 +33554432,466.05 +67108864,942.353 +16,0.458752 +32,0.442368 +64,0.584704 +128,0.498688 +256,0.516096 +512,0.51712 +1024,0.539648 +2048,0.559104 +4096,0.59392 +8192,0.638976 +16384,0.825344 +32768,1.07008 +65536,1.41824 +131072,2.26509 +262144,4.19226 +524288,7.88378 +1048576,16.0154 +2097152,29.8619 +4194304,59.1329 +8388608,115.3 +16777216,231.922 +33554432,466.606 +67108864,938.637 +16,0.7424 +32,0.64 +64,0.613376 +128,0.533504 +256,0.59392 +512,0.513024 +1024,0.488448 +2048,0.526336 +4096,0.586752 +8192,1.14483 +16384,0.801792 +32768,0.982016 +65536,1.43155 +131072,2.25997 +262144,4.20352 +524288,7.69741 +1048576,15.2044 +2097152,30.3176 +4194304,57.726 +8388608,115.035 +16777216,230.307 +33554432,465.286 +67108864,938.825 +16,0.570368 +32,0.490496 +64,0.513024 +128,0.509952 +256,0.479232 +512,0.489472 +1024,0.549888 +2048,0.5632 +4096,0.590848 +8192,0.697344 +16384,0.771072 +32768,1.02707 +65536,1.41312 +131072,2.17293 +262144,4.34688 +524288,8.01075 +1048576,14.7876 +2097152,28.8389 +4194304,58.1038 +8388608,113.901 +16777216,229.092 +33554432,464.385 +67108864,936.335 +16,0.446464 +32,0.479232 +64,0.489472 +128,0.831488 +256,0.507904 +512,0.531456 +1024,0.549888 +2048,0.549888 +4096,0.549888 +8192,0.709632 +16384,1.29741 +32768,1.03936 +65536,1.3783 +131072,2.21901 +262144,4.21171 +524288,7.61242 +1048576,14.551 +2097152,28.9802 +4194304,57.9501 +8388608,114.305 +16777216,230.727 +33554432,464.083 +67108864,939.845 +16,0.503808 +32,0.657408 +64,0.738304 +128,0.598016 +256,0.54272 +512,0.580608 +1024,0.546816 +2048,0.653312 +4096,0.787456 +8192,0.666624 +16384,0.923648 +32768,1.02605 +65536,1.37216 +131072,2.21389 +262144,4.04173 +524288,7.64006 +1048576,15.4962 +2097152,29.6571 +4194304,57.8591 +8388608,114.726 +16777216,230.937 +33554432,465.448 +67108864,936.715 +16,0.457728 +32,0.473088 +64,0.607232 +128,0.495616 +256,0.50176 +512,0.46592 +1024,0.54784 +2048,0.564224 +4096,0.581632 +8192,0.856064 +16384,1.41722 +32768,1.00352 +65536,1.33018 +131072,2.2313 +262144,4.20454 +524288,7.61856 +1048576,14.9248 +2097152,29.143 +4194304,58.6527 +8388608,114.267 +16777216,231.902 +33554432,466.764 +67108864,938.532 +16,0.669696 +32,0.480256 +64,0.499712 +128,0.869376 +256,0.683008 +512,0.56832 +1024,0.54784 +2048,0.524288 +4096,0.658432 +8192,0.636928 +16384,0.979968 +32768,1.03322 +65536,1.38854 +131072,2.26099 +262144,4.21069 +524288,7.98208 +1048576,15.1204 +2097152,29.5455 +4194304,57.814 +8388608,114.309 +16777216,228.775 +33554432,465.623 +67108864,938.668 +16,0.574464 +32,0.485376 +64,0.49152 +128,0.603136 +256,0.48128 +512,0.628736 +1024,0.862208 +2048,0.723968 +4096,1.40493 +8192,0.999424 +16384,0.84992 +32768,1.00352 +65536,1.41926 +131072,2.23949 +262144,4.05299 +524288,7.62163 +1048576,15.1245 +2097152,30.2049 +4194304,58.3772 +8388608,115.491 +16777216,231.901 +33554432,465.484 +67108864,939.456 +16,0.65024 +32,0.80384 +64,0.582656 +128,0.54272 +256,0.502784 +512,0.499712 +1024,0.545792 +2048,0.592896 +4096,0.553984 +8192,0.643072 +16384,1.0281 +32768,0.974848 +65536,1.42336 +131072,2.20979 +262144,4.1984 +524288,7.9657 +1048576,15.444 +2097152,29.5526 +4194304,57.3082 +8388608,115.062 +16777216,230.185 +33554432,465.247 +67108864,943.087 +16,0.828416 +32,0.688128 +64,0.494592 +128,0.704512 +256,0.48128 +512,0.487424 +1024,0.739328 +2048,0.5888 +4096,0.582656 +8192,0.6656 +16384,0.764928 +32768,1.05574 +65536,1.41414 +131072,2.29683 +262144,4.18406 +524288,8.56883 +1048576,15.2863 +2097152,28.631 +4194304,58.1499 +8388608,115.805 +16777216,232.514 +33554432,468.308 +67108864,942.82 +16,0.692224 +32,0.472064 +64,0.4864 +128,0.534528 +256,0.654336 +512,0.510976 +1024,0.651264 +2048,0.567296 +4096,0.587776 +8192,0.797696 +16384,0.774144 +32768,0.937984 +65536,1.42438 +131072,2.22618 +262144,4.2711 +524288,7.64518 +1048576,15.3149 +2097152,29.5916 +4194304,58.8052 +8388608,113.896 +16777216,231.187 +33554432,464.271 +67108864,935.513 +16,0.663552 +32,0.488448 +64,0.617472 +128,0.7424 +256,0.635904 +512,0.52736 +1024,0.571392 +2048,0.556032 +4096,0.598016 +8192,0.643072 +16384,0.881664 +32768,1.96915 +65536,1.50528 +131072,2.22106 +262144,4.23318 +524288,7.70355 +1048576,14.592 +2097152,28.7539 +4194304,57.8396 +8388608,114.873 +16777216,229.697 +33554432,464.266 +67108864,941.756 +16,0.507904 +32,0.477184 +64,0.603136 +128,0.64 +256,0.935936 +512,0.523264 +1024,0.54272 +2048,0.564224 +4096,0.571392 +8192,0.864256 +16384,0.838656 +32768,1.11411 +65536,1.63328 +131072,2.24154 +262144,4.20966 +524288,8.23296 +1048576,15.8802 +2097152,28.9126 +4194304,58.6516 +8388608,114.916 +16777216,230.631 +33554432,464.713 +67108864,943.143 +16,0.479232 +32,0.446464 +64,0.714752 +128,0.681984 +256,0.533504 +512,0.503808 +1024,0.689152 +2048,0.658432 +4096,0.709632 +8192,0.717824 +16384,1.18784 +32768,1.02502 +65536,1.52269 +131072,2.23642 +262144,4.20352 +524288,7.96467 +1048576,14.7599 +2097152,29.097 +4194304,57.9615 +8388608,115.154 +16777216,230.64 +33554432,464.632 +67108864,935.198 +16,0.519168 +32,0.484352 +64,0.654336 +128,0.807936 +256,0.924672 +512,0.553984 +1024,0.515072 +2048,0.638976 +4096,0.666624 +8192,0.630784 +16384,0.96768 +32768,1.37523 +65536,1.4336 +131072,2.18931 +262144,4.46157 +524288,8.10086 +1048576,15.0067 +2097152,28.9167 +4194304,57.8796 +8388608,116.527 +16777216,229.638 +33554432,464.985 +67108864,939.848 +16,0.66048 +32,0.503808 +64,0.703488 +128,0.68096 +256,0.521216 +512,0.49152 +1024,0.574464 +2048,1.11514 +4096,0.600064 +8192,0.702464 +16384,0.764928 +32768,0.973824 +65536,1.41312 +131072,2.20058 +262144,4.06835 +524288,7.60832 +1048576,14.892 +2097152,28.9935 +4194304,57.7516 +8388608,114.96 +16777216,234.398 +33554432,466.508 +67108864,941.678 +16,0.611328 +32,0.45568 +64,0.514048 +128,0.523264 +256,0.500736 +512,0.751616 +1024,0.576512 +2048,0.566272 +4096,0.625664 +8192,0.637952 +16384,0.78336 +32768,0.98304 +65536,1.42643 +131072,2.22618 +262144,4.14106 +524288,7.57453 +1048576,15.06 +2097152,29.6571 +4194304,58.8186 +8388608,115.373 +16777216,230.075 +33554432,466.158 +67108864,940.852 +16,0.6144 +32,0.493568 +64,0.513024 +128,0.49664 +256,0.514048 +512,0.559104 +1024,0.565248 +2048,0.531456 +4096,0.765952 +8192,0.598016 +16384,0.774144 +32768,1.08749 +65536,1.34656 +131072,2.29274 +262144,4.53632 +524288,7.63699 +1048576,15.1685 +2097152,29.1062 +4194304,58.0229 +8388608,115.471 +16777216,231.41 +33554432,465.12 +67108864,937.887 +16,0.7168 +32,0.463872 +64,0.515072 +128,0.666624 +256,0.482304 +512,0.54784 +1024,0.5376 +2048,0.585728 +4096,0.543744 +8192,0.644096 +16384,0.86016 +32768,0.971776 +65536,1.41722 +131072,2.19853 +262144,4.3479 +524288,8.15408 +1048576,15.1398 +2097152,29.4728 +4194304,57.5785 +8388608,115.139 +16777216,231.884 +33554432,466.914 +67108864,942.167 +16,0.65536 +32,0.62464 +64,0.463872 +128,0.494592 +256,0.493568 +512,1.01069 +1024,0.534528 +2048,0.5632 +4096,0.822272 +8192,0.633856 +16384,0.768 +32768,0.968704 +65536,1.61792 +131072,2.19853 +262144,4.48307 +524288,7.75987 +1048576,14.8838 +2097152,29.5035 +4194304,57.5498 +8388608,115.642 +16777216,231.743 +33554432,465.933 +67108864,934.203 +16,0.555008 +32,0.618496 +64,0.557056 +128,0.72192 +256,0.477184 +512,0.555008 +1024,0.54784 +2048,1.01888 +4096,0.553984 +8192,0.59392 +16384,0.979968 +32768,0.973824 +65536,1.41926 +131072,2.27635 +262144,4.19942 +524288,7.75782 +1048576,14.7261 +2097152,28.7375 +4194304,57.1443 +8388608,113.371 +16777216,228.752 +33554432,462.38 +67108864,934.344 +16,0.612352 +32,0.644096 +64,0.490496 +128,0.595968 +256,0.533504 +512,0.546816 +1024,0.6144 +2048,0.53248 +4096,0.602112 +8192,0.882688 +16384,1.24109 +32768,1.26259 +65536,1.41722 +131072,2.18624 +262144,4.23219 +524288,7.68 +1048576,14.6125 +2097152,28.9649 +4194304,57.5744 +8388608,114.866 +16777216,230.719 +33554432,462.758 +67108864,935.477 +16,0.633856 +32,0.632832 +64,0.621568 +128,0.521216 +256,0.508928 +512,0.513024 +1024,0.90112 +2048,0.689152 +4096,0.59392 +8192,0.868352 +16384,1.04141 +32768,0.973824 +65536,1.56672 +131072,2.23744 +262144,4.24448 +524288,7.59603 +1048576,14.9299 +2097152,29.0703 +4194304,57.5396 +8388608,113.869 +16777216,230.552 +33554432,465.589 +67108864,934.824 +16,0.71168 +32,0.653312 +64,0.467968 +128,0.497664 +256,0.626688 +512,0.493568 +1024,0.812032 +2048,0.564224 +4096,0.607232 +8192,0.605184 +16384,0.920576 +32768,1.01786 +65536,1.39366 +131072,2.28352 +262144,4.61619 +524288,8.21862 +1048576,15.0948 +2097152,29.7093 +4194304,57.9041 +8388608,114.212 +16777216,229.771 +33554432,465.466 +67108864,936.003 +16,0.51712 +32,0.553984 +64,0.464896 +128,0.681984 +256,0.503808 +512,0.519168 +1024,0.54784 +2048,0.661504 +4096,0.57856 +8192,0.979968 +16384,0.743424 +32768,1.02502 +65536,1.42541 +131072,2.39616 +262144,4.46874 +524288,8.12544 +1048576,15.0794 +2097152,29.2721 +4194304,57.7116 +8388608,115.314 +16777216,229.115 +33554432,463.244 +67108864,934.731 +16,0.576512 +32,0.811008 +64,0.562176 +128,0.586752 +256,0.625664 +512,0.504832 +1024,0.541696 +2048,0.5632 +4096,0.600064 +8192,0.643072 +16384,0.777216 +32768,1.01376 +65536,1.3865 +131072,2.20672 +262144,4.48717 +524288,7.83565 +1048576,14.3903 +2097152,29.868 +4194304,58.0588 +8388608,114.65 +16777216,229.823 +33554432,463.708 +67108864,933.9 +16,0.618496 +32,0.62976 +64,0.525312 +128,0.526336 +256,0.53248 +512,0.523264 +1024,0.661504 +2048,0.52736 +4096,0.557056 +8192,0.607232 +16384,0.88576 +32768,1.00762 +65536,1.49197 +131072,2.21696 +262144,4.26598 +524288,8.12032 +1048576,14.7599 +2097152,28.8266 +4194304,57.7536 +8388608,115.151 +16777216,230.075 +33554432,465.187 +67108864,936.199 +16,0.57344 +32,0.479232 +64,0.489472 +128,0.512 +256,0.507904 +512,0.612352 +1024,0.545792 +2048,0.577536 +4096,0.630784 +8192,0.87552 +16384,0.75264 +32768,0.96256 +65536,1.42438 +131072,2.2743 +262144,4.82816 +524288,7.6503 +1048576,14.9944 +2097152,29.2751 +4194304,58.3741 +8388608,113.545 +16777216,229.358 +33554432,464.219 +67108864,937.11 +16,0.697344 +32,0.713728 +64,0.579584 +128,0.658432 +256,0.579584 +512,0.610304 +1024,0.548864 +2048,0.52736 +4096,0.683008 +8192,0.644096 +16384,0.753664 +32768,0.966656 +65536,1.46125 +131072,2.19955 +262144,4.21171 +524288,7.80288 +1048576,15.0456 +2097152,29.227 +4194304,57.1259 +8388608,113.764 +16777216,229.845 +33554432,464.435 +67108864,936.076 +16,0.596992 +32,0.472064 +64,0.47104 +128,0.483328 +256,0.600064 +512,0.49664 +1024,0.551936 +2048,0.530432 +4096,0.582656 +8192,0.688128 +16384,0.774144 +32768,1.11616 +65536,1.42643 +131072,2.37261 +262144,4.53632 +524288,7.88582 +1048576,14.9996 +2097152,28.4918 +4194304,57.6358 +8388608,113.691 +16777216,228.479 +33554432,465.796 +67108864,935.741 +16,0.664576 +32,0.475136 +64,0.49664 +128,0.492544 +256,0.498688 +512,0.589824 +1024,0.743424 +2048,0.55808 +4096,0.590848 +8192,0.636928 +16384,0.765952 +32768,1.0199 +65536,1.41926 +131072,2.18522 +262144,4.21581 +524288,7.82438 +1048576,14.7026 +2097152,29.054 +4194304,58.2533 +8388608,114.67 +16777216,231.73 +33554432,464.67 +67108864,936.362 +16,0.550912 +32,0.804864 +64,0.603136 +128,0.467968 +256,0.479232 +512,0.615424 +1024,0.73728 +2048,0.512 +4096,0.584704 +8192,0.64 +16384,0.760832 +32768,0.969728 +65536,1.35475 +131072,2.24358 +262144,4.23936 +524288,7.64006 +1048576,15.3119 +2097152,29.5547 +4194304,58.5144 +8388608,114.501 +16777216,233.199 +33554432,464.001 +67108864,938.807 +16,0.644096 +32,0.697344 +64,0.512 +128,0.74752 +256,0.54272 +512,0.541696 +1024,0.545792 +2048,0.605184 +4096,0.813056 +8192,0.684032 +16384,0.75776 +32768,0.984064 +65536,1.41312 +131072,2.22003 +262144,4.20454 +524288,7.94317 +1048576,15.0979 +2097152,28.7672 +4194304,57.5795 +8388608,112.585 +16777216,229.529 +33554432,465.761 +67108864,933.793 +16,0.52224 +32,0.630784 +64,0.612352 +128,0.519168 +256,0.69632 +512,0.495616 +1024,0.478208 +2048,0.550912 +4096,0.596992 +8192,0.672768 +16384,0.764928 +32768,0.969728 +65536,2.16166 +131072,2.22003 +262144,4.29875 +524288,7.87251 +1048576,14.3872 +2097152,29.2403 +4194304,56.9774 +8388608,114.459 +16777216,230.042 +33554432,462.402 +67108864,936.174 +16,0.697344 +32,0.603136 +64,0.492544 +128,0.470016 +256,0.73216 +512,0.515072 +1024,0.535552 +2048,0.570368 +4096,0.58368 +8192,1.48685 +16384,0.764928 +32768,1.05677 +65536,1.42643 +131072,2.21491 +262144,4.46669 +524288,7.74963 +1048576,15.1706 +2097152,29.0806 +4194304,57.5785 +8388608,113.923 +16777216,229.407 +33554432,465.904 +67108864,940.836 +16,0.632832 +32,1.51654 +64,0.512 +128,0.971776 +256,0.662528 +512,0.520192 +1024,0.63488 +2048,0.53248 +4096,0.586752 +8192,1.36192 +16384,0.794624 +32768,0.975872 +65536,1.91181 +131072,2.54362 +262144,4.59974 +524288,8.07629 +1048576,14.7282 +2097152,28.5553 +4194304,57.729 +8388608,114.255 +16777216,230.873 +33554432,465.157 +67108864,937.383 +16,0.62464 +32,0.555008 +64,0.48128 +128,0.555008 +256,0.474112 +512,0.502784 +1024,0.539648 +2048,0.642048 +4096,0.586752 +8192,0.68608 +16384,0.976896 +32768,1.00864 +65536,1.41312 +131072,2.26918 +262144,4.18304 +524288,7.67693 +1048576,15.5515 +2097152,29.0243 +4194304,56.5821 +8388608,115.356 +16777216,229.947 +33554432,463.906 +67108864,931.358 +16,0.832512 +32,0.777216 +64,0.48128 +128,0.49664 +256,0.472064 +512,0.557056 +1024,0.54784 +2048,0.57856 +4096,0.664576 +8192,0.643072 +16384,0.820224 +32768,1.07725 +65536,1.45203 +131072,2.22208 +262144,4.24448 +524288,7.89094 +1048576,15.0508 +2097152,28.415 +4194304,58.113 +8388608,115.161 +16777216,230.856 +33554432,464.841 +67108864,932.661 +16,0.666624 +32,0.53248 +64,0.61952 +128,0.55296 +256,0.47616 +512,0.62464 +1024,0.536576 +2048,0.55808 +4096,0.590848 +8192,0.667648 +16384,0.768 +32768,0.991232 +65536,1.43565 +131072,2.2569 +262144,4.1984 +524288,7.74349 +1048576,15.1214 +2097152,29.0836 +4194304,58.1591 +8388608,114.253 +16777216,229.444 +33554432,463.919 +67108864,934.535 +16,0.755712 +32,0.763904 +64,0.63488 +128,0.523264 +256,0.545792 +512,0.487424 +1024,0.54272 +2048,0.566272 +4096,0.899072 +8192,0.666624 +16384,0.953344 +32768,1.02502 +65536,1.41722 +131072,2.22208 +262144,4.06835 +524288,7.65133 +1048576,14.9852 +2097152,28.756 +4194304,57.8048 +8388608,113.47 +16777216,230.554 +33554432,464.034 +67108864,932.43 +16,0.439296 +32,0.495616 +64,0.656384 +128,0.692224 +256,0.508928 +512,0.529408 +1024,0.652288 +2048,0.551936 +4096,0.587776 +8192,0.64 +16384,0.769024 +32768,0.971776 +65536,1.44384 +131072,2.26099 +262144,4.50765 +524288,7.5991 +1048576,15.1224 +2097152,28.7713 +4194304,57.1546 +8388608,113.606 +16777216,229.825 +33554432,463.283 +67108864,936.078 +16,0.643072 +32,0.581632 +64,0.433152 +128,0.64512 +256,0.616448 +512,0.51712 +1024,0.504832 +2048,0.529408 +4096,0.610304 +8192,0.731136 +16384,0.768 +32768,0.96256 +65536,1.36806 +131072,2.68083 +262144,4.22195 +524288,7.70867 +1048576,16.3512 +2097152,28.885 +4194304,57.9144 +8388608,115.135 +16777216,231.692 +33554432,463.035 +67108864,933.814 +16,0.603136 +32,0.48128 +64,0.498688 +128,0.596992 +256,0.596992 +512,0.684032 +1024,0.5888 +2048,0.694272 +4096,0.620544 +8192,0.664576 +16384,0.770048 +32768,1.03526 +65536,1.47149 +131072,2.26406 +262144,4.21171 +524288,7.67898 +1048576,15.8454 +2097152,29.0898 +4194304,57.7597 +8388608,111.462 +16777216,230.544 +33554432,463.282 +67108864,936.027 +16,0.630784 +32,0.766976 +64,0.508928 +128,0.500736 +256,0.474112 +512,0.488448 +1024,0.541696 +2048,0.5632 +4096,0.580608 +8192,0.632832 +16384,0.779264 +32768,1.21446 +65536,1.36806 +131072,2.23642 +262144,4.20147 +524288,8.11213 +1048576,14.7886 +2097152,28.4908 +4194304,57.9441 +8388608,113.986 +16777216,229.395 +33554432,462.155 +67108864,936.479 +16,0.47616 +32,0.466944 +64,0.468992 +128,0.502784 +256,0.509952 +512,0.518144 +1024,0.584704 +2048,0.879616 +4096,0.553984 +8192,0.591872 +16384,0.83968 +32768,1.01274 +65536,1.39571 +131072,2.59277 +262144,4.28442 +524288,7.69126 +1048576,15.0149 +2097152,29.0939 +4194304,57.3563 +8388608,114.538 +16777216,231.162 +33554432,464.357 +67108864,935.332 +16,0.572416 +32,0.607232 +64,0.81408 +128,0.485376 +256,0.625664 +512,0.534528 +1024,0.530432 +2048,0.535552 +4096,0.572416 +8192,0.600064 +16384,0.857088 +32768,0.914432 +65536,1.37421 +131072,2.29581 +262144,4.22093 +524288,7.7783 +1048576,14.8275 +2097152,29.0816 +4194304,56.6231 +8388608,114.108 +16777216,229.328 +33554432,463.755 +67108864,939.321 +16,0.663552 +32,0.648192 +64,0.45568 +128,0.582656 +256,0.664576 +512,0.498688 +1024,0.622592 +2048,0.616448 +4096,0.868352 +8192,0.585728 +16384,0.923648 +32768,1.17146 +65536,1.42643 +131072,2.33984 +262144,4.40013 +524288,7.93498 +1048576,15.6303 +2097152,29.4676 +4194304,57.8458 +8388608,113.842 +16777216,230.135 +33554432,465.633 +67108864,939.965 +16,0.664576 +32,0.57344 +64,0.720896 +128,0.497664 +256,0.590848 +512,0.546816 +1024,0.572416 +2048,0.525312 +4096,0.594944 +8192,0.987136 +16384,0.774144 +32768,1.02912 +65536,1.41824 +131072,2.23437 +262144,4.224 +524288,7.91142 +1048576,15.3682 +2097152,28.5829 +4194304,58.2113 +8388608,114.511 +16777216,229.294 +33554432,464.553 +67108864,935.353 +16,0.60928 +32,0.70656 +64,0.534528 +128,0.576512 +256,0.612352 +512,0.625664 +1024,0.545792 +2048,0.555008 +4096,0.613376 +8192,0.736256 +16384,0.820224 +32768,1.33939 +65536,1.41312 +131072,2.24358 +262144,4.21478 +524288,7.62778 +1048576,15.6334 +2097152,28.7314 +4194304,57.0388 +8388608,113.439 +16777216,229.676 +33554432,464.885 +67108864,936.063 +16,0.68608 +32,0.556032 +64,0.482304 +128,0.52224 +256,0.509952 +512,0.847872 +1024,0.671744 +2048,0.662528 +4096,0.715776 +8192,0.64512 +16384,1.34246 +32768,1.40698 +65536,1.42541 +131072,2.32038 +262144,4.40013 +524288,8.0599 +1048576,15.1695 +2097152,28.7703 +4194304,57.5488 +8388608,115.282 +16777216,230.929 +33554432,463.857 +67108864,934.812 +16,0.585728 +32,0.641024 +64,0.489472 +128,0.729088 +256,0.509952 +512,0.560128 +1024,0.543744 +2048,0.644096 +4096,0.986112 +8192,0.868352 +16384,0.830464 +32768,1.00045 +65536,1.41517 +131072,2.21901 +262144,4.02022 +524288,7.73734 +1048576,14.975 +2097152,28.7314 +4194304,57.8447 +8388608,114.533 +16777216,230.137 +33554432,464.285 +67108864,935.56 +16,0.611328 +32,0.579584 +64,0.603136 +128,0.76288 +256,0.647168 +512,0.5632 +1024,0.518144 +2048,0.587776 +4096,0.626688 +8192,0.672768 +16384,0.741376 +32768,0.951296 +65536,1.42643 +131072,2.56205 +262144,4.56499 +524288,7.71379 +1048576,14.7558 +2097152,29.1574 +4194304,57.4484 +8388608,113.776 +16777216,229.254 +33554432,464.144 +67108864,936.15 +16,0.428032 +32,0.586752 +64,0.462848 +128,0.515072 +256,0.607232 +512,0.651264 +1024,0.551936 +2048,0.638976 +4096,0.730112 +8192,0.615424 +16384,0.801792 +32768,1.42746 +65536,1.41619 +131072,2.36442 +262144,4.21683 +524288,7.60832 +1048576,15.0118 +2097152,29.4482 +4194304,57.4802 +8388608,112.532 +16777216,229.753 +33554432,463.147 +67108864,933.113 +16,0.673792 +32,0.52736 +64,0.509952 +128,0.592896 +256,0.534528 +512,0.712704 +1024,0.516096 +2048,0.6144 +4096,0.772096 +8192,0.617472 +16384,0.746496 +32768,0.971776 +65536,1.46637 +131072,2.17907 +262144,4.53222 +524288,7.90528 +1048576,14.8378 +2097152,29.182 +4194304,57.215 +8388608,114.144 +16777216,230.163 +33554432,463.353 +67108864,935.427 +16,0.572416 +32,0.570368 +64,0.49152 +128,0.530432 +256,0.539648 +512,0.490496 +1024,0.566272 +2048,0.592896 +4096,0.526336 +8192,0.626688 +16384,0.723968 +32768,1.0199 +65536,1.36909 +131072,2.2569 +262144,4.25062 +524288,7.77011 +1048576,14.4896 +2097152,29.4595 +4194304,56.3405 +8388608,115.42 +16777216,229.78 +33554432,465.71 +67108864,935.313 +16,0.566272 +32,0.510976 +64,0.616448 +128,0.5376 +256,0.571392 +512,0.548864 +1024,0.784384 +2048,0.497664 +4096,0.589824 +8192,0.642048 +16384,1.1008 +32768,1.17862 +65536,1.59027 +131072,2.18624 +262144,4.5824 +524288,7.936 +1048576,15.0508 +2097152,29.3048 +4194304,57.727 +8388608,114.594 +16777216,229.608 +33554432,463.794 +67108864,936.522 +16,0.672768 +32,0.505856 +64,0.531456 +128,0.523264 +256,0.64 +512,0.4864 +1024,0.526336 +2048,0.55808 +4096,0.633856 +8192,0.63488 +16384,0.760832 +32768,1.04346 +65536,1.42438 +131072,2.24154 +262144,4.64691 +524288,8.42138 +1048576,14.8152 +2097152,29.1205 +4194304,57.6481 +8388608,114.348 +16777216,230.344 +33554432,465.158 +67108864,936.18 +16,0.764928 +32,0.728064 +64,0.45568 +128,0.62976 +256,0.621568 +512,0.596992 +1024,0.530432 +2048,0.543744 +4096,0.668672 +8192,0.584704 +16384,0.774144 +32768,1.00966 +65536,1.40698 +131072,2.7648 +262144,4.78618 +524288,7.936 +1048576,14.4824 +2097152,28.6833 +4194304,57.6666 +8388608,113.417 +16777216,230.674 +33554432,464.983 +67108864,936.04 +16,0.649216 +32,0.555008 +64,0.729088 +128,0.498688 +256,0.533504 +512,0.540672 +1024,0.854016 +2048,0.545792 +4096,0.610304 +8192,0.637952 +16384,0.82944 +32768,1.024 +65536,1.44896 +131072,2.18419 +262144,4.2199 +524288,8.0128 +1048576,15.2463 +2097152,29.0632 +4194304,57.2119 +8388608,114.241 +16777216,230.431 +33554432,462.89 +67108864,935.794 +16,0.60928 +32,0.596992 +64,0.523264 +128,0.523264 +256,0.794624 +512,0.671744 +1024,0.66048 +2048,0.627712 +4096,0.559104 +8192,0.648192 +16384,0.813056 +32768,1.09773 +65536,1.52064 +131072,2.40538 +262144,4.57626 +524288,7.9657 +1048576,14.8101 +2097152,29.483 +4194304,57.6389 +8388608,114.32 +16777216,229.632 +33554432,464.206 +67108864,934.259 +16,0.608256 +32,0.621568 +64,0.577536 +128,0.509952 +256,0.651264 +512,0.546816 +1024,0.656384 +2048,0.703488 +4096,0.610304 +8192,0.78848 +16384,0.959488 +32768,1.05165 +65536,1.39674 +131072,2.21082 +262144,4.28339 +524288,7.94931 +1048576,14.8183 +2097152,28.9413 +4194304,57.7219 +8388608,113.647 +16777216,229.782 +33554432,463.912 +67108864,937.433 +16,0.59392 +32,0.669696 +64,0.493568 +128,0.58368 +256,0.533504 +512,0.566272 +1024,0.88576 +2048,0.671744 +4096,0.6144 +8192,0.6656 +16384,0.830464 +32768,0.968704 +65536,1.43053 +131072,2.18624 +262144,4.20762 +524288,7.64416 +1048576,15.9273 +2097152,28.8297 +4194304,57.4474 +8388608,115.182 +16777216,230.7 +33554432,465.616 +67108864,938.768 +16,0.541696 +32,0.41984 +64,0.479232 +128,0.538624 +256,0.514048 +512,0.623616 +1024,0.541696 +2048,0.561152 +4096,0.55808 +8192,0.647168 +16384,0.766976 +32768,1.0137 +65536,1.38854 +131072,2.21901 +262144,4.13798 +524288,7.6503 +1048576,15.0824 +2097152,28.9229 +4194304,56.9672 +8388608,113.715 +16777216,230.051 +33554432,463.632 +67108864,933.405 +16,0.59904 +32,0.715776 +64,0.585728 +128,0.633856 +256,0.618496 +512,0.611328 +1024,0.533504 +2048,0.695296 +4096,0.857088 +8192,0.653312 +16384,0.759808 +32768,0.97792 +65536,1.43872 +131072,2.18522 +262144,4.58035 +524288,7.8377 +1048576,15.9744 +2097152,29.994 +4194304,57.2355 +8388608,114.422 +16777216,233.151 +33554432,463.461 +67108864,935.962 +16,0.667648 +32,0.62464 +64,0.449472 +128,0.592896 +256,0.508928 +512,0.502784 +1024,0.65536 +2048,0.795648 +4096,0.812032 +8192,0.652288 +16384,0.909312 +32768,0.969728 +65536,1.36806 +131072,2.44019 +262144,4.54246 +524288,8.19917 +1048576,15.0528 +2097152,28.4723 +4194304,58.5083 +8388608,114.357 +16777216,230.682 +33554432,464.675 +67108864,928.279 +16,0.611328 +32,0.695296 +64,0.52224 +128,0.497664 +256,0.73728 +512,0.531456 +1024,0.510976 +2048,0.571392 +4096,0.596992 +8192,0.631808 +16384,1.03014 +32768,0.970752 +65536,1.43053 +131072,2.26611 +262144,4.20659 +524288,7.58272 +1048576,14.9699 +2097152,29.2966 +4194304,57.7137 +8388608,114.984 +16777216,229.859 +33554432,464.583 +67108864,932.865 +16,0.66048 +32,0.447488 +64,0.456704 +128,0.672768 +256,0.519168 +512,0.723968 +1024,0.543744 +2048,0.536576 +4096,0.58368 +8192,0.644096 +16384,0.765952 +32768,0.991232 +65536,1.45715 +131072,2.21696 +262144,4.05811 +524288,8.00563 +1048576,14.9258 +2097152,29.1021 +4194304,57.6614 +8388608,115.069 +16777216,231.926 +33554432,462.287 +67108864,937.645 +16,0.695296 +32,0.652288 +64,0.524288 +128,0.543744 +256,0.567296 +512,0.519168 +1024,0.57344 +2048,0.557056 +4096,0.598016 +8192,0.915456 +16384,0.851968 +32768,1.00659 +65536,1.43053 +131072,2.24461 +262144,4.22195 +524288,7.61651 +1048576,14.9453 +2097152,29.4154 +4194304,58.1581 +8388608,114.532 +16777216,230.544 +33554432,464.238 +67108864,932.154 +16,0.636928 +32,0.529408 +64,0.448512 +128,0.49152 +256,0.499712 +512,0.574464 +1024,0.923648 +2048,0.54784 +4096,0.586752 +8192,0.652288 +16384,0.771072 +32768,1.18374 +65536,1.7408 +131072,2.21184 +262144,4.47283 +524288,7.8551 +1048576,15.0764 +2097152,29.4584 +4194304,57.3215 +8388608,115.7 +16777216,230.698 +33554432,464.517 +67108864,935.764 +16,0.662464 +32,0.566272 +64,0.743424 +128,0.520192 +256,0.534528 +512,0.55808 +1024,0.557056 +2048,0.560128 +4096,0.596992 +8192,0.605184 +16384,0.80896 +32768,0.970752 +65536,1.41722 +131072,2.19648 +262144,4.31616 +524288,7.59398 +1048576,14.9791 +2097152,30.0882 +4194304,57.1402 +8388608,115.222 +16777216,229.948 +33554432,466.9 +67108864,936.286 +16,0.651264 +32,1.07315 +64,1.08032 +128,0.632832 +256,0.62464 +512,0.484352 +1024,0.723968 +2048,0.562176 +4096,0.594944 +8192,0.632832 +16384,0.770048 +32768,0.979968 +65536,1.59949 +131072,2.3849 +262144,4.5865 +524288,7.71584 +1048576,15.3958 +2097152,28.9229 +4194304,58.3762 +8388608,113.212 +16777216,230.857 +33554432,464.306 +67108864,936.82 +16,0.703488 +32,0.590848 +64,0.52224 +128,0.548864 +256,0.556032 +512,0.557056 +1024,0.518144 +2048,0.587776 +4096,0.703488 +8192,0.661504 +16384,0.899072 +32768,1.04243 +65536,1.51245 +131072,2.21491 +262144,4.38272 +524288,7.57658 +1048576,14.8142 +2097152,29.3192 +4194304,57.6031 +8388608,113.602 +16777216,230.395 +33554432,464.11 +67108864,938.157 +16,0.6656 +32,0.566272 +64,1.27181 +128,0.52224 +256,0.628736 +512,0.544768 +1024,0.56832 +2048,0.553984 +4096,0.582656 +8192,0.632832 +16384,0.794624 +32768,0.999424 +65536,1.4039 +131072,2.24051 +262144,4.01818 +524288,8.34867 +1048576,15.1511 +2097152,29.6632 +4194304,57.1607 +8388608,113.801 +16777216,229.738 +33554432,463.611 +67108864,936.955 +16,0.657408 +32,0.642048 +64,0.73216 +128,0.519168 +256,0.500736 +512,0.515072 +1024,1.03322 +2048,0.667648 +4096,0.635904 +8192,0.688128 +16384,0.832512 +32768,1.28102 +65536,1.8217 +131072,2.2743 +262144,4.03763 +524288,7.63187 +1048576,15.1009 +2097152,29.2547 +4194304,57.815 +8388608,114.406 +16777216,230.307 +33554432,463.482 +67108864,935.839 +16,0.728064 +32,0.668672 +64,0.494592 +128,0.49152 +256,0.49152 +512,0.507904 +1024,0.538624 +2048,0.559104 +4096,0.551936 +8192,0.633856 +16384,0.768 +32768,1.33325 +65536,1.41312 +131072,2.21594 +262144,4.38477 +524288,7.8551 +1048576,14.8879 +2097152,28.8215 +4194304,56.8156 +8388608,114.782 +16777216,230.05 +33554432,466.073 +67108864,938.776 +16,0.708608 +32,0.577536 +64,0.584704 +128,0.69632 +256,0.47616 +512,0.483328 +1024,0.663552 +2048,0.687104 +4096,0.602112 +8192,0.64 +16384,0.796672 +32768,1.01683 +65536,1.78074 +131072,2.19648 +262144,4.72678 +524288,8.17664 +1048576,14.7159 +2097152,28.6464 +4194304,57.8007 +8388608,114.947 +16777216,229.775 +33554432,464.949 +67108864,939.922 +16,0.59904 +32,0.693248 +64,0.45568 +128,0.790528 +256,0.528384 +512,0.666624 +1024,0.649216 +2048,0.586752 +4096,0.690176 +8192,0.70144 +16384,0.927744 +32768,1.01171 +65536,1.41005 +131072,2.30093 +262144,4.1769 +524288,7.76294 +1048576,14.9146 +2097152,29.27 +4194304,57.6553 +8388608,114.259 +16777216,229.488 +33554432,463.461 +67108864,938.227 +16,0.667648 +32,0.635904 +64,0.505856 +128,0.494592 +256,0.545792 +512,0.489472 +1024,0.509952 +2048,0.674816 +4096,0.585728 +8192,0.636928 +16384,0.768 +32768,0.975872 +65536,1.43053 +131072,2.63475 +262144,4.35814 +524288,9.03782 +1048576,15.3364 +2097152,29.7359 +4194304,57.8458 +8388608,114.073 +16777216,230.728 +33554432,463.835 +67108864,938.538 +16,0.70144 +32,0.560128 +64,0.57856 +128,0.759808 +256,0.838656 +512,0.531456 +1024,0.666624 +2048,0.683008 +4096,0.746496 +8192,0.60416 +16384,0.799744 +32768,0.969728 +65536,1.41926 +131072,2.5344 +262144,4.48819 +524288,8.14694 +1048576,14.9934 +2097152,29.2157 +4194304,58.283 +8388608,114.595 +16777216,228.773 +33554432,462.974 +67108864,936.5 +16,0.659456 +32,0.63488 +64,0.525312 +128,0.451584 +256,0.507904 +512,0.521216 +1024,0.5376 +2048,0.82432 +4096,0.559104 +8192,0.635904 +16384,0.7424 +32768,1.0199 +65536,1.39366 +131072,2.23949 +262144,4.20352 +524288,7.8039 +1048576,14.933 +2097152,28.926 +4194304,57.5744 +8388608,114.816 +16777216,229.752 +33554432,464.923 +67108864,937.445 +16,0.615424 +32,0.681984 +64,0.458752 +128,0.48128 +256,0.529408 +512,0.54272 +1024,0.546816 +2048,0.596992 +4096,0.734208 +8192,0.642048 +16384,0.806912 +32768,0.976896 +65536,1.40902 +131072,2.22106 +262144,4.20454 +524288,7.68205 +1048576,15.2115 +2097152,29.1011 +4194304,57.2447 +8388608,115.396 +16777216,232.298 +33554432,463.29 +67108864,935.428 +16,0.662528 +32,0.472064 +64,0.488448 +128,0.685056 +256,0.882688 +512,0.493568 +1024,0.503808 +2048,0.722944 +4096,0.920576 +8192,0.637952 +16384,0.811008 +32768,1.05574 +65536,1.42643 +131072,2.20979 +262144,4.27213 +524288,7.64819 +1048576,15.0139 +2097152,29.5916 +4194304,56.8596 +8388608,114.572 +16777216,229.898 +33554432,462.97 +67108864,937.584 +16,0.594944 +32,0.617472 +64,0.935936 +128,0.487424 +256,0.474112 +512,0.546816 +1024,0.572416 +2048,0.927744 +4096,0.590848 +8192,0.689152 +16384,0.769024 +32768,0.959488 +65536,1.4592 +131072,2.18522 +262144,4.53734 +524288,7.64621 +1048576,14.8634 +2097152,29.6131 +4194304,56.9395 +8388608,114.506 +16777216,229.827 +33554432,463.438 +67108864,933.997 +16,0.57344 +32,0.572416 +64,0.4864 +128,0.536576 +256,0.658432 +512,0.521216 +1024,0.770048 +2048,0.557056 +4096,0.562176 +8192,0.6144 +16384,0.766976 +32768,0.968704 +65536,1.36602 +131072,2.23232 +262144,4.62848 +524288,7.62368 +1048576,15.2289 +2097152,29.0232 +4194304,58.3291 +8388608,114.458 +16777216,228.725 +33554432,464.554 +67108864,931.971 +16,0.712704 +32,0.68096 +64,0.488448 +128,0.49664 +256,0.503808 +512,0.561152 +1024,0.621568 +2048,0.570368 +4096,0.577536 +8192,0.900096 +16384,0.761856 +32768,0.9728 +65536,1.55034 +131072,2.2487 +262144,4.18509 +524288,7.88685 +1048576,15.1245 +2097152,29.1553 +4194304,56.8013 +8388608,115.442 +16777216,229.787 +33554432,464.406 +67108864,937.036 +16,0.572416 +32,0.673792 +64,0.635904 +128,0.61952 +256,0.508928 +512,0.627712 +1024,0.664576 +2048,0.581632 +4096,0.894976 +8192,0.644096 +16384,0.766976 +32768,0.974848 +65536,1.36499 +131072,2.22106 +262144,4.3049 +524288,7.86842 +1048576,15.2187 +2097152,29.737 +4194304,58.0936 +8388608,114.024 +16777216,231.288 +33554432,466.302 +67108864,937.24 +16,0.577536 +32,0.425984 +64,0.50688 +128,0.52224 +256,0.514048 +512,0.516096 +1024,0.570368 +2048,0.5888 +4096,0.586752 +8192,0.689152 +16384,0.771072 +32768,1.0025 +65536,1.47558 +131072,2.20467 +262144,4.20454 +524288,7.80288 +1048576,15.1654 +2097152,29.1758 +4194304,57.7516 +8388608,114.974 +16777216,229.941 +33554432,463.582 +67108864,933.826 +16,0.617472 +32,0.72192 +64,0.858112 +128,0.637952 +256,0.524288 +512,0.612352 +1024,0.553984 +2048,0.621568 +4096,0.557056 +8192,0.651232 +16384,0.812032 +32768,1.33018 +65536,1.62099 +131072,2.24563 +262144,4.49126 +524288,8.07629 +1048576,14.636 +2097152,29.5137 +4194304,57.3286 +8388608,114.852 +16777216,230.112 +33554432,463.667 +67108864,936.374 +16,0.613376 +32,0.612352 +64,0.49152 +128,0.50176 +256,0.652288 +512,0.564224 +1024,0.508928 +2048,0.55296 +4096,0.582656 +8192,0.603136 +16384,0.867328 +32768,1.51962 +65536,1.4121 +131072,2.46477 +262144,4.1984 +524288,8.04966 +1048576,15.1368 +2097152,28.5798 +4194304,59.3142 +8388608,114.075 +16777216,230.79 +33554432,465.16 +67108864,935.763 +16,0.524288 +32,0.692224 +64,0.490496 +128,0.576512 +256,0.613376 +512,0.534528 +1024,0.545792 +2048,0.651264 +4096,0.584704 +8192,0.648192 +16384,0.769024 +32768,1.32096 +65536,1.44384 +131072,2.2784 +262144,4.26189 +524288,7.61139 +1048576,15.1992 +2097152,29.4021 +4194304,57.4771 +8388608,114.56 +16777216,231.229 +33554432,465.783 +67108864,936.703 +16,0.579584 +32,0.65024 +64,0.489472 +128,0.473024 +256,0.649216 +512,0.523264 +1024,0.55296 +2048,0.546816 +4096,0.591872 +8192,0.71168 +16384,0.915456 +32768,0.949248 +65536,1.41414 +131072,2.24154 +262144,4.20352 +524288,7.6032 +1048576,14.6954 +2097152,29.1185 +4194304,58.2871 +8388608,114.251 +16777216,229.744 +33554432,465.069 +67108864,933.826 +16,0.745472 +32,0.590848 +64,0.519168 +128,0.566272 +256,0.54272 +512,0.528384 +1024,0.580608 +2048,0.565248 +4096,0.712704 +8192,0.786432 +16384,0.738304 +32768,1.0711 +65536,1.58106 +131072,2.19034 +262144,4.23526 +524288,7.68614 +1048576,14.7825 +2097152,28.7396 +4194304,57.4986 +8388608,114.194 +16777216,230.549 +33554432,463.914 +67108864,932.276 +16,0.731136 +32,0.621568 +64,0.512 +128,0.488448 +256,0.518144 +512,0.603136 +1024,0.533504 +2048,0.621568 +4096,0.585728 +8192,0.646144 +16384,0.769024 +32768,0.9728 +65536,1.37421 +131072,2.26816 +262144,4.03558 +524288,7.72403 +1048576,14.7937 +2097152,29.5066 +4194304,57.9727 +8388608,114.83 +16777216,229.821 +33554432,465.268 +67108864,937.393 +16,0.628736 +32,0.53248 +64,0.60416 +128,0.521216 +256,0.5376 +512,0.566272 +1024,0.533504 +2048,0.70656 +4096,0.596992 +8192,0.669696 +16384,0.791552 +32768,0.97792 +65536,1.44896 +131072,2.28966 +262144,4.23014 +524288,7.89299 +1048576,14.7651 +2097152,29.3396 +4194304,57.2948 +8388608,114.75 +16777216,228.871 +33554432,464.975 +67108864,935.737 +16,0.592896 +32,0.63488 +64,0.452608 +128,0.451584 +256,0.499712 +512,0.512 +1024,0.81408 +2048,0.55808 +4096,0.586752 +8192,1.32813 +16384,0.766976 +32768,0.973824 +65536,1.43872 +131072,2.20672 +262144,4.19635 +524288,8.12237 +1048576,14.9801 +2097152,29.9745 +4194304,57.8406 +8388608,115.178 +16777216,229.418 +33554432,463.105 +67108864,937.677 +16,0.66048 +32,0.67584 +64,0.483328 +128,0.520192 +256,0.602112 +512,0.509952 +1024,0.64512 +2048,0.5632 +4096,0.59392 +8192,0.64 +16384,0.765952 +32768,1.00147 +65536,1.47866 +131072,2.50266 +262144,4.58342 +524288,7.70355 +1048576,14.9074 +2097152,29.311 +4194304,57.942 +8388608,114.687 +16777216,230.911 +33554432,464.236 +67108864,938.346 +16,0.651264 +32,0.581632 +64,0.495616 +128,0.493568 +256,0.647168 +512,0.514048 +1024,0.65536 +2048,0.585728 +4096,0.613376 +8192,0.63488 +16384,0.823296 +32768,1.1817 +65536,1.37216 +131072,2.23642 +262144,4.88038 +524288,7.59706 +1048576,14.9934 +2097152,28.8993 +4194304,58.1007 +8388608,114.355 +16777216,230.579 +33554432,462.415 +67108864,933.198 +16,0.549888 +32,0.615424 +64,0.52736 +128,0.509952 +256,0.544768 +512,0.781312 +1024,0.598016 +2048,0.58368 +4096,0.708608 +8192,0.668672 +16384,0.787456 +32768,0.963584 +65536,1.35373 +131072,2.25792 +262144,4.05709 +524288,7.95034 +1048576,14.5736 +2097152,29.7441 +4194304,57.4986 +8388608,114.662 +16777216,230.577 +33554432,466.075 +67108864,936.368 +16,0.623584 +32,0.529408 +64,0.606208 +128,0.602112 +256,0.535552 +512,0.545792 +1024,0.602112 +2048,0.598016 +4096,0.586752 +8192,0.683008 +16384,0.85504 +32768,1.46944 +65536,1.7521 +131072,2.27123 +262144,4.29978 +524288,8.26266 +1048576,15.1388 +2097152,29.9674 +4194304,58.1939 +8388608,115.187 +16777216,230.644 +33554432,464.281 +67108864,936.45 +16,0.602112 +32,0.56832 +64,0.641024 +128,0.579584 +256,0.654336 +512,0.539648 +1024,0.512 +2048,0.553984 +4096,0.581632 +8192,0.643072 +16384,0.760832 +32768,1.07622 +65536,1.43053 +131072,2.2528 +262144,4.47795 +524288,7.59808 +1048576,14.8849 +2097152,29.0939 +4194304,57.3829 +8388608,113.368 +16777216,229.631 +33554432,465.489 +67108864,936.257 +16,0.575488 +32,0.653312 +64,0.49664 +128,0.625664 +256,0.641024 +512,0.6144 +1024,0.52736 +2048,0.529408 +4096,0.57344 +8192,0.608256 +16384,0.751616 +32768,0.973824 +65536,1.42541 +131072,2.22925 +262144,4.21786 +524288,7.65338 +1048576,14.7999 +2097152,29.2772 +4194304,57.8273 +8388608,114.823 +16777216,231.23 +33554432,463.395 +67108864,937.76 +16,0.525312 +32,0.468992 +64,0.535552 +128,0.607232 +256,0.521216 +512,0.607232 +1024,0.550912 +2048,0.661504 +4096,0.661504 +8192,0.636928 +16384,1.05062 +32768,1.03526 +65536,1.36806 +131072,2.22106 +262144,4.3817 +524288,7.72813 +1048576,14.9197 +2097152,29.143 +4194304,57.9133 +8388608,114.048 +16777216,230.178 +33554432,466.426 +67108864,934.457 +16,0.666624 +32,0.572416 +64,0.4864 +128,0.637952 +256,0.601088 +512,0.509952 +1024,0.544768 +2048,0.504832 +4096,0.5888 +8192,0.645024 +16384,0.771072 +32768,0.985088 +65536,1.37114 +131072,2.15552 +262144,4.21683 +524288,7.60115 +1048576,14.7036 +2097152,29.227 +4194304,57.8324 +8388608,114.405 +16777216,230.797 +33554432,465.117 +67108864,937.204 +16,0.65536 +32,0.600064 +64,0.489472 +128,0.472064 +256,0.687104 +512,0.521216 +1024,0.543744 +2048,0.569344 +4096,0.592896 +8192,0.692224 +16384,0.76288 +32768,0.95232 +65536,1.43053 +131072,2.25587 +262144,4.33971 +524288,7.60934 +1048576,14.3923 +2097152,28.885 +4194304,58.0659 +8388608,114.668 +16777216,229.195 +33554432,462.211 +67108864,933.815 +16,0.589824 +32,0.705536 +64,0.48128 +128,0.825344 +256,0.717824 +512,0.55808 +1024,0.507904 +2048,0.781312 +4096,0.575488 +8192,0.724992 +16384,0.874496 +32768,0.9728 +65536,1.49914 +131072,2.25997 +262144,4.26291 +524288,7.92883 +1048576,14.7569 +2097152,29.1277 +4194304,57.5672 +8388608,114.942 +16777216,230.965 +33554432,465.033 +67108864,938.896 +16,0.64 +32,0.630784 +64,0.493568 +128,0.699392 +256,0.543744 +512,0.618496 +1024,0.535552 +2048,0.575488 +4096,0.6144 +8192,0.63488 +16384,0.76288 +32768,0.9728 +65536,1.44998 +131072,2.30605 +262144,4.50048 +524288,7.61446 +1048576,15.358 +2097152,29.2035 +4194304,57.1576 +8388608,114.438 +16777216,229.275 +33554432,459.921 +67108864,935.453 +16,0.514048 +32,0.667648 +64,0.608256 +128,0.508928 +256,0.473088 +512,0.785408 +1024,0.55808 +2048,0.837632 +4096,0.615424 +8192,0.652288 +16384,0.768 +32768,1.00045 +65536,1.44077 +131072,2.18829 +262144,4.19328 +524288,7.98106 +1048576,15.3702 +2097152,29.822 +4194304,57.0429 +8388608,114.311 +16777216,229.647 +33554432,464.987 +67108864,937.283 +16,0.67584 +32,0.6144 +64,0.45568 +128,0.534528 +256,0.528384 +512,0.499712 +1024,0.553984 +2048,0.584704 +4096,0.602112 +8192,0.64512 +16384,0.730112 +32768,1.34758 +65536,1.8688 +131072,2.27635 +262144,4.44006 +524288,7.72198 +1048576,15.0272 +2097152,29.1584 +4194304,57.9779 +8388608,113.71 +16777216,231.618 +33554432,460.771 +67108864,935.484 +16,0.549888 +32,0.559104 +64,0.559104 +128,0.467968 +256,0.53248 +512,0.697344 +1024,0.541696 +2048,0.52736 +4096,0.560128 +8192,0.760832 +16384,0.7424 +32768,1.0711 +65536,1.4633 +131072,2.2999 +262144,4.27827 +524288,8.07629 +1048576,14.8828 +2097152,28.8522 +4194304,57.8048 +8388608,112.132 +16777216,230.673 +33554432,464.275 +67108864,936.398 +16,0.651264 +32,0.618496 +64,0.681984 +128,0.714752 +256,0.587776 +512,0.520192 +1024,0.695296 +2048,0.58368 +4096,0.595968 +8192,0.647168 +16384,1.88211 +32768,0.965632 +65536,1.96198 +131072,2.56102 +262144,4.06016 +524288,7.74042 +1048576,14.5736 +2097152,29.2526 +4194304,58.07 +8388608,114.77 +16777216,230.306 +33554432,464.489 +67108864,932.37 +16,0.651264 +32,0.651264 +64,0.598016 +128,0.734208 +256,0.502784 +512,0.553984 +1024,0.550912 +2048,0.528384 +4096,0.564224 +8192,0.663552 +16384,0.914432 +32768,1.01683 +65536,1.39776 +131072,2.2057 +262144,4.19021 +524288,8.08755 +1048576,15.063 +2097152,28.8041 +4194304,57.5478 +8388608,114.369 +16777216,229.08 +33554432,466.889 +67108864,938.882 +16,0.652288 +32,0.615424 +64,0.512 +128,0.523264 +256,0.508928 +512,0.625664 +1024,0.603136 +2048,0.530432 +4096,0.797696 +8192,0.866304 +16384,0.766976 +32768,1.02605 +65536,1.36499 +131072,2.21184 +262144,4.60493 +524288,7.98413 +1048576,15.0456 +2097152,29.0621 +4194304,57.5805 +8388608,113.312 +16777216,229.677 +33554432,465.408 +67108864,933.144 +16,0.656384 +32,0.592896 +64,0.514048 +128,0.470016 +256,0.710656 +512,0.54784 +1024,0.685056 +2048,0.524288 +4096,0.560128 +8192,0.632832 +16384,0.765952 +32768,0.9728 +65536,1.4633 +131072,2.25382 +262144,4.26803 +524288,7.61958 +1048576,14.846 +2097152,28.7488 +4194304,56.5852 +8388608,114.444 +16777216,231.748 +33554432,463.708 +67108864,935.827 +16,0.726016 +32,0.570368 +64,0.508928 +128,0.566272 +256,0.474112 +512,0.520192 +1024,0.513024 +2048,0.662528 +4096,0.652288 +8192,0.64 +16384,0.950272 +32768,1.00454 +65536,1.5616 +131072,2.30605 +262144,4.47795 +524288,7.72096 +1048576,14.6063 +2097152,29.1779 +4194304,57.6236 +8388608,113.931 +16777216,229.867 +33554432,465.663 +67108864,935.133 +16,0.774144 +32,0.7168 +64,0.490496 +128,0.507904 +256,0.516096 +512,0.565248 +1024,0.736256 +2048,0.763904 +4096,0.726016 +8192,0.611328 +16384,0.79872 +32768,0.958464 +65536,1.37728 +131072,2.21184 +262144,4.64077 +524288,8.69786 +1048576,15.3549 +2097152,28.8164 +4194304,57.471 +8388608,114.636 +16777216,230.358 +33554432,464.69 +67108864,938.147 +16,0.673792 +32,0.572416 +64,0.4864 +128,0.49152 +256,0.642048 +512,0.5632 +1024,0.529408 +2048,1.26259 +4096,0.553984 +8192,0.848896 +16384,0.774144 +32768,0.974848 +65536,1.46227 +131072,2.51597 +262144,4.30797 +524288,8.20122 +1048576,14.9893 +2097152,29.142 +4194304,57.8458 +8388608,114.734 +16777216,229.734 +33554432,463.349 +67108864,933.574 +16,0.617472 +32,0.5632 +64,0.512 +128,0.463872 +256,0.535552 +512,0.621568 +1024,0.662528 +2048,0.95744 +4096,0.6656 +8192,0.637952 +16384,0.878592 +32768,1.02707 +65536,1.408 +131072,2.21696 +262144,4.59059 +524288,7.6544 +1048576,14.9914 +2097152,29.3632 +4194304,57.6799 +8388608,114.596 +16777216,230.128 +33554432,466.184 +67108864,939.054 +16,0.569344 +32,0.467968 +64,0.513024 +128,0.531456 +256,0.738304 +512,0.485376 +1024,0.567296 +2048,0.557056 +4096,0.5888 +8192,0.684032 +16384,0.751616 +32768,1.20218 +65536,1.39264 +131072,2.2313 +262144,4.21274 +524288,7.64621 +1048576,14.7251 +2097152,29.484 +4194304,57.4577 +8388608,113.555 +16777216,230.552 +33554432,463.642 +67108864,937.04 +16,0.6656 +32,0.579584 +64,0.485376 +128,0.4864 +256,0.5376 +512,0.521216 +1024,0.546816 +2048,0.560128 +4096,0.587776 +8192,0.764928 +16384,0.966656 +32768,0.98304 +65536,1.41312 +131072,2.16678 +262144,4.1943 +524288,8.04352 +1048576,15.1009 +2097152,29.1645 +4194304,57.8601 +8388608,115.39 +16777216,229.74 +33554432,462.019 +67108864,935.388 +16,0.477184 +32,0.4608 +64,0.626688 +128,0.479232 +256,0.59904 +512,0.68096 +1024,0.54784 +2048,0.987136 +4096,1.11206 +8192,0.707584 +16384,1.07315 +32768,0.918528 +65536,1.42643 +131072,2.5559 +262144,4.28339 +524288,7.79674 +1048576,14.42 +2097152,31.6416 +4194304,57.0235 +8388608,113.368 +16777216,232.504 +33554432,464.444 +67108864,930.066 +16,0.60928 +32,0.676864 +64,0.676864 +128,0.681984 +256,0.536576 +512,0.560128 +1024,0.687104 +2048,0.557056 +4096,0.636928 +8192,0.649216 +16384,0.831488 +32768,0.922624 +65536,1.73568 +131072,2.34189 +262144,4.20045 +524288,7.96979 +1048576,14.7579 diff --git a/Project2-Stream-Compaction/data/Scan_data/data_pow2/shared_mem.csv b/Project2-Stream-Compaction/data/Scan_data/data_pow2/shared_mem.csv new file mode 100644 index 0000000..8cdf747 --- /dev/null +++ b/Project2-Stream-Compaction/data/Scan_data/data_pow2/shared_mem.csv @@ -0,0 +1,4547 @@ +16,0.727072 +32,0.636896 +64,0.692224 +128,0.506848 +256,0.647168 +512,0.728032 +1024,0.750592 +2048,0.559104 +4096,0.807968 +8192,0.742432 +16384,0.864256 +32768,0.990208 +65536,1.50218 +131072,4.01101 +262144,4.69603 +524288,7.86739 +1048576,14.0308 +2097152,30.1322 +4194304,54.7676 +8388608,107.102 +16777216,214.842 +33554432,426.174 +67108864,852.676 +16,0.523264 +32,0.989184 +64,0.63488 +128,0.592896 +256,0.918528 +512,0.758784 +1024,0.580608 +2048,0.594944 +4096,0.653312 +8192,0.678912 +16384,1.16429 +32768,1.29024 +65536,1.46637 +131072,2.65421 +262144,4.31309 +524288,8.32102 +1048576,13.9991 +2097152,27.2712 +4194304,53.9136 +8388608,105.826 +16777216,211.525 +33554432,425.112 +67108864,853.533 +16,0.8448 +32,0.856064 +64,0.794624 +128,0.580608 +256,0.697344 +512,0.70144 +1024,0.739328 +2048,0.78848 +4096,0.766976 +8192,0.859136 +16384,0.910336 +32768,1.1223 +65536,1.4295 +131072,2.85491 +262144,4.37862 +524288,7.7865 +1048576,15.1788 +2097152,27.3981 +4194304,53.5439 +8388608,105.797 +16777216,212.636 +33554432,423.428 +67108864,852.127 +16,0.641024 +32,0.5888 +64,0.571392 +128,0.577536 +256,0.585696 +512,0.584704 +1024,0.657408 +2048,0.693248 +4096,0.637952 +8192,0.749568 +16384,0.776192 +32768,1.03629 +65536,1.47149 +131072,2.73203 +262144,4.34074 +524288,7.78854 +1048576,15.4225 +2097152,27.393 +4194304,54.4788 +8388608,106.334 +16777216,213.78 +33554432,425.59 +67108864,853.183 +16,0.551936 +32,0.536576 +64,0.641024 +128,0.579584 +256,0.587776 +512,0.648192 +1024,0.587776 +2048,0.625664 +4096,0.692224 +8192,0.681984 +16384,0.841728 +32768,0.975872 +65536,1.4295 +131072,2.51494 +262144,4.46157 +524288,8.02202 +1048576,15.2207 +2097152,27.8456 +4194304,53.5603 +8388608,106.649 +16777216,212.328 +33554432,424.167 +67108864,854.156 +16,0.64 +32,0.589824 +64,0.644096 +128,0.638976 +256,0.630784 +512,0.579584 +1024,0.57344 +2048,0.632832 +4096,0.649216 +8192,0.6912 +16384,1.07725 +32768,0.980992 +65536,1.47046 +131072,2.95014 +262144,4.59162 +524288,7.76397 +1048576,14.0022 +2097152,27.7811 +4194304,54.3314 +8388608,105.608 +16777216,211.634 +33554432,423.438 +67108864,850.311 +16,0.763904 +32,0.813056 +64,0.764928 +128,0.690176 +256,0.8192 +512,0.769024 +1024,0.733184 +2048,0.836608 +4096,0.799744 +8192,0.771072 +16384,1.22061 +32768,1.12742 +65536,1.50016 +131072,2.49446 +262144,4.55987 +524288,7.51718 +1048576,15.0292 +2097152,27.7944 +4194304,54.1624 +8388608,106.31 +16777216,209.192 +33554432,425.193 +67108864,849.304 +16,0.65024 +32,0.591872 +64,0.576512 +128,0.661504 +256,0.64512 +512,0.570368 +1024,0.722944 +2048,0.703488 +4096,0.646144 +8192,0.760832 +16384,0.785408 +32768,0.974848 +65536,1.42746 +131072,2.49856 +262144,4.27315 +524288,7.95034 +1048576,14.294 +2097152,26.9578 +4194304,53.5747 +8388608,106.642 +16777216,210.626 +33554432,425.702 +67108864,849.464 +16,1.30253 +32,0.540672 +64,0.51712 +128,1.11821 +256,0.565248 +512,0.64512 +1024,0.945152 +2048,0.628736 +4096,0.647168 +8192,0.690176 +16384,0.796672 +32768,1.03526 +65536,1.44282 +131072,2.8672 +262144,4.68582 +524288,7.48954 +1048576,14.0636 +2097152,26.7643 +4194304,54.4942 +8388608,106.674 +16777216,213.922 +33554432,425.36 +67108864,852.755 +16,0.540672 +32,0.574464 +64,0.571392 +128,0.577536 +256,0.621568 +512,0.595968 +1024,0.601088 +2048,0.622592 +4096,0.644096 +8192,0.68608 +16384,0.800768 +32768,1.04448 +65536,1.52678 +131072,2.52723 +262144,4.38682 +524288,7.97389 +1048576,14.6248 +2097152,27.903 +4194304,53.3064 +8388608,105.964 +16777216,209.862 +33554432,425.396 +67108864,852.37 +16,0.631808 +32,0.63488 +64,0.649216 +128,0.569344 +256,0.635904 +512,0.57856 +1024,0.652288 +2048,0.622592 +4096,0.707584 +8192,0.750592 +16384,0.851968 +32768,1.03424 +65536,1.43053 +131072,2.5303 +262144,4.80563 +524288,7.60115 +1048576,14.9412 +2097152,27.006 +4194304,53.8911 +8388608,106.384 +16777216,212.007 +33554432,422.46 +67108864,852.044 +16,0.528384 +32,0.649216 +64,0.871424 +128,0.621568 +256,0.591872 +512,0.570368 +1024,0.659456 +2048,0.776192 +4096,0.709632 +8192,0.6912 +16384,0.986112 +32768,1.03629 +65536,1.4551 +131072,2.69312 +262144,4.49946 +524288,7.50694 +1048576,14.1302 +2097152,26.7377 +4194304,53.8358 +8388608,106.511 +16777216,212.163 +33554432,424.622 +67108864,849.113 +16,0.549888 +32,0.62976 +64,0.637952 +128,0.577536 +256,0.859136 +512,0.652288 +1024,0.579584 +2048,0.684032 +4096,0.707584 +8192,0.76288 +16384,1.07725 +32768,1.04243 +65536,1.43258 +131072,2.72384 +262144,4.3817 +524288,8.16435 +1048576,13.7359 +2097152,27.2364 +4194304,53.2879 +8388608,105.502 +16777216,213.111 +33554432,424.372 +67108864,850.145 +16,0.772096 +32,0.724992 +64,0.818176 +128,1.05574 +256,0.600064 +512,0.580608 +1024,0.596992 +2048,1.09568 +4096,0.69632 +8192,0.697344 +16384,0.872448 +32768,1.04038 +65536,1.38957 +131072,2.52928 +262144,4.44211 +524288,8.00666 +1048576,14.3933 +2097152,27.1821 +4194304,53.8911 +8388608,106.14 +16777216,211.371 +33554432,426.568 +67108864,851.804 +16,0.94208 +32,0.638976 +64,0.569344 +128,0.62464 +256,0.649216 +512,0.857088 +1024,0.584704 +2048,0.616448 +4096,1.14176 +8192,0.676864 +16384,0.836608 +32768,1.06496 +65536,1.37523 +131072,2.82931 +262144,4.86093 +524288,7.7609 +1048576,15.0938 +2097152,27.4217 +4194304,54.1542 +8388608,105.731 +16777216,208.822 +33554432,426.759 +67108864,850.114 +16,0.567296 +32,0.580608 +64,1.27488 +128,0.571392 +256,0.630784 +512,0.654336 +1024,0.64512 +2048,0.610304 +4096,0.636928 +8192,0.697344 +16384,0.871424 +32768,1.03834 +65536,1.42746 +131072,2.38899 +262144,4.57216 +524288,7.53459 +1048576,14.2193 +2097152,27.5354 +4194304,54.443 +8388608,106.947 +16777216,211.361 +33554432,423.343 +67108864,853.775 +16,0.546816 +32,0.543744 +64,0.617472 +128,0.816128 +256,0.908288 +512,0.56832 +1024,0.651264 +2048,0.612352 +4096,0.65024 +8192,0.689152 +16384,0.83456 +32768,0.978944 +65536,1.4336 +131072,2.51597 +262144,4.33459 +524288,8.02611 +1048576,14.5695 +2097152,27.2732 +4194304,53.9576 +8388608,107.086 +16777216,213.707 +33554432,424.842 +67108864,850.411 +16,0.758784 +32,0.769024 +64,0.73728 +128,0.72192 +256,0.703488 +512,0.75776 +1024,0.908288 +2048,0.770048 +4096,0.734208 +8192,0.82944 +16384,0.97792 +32768,1.11206 +65536,1.45613 +131072,2.88256 +262144,4.34074 +524288,7.69946 +1048576,14.0974 +2097152,27.3818 +4194304,53.4518 +8388608,105.587 +16777216,210.394 +33554432,424.426 +67108864,852.767 +16,0.804864 +32,0.580608 +64,0.630784 +128,0.574464 +256,0.586752 +512,0.596992 +1024,0.638976 +2048,0.648192 +4096,1.08646 +8192,0.774144 +16384,0.842752 +32768,1.04653 +65536,1.43974 +131072,2.53338 +262144,4.32845 +524288,8.18381 +1048576,13.8803 +2097152,26.1663 +4194304,53.4088 +8388608,106.162 +16777216,212.558 +33554432,425.24 +67108864,854.284 +16,0.636928 +32,0.622592 +64,0.78848 +128,0.702464 +256,0.787456 +512,1.22573 +1024,0.862208 +2048,0.874496 +4096,0.736256 +8192,0.817152 +16384,0.866304 +32768,1.08544 +65536,1.44998 +131072,2.57741 +262144,4.97152 +524288,8.2135 +1048576,14.5899 +2097152,26.8278 +4194304,54.2065 +8388608,106.353 +16777216,212.133 +33554432,424.022 +67108864,850.464 +16,0.77824 +32,0.753664 +64,0.878592 +128,0.63488 +256,0.638976 +512,0.800768 +1024,0.65536 +2048,0.62976 +4096,0.65536 +8192,0.75776 +16384,0.848896 +32768,1.04346 +65536,2.15859 +131072,2.51802 +262144,4.30387 +524288,8.06912 +1048576,14.379 +2097152,27.5599 +4194304,54.2024 +8388608,107.652 +16777216,210.58 +33554432,427.713 +67108864,850.298 +16,0.553984 +32,0.538624 +64,0.58368 +128,0.90624 +256,0.567296 +512,0.643072 +1024,0.603136 +2048,0.685056 +4096,0.799744 +8192,0.756736 +16384,0.856064 +32768,1.03526 +65536,1.4336 +131072,2.95834 +262144,4.36531 +524288,7.52538 +1048576,14.5644 +2097152,27.5988 +4194304,53.3924 +8388608,107.431 +16777216,210.359 +33554432,424.513 +67108864,851.101 +16,0.87552 +32,0.667648 +64,0.820224 +128,0.700416 +256,0.705536 +512,0.791552 +1024,1.32506 +2048,0.796672 +4096,0.823296 +8192,0.774112 +16384,0.968704 +32768,1.30765 +65536,1.49402 +131072,2.5385 +262144,4.3305 +524288,7.87456 +1048576,14.3452 +2097152,27.7248 +4194304,52.7063 +8388608,105.425 +16777216,210.856 +33554432,423.633 +67108864,848.868 +16,0.797696 +32,0.787456 +64,0.72192 +128,0.702464 +256,0.765952 +512,0.641024 +1024,0.672768 +2048,0.630784 +4096,0.705536 +8192,0.712704 +16384,0.837632 +32768,1.05062 +65536,1.45408 +131072,2.40026 +262144,4.9367 +524288,7.45062 +1048576,13.694 +2097152,28.0525 +4194304,53.122 +8388608,105.566 +16777216,210.509 +33554432,423.759 +67108864,850.319 +16,0.78336 +32,0.722944 +64,0.58368 +128,0.63488 +256,0.572416 +512,0.974848 +1024,0.612352 +2048,0.638976 +4096,0.636928 +8192,0.765952 +16384,0.791552 +32768,1.01171 +65536,1.43667 +131072,2.38797 +262144,4.30592 +524288,7.90221 +1048576,14.3186 +2097152,27.5896 +4194304,53.7928 +8388608,106.545 +16777216,211.342 +33554432,424.168 +67108864,853.772 +16,0.710656 +32,1.12538 +64,0.74752 +128,0.946176 +256,0.933888 +512,0.70656 +1024,0.899072 +2048,0.7424 +4096,1.14381 +8192,0.812032 +16384,1.00864 +32768,1.16326 +65536,2.31526 +131072,2.72896 +262144,5.02579 +524288,8.23296 +1048576,14.4015 +2097152,27.819 +4194304,53.7539 +8388608,105.679 +16777216,211.35 +33554432,426.576 +67108864,853.083 +16,0.666624 +32,0.641024 +64,0.598016 +128,0.631808 +256,0.57344 +512,0.58368 +1024,0.654336 +2048,0.674816 +4096,0.700416 +8192,0.677888 +16384,0.774144 +32768,0.989184 +65536,1.41619 +131072,2.688 +262144,4.57626 +524288,7.48032 +1048576,15.191 +2097152,27.7821 +4194304,54.2044 +8388608,106.881 +16777216,211.9 +33554432,434.077 +67108864,854.821 +16,1.01376 +32,1.14074 +64,0.69632 +128,0.736256 +256,0.726016 +512,0.836608 +1024,0.73216 +2048,0.733184 +4096,0.974848 +8192,0.850944 +16384,0.91648 +32768,1.3271 +65536,1.54829 +131072,2.8713 +262144,4.75136 +524288,7.8295 +1048576,14.6412 +2097152,27.3428 +4194304,54.0785 +8388608,105.525 +16777216,211.018 +33554432,424.407 +67108864,852.225 +16,0.62464 +32,0.736256 +64,0.741376 +128,0.77824 +256,0.70656 +512,0.745472 +1024,1.02605 +2048,0.765952 +4096,0.657408 +8192,0.904192 +16384,0.987136 +32768,1.10694 +65536,1.46739 +131072,2.79552 +262144,4.38886 +524288,7.66874 +1048576,14.6196 +2097152,27.6408 +4194304,53.7221 +8388608,105.876 +16777216,212.364 +33554432,427.136 +67108864,855.011 +16,0.830464 +32,0.730112 +64,0.799744 +128,0.635904 +256,0.580608 +512,0.644096 +1024,0.64512 +2048,0.67584 +4096,0.642048 +8192,0.72704 +16384,0.770048 +32768,1.03834 +65536,1.43258 +131072,2.65933 +262144,4.21581 +524288,7.72506 +1048576,14.5992 +2097152,27.3582 +4194304,53.8675 +8388608,107.185 +16777216,211.918 +33554432,428.122 +67108864,853.199 +16,0.777216 +32,0.718848 +64,0.80384 +128,0.830464 +256,0.68096 +512,0.675808 +1024,0.797696 +2048,0.758784 +4096,0.958464 +8192,0.832512 +16384,0.897024 +32768,1.10387 +65536,1.81862 +131072,2.62144 +262144,4.47795 +524288,7.53562 +1048576,13.8711 +2097152,28.0914 +4194304,54.6314 +8388608,104.9 +16777216,210.568 +33554432,425.104 +67108864,851.878 +16,0.713728 +32,0.739328 +64,0.7936 +128,0.735232 +256,0.709632 +512,0.615424 +1024,1.21856 +2048,0.68608 +4096,0.63488 +8192,0.694272 +16384,0.781312 +32768,1.03731 +65536,1.65683 +131072,2.57536 +262144,5.04013 +524288,7.71686 +1048576,14.0339 +2097152,27.6091 +4194304,53.7508 +8388608,104.525 +16777216,209.979 +33554432,426.277 +67108864,853.241 +16,0.744448 +32,0.787456 +64,0.806912 +128,0.764928 +256,0.635904 +512,0.572416 +1024,0.724992 +2048,0.740352 +4096,0.703488 +8192,0.777216 +16384,1.31072 +32768,1.04858 +65536,1.4377 +131072,2.7136 +262144,4.38886 +524288,7.74042 +1048576,15.1245 +2097152,27.4606 +4194304,54.9038 +8388608,106.616 +16777216,211.676 +33554432,425.093 +67108864,846.952 +16,0.710656 +32,0.78336 +64,0.795648 +128,0.740352 +256,0.731136 +512,0.770048 +1024,0.689152 +2048,0.760832 +4096,0.729088 +8192,0.756736 +16384,0.841728 +32768,0.980992 +65536,1.37933 +131072,2.51904 +262144,4.37245 +524288,7.89402 +1048576,14.1036 +2097152,27.3091 +4194304,53.8204 +8388608,106.002 +16777216,212.354 +33554432,425.406 +67108864,851.993 +16,0.792576 +32,0.692224 +64,0.802816 +128,0.735232 +256,0.726016 +512,0.64 +1024,0.668672 +2048,0.630784 +4096,0.71168 +8192,0.754688 +16384,0.83968 +32768,1.61485 +65536,1.47354 +131072,2.54771 +262144,4.43904 +524288,7.60422 +1048576,14.9187 +2097152,27.394 +4194304,53.1866 +8388608,105.646 +16777216,213.551 +33554432,424.034 +67108864,851.143 +16,0.677888 +32,0.673792 +64,0.761856 +128,0.703424 +256,0.785408 +512,0.572416 +1024,0.8448 +2048,0.687104 +4096,0.712704 +8192,0.705536 +16384,0.782336 +32768,0.982016 +65536,1.4336 +131072,2.41152 +262144,4.23117 +524288,7.62573 +1048576,14.3124 +2097152,27.4084 +4194304,53.6637 +8388608,106.581 +16777216,212.94 +33554432,423.622 +67108864,850.625 +16,0.72192 +32,0.806912 +64,0.57344 +128,0.663552 +256,0.823296 +512,0.672768 +1024,0.643072 +2048,0.6912 +4096,0.72192 +8192,0.75776 +16384,0.830464 +32768,1.0752 +65536,1.3865 +131072,2.44429 +262144,4.25165 +524288,7.46701 +1048576,14.6575 +2097152,27.7289 +4194304,53.4948 +8388608,106.366 +16777216,210.075 +33554432,426.235 +67108864,852.419 +16,0.62976 +32,0.592896 +64,0.821248 +128,0.60928 +256,0.566272 +512,0.664576 +1024,0.586752 +2048,0.616448 +4096,0.971776 +8192,0.777216 +16384,0.857088 +32768,1.21958 +65536,1.42848 +131072,2.39411 +262144,4.46771 +524288,7.46496 +1048576,14.5295 +2097152,27.1165 +4194304,53.9884 +8388608,105.582 +16777216,212.262 +33554432,426.346 +67108864,854.212 +16,0.772096 +32,0.695296 +64,0.79872 +128,0.825344 +256,0.770048 +512,0.789504 +1024,0.790528 +2048,0.82432 +4096,0.806912 +8192,0.831488 +16384,0.908288 +32768,1.36704 +65536,1.46842 +131072,2.54362 +262144,4.28032 +524288,8.0855 +1048576,14.7036 +2097152,28.4652 +4194304,53.8296 +8388608,105.244 +16777216,212.645 +33554432,426.305 +67108864,855.587 +16,0.55808 +32,0.635904 +64,0.572416 +128,0.57344 +256,0.702464 +512,0.570368 +1024,0.65024 +2048,0.676864 +4096,0.724992 +8192,0.693248 +16384,0.8448 +32768,1.26054 +65536,1.42848 +131072,3.49082 +262144,4.69197 +524288,7.45472 +1048576,14.2234 +2097152,27.4053 +4194304,53.6822 +8388608,105.628 +16777216,213.479 +33554432,429.274 +67108864,853.959 +16,0.934912 +32,0.678912 +64,0.96256 +128,0.7936 +256,1.0711 +512,0.674816 +1024,0.792576 +2048,0.733184 +4096,1.00352 +8192,0.826368 +16384,0.973824 +32768,1.0281 +65536,1.57798 +131072,2.6112 +262144,4.43494 +524288,8.19098 +1048576,14.6125 +2097152,27.1421 +4194304,53.0821 +8388608,106.615 +16777216,210.67 +33554432,421.195 +67108864,854.619 +16,0.781312 +32,0.807936 +64,0.612352 +128,0.811008 +256,0.877568 +512,0.876544 +1024,0.738304 +2048,0.78848 +4096,0.837632 +8192,0.835584 +16384,0.924672 +32768,1.10694 +65536,1.51347 +131072,2.59789 +262144,4.30694 +524288,7.68512 +1048576,13.9172 +2097152,27.3183 +4194304,55.0482 +8388608,105.808 +16777216,210.494 +33554432,426.979 +67108864,852.601 +16,1.03322 +32,1.31174 +64,0.859136 +128,0.718848 +256,0.760832 +512,0.811008 +1024,0.744448 +2048,0.769024 +4096,0.823296 +8192,0.832512 +16384,0.966656 +32768,1.11718 +65536,1.47251 +131072,2.55078 +262144,4.38886 +524288,7.87354 +1048576,14.3053 +2097152,27.7064 +4194304,54.2894 +8388608,105.933 +16777216,211.064 +33554432,426.309 +67108864,851.081 +16,0.781312 +32,0.881664 +64,0.813056 +128,0.72704 +256,0.632832 +512,0.587776 +1024,0.815104 +2048,0.630784 +4096,0.637952 +8192,0.685056 +16384,0.782336 +32768,0.978944 +65536,1.37114 +131072,3.01056 +262144,4.42368 +524288,7.46394 +1048576,14.7497 +2097152,27.8938 +4194304,53.3627 +8388608,105.767 +16777216,214.112 +33554432,424.103 +67108864,849.458 +16,0.715776 +32,0.748544 +64,0.930816 +128,0.572416 +256,0.651264 +512,0.579584 +1024,0.594944 +2048,0.70656 +4096,0.666624 +8192,0.678912 +16384,0.928768 +32768,1.31891 +65536,1.62304 +131072,2.54464 +262144,4.44518 +524288,7.61446 +1048576,14.6852 +2097152,28.1641 +4194304,53.3002 +8388608,106.94 +16777216,211.929 +33554432,423.492 +67108864,850.899 +16,0.930816 +32,0.77824 +64,0.539648 +128,0.78336 +256,0.713728 +512,0.64 +1024,0.652288 +2048,0.699392 +4096,0.707584 +8192,0.695296 +16384,0.869376 +32768,0.987136 +65536,1.48582 +131072,2.54054 +262144,4.12058 +524288,7.77728 +1048576,14.7425 +2097152,27.0756 +4194304,53.5327 +8388608,105.798 +16777216,212.092 +33554432,424.537 +67108864,852.177 +16,0.729088 +32,0.684032 +64,0.734208 +128,0.81408 +256,0.780288 +512,0.703488 +1024,0.69632 +2048,0.789504 +4096,0.787456 +8192,0.724992 +16384,0.852992 +32768,1.0537 +65536,1.43258 +131072,2.59379 +262144,4.1513 +524288,7.47725 +1048576,15.2545 +2097152,26.7919 +4194304,53.4098 +8388608,108.959 +16777216,210.561 +33554432,426.149 +67108864,853.342 +16,0.879616 +32,0.770048 +64,0.78848 +128,0.743424 +256,0.748544 +512,0.73728 +1024,0.779264 +2048,0.835584 +4096,0.754688 +8192,0.789504 +16384,0.956416 +32768,1.2032 +65536,1.46534 +131072,2.48525 +262144,4.29568 +524288,7.82643 +1048576,14.7077 +2097152,27.4227 +4194304,54.1317 +8388608,106.351 +16777216,211.192 +33554432,429.005 +67108864,851.367 +16,0.836608 +32,0.724992 +64,0.73216 +128,0.764928 +256,0.761856 +512,0.761856 +1024,0.586752 +2048,0.662528 +4096,0.7168 +8192,0.744448 +16384,0.78336 +32768,1.16838 +65536,2.49344 +131072,2.70438 +262144,4.38477 +524288,7.5561 +1048576,14.2725 +2097152,26.5882 +4194304,53.9392 +8388608,106.373 +16777216,209.755 +33554432,423.515 +67108864,1007.71 +16,0.81408 +32,0.758784 +64,0.648192 +128,0.673792 +256,0.66048 +512,0.65024 +1024,0.575488 +2048,0.620544 +4096,0.651264 +8192,0.695296 +16384,0.768 +32768,0.978944 +65536,1.62202 +131072,2.54771 +262144,4.33357 +524288,7.4199 +1048576,14.764 +2097152,27.2364 +4194304,53.7795 +8388608,104.693 +16777216,212.53 +33554432,425.824 +67108864,848.938 +16,0.733184 +32,0.894976 +64,0.930816 +128,0.739328 +256,0.863232 +512,0.705536 +1024,0.88064 +2048,0.88064 +4096,0.96768 +8192,0.991232 +16384,0.90112 +32768,1.29229 +65536,1.67731 +131072,2.68083 +262144,4.40525 +524288,8.22579 +1048576,15.5689 +2097152,26.9476 +4194304,53.2603 +8388608,106.458 +16777216,210.046 +33554432,426.286 +67108864,851.122 +16,0.8192 +32,0.592896 +64,0.65536 +128,0.782336 +256,0.71168 +512,0.75776 +1024,0.700416 +2048,0.797696 +4096,0.769024 +8192,0.838656 +16384,0.9984 +32768,1.14176 +65536,1.50016 +131072,3.26554 +262144,4.36122 +524288,7.81005 +1048576,14.3432 +2097152,27.1237 +4194304,53.6044 +8388608,107.749 +16777216,211.486 +33554432,424.715 +67108864,852.219 +16,0.964608 +32,0.774144 +64,0.748544 +128,0.694272 +256,0.70656 +512,0.728064 +1024,0.801792 +2048,0.738304 +4096,0.790528 +8192,0.946176 +16384,1.00454 +32768,0.989184 +65536,1.792 +131072,2.5385 +262144,4.20557 +524288,7.70458 +1048576,14.849 +2097152,28.1201 +4194304,54.3724 +8388608,105.772 +16777216,210.384 +33554432,424.301 +67108864,853.138 +16,0.787456 +32,0.654336 +64,0.67072 +128,0.785408 +256,0.863232 +512,0.776192 +1024,0.750592 +2048,0.84992 +4096,0.708608 +8192,0.700416 +16384,0.799744 +32768,0.98304 +65536,1.42848 +131072,2.67674 +262144,4.74931 +524288,7.43117 +1048576,14.5193 +2097152,27.7504 +4194304,53.5388 +8388608,106.679 +16777216,212.011 +33554432,426.064 +67108864,853.857 +16,0.800768 +32,0.745472 +64,0.726016 +128,0.81408 +256,0.735232 +512,0.881664 +1024,0.750592 +2048,0.755712 +4096,0.784384 +8192,0.867328 +16384,0.924672 +32768,1.08851 +65536,1.47456 +131072,2.59891 +262144,4.29056 +524288,8.19712 +1048576,14.9955 +2097152,26.7479 +4194304,53.2552 +8388608,106.75 +16777216,210.241 +33554432,423.779 +67108864,852.948 +16,0.79872 +32,0.766976 +64,0.719872 +128,0.69632 +256,0.751616 +512,0.815104 +1024,0.779264 +2048,0.723968 +4096,0.763904 +8192,0.872448 +16384,1.02502 +32768,1.09363 +65536,1.44486 +131072,2.92864 +262144,4.58138 +524288,7.73018 +1048576,13.9295 +2097152,27.2835 +4194304,52.7503 +8388608,106.556 +16777216,212.384 +33554432,424.877 +67108864,855.277 +16,0.93696 +32,0.697344 +64,0.88064 +128,0.753664 +256,0.709632 +512,0.944128 +1024,0.769024 +2048,0.763904 +4096,0.784384 +8192,0.873472 +16384,1.00352 +32768,1.19091 +65536,1.49504 +131072,2.58253 +262144,4.57728 +524288,8.25037 +1048576,14.5449 +2097152,26.6619 +4194304,53.3832 +8388608,106.654 +16777216,210.189 +33554432,425.284 +67108864,850.909 +16,0.779264 +32,0.756736 +64,1.36704 +128,0.71168 +256,0.886784 +512,0.580608 +1024,0.637952 +2048,0.622592 +4096,0.648192 +8192,0.751616 +16384,0.835584 +32768,0.979968 +65536,1.43872 +131072,2.39104 +262144,4.54451 +524288,7.53459 +1048576,14.6166 +2097152,27.1411 +4194304,54.1092 +8388608,107.39 +16777216,212.967 +33554432,426.411 +67108864,850.762 +16,0.751616 +32,0.766976 +64,0.794624 +128,0.694272 +256,0.723968 +512,0.820224 +1024,0.809984 +2048,0.758784 +4096,1.20013 +8192,1.08339 +16384,1.01786 +32768,1.09158 +65536,1.46022 +131072,2.56307 +262144,4.31616 +524288,7.73734 +1048576,15.3078 +2097152,28.0535 +4194304,53.7364 +8388608,106.97 +16777216,211.151 +33554432,425.001 +67108864,849.966 +16,0.713728 +32,0.728064 +64,0.577536 +128,0.719872 +256,0.631808 +512,0.637952 +1024,0.592896 +2048,0.632832 +4096,0.748544 +8192,0.859136 +16384,0.935936 +32768,1.11104 +65536,1.47354 +131072,2.52723 +262144,4.39808 +524288,7.82541 +1048576,14.677 +2097152,26.8145 +4194304,52.7913 +8388608,106.332 +16777216,211.789 +33554432,423.783 +67108864,853.333 +16,0.862208 +32,0.712704 +64,0.816128 +128,0.70144 +256,0.761856 +512,0.818176 +1024,0.909312 +2048,0.89088 +4096,0.802816 +8192,0.8704 +16384,0.912384 +32768,1.1049 +65536,1.52986 +131072,2.57434 +262144,4.66534 +524288,7.55302 +1048576,14.1015 +2097152,27.3388 +4194304,52.8568 +8388608,104.478 +16777216,212.706 +33554432,425.52 +67108864,848.197 +16,0.801792 +32,0.908288 +64,0.801792 +128,0.710656 +256,0.753664 +512,0.766976 +1024,0.69216 +2048,0.68608 +4096,0.70656 +8192,0.764928 +16384,0.748544 +32768,1.04448 +65536,1.44691 +131072,2.7863 +262144,4.40422 +524288,7.51104 +1048576,14.5275 +2097152,27.2988 +4194304,54.017 +8388608,106.065 +16777216,211.029 +33554432,424.934 +67108864,853.192 +16,0.799744 +32,0.850944 +64,1.29843 +128,0.72704 +256,0.763904 +512,0.760832 +1024,0.78336 +2048,0.930816 +4096,0.903168 +8192,0.874496 +16384,0.949248 +32768,1.13357 +65536,1.47866 +131072,2.50163 +262144,4.27827 +524288,8.09677 +1048576,14.1967 +2097152,27.2415 +4194304,53.6136 +8388608,107.017 +16777216,212.699 +33554432,426.553 +67108864,851.706 +16,0.835584 +32,0.809984 +64,0.792576 +128,0.823296 +256,0.707584 +512,0.794624 +1024,0.884736 +2048,0.755712 +4096,0.811008 +8192,0.871424 +16384,0.979968 +32768,1.17146 +65536,1.72749 +131072,2.75456 +262144,4.60902 +524288,7.5305 +1048576,14.0114 +2097152,27.2824 +4194304,53.9034 +8388608,109.488 +16777216,211.068 +33554432,424.374 +67108864,852.576 +16,0.797696 +32,1.2841 +64,0.678912 +128,0.782336 +256,0.728064 +512,0.791552 +1024,0.734208 +2048,0.95744 +4096,0.781312 +8192,0.828416 +16384,0.997376 +32768,1.10899 +65536,1.55648 +131072,2.49344 +262144,4.81587 +524288,7.82336 +1048576,14.9709 +2097152,27.3101 +4194304,53.3647 +8388608,107.158 +16777216,211.01 +33554432,425.835 +67108864,852.226 +16,0.927744 +32,0.581632 +64,0.630784 +128,1.04755 +256,0.646144 +512,0.709632 +1024,0.930816 +2048,0.850944 +4096,0.785408 +8192,0.922624 +16384,1.58208 +32768,1.4336 +65536,1.75002 +131072,3.00032 +262144,4.24653 +524288,7.70355 +1048576,13.9674 +2097152,26.8902 +4194304,53.6187 +8388608,105.056 +16777216,212.352 +33554432,424.9 +67108864,848.84 +16,0.56832 +32,0.769024 +64,0.79872 +128,0.769024 +256,0.733184 +512,0.836608 +1024,0.794624 +2048,0.796672 +4096,0.815104 +8192,0.856064 +16384,0.90624 +32768,1.0793 +65536,1.66605 +131072,2.74842 +262144,4.54554 +524288,7.71174 +1048576,14.0872 +2097152,27.5005 +4194304,53.9873 +8388608,108.399 +16777216,210.899 +33554432,424.333 +67108864,852.938 +16,0.754688 +32,0.753664 +64,0.736256 +128,0.73728 +256,1.47661 +512,0.760832 +1024,0.780288 +2048,0.754688 +4096,0.755712 +8192,0.91648 +16384,1.00557 +32768,1.07827 +65536,1.70086 +131072,2.80371 +262144,4.92237 +524288,8.84941 +1048576,14.9647 +2097152,27.4452 +4194304,54.1983 +8388608,106.835 +16777216,212.889 +33554432,424.33 +67108864,850.859 +16,0.943104 +32,0.934912 +64,0.884736 +128,0.733184 +256,0.812032 +512,0.770048 +1024,1.15507 +2048,0.892928 +4096,0.763904 +8192,0.806912 +16384,0.979968 +32768,1.21344 +65536,1.4807 +131072,3.69152 +262144,4.8681 +524288,7.57248 +1048576,14.5029 +2097152,27.5794 +4194304,52.9777 +8388608,105.645 +16777216,210.873 +33554432,423.282 +67108864,849.861 +16,0.9472 +32,0.68608 +64,0.786432 +128,0.72192 +256,0.841728 +512,0.776192 +1024,0.838656 +2048,0.755712 +4096,1.18477 +8192,0.859136 +16384,1.00352 +32768,1.08442 +65536,1.51962 +131072,2.83955 +262144,4.32845 +524288,7.9401 +1048576,14.807 +2097152,28.0812 +4194304,54.1245 +8388608,106.607 +16777216,211.014 +33554432,424.753 +67108864,852.748 +16,1.03629 +32,0.672768 +64,0.852992 +128,0.813056 +256,1.33222 +512,0.781312 +1024,0.780288 +2048,0.797696 +4096,0.878592 +8192,1.01478 +16384,0.982016 +32768,1.04755 +65536,1.50323 +131072,2.60608 +262144,4.4288 +524288,7.89709 +1048576,14.932 +2097152,28.2604 +4194304,52.9316 +8388608,107.192 +16777216,210.998 +33554432,430.177 +67108864,850.595 +16,0.825344 +32,0.694272 +64,0.771072 +128,0.751616 +256,0.761856 +512,0.797696 +1024,0.982016 +2048,0.708608 +4096,0.763904 +8192,0.850944 +16384,0.908288 +32768,1.08544 +65536,1.64147 +131072,2.83443 +262144,4.51174 +524288,7.67078 +1048576,15.2955 +2097152,26.7121 +4194304,53.7364 +8388608,105.76 +16777216,211.074 +33554432,424.591 +67108864,850.876 +16,0.88064 +32,0.784384 +64,0.851968 +128,0.693248 +256,2.02547 +512,0.584704 +1024,0.80896 +2048,0.78336 +4096,0.770048 +8192,0.764928 +16384,0.955392 +32768,1.16429 +65536,1.50528 +131072,2.82112 +262144,4.37146 +524288,7.65645 +1048576,15.317 +2097152,27.3142 +4194304,53.1354 +8388608,105.574 +16777216,211.338 +33554432,426.777 +67108864,853.17 +16,0.817152 +32,0.76288 +64,0.805888 +128,0.719872 +256,0.694272 +512,0.718848 +1024,0.741376 +2048,0.733184 +4096,1.1264 +8192,0.861184 +16384,1.16941 +32768,1.26054 +65536,1.82886 +131072,2.4873 +262144,4.46669 +524288,8.59034 +1048576,15.0999 +2097152,27.2937 +4194304,53.3903 +8388608,106.443 +16777216,211.51 +33554432,423.814 +67108864,848.881 +16,0.769024 +32,0.925696 +64,0.873472 +128,0.741376 +256,0.743424 +512,0.782336 +1024,0.758784 +2048,1.03117 +4096,0.669696 +8192,0.789504 +16384,0.837632 +32768,1.39469 +65536,1.55443 +131072,2.76787 +262144,4.7831 +524288,7.57965 +1048576,13.993 +2097152,27.646 +4194304,53.2541 +8388608,106.758 +16777216,212.236 +33554432,426.067 +67108864,848.843 +16,0.856064 +32,0.781312 +64,0.823296 +128,1.0967 +256,0.6912 +512,0.759808 +1024,0.647168 +2048,0.648192 +4096,1.2247 +8192,0.743424 +16384,0.841728 +32768,1.03629 +65536,1.4295 +131072,2.80064 +262144,4.43392 +524288,7.91859 +1048576,14.3432 +2097152,27.4371 +4194304,53.5296 +8388608,104.876 +16777216,210.876 +33554432,424.751 +67108864,852.013 +16,0.7168 +32,0.787456 +64,0.753664 +128,0.750592 +256,0.912384 +512,0.78848 +1024,0.766976 +2048,0.679936 +4096,0.7168 +8192,0.832512 +16384,0.838656 +32768,1.03936 +65536,1.44691 +131072,3.10067 +262144,4.8128 +524288,8.12851 +1048576,15.0282 +2097152,27.1493 +4194304,54.0324 +8388608,105.214 +16777216,211.474 +33554432,428.278 +67108864,851.53 +16,0.796672 +32,0.963584 +64,0.884736 +128,0.730112 +256,0.63488 +512,0.575488 +1024,0.641024 +2048,0.676864 +4096,0.866304 +8192,1.2585 +16384,0.98816 +32768,0.991232 +65536,1.43974 +131072,2.52109 +262144,4.57523 +524288,7.53357 +1048576,14.3964 +2097152,28.4529 +4194304,53.6883 +8388608,106.417 +16777216,210.53 +33554432,424.704 +67108864,849.633 +16,0.881664 +32,0.780288 +64,1.88211 +128,0.80384 +256,0.642048 +512,0.63488 +1024,0.591872 +2048,0.68096 +4096,0.703488 +8192,0.688128 +16384,0.840704 +32768,1.03731 +65536,1.41107 +131072,2.55283 +262144,4.6551 +524288,7.66259 +1048576,14.6319 +2097152,27.564 +4194304,54.7666 +8388608,105.416 +16777216,211.235 +33554432,425.561 +67108864,851.957 +16,0.82944 +32,0.759808 +64,0.784384 +128,0.887808 +256,0.652288 +512,0.643072 +1024,0.642048 +2048,0.692224 +4096,0.714752 +8192,0.751616 +16384,0.836608 +32768,1.04346 +65536,1.43872 +131072,3.36896 +262144,4.63667 +524288,7.93395 +1048576,15.9334 +2097152,28.3034 +4194304,53.8419 +8388608,107.137 +16777216,211.592 +33554432,424.328 +67108864,852.437 +16,0.7936 +32,1.08237 +64,0.765952 +128,0.794624 +256,0.633856 +512,0.61952 +1024,0.647168 +2048,1.0752 +4096,0.70144 +8192,0.749568 +16384,0.791552 +32768,1.03322 +65536,1.60563 +131072,2.56614 +262144,4.18918 +524288,8.73984 +1048576,14.3841 +2097152,27.2517 +4194304,53.7559 +8388608,104.252 +16777216,209.727 +33554432,425.512 +67108864,853.126 +16,0.781312 +32,0.703488 +64,0.8704 +128,0.782336 +256,0.80384 +512,0.78336 +1024,0.815104 +2048,0.799744 +4096,0.809984 +8192,0.83456 +16384,0.85504 +32768,1.06598 +65536,1.4336 +131072,2.51597 +262144,4.32538 +524288,7.53869 +1048576,14.6289 +2097152,27.2968 +4194304,54.0836 +8388608,106.127 +16777216,211.33 +33554432,423.627 +67108864,850.366 +16,0.923648 +32,1.07315 +64,0.744448 +128,0.811008 +256,0.83456 +512,0.88064 +1024,0.687104 +2048,0.683008 +4096,0.70144 +8192,1.0199 +16384,0.896 +32768,1.57286 +65536,1.43258 +131072,2.53645 +262144,4.49024 +524288,7.84486 +1048576,14.4282 +2097152,27.2312 +4194304,53.7416 +8388608,106.459 +16777216,212.303 +33554432,423.91 +67108864,848.251 +16,0.841728 +32,0.781312 +64,0.733184 +128,0.8704 +256,0.900096 +512,0.633856 +1024,0.644096 +2048,0.677888 +4096,0.851968 +8192,0.754688 +16384,0.777216 +32768,1.03731 +65536,1.5657 +131072,2.53747 +262144,4.33869 +524288,7.60934 +1048576,13.8865 +2097152,27.2507 +4194304,53.7498 +8388608,106.755 +16777216,211.43 +33554432,426.142 +67108864,849.797 +16,0.929792 +32,0.908288 +64,1.32915 +128,0.96256 +256,0.713728 +512,0.953344 +1024,0.758784 +2048,0.775168 +4096,0.77312 +8192,0.698368 +16384,0.843776 +32768,1.0455 +65536,1.43974 +131072,2.52314 +262144,4.52915 +524288,7.54176 +1048576,14.4323 +2097152,27.7893 +4194304,54.0088 +8388608,107.053 +16777216,211.472 +33554432,425.922 +67108864,852.047 +16,0.792576 +32,0.758784 +64,0.782336 +128,0.63488 +256,0.636928 +512,0.636928 +1024,0.644096 +2048,0.67584 +4096,0.704512 +8192,0.774144 +16384,0.835584 +32768,1.0455 +65536,1.44998 +131072,2.54464 +262144,4.33664 +524288,8.13773 +1048576,14.549 +2097152,27.0694 +4194304,53.1732 +8388608,105.915 +16777216,210.37 +33554432,425.771 +67108864,850.886 +16,0.78848 +32,0.702464 +64,0.790528 +128,0.705536 +256,0.70144 +512,0.898048 +1024,0.985088 +2048,0.678912 +4096,0.709632 +8192,0.741376 +16384,0.845824 +32768,1.06086 +65536,1.43667 +131072,2.51802 +262144,4.31104 +524288,7.57965 +1048576,14.6299 +2097152,27.8272 +4194304,54.145 +8388608,106.008 +16777216,212.591 +33554432,425.512 +67108864,850.848 +16,0.862208 +32,0.759808 +64,1.13664 +128,0.817152 +256,0.6912 +512,0.869376 +1024,0.679936 +2048,0.673792 +4096,1.05062 +8192,0.678912 +16384,0.790496 +32768,1.44486 +65536,1.44589 +131072,2.52723 +262144,4.57216 +524288,7.97184 +1048576,14.5285 +2097152,27.2507 +4194304,53.3883 +8388608,107.264 +16777216,211.813 +33554432,424.453 +67108864,849.542 +16,0.8448 +32,0.954368 +64,1.07315 +128,0.821248 +256,0.86528 +512,0.779264 +1024,0.779264 +2048,0.684032 +4096,0.698368 +8192,0.688128 +16384,0.780288 +32768,1.03834 +65536,1.43565 +131072,2.52928 +262144,4.31923 +524288,8.07526 +1048576,14.5879 +2097152,26.7428 +4194304,53.6699 +8388608,106.819 +16777216,212.209 +33554432,425.943 +67108864,852.795 +16,0.820224 +32,0.795648 +64,1.06598 +128,0.70656 +256,0.584704 +512,0.582656 +1024,0.683008 +2048,1.60256 +4096,0.632832 +8192,0.694272 +16384,0.838656 +32768,0.982016 +65536,1.43155 +131072,2.97165 +262144,4.32742 +524288,8.12134 +1048576,14.4722 +2097152,27.9644 +4194304,53.8276 +8388608,105.307 +16777216,210.459 +33554432,426.285 +67108864,851.277 +16,0.55808 +32,0.900096 +64,0.927744 +128,0.927744 +256,0.71168 +512,0.74752 +1024,0.731136 +2048,0.93184 +4096,0.67584 +8192,0.886784 +16384,0.841728 +32768,1.04858 +65536,1.44589 +131072,2.5344 +262144,4.83123 +524288,8.13261 +1048576,15.1071 +2097152,27.2005 +4194304,54.3191 +8388608,105.56 +16777216,213.064 +33554432,424.483 +67108864,847.78 +16,0.837632 +32,0.774144 +64,0.746496 +128,0.738304 +256,0.75776 +512,0.785408 +1024,0.801792 +2048,0.779264 +4096,0.837632 +8192,0.877568 +16384,0.973824 +32768,1.18886 +65536,1.5913 +131072,2.53133 +262144,4.56704 +524288,7.66362 +1048576,13.9817 +2097152,27.8436 +4194304,54.1952 +8388608,105.902 +16777216,210.937 +33554432,423.601 +67108864,854.486 +16,1.21446 +32,0.712704 +64,1.06496 +128,0.736256 +256,0.912384 +512,0.768 +1024,0.728064 +2048,0.73216 +4096,1.05779 +8192,0.78848 +16384,0.831488 +32768,1.04038 +65536,1.43155 +131072,2.49856 +262144,4.34176 +524288,7.65645 +1048576,15.0057 +2097152,29.2772 +4194304,54.6867 +8388608,108.324 +16777216,212.043 +33554432,425.201 +67108864,852.544 +16,0.933888 +32,1.06291 +64,0.744448 +128,1.28 +256,0.746496 +512,0.77312 +1024,0.765952 +2048,0.715776 +4096,1.23597 +8192,0.690176 +16384,0.868352 +32768,1.04858 +65536,1.42848 +131072,2.53338 +262144,4.53734 +524288,7.76192 +1048576,14.6401 +2097152,27.946 +4194304,53.6125 +8388608,106.406 +16777216,208.712 +33554432,423.103 +67108864,855.57 +16,0.789504 +32,0.786432 +64,0.755712 +128,0.689152 +256,0.731136 +512,0.638976 +1024,0.91136 +2048,0.68608 +4096,1.46125 +8192,0.748544 +16384,0.838656 +32768,1.0455 +65536,1.54112 +131072,2.70739 +262144,4.38682 +524288,7.81414 +1048576,15.8659 +2097152,27.7361 +4194304,54.8987 +8388608,107.188 +16777216,212.617 +33554432,423.725 +67108864,849.79 +16,1.1561 +32,0.82944 +64,0.89088 +128,0.779264 +256,0.754688 +512,0.632832 +1024,1.31174 +2048,0.66048 +4096,0.635904 +8192,0.794624 +16384,0.848896 +32768,1.04038 +65536,1.44077 +131072,3.05357 +262144,4.32128 +524288,8.88115 +1048576,14.5306 +2097152,27.3971 +4194304,53.8225 +8388608,107.087 +16777216,210.388 +33554432,424.758 +67108864,846.253 +16,0.774144 +32,1.0455 +64,0.934912 +128,0.63488 +256,0.653312 +512,0.647168 +1024,0.648192 +2048,0.82944 +4096,0.703488 +8192,0.755712 +16384,1.36704 +32768,1.05062 +65536,1.42746 +131072,2.50573 +262144,4.64282 +524288,7.45779 +1048576,14.4323 +2097152,27.5302 +4194304,54.3754 +8388608,107.738 +16777216,211.781 +33554432,426.625 +67108864,849.657 +16,0.667648 +32,0.77312 +64,0.882688 +128,0.70144 +256,0.641024 +512,0.633856 +1024,0.567296 +2048,0.674816 +4096,0.70656 +8192,0.677888 +16384,1.61075 +32768,1.03936 +65536,1.44179 +131072,2.54669 +262144,4.33459 +524288,7.86637 +1048576,14.6084 +2097152,26.6342 +4194304,53.3135 +8388608,106.051 +16777216,211.387 +33554432,423.478 +67108864,850.422 +16,0.930816 +32,0.625664 +64,0.76288 +128,0.724992 +256,0.787456 +512,0.769024 +1024,0.708608 +2048,0.687104 +4096,1.64352 +8192,0.750592 +16384,0.835584 +32768,1.03731 +65536,1.66502 +131072,2.53133 +262144,4.38682 +524288,7.90528 +1048576,14.039 +2097152,27.178 +4194304,54.0436 +8388608,105.678 +16777216,211.647 +33554432,423.976 +67108864,850.767 +16,0.719872 +32,0.792576 +64,0.699392 +128,0.72704 +256,0.751616 +512,0.703488 +1024,0.744448 +2048,0.731136 +4096,0.643072 +8192,0.790528 +16384,0.83456 +32768,1.04346 +65536,1.43872 +131072,2.52314 +262144,4.32947 +524288,7.64621 +1048576,14.4374 +2097152,26.7622 +4194304,53.1159 +8388608,105.747 +16777216,212.981 +33554432,423.017 +67108864,850.478 +16,0.750592 +32,0.717824 +64,0.719872 +128,0.760832 +256,0.745472 +512,0.920576 +1024,0.745472 +2048,0.769024 +4096,0.83968 +8192,0.854016 +16384,0.934912 +32768,1.13766 +65536,1.46125 +131072,2.54771 +262144,4.72269 +524288,7.63699 +1048576,14.6125 +2097152,26.41 +4194304,53.076 +8388608,105.41 +16777216,210.587 +33554432,423.737 +67108864,846.666 +16,0.7168 +32,0.804864 +64,0.678912 +128,0.731136 +256,0.730112 +512,0.745472 +1024,0.734208 +2048,0.812032 +4096,0.815104 +8192,0.802816 +16384,1.01683 +32768,1.11718 +65536,1.44589 +131072,2.59686 +262144,4.30899 +524288,7.59501 +1048576,14.5828 +2097152,26.6179 +4194304,53.5122 +8388608,105.98 +16777216,213.025 +33554432,422.466 +67108864,852.692 +16,0.786432 +32,0.779264 +64,0.769024 +128,2.01728 +256,0.690176 +512,0.566272 +1024,0.649216 +2048,0.7168 +4096,0.70144 +8192,0.745472 +16384,0.832512 +32768,1.03322 +65536,1.44998 +131072,2.50368 +262144,4.34893 +524288,7.4496 +1048576,14.3872 +2097152,27.0889 +4194304,53.204 +8388608,105.317 +16777216,211.231 +33554432,424.133 +67108864,849.384 +16,0.7168 +32,0.740352 +64,0.707584 +128,0.715776 +256,0.75776 +512,0.692224 +1024,0.759808 +2048,0.753664 +4096,1.03731 +8192,0.789504 +16384,0.877568 +32768,1.13459 +65536,1.5063 +131072,2.51597 +262144,4.32333 +524288,7.76704 +1048576,14.5684 +2097152,27.9276 +4194304,53.2541 +8388608,105.384 +16777216,210.121 +33554432,427.236 +67108864,851.991 +16,0.775168 +32,0.795648 +64,0.749568 +128,0.806912 +256,0.841728 +512,0.708608 +1024,0.739328 +2048,0.745472 +4096,0.88576 +8192,0.804864 +16384,0.913408 +32768,1.13152 +65536,1.47866 +131072,2.61734 +262144,4.41446 +524288,7.55814 +1048576,14.5377 +2097152,26.8954 +4194304,53.1958 +8388608,105.548 +16777216,211.719 +33554432,424.868 +67108864,850.128 +16,0.79872 +32,0.831488 +64,0.900096 +128,0.695296 +256,0.753664 +512,1.02502 +1024,0.754688 +2048,0.77312 +4096,0.724992 +8192,0.80384 +16384,0.930816 +32768,1.11002 +65536,1.4889 +131072,2.5129 +262144,4.7145 +524288,7.71379 +1048576,14.5388 +2097152,26.8237 +4194304,53.7713 +8388608,106.555 +16777216,211.519 +33554432,423.319 +67108864,850.246 +16,0.909312 +32,0.960512 +64,0.999424 +128,0.684032 +256,0.715776 +512,0.74752 +1024,0.786432 +2048,0.777216 +4096,0.90112 +8192,0.887808 +16384,0.999424 +32768,1.09875 +65536,1.50528 +131072,2.52314 +262144,4.34176 +524288,7.83053 +1048576,14.2551 +2097152,26.6875 +4194304,53.0115 +8388608,105.737 +16777216,211.429 +33554432,422.445 +67108864,850.895 +16,0.789504 +32,0.72192 +64,0.928768 +128,1.08646 +256,0.765952 +512,0.674816 +1024,0.642048 +2048,0.679936 +4096,0.726016 +8192,0.74752 +16384,0.837632 +32768,1.0455 +65536,1.67629 +131072,2.54874 +262144,4.13286 +524288,8.15821 +1048576,14.9729 +2097152,26.8605 +4194304,53.2419 +8388608,104.794 +16777216,210.973 +33554432,424.663 +67108864,850.456 +16,0.784384 +32,0.728064 +64,0.821248 +128,0.704512 +256,1.21651 +512,0.953344 +1024,0.63488 +2048,0.620544 +4096,0.649216 +8192,0.764928 +16384,0.846848 +32768,1.14893 +65536,1.43155 +131072,2.53747 +262144,4.55373 +524288,7.47725 +1048576,14.8562 +2097152,27.8129 +4194304,53.121 +8388608,106.281 +16777216,209.672 +33554432,425.235 +67108864,849.598 +16,0.827392 +32,0.72704 +64,0.709632 +128,0.794624 +256,0.739328 +512,0.738304 +1024,0.96768 +2048,0.676864 +4096,0.699392 +8192,0.748544 +16384,0.86528 +32768,1.06086 +65536,1.42848 +131072,2.24563 +262144,4.3264 +524288,7.7015 +1048576,14.3667 +2097152,26.7192 +4194304,53.591 +8388608,106.534 +16777216,211.985 +33554432,424.209 +67108864,846.685 +16,0.754688 +32,0.946176 +64,0.93696 +128,0.698368 +256,0.722944 +512,0.800768 +1024,0.585728 +2048,0.674816 +4096,0.72704 +8192,1.08339 +16384,0.832512 +32768,1.03219 +65536,1.38035 +131072,2.49139 +262144,4.36736 +524288,7.96774 +1048576,14.5029 +2097152,26.9804 +4194304,54.2403 +8388608,105.218 +16777216,210.351 +33554432,423.471 +67108864,852.758 +16,0.910336 +32,0.653312 +64,0.726016 +128,0.812032 +256,0.894976 +512,0.70144 +1024,0.751616 +2048,0.704512 +4096,0.649216 +8192,0.749568 +16384,0.8448 +32768,1.0537 +65536,1.42541 +131072,2.50163 +262144,4.62029 +524288,7.79264 +1048576,14.0698 +2097152,27.3562 +4194304,53.0657 +8388608,105.613 +16777216,210.997 +33554432,422.852 +67108864,851.348 +16,0.823296 +32,0.72192 +64,0.730112 +128,0.626688 +256,0.626688 +512,0.641024 +1024,0.644096 +2048,0.679936 +4096,0.703488 +8192,0.74752 +16384,0.837632 +32768,1.05062 +65536,1.43974 +131072,2.51597 +262144,4.53427 +524288,8.39987 +1048576,14.4118 +2097152,27.7709 +4194304,53.5357 +8388608,107.251 +16777216,211.409 +33554432,422.832 +67108864,849.648 +16,0.77312 +32,0.854016 +64,0.78336 +128,0.633856 +256,0.66048 +512,0.64 +1024,0.647168 +2048,0.662528 +4096,0.717824 +8192,0.723968 +16384,0.83456 +32768,1.04653 +65536,1.56774 +131072,2.40026 +262144,4.31821 +524288,8.21146 +1048576,14.7046 +2097152,27.1872 +4194304,54.1573 +8388608,106.296 +16777216,211.427 +33554432,423.644 +67108864,851.589 +16,0.879616 +32,0.77824 +64,0.753664 +128,0.749568 +256,0.7168 +512,0.698368 +1024,0.74752 +2048,0.776192 +4096,0.789504 +8192,0.804864 +16384,0.836608 +32768,1.03526 +65536,1.53498 +131072,2.50675 +262144,5.1159 +524288,7.73018 +1048576,14.3657 +2097152,27.4012 +4194304,53.6463 +8388608,106.139 +16777216,210.724 +33554432,424.106 +67108864,849.212 +16,0.770048 +32,0.876544 +64,0.710656 +128,0.571392 +256,0.62976 +512,0.633856 +1024,0.647168 +2048,0.693248 +4096,0.705536 +8192,0.749568 +16384,0.83968 +32768,1.03731 +65536,1.43258 +131072,2.50778 +262144,4.29158 +524288,7.78752 +1048576,14.3227 +2097152,27.0899 +4194304,53.12 +8388608,105.53 +16777216,211.388 +33554432,424.33 +67108864,848.997 +16,0.930816 +32,0.72192 +64,0.878592 +128,0.688128 +256,0.668672 +512,0.836608 +1024,0.65024 +2048,0.67584 +4096,0.71168 +8192,0.746496 +16384,0.83456 +32768,0.968704 +65536,1.42541 +131072,2.50368 +262144,4.34995 +524288,7.61139 +1048576,14.3892 +2097152,27.0735 +4194304,53.6566 +8388608,106.042 +16777216,211.542 +33554432,423.667 +67108864,850.109 +16,0.80384 +32,0.740352 +64,0.935936 +128,0.877568 +256,0.703488 +512,0.635904 +1024,0.738304 +2048,0.704512 +4096,0.72192 +8192,0.746496 +16384,0.8448 +32768,1.03629 +65536,1.43258 +131072,3.09965 +262144,4.3479 +524288,8.49715 +1048576,14.6381 +2097152,26.6885 +4194304,53.7088 +8388608,105.381 +16777216,210.885 +33554432,423.253 +67108864,845.688 +16,0.774144 +32,0.934912 +64,0.907264 +128,0.904192 +256,0.64512 +512,0.635904 +1024,0.642048 +2048,0.679936 +4096,0.708608 +8192,0.749568 +16384,0.862208 +32768,1.05984 +65536,1.37933 +131072,2.80474 +262144,4.34893 +524288,8.03021 +1048576,14.7057 +2097152,28.0586 +4194304,53.5532 +8388608,107.266 +16777216,211.114 +33554432,425.038 +67108864,848.94 +16,0.664576 +32,0.739328 +64,0.707584 +128,0.918528 +256,0.813056 +512,0.835584 +1024,0.769024 +2048,0.802816 +4096,0.714752 +8192,0.77312 +16384,0.847872 +32768,1.32403 +65536,1.45715 +131072,2.52109 +262144,4.34893 +524288,7.53562 +1048576,14.4282 +2097152,28.2552 +4194304,54.1809 +8388608,105.934 +16777216,212.578 +33554432,426.989 +67108864,850.065 +16,0.740352 +32,0.766976 +64,1.03117 +128,0.646144 +256,0.64512 +512,0.643072 +1024,0.661504 +2048,0.707584 +4096,0.714752 +8192,0.74752 +16384,0.879616 +32768,1.04346 +65536,1.42029 +131072,2.51187 +262144,4.53939 +524288,7.55302 +1048576,14.1588 +2097152,26.1622 +4194304,53.3484 +8388608,106.012 +16777216,211.604 +33554432,423.277 +67108864,854.408 +16,0.801792 +32,0.8448 +64,0.663552 +128,0.647168 +256,0.631808 +512,0.638976 +1024,0.641024 +2048,0.674816 +4096,0.708608 +8192,0.845824 +16384,0.831488 +32768,1.21549 +65536,1.85958 +131072,3.12832 +262144,4.95309 +524288,8.32 +1048576,13.8854 +2097152,26.7356 +4194304,53.8276 +8388608,105.154 +16777216,210.296 +33554432,421.463 +67108864,850.74 +16,0.68608 +32,0.724992 +64,0.668672 +128,0.709632 +256,0.723968 +512,0.740352 +1024,0.769024 +2048,0.708608 +4096,0.75776 +8192,0.987136 +16384,1.05472 +32768,1.16838 +65536,2.66035 +131072,2.79962 +262144,4.28851 +524288,8.03533 +1048576,14.6217 +2097152,27.007 +4194304,54.3805 +8388608,104.777 +16777216,210.705 +33554432,425.032 +67108864,849.796 +16,0.903168 +32,0.7424 +64,0.786432 +128,0.712704 +256,0.681984 +512,0.713728 +1024,0.715776 +2048,0.746496 +4096,0.804864 +8192,0.794624 +16384,0.856064 +32768,1.12026 +65536,2.3767 +131072,2.62144 +262144,4.41344 +524288,7.87046 +1048576,14.1824 +2097152,27.6562 +4194304,53.7436 +8388608,105.87 +16777216,211.804 +33554432,424.893 +67108864,851.188 +16,0.792576 +32,1.17862 +64,0.672768 +128,0.731136 +256,0.690176 +512,0.663552 +1024,0.750592 +2048,0.676864 +4096,0.71168 +8192,0.754688 +16384,0.832512 +32768,1.06291 +65536,1.42746 +131072,2.52314 +262144,4.8343 +524288,7.9104 +1048576,14.8593 +2097152,27.2282 +4194304,53.2531 +8388608,105.685 +16777216,211.17 +33554432,420.244 +67108864,848.206 +16,0.784384 +32,0.905216 +64,0.668672 +128,0.7936 +256,0.674816 +512,0.709632 +1024,0.748544 +2048,0.864256 +4096,0.743424 +8192,0.749568 +16384,0.843776 +32768,1.0537 +65536,1.43565 +131072,2.50573 +262144,4.3479 +524288,7.8889 +1048576,14.892 +2097152,27.4565 +4194304,53.1087 +8388608,106.97 +16777216,210.074 +33554432,425.819 +67108864,850.392 +16,0.617472 +32,0.919552 +64,0.77824 +128,1.06803 +256,0.821248 +512,0.787456 +1024,0.816128 +2048,0.800768 +4096,1.69165 +8192,0.806912 +16384,0.929792 +32768,1.1008 +65536,1.4336 +131072,2.55181 +262144,5.0647 +524288,7.6073 +1048576,14.6216 +2097152,26.8032 +4194304,53.4958 +8388608,104.993 +16777216,210.831 +33554432,422.54 +67108864,848.842 +16,0.930816 +32,0.950272 +64,0.728064 +128,0.72192 +256,0.744448 +512,0.740352 +1024,0.743424 +2048,0.815104 +4096,0.735232 +8192,0.753664 +16384,0.903168 +32768,1.04448 +65536,1.37114 +131072,2.50573 +262144,4.33459 +524288,8.25754 +1048576,14.7446 +2097152,27.4012 +4194304,52.9603 +8388608,106.242 +16777216,210.41 +33554432,423.85 +67108864,849.192 +16,0.86528 +32,0.741376 +64,0.759808 +128,0.674816 +256,0.730112 +512,0.678912 +1024,0.828416 +2048,0.776192 +4096,0.804864 +8192,0.78848 +16384,0.908288 +32768,1.14074 +65536,1.53498 +131072,2.8457 +262144,4.69606 +524288,7.95648 +1048576,14.5172 +2097152,27.1391 +4194304,53.249 +8388608,104.03 +16777216,211.971 +33554432,423.599 +67108864,847.863 +16,0.831488 +32,0.70656 +64,0.861184 +128,0.896 +256,0.928768 +512,0.896 +1024,0.731136 +2048,0.765952 +4096,0.876544 +8192,0.98816 +16384,0.914432 +32768,1.15917 +65536,2.27635 +131072,2.52928 +262144,4.33766 +524288,7.79776 +1048576,14.6883 +2097152,27.2712 +4194304,52.905 +8388608,106.31 +16777216,210.937 +33554432,423.769 +67108864,848.739 +16,0.799744 +32,0.746496 +64,0.73728 +128,0.77824 +256,1.024 +512,0.734208 +1024,0.861184 +2048,0.924672 +4096,0.935936 +8192,0.943104 +16384,1.00659 +32768,1.15712 +65536,1.65376 +131072,2.7904 +262144,4.33664 +524288,7.96262 +1048576,14.1322 +2097152,27.1227 +4194304,53.8634 +8388608,106.002 +16777216,209.618 +33554432,423.618 +67108864,849.103 +16,1.60051 +32,0.704512 +64,0.748544 +128,0.75264 +256,0.90624 +512,0.735232 +1024,0.73728 +2048,0.775168 +4096,0.78848 +8192,1.01171 +16384,0.95232 +32768,1.152 +65536,1.47149 +131072,2.73203 +262144,5.10464 +524288,7.81414 +1048576,14.5705 +2097152,26.9599 +4194304,53.6607 +8388608,106.625 +16777216,212.356 +33554432,423.712 +67108864,849.399 +16,0.937984 +32,0.671744 +64,0.71168 +128,0.723968 +256,0.795648 +512,0.908288 +1024,0.723968 +2048,0.741376 +4096,1.02605 +8192,0.817152 +16384,1.01478 +32768,1.19706 +65536,1.43155 +131072,2.53338 +262144,4.52301 +524288,7.57555 +1048576,14.2316 +2097152,26.5943 +4194304,53.7416 +8388608,106.264 +16777216,211.329 +33554432,424.309 +67108864,849.526 +16,0.786432 +32,0.734208 +64,0.739328 +128,0.954368 +256,0.726016 +512,0.784384 +1024,0.768 +2048,0.68096 +4096,0.702464 +8192,0.744448 +16384,0.838656 +32768,1.0455 +65536,1.99782 +131072,2.54362 +262144,4.53222 +524288,7.52333 +1048576,14.7005 +2097152,27.095 +4194304,54.018 +8388608,106.348 +16777216,212.823 +33554432,423.936 +67108864,848.853 +16,0.830464 +32,0.672768 +64,0.712704 +128,0.730112 +256,0.772096 +512,1.18579 +1024,0.707584 +2048,0.679936 +4096,0.703488 +8192,0.688128 +16384,0.965632 +32768,1.31379 +65536,1.83808 +131072,2.7945 +262144,4.48922 +524288,7.2704 +1048576,13.8342 +2097152,26.966 +4194304,53.634 +8388608,105.777 +16777216,212.092 +33554432,419.85 +67108864,848.642 +16,0.787456 +32,0.69632 +64,0.713728 +128,0.734208 +256,0.728064 +512,1.24314 +1024,0.690176 +2048,0.781312 +4096,0.76288 +8192,0.745472 +16384,0.841728 +32768,1.03322 +65536,1.40083 +131072,2.53235 +262144,5.36883 +524288,8.10394 +1048576,14.2408 +2097152,27.2701 +4194304,53.6197 +8388608,105.928 +16777216,211.326 +33554432,425.367 +67108864,851.958 +16,0.722944 +32,0.786432 +64,0.700416 +128,0.985088 +256,0.877568 +512,0.971776 +1024,0.719872 +2048,0.877568 +4096,0.745472 +8192,0.873472 +16384,0.927744 +32768,1.11206 +65536,1.4633 +131072,2.83136 +262144,4.47795 +524288,7.4967 +1048576,14.4312 +2097152,27.5159 +4194304,53.0883 +8388608,105.756 +16777216,210.307 +33554432,423.489 +67108864,850.809 +16,0.705536 +32,0.714752 +64,0.7168 +128,0.740352 +256,0.749568 +512,0.949248 +1024,0.713728 +2048,0.776192 +4096,0.818176 +8192,1.0537 +16384,0.937984 +32768,1.3271 +65536,1.45715 +131072,2.58355 +262144,4.54861 +524288,7.91859 +1048576,14.4282 +2097152,26.9056 +4194304,52.9224 +8388608,105.944 +16777216,210.619 +33554432,423.771 +67108864,849.672 +16,0.790528 +32,0.685056 +64,0.700416 +128,0.7936 +256,0.633856 +512,0.636928 +1024,0.581632 +2048,0.678912 +4096,0.689152 +8192,0.746496 +16384,0.831488 +32768,1.03424 +65536,1.43565 +131072,2.39104 +262144,4.33869 +524288,7.79162 +1048576,14.5388 +2097152,27.1288 +4194304,54.1266 +8388608,106.244 +16777216,211.231 +33554432,425.609 +67108864,848.816 +16,0.82432 +32,0.781312 +64,0.70656 +128,0.750592 +256,0.708608 +512,0.576512 +1024,0.657408 +2048,0.69632 +4096,0.703488 +8192,0.759808 +16384,0.777216 +32768,1.03219 +65536,1.43155 +131072,2.50778 +262144,4.39296 +524288,7.46086 +1048576,14.378 +2097152,27.0858 +4194304,52.822 +8388608,105.127 +16777216,211.968 +33554432,422.475 +67108864,850.181 +16,0.939008 +32,1.73978 +64,0.694272 +128,0.685056 +256,0.636928 +512,0.789504 +1024,0.745472 +2048,1.06086 +4096,0.787456 +8192,0.753664 +16384,0.84992 +32768,1.80224 +65536,1.44384 +131072,2.5344 +262144,4.33869 +524288,7.59296 +1048576,14.0431 +2097152,27.8876 +4194304,52.907 +8388608,106.895 +16777216,210.644 +33554432,425.111 +67108864,847.008 +16,0.805888 +32,1.54317 +64,0.729088 +128,0.741376 +256,0.789504 +512,0.769024 +1024,0.956416 +2048,0.738304 +4096,0.76288 +8192,0.801792 +16384,0.845824 +32768,1.04038 +65536,1.42438 +131072,2.68595 +262144,4.36736 +524288,7.5561 +1048576,14.3012 +2097152,27.8979 +4194304,53.1087 +8388608,105.124 +16777216,210.641 +33554432,423.856 +67108864,854.161 +16,0.712704 +32,0.636928 +64,0.625664 +128,0.695296 +256,0.62976 +512,0.635904 +1024,0.66048 +2048,0.621568 +4096,0.697344 +8192,1.00045 +16384,0.83968 +32768,1.04346 +65536,1.43872 +131072,2.51802 +262144,5.21523 +524288,7.85306 +1048576,14.0646 +2097152,26.6394 +4194304,53.1948 +8388608,105.623 +16777216,211.703 +33554432,423.88 +67108864,848.797 +16,0.932864 +32,0.709632 +64,0.740352 +128,0.677888 +256,0.83456 +512,0.945152 +1024,0.695296 +2048,1.06701 +4096,0.699392 +8192,0.75264 +16384,0.845824 +32768,1.29946 +65536,1.60461 +131072,2.73818 +262144,4.26803 +524288,7.77933 +1048576,13.9633 +2097152,27.8743 +4194304,53.6709 +8388608,107.179 +16777216,209.308 +33554432,421.733 +67108864,852.462 +16,0.864256 +32,0.703488 +64,0.785408 +128,0.905216 +256,0.632832 +512,0.643072 +1024,0.663552 +2048,0.690176 +4096,0.702464 +8192,0.854016 +16384,0.842752 +32768,1.04346 +65536,1.82272 +131072,2.5129 +262144,4.33766 +524288,7.7783 +1048576,13.9336 +2097152,26.4243 +4194304,53.3268 +8388608,107.069 +16777216,210.317 +33554432,423.106 +67108864,851.316 +16,0.620544 +32,0.720896 +64,0.633856 +128,0.656384 +256,0.764928 +512,0.565248 +1024,0.664576 +2048,0.695296 +4096,0.80896 +8192,0.769024 +16384,0.83968 +32768,0.958464 +65536,1.4336 +131072,2.5385 +262144,4.36736 +524288,7.4455 +1048576,14.6115 +2097152,27.3981 +4194304,54.0559 +8388608,105.39 +16777216,210.234 +33554432,424.333 +67108864,847.859 +16,0.785408 +32,0.761856 +64,0.86016 +128,0.7168 +256,0.709632 +512,0.765952 +1024,0.74752 +2048,0.60928 +4096,0.656384 +8192,0.77312 +16384,1.14483 +32768,1.03936 +65536,1.44179 +131072,2.54464 +262144,4.5609 +524288,8.17971 +1048576,15.1276 +2097152,27.3818 +4194304,53.9515 +8388608,107.067 +16777216,211.211 +33554432,425.973 +67108864,851.012 +16,0.710656 +32,0.821248 +64,0.659456 +128,0.730112 +256,0.74752 +512,0.66048 +1024,0.5888 +2048,0.714752 +4096,0.705536 +8192,0.769024 +16384,0.841728 +32768,1.04346 +65536,1.42541 +131072,2.50061 +262144,4.28954 +524288,7.83872 +1048576,14.0032 +2097152,27.2609 +4194304,54.9949 +8388608,105.96 +16777216,213.669 +33554432,422.868 +67108864,847.474 +16,0.939008 +32,0.759808 +64,0.73216 +128,0.94208 +256,0.751616 +512,0.704512 +1024,0.765952 +2048,1.12128 +4096,0.755712 +8192,0.8192 +16384,0.902144 +32768,1.12947 +65536,1.50323 +131072,2.54669 +262144,4.47283 +524288,8.07014 +1048576,14.2326 +2097152,27.2916 +4194304,53.0811 +8388608,106.174 +16777216,209.693 +33554432,418.842 +67108864,850.446 +16,0.777216 +32,0.806912 +64,0.676864 +128,0.72704 +256,0.712704 +512,0.748544 +1024,0.647168 +2048,1.08134 +4096,0.709632 +8192,0.750592 +16384,0.78848 +32768,1.04448 +65536,1.5319 +131072,2.54054 +262144,4.33971 +524288,7.46701 +1048576,14.2469 +2097152,26.4776 +4194304,53.4467 +8388608,105.882 +16777216,210.832 +33554432,422.785 +67108864,850.951 +16,0.945152 +32,0.79872 +64,0.72704 +128,0.7168 +256,0.984064 +512,0.709632 +1024,0.735232 +2048,0.75776 +4096,0.772096 +8192,0.77312 +16384,0.835584 +32768,1.03834 +65536,1.44691 +131072,2.52723 +262144,4.31206 +524288,7.89094 +1048576,14.2572 +2097152,27.1708 +4194304,53.9197 +8388608,105.967 +16777216,211.214 +33554432,422.616 +67108864,850.528 +16,0.891904 +32,0.99328 +64,0.633856 +128,0.572416 +256,0.90624 +512,0.932864 +1024,0.64 +2048,0.679936 +4096,0.700416 +8192,0.745472 +16384,1.21446 +32768,0.971776 +65536,1.43053 +131072,2.51802 +262144,4.44211 +524288,7.51002 +1048576,14.932 +2097152,27.0623 +4194304,53.3412 +8388608,103.676 +16777216,211.175 +33554432,420.149 +67108864,849.579 +16,0.948224 +32,0.902144 +64,0.971776 +128,0.964608 +256,0.760832 +512,0.67584 +1024,0.714752 +2048,0.925696 +4096,0.699392 +8192,0.749568 +16384,0.861184 +32768,1.06496 +65536,1.43667 +131072,2.5559 +262144,4.32845 +524288,7.52333 +1048576,14.4968 +2097152,27.7893 +4194304,54.0385 +8388608,105.809 +16777216,210.177 +33554432,422.969 +67108864,851.708 +16,0.940032 +32,0.940032 +64,0.914432 +128,0.733184 +256,0.688128 +512,0.707584 +1024,0.724992 +2048,0.77824 +4096,0.76288 +8192,0.809984 +16384,0.955392 +32768,1.13766 +65536,1.47046 +131072,2.5385 +262144,5.16301 +524288,7.62061 +1048576,14.5459 +2097152,26.5912 +4194304,53.2552 +8388608,104.818 +16777216,211.455 +33554432,425.286 +67108864,851.49 +16,0.746496 +32,0.689152 +64,0.626688 +128,0.628736 +256,0.646144 +512,0.65024 +1024,0.643072 +2048,0.685056 +4096,0.703488 +8192,0.749568 +16384,0.78848 +32768,1.06086 +65536,1.42643 +131072,2.83443 +262144,4.31206 +524288,7.70458 +1048576,14.6862 +2097152,26.9701 +4194304,53.0575 +8388608,105.218 +16777216,210.834 +33554432,423.553 +67108864,849.199 +16,0.807936 +32,0.709632 +64,0.969728 +128,0.72192 +256,0.699392 +512,0.690176 +1024,0.743424 +2048,0.804864 +4096,0.781312 +8192,0.840704 +16384,0.861184 +32768,1.04141 +65536,1.42643 +131072,2.5856 +262144,4.37658 +524288,7.49875 +1048576,15.2217 +2097152,26.6394 +4194304,53.2777 +8388608,107.241 +16777216,210.596 +33554432,423.51 +67108864,849.803 +16,0.836608 +32,0.909312 +64,0.626688 +128,0.730112 +256,0.567296 +512,0.746496 +1024,0.649216 +2048,0.689152 +4096,0.703488 +8192,0.687104 +16384,0.838656 +32768,0.98816 +65536,1.43053 +131072,2.51904 +262144,4.62541 +524288,7.62266 +1048576,14.4947 +2097152,26.9988 +4194304,54.1573 +8388608,105.55 +16777216,211.524 +33554432,423.809 +67108864,848.919 +16,0.85504 +32,0.751616 +64,1.04346 +128,0.902144 +256,0.730112 +512,0.720896 +1024,0.744448 +2048,0.871424 +4096,0.902144 +8192,0.744448 +16384,0.836608 +32768,1.03731 +65536,1.43565 +131072,2.83238 +262144,4.31206 +524288,8.05274 +1048576,14.6719 +2097152,26.8595 +4194304,53.7928 +8388608,105.947 +16777216,211.266 +33554432,423.755 +67108864,849.251 +16,0.795648 +32,0.756736 +64,0.923648 +128,1.01171 +256,0.744448 +512,0.719872 +1024,0.743424 +2048,0.77824 +4096,0.772096 +8192,0.822272 +16384,0.919552 +32768,1.05267 +65536,1.50118 +131072,2.58253 +262144,4.3305 +524288,9.49043 +1048576,14.4538 +2097152,27.2087 +4194304,53.7518 +8388608,106.073 +16777216,210.95 +33554432,422.648 +67108864,840.717 +16,0.859136 +32,0.68608 +64,0.786432 +128,0.789504 +256,0.718848 +512,0.753664 +1024,0.710656 +2048,0.7168 +4096,0.704512 +8192,0.748544 +16384,0.843776 +32768,1.28819 +65536,1.49914 +131072,2.60608 +262144,4.31104 +524288,7.52026 +1048576,13.8404 +2097152,27.5139 +4194304,53.1948 +8388608,105.522 +16777216,208.255 +33554432,423.829 +67108864,851.376 +16,0.840704 +32,0.7424 +64,0.748544 +128,0.728064 +256,0.666624 +512,0.785408 +1024,0.63488 +2048,0.67584 +4096,0.8448 +8192,0.687104 +16384,0.845824 +32768,1.03424 +65536,1.60563 +131072,2.50163 +262144,4.38989 +524288,7.48954 +1048576,15.1839 +2097152,27.2302 +4194304,53.3596 +8388608,105.849 +16777216,210.699 +33554432,423.775 +67108864,844.709 +16,0.944128 +32,0.75776 +64,0.64512 +128,0.631808 +256,0.575488 +512,0.740352 +1024,0.65024 +2048,0.68096 +4096,0.708608 +8192,0.746496 +16384,0.79872 +32768,1.06291 +65536,1.69984 +131072,2.50675 +262144,4.3264 +524288,7.96672 +1048576,14.6924 +2097152,27.3664 +4194304,54.6406 +8388608,105.332 +16777216,210.534 +33554432,423.963 +67108864,849.128 +16,0.935936 +32,0.733184 +64,0.740352 +128,0.744448 +256,0.851968 +512,0.666624 +1024,0.735232 +2048,0.928768 +4096,0.750592 +8192,0.832512 +16384,0.833536 +32768,1.03424 +65536,1.43258 +131072,2.50163 +262144,4.34278 +524288,7.43014 +1048576,14.0636 +2097152,27.2835 +4194304,53.3658 +8388608,105.466 +16777216,211.226 +33554432,423.977 +67108864,847.851 +16,0.720896 +32,0.726016 +64,0.73216 +128,0.689152 +256,0.748544 +512,0.714752 +1024,0.780288 +2048,0.67584 +4096,0.700416 +8192,0.760832 +16384,0.859136 +32768,1.2759 +65536,1.64557 +131072,2.51597 +262144,4.33357 +524288,7.89402 +1048576,14.8163 +2097152,27.1862 +4194304,53.7446 +8388608,106.71 +16777216,210.652 +33554432,422.207 +67108864,848.34 +16,0.934912 +32,0.795648 +64,0.92672 +128,0.751616 +256,0.703488 +512,1.02605 +1024,0.708608 +2048,0.91136 +4096,1.23699 +8192,1.03731 +16384,0.832512 +32768,1.03629 +65536,1.42336 +131072,2.67674 +262144,4.52813 +524288,7.44858 +1048576,14.2428 +2097152,26.9046 +4194304,54.0324 +8388608,106.536 +16777216,212.428 +33554432,424.505 +67108864,848.865 +16,0.710656 +32,0.751616 +64,0.739328 +128,1.16634 +256,0.726016 +512,0.631808 +1024,0.64512 +2048,0.68608 +4096,0.70656 +8192,0.857088 +16384,0.833536 +32768,1.03117 +65536,1.52781 +131072,2.5344 +262144,4.76262 +524288,7.45472 +1048576,14.1834 +2097152,27.646 +4194304,53.803 +8388608,105.665 +16777216,210.418 +33554432,423.924 +67108864,848.692 +16,0.709632 +32,0.917504 +64,0.9216 +128,0.731136 +256,0.717824 +512,0.642048 +1024,0.64 +2048,0.683008 +4096,0.703488 +8192,0.745472 +16384,0.846848 +32768,1.04755 +65536,1.43053 +131072,2.79654 +262144,4.97357 +524288,8.16435 +1048576,14.0554 +2097152,27.0971 +4194304,53.8737 +8388608,106.797 +16777216,212.653 +33554432,425.758 +67108864,846.396 +16,0.971776 +32,0.905216 +64,0.689152 +128,0.755712 +256,0.67072 +512,1.2032 +1024,0.649216 +2048,0.673792 +4096,0.708608 +8192,0.749568 +16384,0.843776 +32768,0.989184 +65536,1.43667 +131072,2.52211 +262144,4.33766 +524288,7.93088 +1048576,14.2438 +2097152,27.4135 +4194304,52.9316 +8388608,105.711 +16777216,210.44 +33554432,423.963 +67108864,849.436 +16,0.775168 +32,0.719872 +64,1.05267 +128,0.7424 +256,0.714752 +512,0.724992 +1024,0.694272 +2048,0.801792 +4096,0.750592 +8192,0.98816 +16384,2.07872 +32768,1.44998 +65536,1.78893 +131072,2.53338 +262144,4.32128 +524288,7.87149 +1048576,14.7743 +2097152,26.6322 +4194304,53.5142 +8388608,106.627 +16777216,209.076 +33554432,423.505 +67108864,847.359 +16,0.886784 +32,0.692224 +64,0.7168 +128,0.763904 +256,0.713728 +512,0.642048 +1024,0.638976 +2048,0.695296 +4096,0.705536 +8192,0.749568 +16384,0.861184 +32768,1.04858 +65536,1.36909 +131072,2.5344 +262144,4.29466 +524288,8.03635 +1048576,14.4876 +2097152,26.625 +4194304,53.8327 +8388608,105.629 +16777216,211.94 +33554432,423.242 +67108864,849.522 +16,0.75264 +32,0.965632 +64,0.70144 +128,0.741376 +256,0.791552 +512,0.713728 +1024,0.75264 +2048,0.777216 +4096,0.794624 +8192,0.889856 +16384,0.937984 +32768,1.32506 +65536,1.50118 +131072,2.56819 +262144,4.33357 +524288,8.21862 +1048576,14.5265 +2097152,27.7658 +4194304,53.4252 +8388608,105.788 +16777216,211.905 +33554432,422.668 +67108864,849.388 +16,0.9472 +32,0.827392 +64,0.628736 +128,0.626688 +256,0.635904 +512,0.8448 +1024,0.64512 +2048,0.88576 +4096,0.70144 +8192,0.748544 +16384,0.83968 +32768,1.13254 +65536,1.61997 +131072,2.52109 +262144,4.70938 +524288,8.19917 +1048576,15.0641 +2097152,27.3582 +4194304,53.6812 +8388608,105.352 +16777216,210.208 +33554432,422.265 +67108864,848.025 +16,0.753664 +32,0.652288 +64,0.748544 +128,1.00045 +256,0.72192 +512,0.71168 +1024,0.674816 +2048,0.776192 +4096,0.71168 +8192,0.755712 +16384,0.838656 +32768,1.26054 +65536,1.44282 +131072,3.24403 +262144,4.30899 +524288,7.808 +1048576,14.9453 +2097152,27.1688 +4194304,53.9054 +8388608,104.895 +16777216,212.147 +33554432,424.415 +67108864,852.163 +16,0.789504 +32,0.775168 +64,0.779264 +128,0.73216 +256,0.719872 +512,0.723968 +1024,0.769024 +2048,0.781312 +4096,0.700416 +8192,0.78848 +16384,1.22061 +32768,1.04243 +65536,1.43053 +131072,2.50368 +262144,5.00634 +524288,7.73018 +1048576,14.7405 +2097152,26.6895 +4194304,53.5818 +8388608,105.341 +16777216,212.353 +33554432,421.982 +67108864,848.826 +16,0.910336 +32,0.909312 +64,0.756736 +128,1.02912 +256,0.734208 +512,0.723968 +1024,0.758784 +2048,0.78336 +4096,0.78848 +8192,0.797696 +16384,0.856064 +32768,1.06189 +65536,1.7193 +131072,2.50675 +262144,4.30387 +524288,7.54176 +1048576,14.463 +2097152,27.1247 +4194304,53.7149 +8388608,105.487 +16777216,210.438 +33554432,424.67 +67108864,852.89 +16,0.825344 +32,0.754688 +64,0.749568 +128,0.6912 +256,0.708608 +512,0.794624 +1024,0.723968 +2048,0.772096 +4096,0.792576 +8192,0.779264 +16384,1.02195 +32768,1.0967 +65536,1.49811 +131072,2.57434 +262144,4.2793 +524288,7.99949 +1048576,14.2909 +2097152,27.3111 +4194304,53.7047 +8388608,107.494 +16777216,212.751 +33554432,423.012 +67108864,851.25 +16,0.893952 +32,0.748544 +64,0.864256 +128,0.715776 +256,0.775168 +512,0.659456 +1024,0.592896 +2048,0.674816 +4096,0.709632 +8192,0.74752 +16384,1.152 +32768,1.04346 +65536,1.43258 +131072,2.55386 +262144,4.38579 +524288,7.84077 +1048576,14.3811 +2097152,26.6353 +4194304,53.5654 +8388608,104.484 +16777216,209.668 +33554432,422.975 +67108864,852.41 +16,0.978944 +32,0.7168 +64,0.713728 +128,0.940032 +256,0.7168 +512,0.736256 +1024,0.72704 +2048,0.75776 +4096,0.804864 +8192,0.81408 +16384,0.836608 +32768,1.04346 +65536,1.45408 +131072,2.52314 +262144,4.33971 +524288,8.70093 +1048576,14.7999 +2097152,27.7821 +4194304,53.2398 +8388608,107.221 +16777216,211.237 +33554432,423.961 +67108864,847.781 +16,0.780288 +32,0.728064 +64,0.719872 +128,0.758784 +256,0.744448 +512,0.73216 +1024,0.712704 +2048,0.986112 +4096,0.697344 +8192,0.883712 +16384,0.779264 +32768,1.04346 +65536,1.43258 +131072,2.51904 +262144,4.45235 +524288,7.98003 +1048576,14.3718 +2097152,27.0131 +4194304,53.3596 +8388608,105.587 +16777216,211.493 +33554432,424.997 +67108864,848.861 +16,0.96256 +32,0.759808 +64,0.726016 +128,0.770048 +256,0.631808 +512,0.574464 +1024,0.653312 +2048,0.677888 +4096,0.7168 +8192,0.754688 +16384,0.835584 +32768,1.03936 +65536,1.44282 +131072,2.53952 +262144,4.50867 +524288,7.48032 +1048576,14.5623 +2097152,27.2681 +4194304,52.9408 +8388608,105.95 +16777216,210.779 +33554432,421.701 +67108864,847.528 +16,0.857088 +32,0.746496 +64,0.821248 +128,0.726016 +256,1.84422 +512,0.872448 +1024,0.9216 +2048,0.699392 +4096,0.935936 +8192,1.09466 +16384,0.841728 +32768,1.04243 +65536,1.4336 +131072,2.52211 +262144,4.34995 +524288,8.35379 +1048576,15.7614 +2097152,27.7402 +4194304,53.2019 +8388608,106.256 +16777216,211.937 +33554432,424.603 +67108864,848.546 +16,0.690176 +32,0.87552 +64,0.976896 +128,0.928768 +256,0.745472 +512,0.728064 +1024,0.841728 +2048,0.76288 +4096,0.745472 +8192,0.944128 +16384,1.05165 +32768,1.16941 +65536,1.97325 +131072,2.7648 +262144,4.31923 +524288,8.09779 +1048576,14.4824 +2097152,26.8995 +4194304,54.314 +8388608,104.954 +16777216,211.16 +33554432,424.879 +67108864,847.596 +16,0.77312 +32,0.93696 +64,0.954368 +128,0.707584 +256,0.73216 +512,0.703488 +1024,0.708608 +2048,0.676864 +4096,0.703488 +8192,0.864256 +16384,0.836608 +32768,1.0537 +65536,1.44691 +131072,3.36179 +262144,4.55475 +524288,7.47213 +1048576,14.4527 +2097152,26.5021 +4194304,53.7252 +8388608,105.781 +16777216,210.816 +33554432,423.264 +67108864,849.478 +16,0.939008 +32,0.69632 +64,0.717824 +128,0.733184 +256,1.04448 +512,0.69632 +1024,1.06189 +2048,1.03629 +4096,0.78848 +8192,0.815104 +16384,0.96256 +32768,1.05677 +65536,2.09306 +131072,2.37568 +262144,4.29978 +524288,7.48646 +1048576,14.0247 +2097152,27.1892 +4194304,53.2265 +8388608,106.203 +16777216,210.839 +33554432,425.927 +67108864,850.105 +16,0.823296 +32,0.733184 +64,0.86528 +128,0.733184 +256,0.781312 +512,0.74752 +1024,1.71008 +2048,0.777216 +4096,0.904192 +8192,0.817152 +16384,0.907264 +32768,1.08749 +65536,1.48582 +131072,2.58355 +262144,4.4032 +524288,8.39066 +1048576,14.1414 +2097152,26.9885 +4194304,54.06 +8388608,106.383 +16777216,209.465 +33554432,424.69 +67108864,847.869 +16,0.812032 +32,0.877568 +64,0.707584 +128,0.723968 +256,0.75264 +512,0.72704 +1024,0.751616 +2048,0.784384 +4096,0.797696 +8192,0.802816 +16384,0.913408 +32768,1.05984 +65536,1.46739 +131072,2.58048 +262144,5.21114 +524288,7.77626 +1048576,13.9786 +2097152,26.9373 +4194304,53.6965 +8388608,105.364 +16777216,210.668 +33554432,423.029 +67108864,848.966 +16,0.828416 +32,0.6656 +64,0.710656 +128,0.695296 +256,0.922624 +512,0.789504 +1024,0.643072 +2048,0.690176 +4096,1.2329 +8192,0.751616 +16384,0.832512 +32768,1.03629 +65536,1.43667 +131072,3.0976 +262144,4.33254 +524288,7.81619 +1048576,14.1281 +2097152,27.0254 +4194304,54.1921 +8388608,105.723 +16777216,211.029 +33554432,424.511 +67108864,851.394 +16,0.71168 +32,0.736256 +64,0.75264 +128,0.713728 +256,0.688128 +512,0.724992 +1024,1.0281 +2048,0.751616 +4096,0.792576 +8192,0.837632 +16384,1.04858 +32768,1.33222 +65536,1.69677 +131072,2.55795 +262144,4.2967 +524288,8.40602 +1048576,14.8122 +2097152,26.8411 +4194304,54.0692 +8388608,106.339 +16777216,211.337 +33554432,422.266 +67108864,848.256 +16,0.966656 +32,0.97792 +64,0.736256 +128,0.774144 +256,0.698368 +512,0.937984 +1024,0.781312 +2048,0.90112 +4096,0.968704 +8192,0.975872 +16384,0.84992 +32768,1.3056 +65536,1.8688 +131072,2.58048 +262144,4.30182 +524288,7.75782 +1048576,14.6166 +2097152,27.1401 +4194304,52.863 +8388608,106.189 +16777216,211.708 +33554432,423.691 +67108864,851.301 +16,0.91136 +32,0.77824 +64,0.712704 +128,0.681984 +256,0.750592 +512,0.766976 +1024,0.775168 +2048,0.879616 +4096,0.7168 +8192,0.77312 +16384,0.837632 +32768,1.04346 +65536,1.42746 +131072,2.38592 +262144,4.35712 +524288,7.6841 +1048576,13.9807 +2097152,27.0889 +4194304,53.631 +8388608,106.966 +16777216,211.707 +33554432,423.981 +67108864,848.238 +16,0.82944 +32,0.688128 +64,0.82944 +128,0.713728 +256,0.761856 +512,0.7168 +1024,0.756736 +2048,0.820224 +4096,0.791552 +8192,0.796672 +16384,1.12333 +32768,1.11309 +65536,1.46534 +131072,2.57536 +262144,4.28339 +524288,7.80698 +1048576,14.5183 +2097152,26.9353 +4194304,53.4426 +8388608,106.045 +16777216,211.593 +33554432,422.952 +67108864,850.497 +16,0.883712 +32,0.749568 +64,0.75264 +128,0.703488 +256,0.720896 +512,0.80896 +1024,0.720896 +2048,0.777216 +4096,0.787456 +8192,0.809984 +16384,0.923648 +32768,1.05062 +65536,1.43258 +131072,2.37875 +262144,4.33971 +524288,7.74451 +1048576,13.9356 +2097152,27.1012 +4194304,53.9218 +8388608,104.118 +16777216,210.643 +33554432,423.096 +67108864,850.741 +16,0.789504 +32,0.934912 +64,0.73728 +128,0.730112 +256,0.914432 +512,0.760832 +1024,1.06496 +2048,0.681984 +4096,0.722944 +8192,0.83968 +16384,0.837632 +32768,0.976896 +65536,1.42336 +131072,2.84467 +262144,4.3776 +524288,8.43469 +1048576,14.5777 +2097152,27.1206 +4194304,52.7319 +8388608,105.808 +16777216,209.964 +33554432,424.101 +67108864,852.39 +16,0.759808 +32,0.91648 +64,0.77312 +128,0.72192 +256,0.761856 +512,1.34554 +1024,0.761856 +2048,0.7936 +4096,0.779264 +8192,0.850944 +16384,1.02605 +32768,1.03936 +65536,1.47245 +131072,2.54362 +262144,4.20352 +524288,7.76704 +1048576,14.0554 +2097152,26.9097 +4194304,53.5511 +8388608,105.023 +16777216,209.55 +33554432,426.201 +67108864,847.866 +16,0.781312 +32,0.761856 +64,0.720896 +128,0.739328 +256,0.73216 +512,0.735232 +1024,0.728064 +2048,0.689152 +4096,0.698368 +8192,0.751616 +16384,0.835584 +32768,0.971776 +65536,1.43053 +131072,2.54464 +262144,4.96845 +524288,7.59706 +1048576,14.3974 +2097152,26.751 +4194304,53.2347 +8388608,106.104 +16777216,210.86 +33554432,423.82 +67108864,849.716 +16,0.856064 +32,0.703488 +64,0.708608 +128,0.638976 +256,0.627712 +512,0.649216 +1024,0.646144 +2048,0.673792 +4096,0.958464 +8192,0.694272 +16384,0.826368 +32768,1.03424 +65536,1.7664 +131072,2.54054 +262144,4.34586 +524288,7.49875 +1048576,14.4916 +2097152,26.8739 +4194304,53.0012 +8388608,105.619 +16777216,211.391 +33554432,543.131 +67108864,863.966 +16,0.939008 +32,0.781312 +64,0.745472 +128,0.826368 +256,0.840704 +512,0.791552 +1024,0.84992 +2048,1.04243 +4096,0.807936 +8192,0.858112 +16384,0.876544 +32768,1.4592 +65536,1.41926 +131072,2.46682 +262144,4.2455 +524288,8.64768 +1048576,14.4128 +2097152,54.698 +4194304,54.1778 +8388608,105.554 +16777216,211.767 +33554432,424.571 +67108864,896.795 +16,0.777216 +32,0.77312 +64,1.06189 +128,0.791552 +256,0.795648 +512,0.787456 +1024,0.878592 +2048,0.812032 +4096,0.830464 +8192,0.806912 +16384,1.00557 +32768,1.60768 +65536,1.57491 +131072,2.62861 +262144,4.73498 +524288,8.00154 diff --git a/Project2-Stream-Compaction/data/Scan_data/data_pow2/thrust.csv b/Project2-Stream-Compaction/data/Scan_data/data_pow2/thrust.csv new file mode 100644 index 0000000..57260b2 --- /dev/null +++ b/Project2-Stream-Compaction/data/Scan_data/data_pow2/thrust.csv @@ -0,0 +1,4547 @@ +16,0.618464 +32,1.12845 +64,0.655392 +128,2.26714 +256,0.67072 +512,0.571392 +1024,0.622592 +2048,0.848864 +4096,0.705568 +8192,0.78336 +16384,0.743424 +32768,1.09568 +65536,1.29946 +131072,2.81805 +262144,4.67146 +524288,8.94259 +1048576,15.5884 +2097152,28.9464 +4194304,55.166 +8388608,106.223 +16777216,214.238 +33554432,420.749 +67108864,844.179 +16,0.472064 +32,0.475136 +64,0.598016 +128,0.54784 +256,0.866304 +512,0.892928 +1024,0.652288 +2048,0.574464 +4096,0.659456 +8192,0.70144 +16384,0.801792 +32768,0.943104 +65536,1.62816 +131072,2.95424 +262144,4.70323 +524288,7.8889 +1048576,14.9309 +2097152,27.3408 +4194304,53.6566 +8388608,105.668 +16777216,211.056 +33554432,420.765 +67108864,845.424 +16,0.801792 +32,0.91648 +64,0.723968 +128,0.658432 +256,0.804864 +512,0.693248 +1024,0.57856 +2048,0.771072 +4096,0.796672 +8192,1.79712 +16384,0.888832 +32768,1.36704 +65536,1.47354 +131072,3.08838 +262144,5.85626 +524288,8.09779 +1048576,15.5556 +2097152,27.6398 +4194304,55.6974 +8388608,105.352 +16777216,211.365 +33554432,420.879 +67108864,846.399 +16,0.591872 +32,0.53248 +64,0.60416 +128,0.586752 +256,0.534528 +512,0.603136 +1024,0.600064 +2048,0.649216 +4096,0.641024 +8192,0.720896 +16384,0.748544 +32768,1.00659 +65536,2.02854 +131072,2.9481 +262144,4.51072 +524288,9.32454 +1048576,14.5633 +2097152,28.6925 +4194304,53.1599 +8388608,104.752 +16777216,212.605 +33554432,423.222 +67108864,846.072 +16,0.510976 +32,0.484352 +64,0.591872 +128,0.603136 +256,0.535552 +512,0.59392 +1024,0.543744 +2048,0.606208 +4096,0.596992 +8192,0.637952 +16384,0.836608 +32768,1.09568 +65536,1.54112 +131072,2.96243 +262144,4.72678 +524288,8.74189 +1048576,14.6944 +2097152,28.5542 +4194304,53.8911 +8388608,104.33 +16777216,211.608 +33554432,420.127 +67108864,842.171 +16,1.18272 +32,0.530432 +64,0.626688 +128,0.591872 +256,0.594944 +512,0.720896 +1024,0.550912 +2048,0.621568 +4096,0.632832 +8192,0.644096 +16384,0.797696 +32768,0.946176 +65536,1.46022 +131072,3.06995 +262144,4.91213 +524288,7.98106 +1048576,15.1757 +2097152,27.134 +4194304,54.1645 +8388608,106.109 +16777216,211.24 +33554432,420.684 +67108864,843.903 +16,0.765952 +32,0.768 +64,0.736256 +128,0.755712 +256,1.0025 +512,0.68096 +1024,0.724992 +2048,0.68608 +4096,0.785408 +8192,0.841728 +16384,0.896 +32768,1.09773 +65536,1.52474 +131072,3.08736 +262144,5.25722 +524288,8.0343 +1048576,14.5224 +2097152,28.2112 +4194304,54.9632 +8388608,107.319 +16777216,210.239 +33554432,420.709 +67108864,848.756 +16,0.591872 +32,0.535552 +64,0.533504 +128,0.59904 +256,0.602112 +512,0.595968 +1024,0.550912 +2048,0.656384 +4096,0.65024 +8192,0.64512 +16384,0.74752 +32768,1.01888 +65536,1.49299 +131072,3.26246 +262144,4.74624 +524288,8.67738 +1048576,14.4579 +2097152,27.5456 +4194304,53.1855 +8388608,105.526 +16777216,211.441 +33554432,422.427 +67108864,841.464 +16,0.509952 +32,0.524288 +64,0.489472 +128,0.5888 +256,0.717824 +512,0.538624 +1024,0.60928 +2048,0.633856 +4096,0.60416 +8192,0.64512 +16384,0.738304 +32768,1.38752 +65536,1.44691 +131072,2.92864 +262144,4.72883 +524288,8.0169 +1048576,14.9217 +2097152,28.9567 +4194304,54.144 +8388608,106.749 +16777216,211.358 +33554432,422.111 +67108864,843.144 +16,0.607232 +32,0.591872 +64,0.61952 +128,0.534528 +256,0.584704 +512,0.535552 +1024,1.2032 +2048,0.617472 +4096,0.652288 +8192,0.64 +16384,0.755712 +32768,1.00762 +65536,1.33222 +131072,2.97984 +262144,5.22342 +524288,8.65382 +1048576,14.4507 +2097152,27.095 +4194304,54.017 +8388608,104.894 +16777216,210.713 +33554432,420.173 +67108864,844.612 +16,0.577536 +32,0.549888 +64,0.606208 +128,0.591872 +256,0.538624 +512,1.25133 +1024,0.62976 +2048,0.56832 +4096,0.69632 +8192,1.03629 +16384,0.812032 +32768,1.00352 +65536,1.65478 +131072,3.64032 +262144,4.71962 +524288,7.92474 +1048576,14.2449 +2097152,27.4883 +4194304,53.7856 +8388608,104.702 +16777216,211.697 +33554432,419.766 +67108864,844.504 +16,0.530432 +32,0.613376 +64,0.88576 +128,0.551936 +256,0.618496 +512,0.55296 +1024,0.602112 +2048,0.67584 +4096,1.05574 +8192,0.6912 +16384,0.743424 +32768,0.963584 +65536,1.39264 +131072,2.94195 +262144,5.0688 +524288,8.00768 +1048576,15.5525 +2097152,28.7877 +4194304,54.1123 +8388608,105.892 +16777216,211.115 +33554432,422.027 +67108864,847.274 +16,0.525312 +32,0.606208 +64,0.899072 +128,0.5376 +256,0.608256 +512,0.610304 +1024,1.15405 +2048,0.633856 +4096,0.646144 +8192,0.724992 +16384,1.03014 +32768,1.0025 +65536,1.40698 +131072,2.98189 +262144,5.55725 +524288,7.59603 +1048576,16.5448 +2097152,27.8446 +4194304,53.801 +8388608,106.067 +16777216,212.079 +33554432,420.29 +67108864,846.505 +16,0.753664 +32,0.720896 +64,0.791552 +128,0.714752 +256,0.560128 +512,0.546816 +1024,0.551936 +2048,0.586752 +4096,0.68096 +8192,0.659456 +16384,0.806912 +32768,1.024 +65536,1.33734 +131072,2.93683 +262144,4.9193 +524288,8.23398 +1048576,14.5449 +2097152,27.4913 +4194304,53.2009 +8388608,106.698 +16777216,208.768 +33554432,421.284 +67108864,839.242 +16,0.531456 +32,0.881664 +64,0.848896 +128,0.548864 +256,0.607232 +512,0.81408 +1024,0.698368 +2048,0.571392 +4096,0.651264 +8192,0.9472 +16384,0.807936 +32768,1.0199 +65536,1.3271 +131072,2.94298 +262144,4.84147 +524288,8.19302 +1048576,15.1316 +2097152,28.8778 +4194304,53.9402 +8388608,106.385 +16777216,212.101 +33554432,421.466 +67108864,846.651 +16,0.515072 +32,0.598016 +64,0.600064 +128,0.592896 +256,0.707584 +512,0.67584 +1024,0.541696 +2048,0.9216 +4096,0.620544 +8192,0.688128 +16384,0.812032 +32768,1.00045 +65536,1.40083 +131072,2.81702 +262144,5.87162 +524288,8.13466 +1048576,14.9811 +2097152,27.6449 +4194304,54.4389 +8388608,105.094 +16777216,210.31 +33554432,422.61 +67108864,843.302 +16,0.514048 +32,0.605184 +64,0.587776 +128,0.745472 +256,0.54784 +512,0.523264 +1024,0.90624 +2048,0.575488 +4096,0.643072 +8192,0.744448 +16384,0.817152 +32768,1.01478 +65536,1.41312 +131072,2.93274 +262144,5.23366 +524288,8.50739 +1048576,14.7046 +2097152,28.3628 +4194304,53.7876 +8388608,105.547 +16777216,211.706 +33554432,422.478 +67108864,848.844 +16,0.927744 +32,0.75776 +64,0.74752 +128,0.690176 +256,0.764928 +512,0.719872 +1024,0.77312 +2048,0.6656 +4096,0.864256 +8192,0.850944 +16384,0.898048 +32768,1.29024 +65536,1.47558 +131072,2.79654 +262144,4.97152 +524288,8.27699 +1048576,15.5761 +2097152,27.1462 +4194304,53.7672 +8388608,106.338 +16777216,209.886 +33554432,421.684 +67108864,846.362 +16,0.749568 +32,0.607232 +64,0.591872 +128,0.615424 +256,0.556032 +512,0.556032 +1024,0.592896 +2048,0.576512 +4096,0.64512 +8192,0.699392 +16384,0.837632 +32768,1.01683 +65536,1.54522 +131072,3.18054 +262144,4.92749 +524288,8.92826 +1048576,14.4927 +2097152,28.543 +4194304,54.2075 +8388608,105.753 +16777216,210.028 +33554432,423.192 +67108864,844.048 +16,0.695296 +32,0.749568 +64,0.708608 +128,0.684032 +256,0.920576 +512,0.728064 +1024,0.679936 +2048,0.729088 +4096,0.797696 +8192,0.837632 +16384,1.27283 +32768,1.29741 +65536,1.58618 +131072,3.68128 +262144,4.6592 +524288,8.45824 +1048576,15.0569 +2097152,27.5364 +4194304,53.503 +8388608,106.465 +16777216,211.665 +33554432,421.958 +67108864,844.72 +16,0.713728 +32,0.864256 +64,0.928768 +128,0.630784 +256,0.59392 +512,0.540672 +1024,0.616448 +2048,0.5888 +4096,0.601088 +8192,0.690176 +16384,0.821248 +32768,1.28 +65536,1.64454 +131072,3.53792 +262144,4.95309 +524288,8.73472 +1048576,15.1276 +2097152,28.0596 +4194304,54.0723 +8388608,106.393 +16777216,210.207 +33554432,421.915 +67108864,843.971 +16,0.512 +32,0.5888 +64,1.28307 +128,0.82432 +256,0.598016 +512,0.603136 +1024,0.623616 +2048,0.627712 +4096,0.590848 +8192,0.68608 +16384,0.816128 +32768,1.1561 +65536,1.41005 +131072,3.1703 +262144,4.51789 +524288,8.31898 +1048576,14.8122 +2097152,28.8195 +4194304,54.3406 +8388608,105.241 +16777216,212.393 +33554432,422.91 +67108864,845.038 +16,0.730112 +32,0.603136 +64,0.744448 +128,0.677888 +256,0.728064 +512,0.73216 +1024,0.709632 +2048,0.7168 +4096,1.37318 +8192,0.73728 +16384,0.935936 +32768,1.24928 +65536,1.46842 +131072,3.2041 +262144,4.93158 +524288,8.32717 +1048576,15.6979 +2097152,27.6439 +4194304,53.7641 +8388608,106.103 +16777216,210.853 +33554432,421.877 +67108864,843.076 +16,0.748544 +32,0.763904 +64,0.71168 +128,0.71168 +256,0.749568 +512,0.59904 +1024,0.543744 +2048,0.630784 +4096,0.881664 +8192,0.709632 +16384,0.760832 +32768,0.997376 +65536,1.33632 +131072,2.96346 +262144,4.76365 +524288,8.0896 +1048576,15.7972 +2097152,27.7668 +4194304,53.6781 +8388608,106.528 +16777216,211.594 +33554432,422.254 +67108864,842.376 +16,0.689152 +32,0.692224 +64,0.590848 +128,0.585728 +256,0.589824 +512,0.615424 +1024,0.528384 +2048,0.57856 +4096,0.657408 +8192,0.646144 +16384,0.816128 +32768,0.999424 +65536,1.38957 +131072,3.23379 +262144,4.72474 +524288,8.45107 +1048576,15.145 +2097152,27.7115 +4194304,54.2556 +8388608,105.754 +16777216,215.097 +33554432,419.612 +67108864,855.337 +16,0.694272 +32,0.720896 +64,1.00454 +128,0.782336 +256,0.724992 +512,0.723968 +1024,0.759808 +2048,0.715776 +4096,0.989184 +8192,0.862208 +16384,1.05574 +32768,1.23904 +65536,1.65376 +131072,3.06893 +262144,4.83738 +524288,8.21965 +1048576,15.2166 +2097152,27.8876 +4194304,53.4733 +8388608,104.982 +16777216,211.353 +33554432,422.279 +67108864,857.731 +16,0.91136 +32,0.878592 +64,0.551936 +128,0.603136 +256,0.544768 +512,0.60928 +1024,0.594944 +2048,0.632832 +4096,0.657408 +8192,0.714752 +16384,0.816128 +32768,1.00147 +65536,1.40288 +131072,2.77299 +262144,4.75853 +524288,8.49408 +1048576,15.0036 +2097152,28.1795 +4194304,54.015 +8388608,105.424 +16777216,210.791 +33554432,427.899 +67108864,844.623 +16,0.772096 +32,0.741376 +64,0.7936 +128,0.77312 +256,0.703488 +512,0.77824 +1024,0.726016 +2048,0.718848 +4096,0.770048 +8192,0.838656 +16384,0.930816 +32768,1.11002 +65536,1.48787 +131072,2.94298 +262144,4.7657 +524288,8.42752 +1048576,14.9371 +2097152,27.6439 +4194304,53.418 +8388608,106.757 +16777216,211.015 +33554432,420.421 +67108864,843.037 +16,0.903168 +32,1.3865 +64,0.764928 +128,0.769024 +256,0.851968 +512,0.722944 +1024,1.04653 +2048,0.65024 +4096,0.768 +8192,0.801792 +16384,0.917504 +32768,1.03526 +65536,1.41824 +131072,3.50413 +262144,4.73702 +524288,8.19917 +1048576,14.6412 +2097152,27.3439 +4194304,54.2484 +8388608,105.466 +16777216,211.426 +33554432,421.508 +67108864,846.479 +16,0.82944 +32,0.759808 +64,0.74752 +128,0.610304 +256,0.584704 +512,0.628736 +1024,0.622592 +2048,0.642048 +4096,0.657408 +8192,0.631808 +16384,0.75264 +32768,1.01274 +65536,1.6087 +131072,2.816 +262144,4.97459 +524288,8.33741 +1048576,15.0723 +2097152,27.8252 +4194304,53.7272 +8388608,105.508 +16777216,212.012 +33554432,424.026 +67108864,843.797 +16,0.749568 +32,0.786432 +64,1.29024 +128,0.761856 +256,0.690176 +512,0.731136 +1024,0.756736 +2048,0.899072 +4096,0.786432 +8192,0.777216 +16384,0.87552 +32768,0.951296 +65536,1.48275 +131072,3.43859 +262144,4.7616 +524288,8.05888 +1048576,15.1439 +2097152,28.4334 +4194304,53.5777 +8388608,105.781 +16777216,211.513 +33554432,421.107 +67108864,842.916 +16,0.705536 +32,0.77312 +64,0.774144 +128,0.6912 +256,0.81408 +512,0.792576 +1024,0.769024 +2048,0.635904 +4096,1.07008 +8192,0.674816 +16384,0.825344 +32768,1.0025 +65536,1.38957 +131072,2.7648 +262144,4.43904 +524288,8.6784 +1048576,14.8849 +2097152,28.2173 +4194304,55.7005 +8388608,106.288 +16777216,210.218 +33554432,422.509 +67108864,843.358 +16,0.6912 +32,0.748544 +64,0.80384 +128,0.68608 +256,0.598016 +512,0.540672 +1024,1.01376 +2048,0.587776 +4096,0.647168 +8192,0.695296 +16384,0.807936 +32768,1.02195 +65536,1.41312 +131072,2.9143 +262144,5.50502 +524288,8.8535 +1048576,15.3569 +2097152,28.2143 +4194304,53.2419 +8388608,106.205 +16777216,211.383 +33554432,420.406 +67108864,843.824 +16,0.679936 +32,0.771072 +64,0.774144 +128,0.75776 +256,0.717824 +512,0.761856 +1024,0.724992 +2048,0.749568 +4096,0.653312 +8192,0.693248 +16384,0.812032 +32768,1.00352 +65536,1.4633 +131072,2.79245 +262144,4.97971 +524288,8.84429 +1048576,15.2115 +2097152,28.9812 +4194304,53.7027 +8388608,106.227 +16777216,211.148 +33554432,422.51 +67108864,842.709 +16,0.744448 +32,0.704512 +64,0.733184 +128,0.761856 +256,0.585728 +512,0.550912 +1024,1.19706 +2048,0.97792 +4096,1.06291 +8192,0.687104 +16384,0.816128 +32768,0.956416 +65536,1.39776 +131072,3.25325 +262144,4.5527 +524288,8.71731 +1048576,14.8132 +2097152,28.1108 +4194304,53.8849 +8388608,104.528 +16777216,211.724 +33554432,421.192 +67108864,846.447 +16,0.730112 +32,0.760832 +64,0.774144 +128,0.735232 +256,0.710656 +512,0.540672 +1024,0.541696 +2048,0.64 +4096,0.656384 +8192,0.734208 +16384,1.15507 +32768,0.940032 +65536,1.49709 +131072,2.86106 +262144,5.22547 +524288,8.16128 +1048576,15.6744 +2097152,27.7299 +4194304,53.932 +8388608,105.244 +16777216,211.54 +33554432,421.137 +67108864,845.739 +16,1.34144 +32,0.782336 +64,0.620544 +128,0.589824 +256,0.7168 +512,0.603136 +1024,0.605184 +2048,0.66048 +4096,0.676864 +8192,0.731136 +16384,0.806912 +32768,1.01171 +65536,1.34246 +131072,2.78426 +262144,5.98938 +524288,8.23501 +1048576,15.362 +2097152,27.9132 +4194304,53.8358 +8388608,106.358 +16777216,209.29 +33554432,422.978 +67108864,842.753 +16,0.543744 +32,0.540672 +64,0.664576 +128,0.6144 +256,0.544768 +512,0.544768 +1024,0.615424 +2048,0.697344 +4096,0.689152 +8192,0.683008 +16384,0.818176 +32768,1.00762 +65536,1.39059 +131072,2.9399 +262144,4.69299 +524288,8.04352 +1048576,14.4855 +2097152,28.5 +4194304,52.9613 +8388608,105.972 +16777216,211.83 +33554432,422.215 +67108864,845.275 +16,0.74752 +32,0.768 +64,0.738304 +128,1.05677 +256,0.748544 +512,0.746496 +1024,0.772096 +2048,0.786432 +4096,0.7936 +8192,0.791552 +16384,0.882688 +32768,1.29331 +65536,1.52986 +131072,3.10067 +262144,5.10874 +524288,8.6825 +1048576,15.0559 +2097152,28.4856 +4194304,53.7723 +8388608,104.925 +16777216,211.06 +33554432,420.281 +67108864,847.564 +16,0.518144 +32,0.600064 +64,0.590848 +128,0.584704 +256,0.538624 +512,0.565248 +1024,0.606208 +2048,0.627712 +4096,1.11514 +8192,0.790528 +16384,0.817152 +32768,1.00557 +65536,1.39366 +131072,2.94502 +262144,4.72371 +524288,7.80288 +1048576,15.7686 +2097152,28.7314 +4194304,54.5577 +8388608,107.211 +16777216,211.147 +33554432,423.946 +67108864,844.214 +16,0.705536 +32,0.661504 +64,0.80896 +128,0.667648 +256,0.729088 +512,0.750592 +1024,0.683008 +2048,0.723968 +4096,1.21037 +8192,1.10182 +16384,0.89088 +32768,1.78074 +65536,1.45408 +131072,3.00544 +262144,4.96333 +524288,9.32557 +1048576,15.3436 +2097152,28.4979 +4194304,54.0621 +8388608,105.743 +16777216,211.656 +33554432,421.774 +67108864,843.672 +16,0.7936 +32,0.719872 +64,0.795648 +128,0.705536 +256,0.674816 +512,0.745472 +1024,0.719872 +2048,0.776192 +4096,0.792576 +8192,0.812992 +16384,0.902144 +32768,1.05165 +65536,1.44896 +131072,3.05152 +262144,5.06061 +524288,8.12646 +1048576,15.4501 +2097152,28.1795 +4194304,54.6509 +8388608,106.542 +16777216,212.603 +33554432,423.033 +67108864,847.461 +16,0.7424 +32,0.768 +64,0.751616 +128,0.751616 +256,0.729088 +512,0.779264 +1024,0.728064 +2048,0.937984 +4096,0.761856 +8192,0.850944 +16384,0.950272 +32768,1.07008 +65536,1.51757 +131072,3.05869 +262144,5.4487 +524288,8.39475 +1048576,15.1603 +2097152,28.7324 +4194304,53.5214 +8388608,105.492 +16777216,210.485 +33554432,423.212 +67108864,843.905 +16,0.76288 +32,0.729088 +64,0.785408 +128,0.772096 +256,0.620544 +512,0.59904 +1024,0.534528 +2048,0.647168 +4096,0.68096 +8192,0.744448 +16384,0.81408 +32768,1.01478 +65536,1.8432 +131072,2.7863 +262144,5.19373 +524288,7.6329 +1048576,14.8808 +2097152,27.3162 +4194304,54.6417 +8388608,106.25 +16777216,210.689 +33554432,422.9 +67108864,845.508 +16,0.68608 +32,0.761856 +64,0.734208 +128,0.59904 +256,0.869376 +512,0.602112 +1024,0.543744 +2048,0.61952 +4096,0.684032 +8192,0.646144 +16384,0.761856 +32768,1.01478 +65536,1.34246 +131072,2.98598 +262144,4.95821 +524288,8.07834 +1048576,14.72 +2097152,27.4586 +4194304,53.1712 +8388608,105.42 +16777216,212.876 +33554432,423.324 +67108864,842.926 +16,0.736256 +32,0.720896 +64,0.821248 +128,0.797696 +256,0.7424 +512,0.601088 +1024,0.600064 +2048,0.616448 +4096,1.20422 +8192,0.731136 +16384,1.00045 +32768,1.06598 +65536,1.39878 +131072,2.94707 +262144,4.51277 +524288,8.22682 +1048576,14.9238 +2097152,27.4678 +4194304,54.2321 +8388608,105.667 +16777216,208.905 +33554432,422.637 +67108864,841.772 +16,0.73216 +32,0.713728 +64,0.692224 +128,0.769024 +256,0.780288 +512,0.733184 +1024,0.779264 +2048,0.796672 +4096,0.823296 +8192,0.644096 +16384,0.813056 +32768,1.2288 +65536,1.3865 +131072,3.30138 +262144,5.2695 +524288,8.43878 +1048576,14.935 +2097152,28.6106 +4194304,54.2249 +8388608,107.05 +16777216,211.082 +33554432,420.779 +67108864,844.875 +16,0.841728 +32,0.73728 +64,0.766976 +128,0.79872 +256,0.724992 +512,0.992256 +1024,0.795648 +2048,0.813056 +4096,0.770048 +8192,0.946176 +16384,0.974848 +32768,1.11206 +65536,1.48582 +131072,3.05664 +262144,5.09952 +524288,8.38246 +1048576,15.7102 +2097152,27.7002 +4194304,54.3928 +8388608,105.486 +16777216,209.921 +33554432,423.468 +67108864,838.663 +16,0.707584 +32,0.70144 +64,0.733184 +128,0.712704 +256,0.746496 +512,0.764928 +1024,0.608256 +2048,0.567296 +4096,0.649216 +8192,0.70144 +16384,0.80896 +32768,1.1049 +65536,1.53395 +131072,3.04538 +262144,4.76467 +524288,8.13568 +1048576,14.5613 +2097152,27.5558 +4194304,53.1159 +8388608,105.554 +16777216,211.359 +33554432,421.866 +67108864,843.979 +16,0.647168 +32,0.780288 +64,0.632832 +128,0.623616 +256,0.625664 +512,0.595968 +1024,0.57344 +2048,0.64512 +4096,0.672768 +8192,1.12845 +16384,0.828416 +32768,1.03014 +65536,1.4121 +131072,2.9655 +262144,4.51789 +524288,8.22067 +1048576,15.445 +2097152,28.8133 +4194304,53.5511 +8388608,104.954 +16777216,211.301 +33554432,422.613 +67108864,843.281 +16,0.659456 +32,0.861184 +64,0.852992 +128,0.842752 +256,0.81408 +512,0.82944 +1024,0.838656 +2048,0.867328 +4096,0.75264 +8192,0.859136 +16384,1.0496 +32768,1.24314 +65536,1.48685 +131072,3.11091 +262144,4.92339 +524288,8.78797 +1048576,15.2013 +2097152,27.6603 +4194304,55.4783 +8388608,105.198 +16777216,211.148 +33554432,421.662 +67108864,844.828 +16,1.44077 +32,0.607232 +64,0.761856 +128,0.763904 +256,0.748544 +512,0.736256 +1024,0.78848 +2048,0.748544 +4096,1.05882 +8192,1.26259 +16384,0.960512 +32768,1.2247 +65536,1.49709 +131072,3.39251 +262144,4.89574 +524288,8.01792 +1048576,15.5924 +2097152,27.2701 +4194304,53.4641 +8388608,107.441 +16777216,211.552 +33554432,425.001 +67108864,842.868 +16,0.862208 +32,0.755712 +64,0.710656 +128,0.720896 +256,0.78336 +512,0.805888 +1024,0.748544 +2048,0.715776 +4096,0.785408 +8192,0.799744 +16384,0.932864 +32768,0.948224 +65536,1.36698 +131072,3.1017 +262144,4.5527 +524288,9.01837 +1048576,16.0236 +2097152,28.3566 +4194304,54.0017 +8388608,107.181 +16777216,209.986 +33554432,422.034 +67108864,846.553 +16,0.746496 +32,0.697344 +64,0.777216 +128,0.748544 +256,0.723968 +512,0.799744 +1024,0.750592 +2048,0.724992 +4096,0.684032 +8192,0.811008 +16384,0.831488 +32768,1.00864 +65536,1.50221 +131072,2.81702 +262144,4.97254 +524288,7.83462 +1048576,14.466 +2097152,28.8082 +4194304,54.2915 +8388608,107.335 +16777216,210.039 +33554432,421.414 +67108864,845.853 +16,1.04346 +32,0.83456 +64,0.658432 +128,0.754688 +256,0.723968 +512,0.765952 +1024,0.779264 +2048,0.758784 +4096,0.763904 +8192,0.86016 +16384,1.24518 +32768,1.0752 +65536,1.44896 +131072,3.04538 +262144,6.42048 +524288,8.31795 +1048576,14.6442 +2097152,27.7944 +4194304,55.4639 +8388608,106.905 +16777216,210.45 +33554432,418.435 +67108864,845.069 +16,0.71168 +32,0.76288 +64,0.73728 +128,0.678912 +256,0.769024 +512,0.764928 +1024,0.739328 +2048,0.766976 +4096,0.75264 +8192,0.928768 +16384,0.90112 +32768,1.03731 +65536,1.52576 +131072,3.50618 +262144,6.08563 +524288,8.09472 +1048576,15.0333 +2097152,27.8241 +4194304,53.5521 +8388608,105.046 +16777216,212.898 +33554432,419.618 +67108864,843.907 +16,0.98304 +32,0.755712 +64,0.741376 +128,0.541696 +256,0.72192 +512,0.731136 +1024,0.769024 +2048,0.769024 +4096,0.676864 +8192,0.847872 +16384,0.920576 +32768,1.09158 +65536,1.4807 +131072,3.06074 +262144,5.03398 +524288,8.00768 +1048576,14.9678 +2097152,28.6679 +4194304,53.8358 +8388608,106.431 +16777216,211.303 +33554432,421.429 +67108864,843.468 +16,1.44691 +32,0.781312 +64,0.7168 +128,0.703488 +256,0.987136 +512,0.607232 +1024,0.600064 +2048,0.627712 +4096,0.667648 +8192,0.805888 +16384,0.804864 +32768,1.00966 +65536,1.40493 +131072,3.24096 +262144,4.7616 +524288,7.91347 +1048576,15.06 +2097152,27.8723 +4194304,54.1112 +8388608,105.013 +16777216,211.9 +33554432,421.036 +67108864,846.861 +16,0.697344 +32,0.68608 +64,0.755712 +128,0.6912 +256,0.765952 +512,1.03117 +1024,0.78336 +2048,0.755712 +4096,0.807936 +8192,0.771072 +16384,0.922624 +32768,1.51552 +65536,1.536 +131072,3.09555 +262144,5.62586 +524288,8.4777 +1048576,15.188 +2097152,27.7852 +4194304,53.9484 +8388608,106.822 +16777216,212.369 +33554432,420.715 +67108864,844.625 +16,0.692224 +32,0.538592 +64,0.540672 +128,0.735232 +256,0.80384 +512,0.602112 +1024,0.5376 +2048,0.585728 +4096,0.80896 +8192,0.966656 +16384,0.886784 +32768,1.0281 +65536,1.47558 +131072,3.07405 +262144,5.14765 +524288,9.03782 +1048576,14.6596 +2097152,28.0054 +4194304,53.8542 +8388608,104.898 +16777216,211.558 +33554432,421.924 +67108864,844.874 +16,0.748544 +32,1.04141 +64,0.951296 +128,0.746496 +256,0.677888 +512,0.764928 +1024,0.781312 +2048,0.770048 +4096,0.699392 +8192,0.806912 +16384,0.852992 +32768,1.0496 +65536,1.46944 +131072,3.05357 +262144,6.31194 +524288,7.97901 +1048576,14.7927 +2097152,28.5204 +4194304,53.8255 +8388608,106.444 +16777216,211.334 +33554432,422.915 +67108864,844.124 +16,0.770048 +32,0.881664 +64,0.765952 +128,0.736256 +256,0.801792 +512,0.733184 +1024,0.780288 +2048,0.664576 +4096,1.06701 +8192,1.18067 +16384,0.769024 +32768,1.01683 +65536,1.38957 +131072,3.1744 +262144,6.34061 +524288,7.96672 +1048576,14.9412 +2097152,28.7252 +4194304,53.6433 +8388608,106.435 +16777216,211.564 +33554432,423.165 +67108864,846.491 +16,0.81408 +32,0.668672 +64,0.777216 +128,0.70656 +256,0.817152 +512,0.671744 +1024,0.777216 +2048,0.754688 +4096,0.694272 +8192,0.83456 +16384,0.97792 +32768,1.25133 +65536,1.6384 +131072,3.56762 +262144,5.06573 +524288,8.86989 +1048576,15.019 +2097152,27.093 +4194304,53.1978 +8388608,106.361 +16777216,211.178 +33554432,422.759 +67108864,847.707 +16,0.797696 +32,0.789504 +64,0.748544 +128,0.828416 +256,0.749568 +512,0.817152 +1024,0.565248 +2048,0.746496 +4096,0.72704 +8192,0.934912 +16384,0.941056 +32768,1.03731 +65536,1.46534 +131072,3.08838 +262144,4.82304 +524288,7.84794 +1048576,14.5132 +2097152,27.6398 +4194304,54.1972 +8388608,104.924 +16777216,210.509 +33554432,423.629 +67108864,843.237 +16,0.800768 +32,0.729088 +64,0.681984 +128,0.749568 +256,0.754688 +512,0.754688 +1024,0.710656 +2048,0.741376 +4096,0.760832 +8192,0.82432 +16384,0.943104 +32768,1.05165 +65536,1.49299 +131072,3.16621 +262144,4.92544 +524288,8.74291 +1048576,15.446 +2097152,26.8861 +4194304,53.9167 +8388608,104.592 +16777216,210.259 +33554432,420.304 +67108864,849.876 +16,0.582656 +32,0.595968 +64,0.587776 +128,0.589824 +256,0.679936 +512,0.723968 +1024,0.97792 +2048,0.796672 +4096,0.771072 +8192,0.779264 +16384,0.896 +32768,1.06496 +65536,1.55136 +131072,3.328 +262144,5.23878 +524288,8.74394 +1048576,15.2893 +2097152,28.1426 +4194304,53.8952 +8388608,107.222 +16777216,210.914 +33554432,422.653 +67108864,843.489 +16,0.67072 +32,0.772096 +64,0.700416 +128,0.832512 +256,0.735232 +512,0.772096 +1024,0.754688 +2048,0.815104 +4096,0.833536 +8192,0.91136 +16384,1.00557 +32768,1.08749 +65536,1.50323 +131072,3.2768 +262144,4.7401 +524288,8.41626 +1048576,14.2879 +2097152,28.0351 +4194304,55.0298 +8388608,105.691 +16777216,212.27 +33554432,423.064 +67108864,845.173 +16,0.774144 +32,0.772096 +64,0.723968 +128,0.700416 +256,0.756736 +512,0.774144 +1024,0.750592 +2048,0.838656 +4096,0.843776 +8192,0.825344 +16384,0.968704 +32768,1.11821 +65536,1.56774 +131072,3.07507 +262144,4.85888 +524288,8.23603 +1048576,15.1153 +2097152,28.3064 +4194304,53.8798 +8388608,106.243 +16777216,212.014 +33554432,421.149 +67108864,840.75 +16,0.800768 +32,0.85504 +64,0.799744 +128,0.804864 +256,0.772096 +512,0.741376 +1024,0.800768 +2048,0.80384 +4096,0.927744 +8192,0.831488 +16384,0.92672 +32768,1.24621 +65536,1.64045 +131072,3.30854 +262144,5.02989 +524288,8.04659 +1048576,15.3293 +2097152,28.7857 +4194304,54.6365 +8388608,104.271 +16777216,212.353 +33554432,420.857 +67108864,847.212 +16,0.96256 +32,0.821248 +64,0.748544 +128,0.708608 +256,0.763904 +512,0.659456 +1024,1.36397 +2048,0.734208 +4096,0.873472 +8192,0.902144 +16384,0.928768 +32768,1.07213 +65536,1.47661 +131072,3.02182 +262144,5.0432 +524288,8.56986 +1048576,15.4307 +2097152,28.0617 +4194304,53.4948 +8388608,105.547 +16777216,210.54 +33554432,422.235 +67108864,842.945 +16,1.0711 +32,1.15814 +64,0.811008 +128,0.77312 +256,0.712704 +512,1.3056 +1024,0.766976 +2048,0.504832 +4096,0.776192 +8192,0.909312 +16384,1.05574 +32768,1.96915 +65536,1.65376 +131072,3.06688 +262144,5.50707 +524288,8.09472 +1048576,15.401 +2097152,27.2855 +4194304,54.0559 +8388608,106.353 +16777216,210.633 +33554432,424.513 +67108864,846.565 +16,0.85504 +32,0.672768 +64,0.730112 +128,0.692224 +256,0.817152 +512,0.740352 +1024,0.771072 +2048,0.677888 +4096,0.786432 +8192,0.740352 +16384,0.9728 +32768,1.28922 +65536,1.51757 +131072,3.28806 +262144,4.736 +524288,8.20634 +1048576,14.4589 +2097152,28.0955 +4194304,53.9126 +8388608,106.527 +16777216,212.746 +33554432,420.889 +67108864,845.948 +16,1.42643 +32,0.693248 +64,0.78848 +128,0.677888 +256,0.733184 +512,0.74752 +1024,1.152 +2048,0.912384 +4096,1.36704 +8192,0.915456 +16384,0.922624 +32768,1.2073 +65536,1.49504 +131072,3.19898 +262144,4.87731 +524288,9.6727 +1048576,15.486 +2097152,28.1446 +4194304,54.1266 +8388608,104.891 +16777216,212.551 +33554432,422.109 +67108864,848.738 +16,0.796672 +32,0.739328 +64,0.723968 +128,0.760832 +256,0.816128 +512,0.8192 +1024,0.791552 +2048,0.836608 +4096,0.77312 +8192,0.899072 +16384,1.09261 +32768,1.1561 +65536,1.59744 +131072,3.34438 +262144,4.77594 +524288,8.23194 +1048576,14.1967 +2097152,27.8886 +4194304,54.7717 +8388608,105.772 +16777216,211.984 +33554432,422.741 +67108864,843.095 +16,0.784384 +32,0.951296 +64,0.897024 +128,0.780288 +256,0.907264 +512,0.760832 +1024,0.769024 +2048,0.971776 +4096,0.883712 +8192,0.900096 +16384,0.892928 +32768,1.26054 +65536,1.52064 +131072,3.14266 +262144,4.69811 +524288,8.06502 +1048576,15.361 +2097152,27.8938 +4194304,53.3248 +8388608,106.868 +16777216,210.917 +33554432,422.347 +67108864,843.664 +16,0.754688 +32,0.756736 +64,0.761856 +128,0.73728 +256,0.763904 +512,0.75776 +1024,1.40595 +2048,0.62976 +4096,1.01171 +8192,0.69632 +16384,0.805888 +32768,1.00864 +65536,1.39162 +131072,2.79654 +262144,5.2695 +524288,8.1623 +1048576,14.5725 +2097152,27.9347 +4194304,54.6109 +8388608,106.463 +16777216,211.693 +33554432,422.422 +67108864,848.836 +16,0.898048 +32,0.811008 +64,0.707584 +128,0.768 +256,0.729088 +512,0.790528 +1024,0.668672 +2048,0.579584 +4096,0.678912 +8192,0.689152 +16384,0.893952 +32768,1.25952 +65536,1.59437 +131072,2.80576 +262144,4.8937 +524288,8.42854 +1048576,14.378 +2097152,28.0207 +4194304,54.6324 +8388608,105.616 +16777216,211.188 +33554432,422.11 +67108864,843.076 +16,0.743424 +32,0.746496 +64,0.790528 +128,0.591872 +256,1.1305 +512,0.707584 +1024,0.59904 +2048,0.617472 +4096,0.687104 +8192,0.722944 +16384,0.813056 +32768,1.00864 +65536,1.39162 +131072,2.94195 +262144,4.79846 +524288,8.09472 +1048576,15.189 +2097152,28.1088 +4194304,54.0047 +8388608,106.044 +16777216,211.991 +33554432,423.736 +67108864,844.102 +16,0.610304 +32,0.784384 +64,0.780288 +128,0.730112 +256,0.60928 +512,0.610304 +1024,0.540672 +2048,0.816128 +4096,0.667648 +8192,0.703488 +16384,0.816128 +32768,1.14176 +65536,1.4121 +131072,3.20512 +262144,4.73395 +524288,7.91347 +1048576,14.3165 +2097152,27.7361 +4194304,53.6074 +8388608,104.203 +16777216,212.104 +33554432,420.01 +67108864,846.675 +16,0.910336 +32,0.826368 +64,0.766976 +128,0.77824 +256,0.598016 +512,0.606208 +1024,0.607232 +2048,0.628736 +4096,0.648192 +8192,0.63488 +16384,0.806912 +32768,0.994304 +65536,1.90054 +131072,2.95834 +262144,4.71859 +524288,8.17562 +1048576,15.3876 +2097152,29.054 +4194304,53.7682 +8388608,105.262 +16777216,211.47 +33554432,421.039 +67108864,844.803 +16,0.770048 +32,0.753664 +64,0.74752 +128,0.961536 +256,0.5888 +512,0.638976 +1024,0.612352 +2048,0.626688 +4096,0.654336 +8192,0.735232 +16384,0.817152 +32768,1.00659 +65536,1.35066 +131072,3.02694 +262144,4.73395 +524288,8.93338 +1048576,14.7988 +2097152,27.9951 +4194304,52.607 +8388608,105.852 +16777216,210.535 +33554432,422.178 +67108864,844.047 +16,0.774144 +32,0.729088 +64,0.832512 +128,0.856064 +256,0.929792 +512,0.754688 +1024,0.777216 +2048,0.759808 +4096,0.800768 +8192,0.825344 +16384,0.809984 +32768,1.02707 +65536,1.39366 +131072,2.93376 +262144,4.79027 +524288,8.05683 +1048576,14.3596 +2097152,28.8686 +4194304,54.3355 +8388608,104.955 +16777216,211.78 +33554432,422.67 +67108864,844.574 +16,0.883712 +32,0.745472 +64,0.75776 +128,0.618496 +256,0.673792 +512,0.797696 +1024,0.631808 +2048,0.627712 +4096,0.805888 +8192,0.75264 +16384,0.807936 +32768,1.26464 +65536,1.32915 +131072,3.51846 +262144,4.81587 +524288,8.33434 +1048576,14.6166 +2097152,27.5026 +4194304,54.5792 +8388608,106.372 +16777216,210.202 +33554432,421.524 +67108864,845.222 +16,0.817152 +32,0.765952 +64,0.525312 +128,0.815104 +256,0.86016 +512,0.9728 +1024,0.596992 +2048,0.617472 +4096,0.679936 +8192,0.646144 +16384,0.822272 +32768,1.00557 +65536,1.39059 +131072,2.95219 +262144,5.14458 +524288,7.8295 +1048576,14.9873 +2097152,27.5067 +4194304,53.2828 +8388608,104.662 +16777216,210.196 +33554432,421.318 +67108864,844.241 +16,0.93696 +32,0.828416 +64,0.8704 +128,0.733184 +256,0.754688 +512,0.75776 +1024,1.21965 +2048,0.738304 +4096,0.770048 +8192,0.709632 +16384,0.801792 +32768,1.00762 +65536,1.46125 +131072,2.9399 +262144,4.72883 +524288,8.92416 +1048576,14.7517 +2097152,27.9224 +4194304,54.0774 +8388608,105.486 +16777216,211.564 +33554432,423.649 +67108864,844.863 +16,0.801792 +32,0.760832 +64,0.760832 +128,0.602112 +256,1.84934 +512,0.905216 +1024,0.596992 +2048,0.616448 +4096,0.694272 +8192,0.728064 +16384,1.12845 +32768,1.00045 +65536,1.39366 +131072,2.93683 +262144,5.22445 +524288,8.25446 +1048576,14.9658 +2097152,29.0273 +4194304,53.9269 +8388608,104.746 +16777216,210.039 +33554432,422.76 +67108864,843.743 +16,0.709632 +32,0.927744 +64,0.769024 +128,0.740352 +256,0.871424 +512,0.817152 +1024,0.835584 +2048,0.633856 +4096,0.677888 +8192,0.710656 +16384,0.816128 +32768,1.0025 +65536,1.39878 +131072,2.94298 +262144,5.52755 +524288,8.13363 +1048576,14.4701 +2097152,26.196 +4194304,53.1886 +8388608,105.683 +16777216,211.672 +33554432,423.57 +67108864,843.431 +16,0.777216 +32,0.748544 +64,0.648192 +128,0.62464 +256,0.82944 +512,0.730112 +1024,0.82944 +2048,0.632832 +4096,0.636928 +8192,0.710656 +16384,0.73728 +32768,1.00147 +65536,1.39059 +131072,2.95014 +262144,4.89677 +524288,7.9575 +1048576,15.7532 +2097152,28.544 +4194304,54.1307 +8388608,106.214 +16777216,212.54 +33554432,425.023 +67108864,844.925 +16,0.821248 +32,0.72192 +64,0.899072 +128,0.719872 +256,0.964608 +512,0.764928 +1024,0.779264 +2048,0.632832 +4096,0.68608 +8192,0.774144 +16384,0.813056 +32768,1.23494 +65536,1.39571 +131072,2.94605 +262144,5.08416 +524288,7.89914 +1048576,14.7292 +2097152,26.8698 +4194304,53.2029 +8388608,104.855 +16777216,214.054 +33554432,423.694 +67108864,842.147 +16,0.766976 +32,0.745472 +64,0.77312 +128,0.596992 +256,0.730112 +512,0.536576 +1024,0.59392 +2048,0.662528 +4096,0.692224 +8192,0.70144 +16384,0.915456 +32768,1.06701 +65536,1.54419 +131072,2.9399 +262144,5.13229 +524288,8.73472 +1048576,14.8562 +2097152,27.9798 +4194304,53.4272 +8388608,105.398 +16777216,210.044 +33554432,422.25 +67108864,844.94 +16,0.529408 +32,1.23494 +64,0.790528 +128,0.859136 +256,0.735232 +512,0.75264 +1024,0.82432 +2048,0.828416 +4096,0.64512 +8192,0.709632 +16384,0.809984 +32768,0.954368 +65536,1.40083 +131072,2.98496 +262144,4.71859 +524288,8.86579 +1048576,14.8029 +2097152,27.4391 +4194304,53.502 +8388608,105.712 +16777216,212.045 +33554432,421.377 +67108864,843.56 +16,0.99328 +32,0.75264 +64,0.949248 +128,0.841728 +256,0.760832 +512,0.723968 +1024,0.688128 +2048,0.782336 +4096,0.760832 +8192,0.866304 +16384,0.86016 +32768,1.1049 +65536,1.50938 +131072,3.11808 +262144,4.74931 +524288,8.05171 +1048576,14.8265 +2097152,27.7791 +4194304,53.6545 +8388608,105.612 +16777216,211.217 +33554432,420.454 +67108864,847.253 +16,0.835584 +32,0.693248 +64,0.784384 +128,0.740352 +256,0.73728 +512,0.744448 +1024,0.735232 +2048,0.868352 +4096,0.69632 +8192,0.690176 +16384,0.817152 +32768,1.02298 +65536,1.33734 +131072,4.93773 +262144,4.91725 +524288,8.7337 +1048576,14.3452 +2097152,28.4088 +4194304,53.3627 +8388608,105.409 +16777216,210.289 +33554432,422.815 +67108864,844.362 +16,0.672768 +32,0.776192 +64,0.760832 +128,0.826368 +256,0.718848 +512,0.868352 +1024,0.595968 +2048,0.566272 +4096,0.649216 +8192,0.724992 +16384,0.802816 +32768,1.01683 +65536,1.40083 +131072,4.07654 +262144,4.93568 +524288,8.13978 +1048576,14.72 +2097152,27.2927 +4194304,54.0406 +8388608,106.374 +16777216,211.586 +33554432,420.168 +67108864,845.623 +16,0.83456 +32,0.736256 +64,0.754688 +128,0.739328 +256,0.761856 +512,0.59904 +1024,0.608256 +2048,0.587776 +4096,0.884736 +8192,0.736256 +16384,0.815104 +32768,1.02912 +65536,1.48992 +131072,3.04026 +262144,4.71757 +524288,9.16582 +1048576,14.5664 +2097152,28.3361 +4194304,53.2695 +8388608,105.801 +16777216,210.7 +33554432,424.465 +67108864,842.339 +16,0.7936 +32,0.841728 +64,0.775168 +128,0.703488 +256,0.68608 +512,0.59392 +1024,0.60416 +2048,0.63488 +4096,0.641024 +8192,0.704512 +16384,0.832512 +32768,1.00966 +65536,1.44282 +131072,2.7904 +262144,5.2183 +524288,8.60365 +1048576,14.7087 +2097152,27.8876 +4194304,54.3406 +8388608,106.123 +16777216,212.788 +33554432,420.026 +67108864,849.342 +16,0.75776 +32,0.700416 +64,0.708608 +128,0.591872 +256,0.610304 +512,1.0025 +1024,0.608256 +2048,0.628736 +4096,0.690176 +8192,0.694272 +16384,0.820224 +32768,1.02195 +65536,1.39366 +131072,3.59117 +262144,4.83738 +524288,7.88992 +1048576,14.5193 +2097152,28.6413 +4194304,53.5204 +8388608,106.301 +16777216,211.497 +33554432,421.861 +67108864,844.75 +16,0.658432 +32,0.726016 +64,0.718848 +128,0.722944 +256,0.595968 +512,0.594944 +1024,0.60928 +2048,0.80384 +4096,0.642048 +8192,0.702464 +16384,0.805888 +32768,0.987136 +65536,1.40902 +131072,3.82566 +262144,4.82611 +524288,8.41318 +1048576,14.4538 +2097152,27.1329 +4194304,53.3514 +8388608,105.556 +16777216,211.809 +33554432,421.981 +67108864,844.018 +16,0.73728 +32,0.695296 +64,0.770048 +128,0.749568 +256,0.72192 +512,0.739328 +1024,0.950272 +2048,0.617472 +4096,0.677888 +8192,0.703488 +16384,0.817152 +32768,1.00352 +65536,1.33837 +131072,2.94605 +262144,4.76672 +524288,8.30874 +1048576,14.6452 +2097152,27.3408 +4194304,52.9971 +8388608,105.699 +16777216,211.111 +33554432,420.505 +67108864,841.301 +16,0.693248 +32,0.758784 +64,0.8448 +128,0.744448 +256,0.726016 +512,0.709632 +1024,0.940032 +2048,0.775168 +4096,0.596992 +8192,0.687104 +16384,1.01683 +32768,1.90054 +65536,1.39469 +131072,2.94195 +262144,5.02477 +524288,7.84794 +1048576,14.6883 +2097152,27.5487 +4194304,53.6218 +8388608,105.582 +16777216,210.444 +33554432,421.578 +67108864,843.26 +16,0.704512 +32,0.718848 +64,0.720896 +128,0.703488 +256,0.692224 +512,0.714752 +1024,0.709632 +2048,0.73216 +4096,0.78336 +8192,0.802816 +16384,0.893952 +32768,1.53088 +65536,1.50528 +131072,3.02797 +262144,5.08109 +524288,8.04352 +1048576,14.6289 +2097152,27.1862 +4194304,53.3494 +8388608,106.166 +16777216,209.262 +33554432,420.572 +67108864,843 +16,0.695296 +32,0.71168 +64,0.730112 +128,0.731136 +256,0.743424 +512,0.72192 +1024,0.726016 +2048,0.729088 +4096,0.77312 +8192,0.715776 +16384,0.97792 +32768,1.09978 +65536,1.54112 +131072,3.11398 +262144,5.72928 +524288,8.18688 +1048576,14.9084 +2097152,27.776 +4194304,54.5157 +8388608,105.159 +16777216,210.965 +33554432,420.833 +67108864,839.494 +16,0.76288 +32,0.795648 +64,1.11309 +128,0.75264 +256,0.763904 +512,0.992256 +1024,0.594944 +2048,0.632832 +4096,0.644096 +8192,1.02502 +16384,0.807936 +32768,0.9984 +65536,1.38957 +131072,2.98189 +262144,4.75034 +524288,7.86637 +1048576,15.2914 +2097152,27.5569 +4194304,54.6171 +8388608,105.823 +16777216,210.406 +33554432,423.085 +67108864,838.569 +16,0.766976 +32,0.699392 +64,0.705536 +128,0.750592 +256,0.739328 +512,0.73728 +1024,0.72704 +2048,0.744448 +4096,0.751616 +8192,0.821248 +16384,0.945152 +32768,1.08134 +65536,1.43155 +131072,2.93581 +262144,5.52038 +524288,8.23194 +1048576,14.4968 +2097152,27.5046 +4194304,53.1999 +8388608,105.804 +16777216,211.719 +33554432,421.55 +67108864,841.652 +16,0.750592 +32,0.80896 +64,0.75776 +128,0.891904 +256,0.735232 +512,0.735232 +1024,0.7424 +2048,0.714752 +4096,0.713728 +8192,0.800768 +16384,0.922624 +32768,1.10285 +65536,1.84627 +131072,3.10886 +262144,4.76877 +524288,8.06707 +1048576,14.5633 +2097152,27.9296 +4194304,53.7508 +8388608,104.852 +16777216,209.845 +33554432,422.035 +67108864,844.17 +16,0.794624 +32,0.863232 +64,0.9072 +128,0.753664 +256,0.723968 +512,0.761856 +1024,0.755712 +2048,0.715776 +4096,0.763904 +8192,0.79872 +16384,0.9472 +32768,1.04038 +65536,1.48787 +131072,3.05254 +262144,4.7575 +524288,8.25344 +1048576,15.1378 +2097152,27.0172 +4194304,53.1425 +8388608,106.256 +16777216,209.888 +33554432,421.622 +67108864,840.67 +16,0.826368 +32,0.734208 +64,0.943104 +128,0.702464 +256,0.734208 +512,0.772096 +1024,0.740352 +2048,0.729088 +4096,0.825344 +8192,0.840704 +16384,0.950272 +32768,1.08442 +65536,1.44077 +131072,3.04128 +262144,5.0647 +524288,8.4183 +1048576,14.3657 +2097152,27.1278 +4194304,53.5245 +8388608,105.259 +16777216,210.311 +33554432,421.239 +67108864,841.577 +16,0.792576 +32,0.753664 +64,1.73568 +128,0.649216 +256,0.877568 +512,0.72192 +1024,0.600064 +2048,0.61952 +4096,0.700416 +8192,0.683008 +16384,0.811008 +32768,1.01069 +65536,1.33427 +131072,3.1529 +262144,4.7657 +524288,8.37939 +1048576,14.2275 +2097152,27.5364 +4194304,53.46 +8388608,105.864 +16777216,211.835 +33554432,421.336 +67108864,841.798 +16,0.815104 +32,0.999424 +64,0.735232 +128,0.717824 +256,0.776192 +512,0.622592 +1024,1.20934 +2048,0.61952 +4096,0.659456 +8192,0.68096 +16384,0.816128 +32768,1.00352 +65536,1.38957 +131072,2.96653 +262144,4.75546 +524288,8.64051 +1048576,15.7297 +2097152,28.0924 +4194304,53.932 +8388608,106.252 +16777216,209.96 +33554432,420.948 +67108864,839.413 +16,0.804864 +32,0.708608 +64,0.714752 +128,0.891904 +256,0.714752 +512,0.705536 +1024,0.765952 +2048,0.637952 +4096,0.750592 +8192,0.999424 +16384,0.746496 +32768,0.997376 +65536,1.39264 +131072,2.68186 +262144,4.73088 +524288,8.22579 +1048576,14.636 +2097152,27.2302 +4194304,53.3268 +8388608,105.679 +16777216,210.301 +33554432,421.891 +67108864,844.567 +16,0.78848 +32,0.709632 +64,0.718848 +128,0.746496 +256,0.994304 +512,0.611328 +1024,0.608256 +2048,0.623616 +4096,0.70656 +8192,0.685056 +16384,0.818176 +32768,1.21856 +65536,1.39366 +131072,2.90714 +262144,5.56032 +524288,8.46131 +1048576,14.7169 +2097152,27.0602 +4194304,53.4057 +8388608,105.062 +16777216,211.867 +33554432,420.782 +67108864,843.255 +16,0.902144 +32,0.775168 +64,0.987136 +128,0.892928 +256,0.73216 +512,1.06598 +1024,0.756736 +2048,0.658432 +4096,0.683008 +8192,0.71168 +16384,0.805888 +32768,0.9984 +65536,1.39366 +131072,2.93274 +262144,4.73702 +524288,8.13261 +1048576,14.7661 +2097152,26.8012 +4194304,53.6177 +8388608,105.522 +16777216,211.056 +33554432,419.326 +67108864,845.247 +16,0.769024 +32,0.744448 +64,0.594944 +128,0.60416 +256,0.594944 +512,0.611328 +1024,0.679936 +2048,1.00659 +4096,0.648192 +8192,0.71168 +16384,0.818176 +32768,1.5657 +65536,1.3783 +131072,2.94912 +262144,4.73498 +524288,8.49203 +1048576,14.9494 +2097152,27.9183 +4194304,54.017 +8388608,105.843 +16777216,210.937 +33554432,419.074 +67108864,835.933 +16,0.736256 +32,0.730112 +64,0.653312 +128,0.608256 +256,0.611328 +512,0.59392 +1024,1.15098 +2048,0.734208 +4096,0.672768 +8192,0.745472 +16384,0.805888 +32768,1.00454 +65536,1.39264 +131072,3.33926 +262144,5.04525 +524288,8.6272 +1048576,14.5213 +2097152,28.3996 +4194304,53.8501 +8388608,105.487 +16777216,211.374 +33554432,420.334 +67108864,845.849 +16,0.845824 +32,0.77824 +64,0.75776 +128,0.978944 +256,0.75776 +512,0.733184 +1024,0.74752 +2048,0.797696 +4096,0.758784 +8192,1.08134 +16384,0.910336 +32768,1.00557 +65536,1.38547 +131072,2.98598 +262144,4.49331 +524288,8.22784 +1048576,14.6852 +2097152,27.8313 +4194304,53.8184 +8388608,105.51 +16777216,209.2 +33554432,420.82 +67108864,840.96 +16,0.771072 +32,0.822272 +64,0.825344 +128,0.594944 +256,0.59392 +512,0.59392 +1024,0.598016 +2048,0.627712 +4096,0.667648 +8192,0.69632 +16384,0.806912 +32768,1.01478 +65536,1.62099 +131072,2.92659 +262144,5.1415 +524288,8.28826 +1048576,15.0098 +2097152,27.4033 +4194304,54.6826 +8388608,105.275 +16777216,209.111 +33554432,420.766 +67108864,843.126 +16,0.889856 +32,0.991232 +64,0.897024 +128,0.70144 +256,0.708608 +512,0.712704 +1024,0.620544 +2048,0.63488 +4096,0.886784 +8192,0.965632 +16384,1.20115 +32768,1.10285 +65536,1.39981 +131072,3.95162 +262144,4.76058 +524288,8.67328 +1048576,14.6217 +2097152,27.5159 +4194304,53.5808 +8388608,104.332 +16777216,210.271 +33554432,421.415 +67108864,842.152 +16,0.745472 +32,0.838656 +64,1.24621 +128,0.826368 +256,0.70656 +512,0.602112 +1024,0.570368 +2048,0.625664 +4096,0.652288 +8192,0.681984 +16384,0.805888 +32768,1.00659 +65536,2.35418 +131072,2.95526 +262144,5.02682 +524288,7.79674 +1048576,14.7354 +2097152,27.1811 +4194304,53.5828 +8388608,105.866 +16777216,210.975 +33554432,421.6 +67108864,841.143 +16,0.958464 +32,0.90624 +64,0.585728 +128,0.653312 +256,1.26464 +512,0.948224 +1024,0.601088 +2048,0.646144 +4096,0.64512 +8192,0.68096 +16384,0.805888 +32768,1.00352 +65536,1.38957 +131072,2.77094 +262144,4.76262 +524288,8.21043 +1048576,14.6381 +2097152,27.8569 +4194304,53.8132 +8388608,105.141 +16777216,211.307 +33554432,418.748 +67108864,836.582 +16,0.872448 +32,0.755712 +64,0.745472 +128,0.871424 +256,0.651264 +512,0.724992 +1024,0.728064 +2048,0.758784 +4096,0.764928 +8192,0.708608 +16384,0.827392 +32768,1.00557 +65536,1.39776 +131072,3.6311 +262144,4.7575 +524288,8.1705 +1048576,14.3739 +2097152,27.9685 +4194304,55.2755 +8388608,105.362 +16777216,210.611 +33554432,421.273 +67108864,843.146 +16,0.744448 +32,0.787456 +64,0.515072 +128,0.812032 +256,0.590848 +512,0.592896 +1024,0.611328 +2048,0.621568 +4096,0.643072 +8192,0.684032 +16384,0.807936 +32768,0.999424 +65536,1.39469 +131072,3.16109 +262144,4.48717 +524288,7.84179 +1048576,15.4429 +2097152,26.9998 +4194304,53.29 +8388608,105.837 +16777216,211.768 +33554432,422.252 +67108864,842.151 +16,0.775168 +32,0.781312 +64,0.703488 +128,0.585728 +256,0.605184 +512,0.620544 +1024,0.60928 +2048,0.98304 +4096,0.652288 +8192,0.683008 +16384,0.836608 +32768,1.22573 +65536,1.49811 +131072,2.9696 +262144,4.50867 +524288,8.01485 +1048576,15.4204 +2097152,27.4094 +4194304,53.8849 +8388608,105.783 +16777216,210.813 +33554432,420.056 +67108864,842.088 +16,0.657408 +32,0.72704 +64,1.05165 +128,0.729088 +256,0.720896 +512,0.748544 +1024,0.784384 +2048,0.991232 +4096,0.85504 +8192,0.790528 +16384,0.884736 +32768,1.24621 +65536,1.51245 +131072,3.33824 +262144,4.736 +524288,8.23296 +1048576,14.8941 +2097152,27.3869 +4194304,53.6125 +8388608,104.873 +16777216,210.308 +33554432,419.012 +67108864,842.099 +16,0.918528 +32,0.763904 +64,0.801792 +128,0.708608 +256,0.72192 +512,0.712704 +1024,0.741376 +2048,0.749568 +4096,0.75776 +8192,0.869376 +16384,0.929792 +32768,1.21549 +65536,1.60563 +131072,3.47238 +262144,5.0432 +524288,8.2944 +1048576,14.4855 +2097152,28.4897 +4194304,53.2961 +8388608,105.746 +16777216,210.474 +33554432,424.977 +67108864,846.601 +16,0.8192 +32,0.774144 +64,0.692224 +128,0.749568 +256,0.722944 +512,0.674816 +1024,0.600064 +2048,0.622592 +4096,0.65024 +8192,0.69632 +16384,0.804864 +32768,1.00147 +65536,1.39366 +131072,2.95322 +262144,4.74214 +524288,8.70093 +1048576,14.6954 +2097152,27.6306 +4194304,53.6125 +8388608,104.945 +16777216,211.543 +33554432,420.845 +67108864,839.632 +16,0.756736 +32,0.676864 +64,0.718848 +128,0.882688 +256,0.62976 +512,0.728064 +1024,0.728064 +2048,0.77312 +4096,0.667648 +8192,0.707584 +16384,0.968704 +32768,1.00762 +65536,1.39469 +131072,2.91021 +262144,4.71654 +524288,8.32819 +1048576,14.6084 +2097152,27.9306 +4194304,53.0289 +8388608,105.72 +16777216,210.693 +33554432,419.733 +67108864,846.979 +16,0.95232 +32,0.861184 +64,0.77312 +128,0.806912 +256,0.785408 +512,0.817152 +1024,0.789504 +2048,0.745472 +4096,0.774144 +8192,0.820224 +16384,0.90112 +32768,1.19706 +65536,1.4889 +131072,3.05152 +262144,4.74214 +524288,8.24627 +1048576,15.0456 +2097152,27.4924 +4194304,53.4026 +8388608,106.251 +16777216,211.89 +33554432,420.605 +67108864,838.439 +16,1.60256 +32,0.753664 +64,0.736256 +128,1.06598 +256,0.738304 +512,0.715776 +1024,0.71168 +2048,0.740352 +4096,1.65274 +8192,0.685056 +16384,0.80896 +32768,1.01069 +65536,1.39162 +131072,3.93626 +262144,5.47328 +524288,8.2944 +1048576,14.3268 +2097152,26.8411 +4194304,53.6586 +8388608,104.671 +16777216,211.315 +33554432,419.744 +67108864,842.251 +16,0.888832 +32,0.80384 +64,0.722944 +128,0.632832 +256,0.736256 +512,0.756736 +1024,0.77824 +2048,0.771072 +4096,0.72704 +8192,0.804864 +16384,1.09773 +32768,1.07827 +65536,1.75104 +131072,3.09248 +262144,4.69811 +524288,8.12851 +1048576,15.4624 +2097152,28.6147 +4194304,54.0703 +8388608,105.52 +16777216,211.724 +33554432,422.217 +67108864,843.295 +16,0.653312 +32,0.72704 +64,0.72192 +128,0.986112 +256,0.776192 +512,0.699392 +1024,0.702464 +2048,0.738304 +4096,0.80896 +8192,0.795648 +16384,0.889856 +32768,1.06906 +65536,1.49504 +131072,3.20307 +262144,5.10976 +524288,8.46029 +1048576,14.8429 +2097152,28.3392 +4194304,52.6766 +8388608,105.513 +16777216,212.375 +33554432,420.933 +67108864,845.28 +16,0.644096 +32,0.71168 +64,0.72192 +128,0.763904 +256,0.735232 +512,0.746496 +1024,0.827392 +2048,0.83968 +4096,0.992256 +8192,0.898048 +16384,1.02605 +32768,1.26259 +65536,1.59539 +131072,3.30547 +262144,5.0217 +524288,8.22682 +1048576,14.4968 +2097152,27.7647 +4194304,53.2541 +8388608,106.117 +16777216,211.588 +33554432,419.23 +67108864,839.075 +16,0.913408 +32,0.601088 +64,1.02298 +128,0.71168 +256,0.809984 +512,0.679936 +1024,0.690176 +2048,0.740352 +4096,0.979968 +8192,0.765952 +16384,1.01171 +32768,1.24928 +65536,1.62611 +131072,3.1447 +262144,4.72269 +524288,8.18688 +1048576,14.8316 +2097152,27.6777 +4194304,52.863 +8388608,106.761 +16777216,209.743 +33554432,420.809 +67108864,842.863 +16,0.90624 +32,0.715776 +64,0.684032 +128,0.756736 +256,0.769024 +512,0.753664 +1024,0.724992 +2048,0.710656 +4096,0.728064 +8192,0.899072 +16384,0.990208 +32768,1.20627 +65536,1.55443 +131072,3.01363 +262144,5.1968 +524288,8.06093 +1048576,14.7282 +2097152,28.074 +4194304,53.5921 +8388608,105.376 +16777216,219.995 +33554432,418.461 +67108864,844.961 +16,1.01581 +32,0.707584 +64,0.698368 +128,0.704512 +256,0.657408 +512,0.758784 +1024,0.595968 +2048,0.62464 +4096,0.64 +8192,0.719872 +16384,0.80384 +32768,1.00762 +65536,1.38752 +131072,2.95117 +262144,5.2183 +524288,8.28109 +1048576,14.5562 +2097152,27.1258 +4194304,52.5302 +8388608,106.382 +16777216,210.659 +33554432,421.262 +67108864,841.668 +16,0.724992 +32,0.65536 +64,0.702464 +128,0.703488 +256,0.65536 +512,0.770048 +1024,0.777216 +2048,0.569344 +4096,0.841728 +8192,0.699392 +16384,1.02912 +32768,2.27328 +65536,1.60563 +131072,2.98803 +262144,5.1712 +524288,7.84589 +1048576,13.8783 +2097152,27.1329 +4194304,53.8388 +8388608,105.529 +16777216,209.295 +33554432,420.681 +67108864,840.985 +16,0.746496 +32,0.736256 +64,0.77824 +128,0.730112 +256,0.673792 +512,0.73728 +1024,1.20627 +2048,0.715776 +4096,0.745472 +8192,0.68096 +16384,1.13869 +32768,1.0711 +65536,1.90566 +131072,2.96653 +262144,4.7831 +524288,8.43878 +1048576,14.6872 +2097152,27.5466 +4194304,53.0698 +8388608,103.758 +16777216,210.275 +33554432,420.732 +67108864,837.428 +16,0.866304 +32,0.689152 +64,0.72704 +128,0.881664 +256,0.796672 +512,0.753664 +1024,1.14893 +2048,0.685056 +4096,0.760832 +8192,0.806912 +16384,0.93696 +32768,1.26566 +65536,1.83706 +131072,3.0679 +262144,4.81075 +524288,8.04966 +1048576,14.1793 +2097152,26.9404 +4194304,53.161 +8388608,106.345 +16777216,210.084 +33554432,422.629 +67108864,842.982 +16,0.683008 +32,0.740352 +64,0.73216 +128,1.0025 +256,0.714752 +512,0.705536 +1024,0.693248 +2048,0.73216 +4096,0.785408 +8192,0.827392 +16384,0.903168 +32768,1.18784 +65536,1.46842 +131072,3.11501 +262144,4.78003 +524288,8.56576 +1048576,14.6862 +2097152,26.8595 +4194304,53.0504 +8388608,104.948 +16777216,211.947 +33554432,420.891 +67108864,845.296 +16,0.822272 +32,0.736256 +64,0.730112 +128,0.70144 +256,0.59392 +512,0.612352 +1024,0.835584 +2048,0.644096 +4096,0.69632 +8192,0.704512 +16384,1.00147 +32768,0.999424 +65536,1.39264 +131072,2.95731 +262144,4.75955 +524288,8.22477 +1048576,14.6954 +2097152,26.9875 +4194304,53.2388 +8388608,104.836 +16777216,210.211 +33554432,420.065 +67108864,839.939 +16,0.775168 +32,0.719872 +64,0.678912 +128,0.669696 +256,0.73216 +512,0.587776 +1024,0.606208 +2048,0.621568 +4096,0.661504 +8192,0.6912 +16384,0.7424 +32768,0.997376 +65536,1.39059 +131072,3.11603 +262144,5.00019 +524288,7.79981 +1048576,14.8521 +2097152,27.5169 +4194304,53.5235 +8388608,106.258 +16777216,211.827 +33554432,421.841 +67108864,841.224 +16,0.914432 +32,0.751616 +64,0.715776 +128,1.01171 +256,0.684032 +512,1.05472 +1024,0.748544 +2048,0.743424 +4096,0.816128 +8192,0.685056 +16384,0.81408 +32768,1.00352 +65536,1.39059 +131072,2.95526 +262144,4.87219 +524288,8.44902 +1048576,14.5132 +2097152,27.4463 +4194304,53.2347 +8388608,105.416 +16777216,211.815 +33554432,420.121 +67108864,843.707 +16,0.792576 +32,0.866304 +64,0.726016 +128,1.21446 +256,0.745472 +512,0.733184 +1024,0.736256 +2048,0.704512 +4096,0.765952 +8192,0.78848 +16384,0.812032 +32768,1.64557 +65536,1.6681 +131072,2.93581 +262144,4.72576 +524288,8.38144 +1048576,15.0764 +2097152,27.1124 +4194304,53.8153 +8388608,104.804 +16777216,210.894 +33554432,420.383 +67108864,841.892 +16,0.759808 +32,0.743424 +64,0.867328 +128,0.643072 +256,0.602112 +512,0.600064 +1024,0.591872 +2048,0.948224 +4096,0.672768 +8192,0.712704 +16384,0.989184 +32768,1.36294 +65536,1.39162 +131072,3.13754 +262144,4.71552 +524288,8.05069 +1048576,14.3442 +2097152,26.8616 +4194304,53.7754 +8388608,105.58 +16777216,213.227 +33554432,423.727 +67108864,840.488 +16,1.02912 +32,0.656384 +64,0.713728 +128,0.713728 +256,0.826368 +512,0.731136 +1024,0.74752 +2048,0.623616 +4096,0.751616 +8192,0.699392 +16384,0.841728 +32768,0.996352 +65536,1.39366 +131072,2.92762 +262144,5.2439 +524288,8.56371 +1048576,14.9914 +2097152,28.1334 +4194304,55.4875 +8388608,105.356 +16777216,209.439 +33554432,419.258 +67108864,837.352 +16,0.818176 +32,0.689152 +64,0.751616 +128,0.862208 +256,0.59392 +512,0.63488 +1024,0.598016 +2048,0.620544 +4096,0.681984 +8192,0.91136 +16384,0.80384 +32768,0.999424 +65536,1.42746 +131072,2.99827 +262144,4.73498 +524288,8.56883 +1048576,15.0241 +2097152,27.221 +4194304,53.4426 +8388608,105.244 +16777216,209.904 +33554432,421.305 +67108864,844.799 +16,0.587776 +32,1.14586 +64,0.586752 +128,0.595968 +256,0.598016 +512,0.59904 +1024,1.04038 +2048,0.631808 +4096,0.637952 +8192,0.687104 +16384,0.831488 +32768,0.950272 +65536,1.39674 +131072,2.96346 +262144,4.75443 +524288,7.85306 +1048576,14.9811 +2097152,27.7074 +4194304,53.1302 +8388608,105.392 +16777216,209.599 +33554432,422.462 +67108864,840.012 +16,0.745472 +32,0.738304 +64,0.884736 +128,1.2544 +256,0.73728 +512,0.724992 +1024,0.617472 +2048,0.625664 +4096,0.677888 +8192,0.714752 +16384,0.812032 +32768,1.01683 +65536,1.39366 +131072,3.39763 +262144,5.10259 +524288,8.2473 +1048576,14.4835 +2097152,28.2337 +4194304,54.4205 +8388608,105.313 +16777216,209.848 +33554432,418.157 +67108864,845.808 +16,0.763904 +32,0.688128 +64,0.719872 +128,0.995328 +256,0.733184 +512,0.546816 +1024,0.840704 +2048,0.96768 +4096,0.649216 +8192,0.694272 +16384,0.802816 +32768,0.997376 +65536,1.31891 +131072,2.94707 +262144,4.93568 +524288,8.35584 +1048576,14.5428 +2097152,26.7868 +4194304,53.9064 +8388608,105.997 +16777216,209.109 +33554432,420.347 +67108864,842.775 +16,0.664576 +32,0.702464 +64,0.678912 +128,0.735232 +256,0.83968 +512,0.781312 +1024,0.75776 +2048,0.687104 +4096,0.736256 +8192,0.823296 +16384,0.904192 +32768,1.03834 +65536,1.4592 +131072,4.09805 +262144,5.04218 +524288,8.22886 +1048576,14.5132 +2097152,27.5773 +4194304,53.3207 +8388608,104.651 +16777216,211.713 +33554432,421.624 +67108864,845.1 +16,0.804864 +32,0.765952 +64,0.6912 +128,0.702464 +256,0.720896 +512,0.600064 +1024,0.603136 +2048,0.666624 +4096,0.720896 +8192,0.697344 +16384,0.7424 +32768,0.937984 +65536,1.408 +131072,2.95936 +262144,5.12 +524288,7.97389 +1048576,15.102 +2097152,27.3674 +4194304,53.802 +8388608,104.924 +16777216,211.418 +33554432,420.013 +67108864,842.034 +16,0.910336 +32,0.78848 +64,0.847872 +128,0.679936 +256,0.756736 +512,0.718848 +1024,1.03424 +2048,0.730112 +4096,0.796672 +8192,0.702464 +16384,0.820224 +32768,0.9984 +65536,1.39674 +131072,2.93069 +262144,4.72474 +524288,8.31181 +1048576,14.3503 +2097152,27.947 +4194304,53.8655 +8388608,105.087 +16777216,211.836 +33554432,422.379 +67108864,841.556 +16,0.796672 +32,0.579584 +64,0.605184 +128,0.589824 +256,0.867328 +512,0.591872 +1024,0.605184 +2048,0.612352 +4096,0.636928 +8192,0.693248 +16384,1.04653 +32768,1.23392 +65536,1.99475 +131072,2.93581 +262144,4.78106 +524288,8.11725 +1048576,14.2131 +2097152,27.2527 +4194304,53.889 +8388608,107.452 +16777216,209.921 +33554432,421.135 +67108864,842.055 +16,0.896 +32,0.896 +64,0.928768 +128,0.897024 +256,0.792576 +512,0.741376 +1024,0.692224 +2048,0.678912 +4096,0.683008 +8192,0.697344 +16384,0.811008 +32768,0.94208 +65536,1.38957 +131072,2.91635 +262144,4.70733 +524288,8.28621 +1048576,14.2858 +2097152,27.223 +4194304,53.6381 +8388608,106.851 +16777216,211.495 +33554432,422.03 +67108864,840.958 +16,0.994304 +32,0.894976 +64,0.83456 +128,0.741376 +256,0.978944 +512,0.648192 +1024,0.679936 +2048,0.67584 +4096,0.816128 +8192,0.782336 +16384,0.90112 +32768,1.08646 +65536,1.53088 +131072,3.072 +262144,4.77184 +524288,8.28006 +1048576,14.4026 +2097152,27.3951 +4194304,55.1455 +8388608,105.59 +16777216,213.388 +33554432,424.933 +67108864,840.315 +16,0.73728 +32,0.59904 +64,0.62976 +128,0.58368 +256,0.584704 +512,0.590848 +1024,0.59904 +2048,0.631808 +4096,0.64512 +8192,0.678912 +16384,0.7424 +32768,1.01376 +65536,1.38957 +131072,2.91533 +262144,4.92646 +524288,8.14182 +1048576,14.5398 +2097152,26.7018 +4194304,53.5388 +8388608,105.548 +16777216,209.083 +33554432,421.431 +67108864,841.012 +16,0.673792 +32,0.935936 +64,0.859136 +128,0.894976 +256,0.923648 +512,0.797696 +1024,0.722944 +2048,0.708608 +4096,0.784384 +8192,0.77824 +16384,0.822272 +32768,1.00147 +65536,1.38854 +131072,2.93376 +262144,4.76979 +524288,8.34355 +1048576,14.8255 +2097152,28.0371 +4194304,53.0217 +8388608,105.221 +16777216,210.819 +33554432,419.656 +67108864,840.334 +16,0.781312 +32,0.729088 +64,0.598016 +128,0.46592 +256,0.538624 +512,0.612352 +1024,0.620544 +2048,1.24006 +4096,1.12026 +8192,0.692224 +16384,0.804864 +32768,0.94208 +65536,1.39264 +131072,2.9481 +262144,4.81792 +524288,8.50739 +1048576,15.063 +2097152,26.9722 +4194304,53.3914 +8388608,106.353 +16777216,212.074 +33554432,420.58 +67108864,843.649 +16,0.822272 +32,0.779264 +64,0.71168 +128,0.748544 +256,1.00662 +512,0.70656 +1024,0.764928 +2048,0.768 +4096,0.64 +8192,0.949248 +16384,0.813056 +32768,0.999424 +65536,1.38752 +131072,3.04128 +262144,4.98176 +524288,8.08653 +1048576,14.4937 +2097152,26.8739 +4194304,53.504 +8388608,106.794 +16777216,210.02 +33554432,421.522 +67108864,839.955 +16,0.84992 +32,0.717824 +64,0.904192 +128,0.734208 +256,0.705536 +512,0.683008 +1024,0.688128 +2048,0.712704 +4096,0.805888 +8192,0.745472 +16384,0.892928 +32768,1.04346 +65536,1.45408 +131072,3.0761 +262144,4.7616 +524288,8.1193 +1048576,14.4077 +2097152,27.906 +4194304,53.3258 +8388608,105.84 +16777216,211.986 +33554432,422.729 +67108864,846.36 +16,1.08749 +32,0.719872 +64,0.679936 +128,0.710656 +256,0.720896 +512,0.733184 +1024,0.700416 +2048,0.643072 +4096,0.643072 +8192,0.687104 +16384,0.804864 +32768,0.9984 +65536,1.42643 +131072,3.07814 +262144,4.95514 +524288,8.03533 +1048576,15.0108 +2097152,27.5384 +4194304,53.2163 +8388608,105.06 +16777216,209.113 +33554432,420.785 +67108864,843.772 +16,0.789504 +32,0.70656 +64,0.736256 +128,0.681984 +256,0.647168 +512,0.734208 +1024,0.60416 +2048,0.646144 +4096,0.669696 +8192,0.720896 +16384,0.817152 +32768,1.02707 +65536,1.38752 +131072,2.92966 +262144,4.71962 +524288,8.01894 +1048576,15.0364 +2097152,27.4964 +4194304,54.6755 +8388608,105.133 +16777216,211.296 +33554432,420.321 +67108864,841.899 +16,0.896 +32,0.72704 +64,0.592896 +128,0.555008 +256,0.519168 +512,0.589824 +1024,0.622592 +2048,0.622592 +4096,0.64512 +8192,0.902144 +16384,1.07418 +32768,0.941056 +65536,1.65478 +131072,3.17645 +262144,4.81485 +524288,8.56166 +1048576,15.1347 +2097152,27.0469 +4194304,54.3683 +8388608,105.571 +16777216,209.908 +33554432,422.142 +67108864,841.782 +16,0.904192 +32,0.797696 +64,0.67584 +128,0.677888 +256,0.731136 +512,0.877568 +1024,0.745472 +2048,0.731136 +4096,0.871424 +8192,0.779264 +16384,0.806912 +32768,1.00045 +65536,1.40595 +131072,3.77856 +262144,4.83738 +524288,8.04966 +1048576,14.4753 +2097152,27.8538 +4194304,54.5321 +8388608,105.843 +16777216,210.399 +33554432,421.132 +67108864,840.354 +16,0.70656 +32,0.751616 +64,0.759808 +128,0.736256 +256,0.726016 +512,0.7424 +1024,0.59392 +2048,0.6656 +4096,0.673792 +8192,0.694272 +16384,0.817152 +32768,1.24928 +65536,1.69165 +131072,3.19386 +262144,4.74726 +524288,8.82586 +1048576,14.6432 +2097152,27.0449 +4194304,54.1112 +8388608,105.048 +16777216,210.102 +33554432,424.569 +67108864,838.196 +16,0.900096 +32,0.761856 +64,0.897024 +128,0.707584 +256,0.779264 +512,0.719872 +1024,1.1223 +2048,0.692224 +4096,0.770048 +8192,0.8192 +16384,0.82432 +32768,1.00045 +65536,1.39878 +131072,2.75661 +262144,4.71859 +524288,7.97286 +1048576,14.7917 +2097152,27.3172 +4194304,53.1108 +8388608,105.36 +16777216,209.314 +33554432,419.104 +67108864,842.589 +16,0.688128 +32,0.71168 +64,0.723968 +128,0.729088 +256,0.991232 +512,0.607232 +1024,0.610304 +2048,0.612352 +4096,0.643072 +8192,0.68608 +16384,0.795648 +32768,1.21344 +65536,1.93434 +131072,2.95731 +262144,4.70221 +524288,8.13466 +1048576,15.1194 +2097152,27.522 +4194304,53.0883 +8388608,105.297 +16777216,211.782 +33554432,419.838 +67108864,841.521 +16,0.66048 +32,0.902144 +64,0.7424 +128,0.688128 +256,0.782336 +512,0.601088 +1024,0.608256 +2048,0.811008 +4096,0.67584 +8192,0.68096 +16384,0.80896 +32768,1.43462 +65536,1.41005 +131072,2.93683 +262144,4.57626 +524288,8.29747 +1048576,14.4916 +2097152,27.2937 +4194304,53.9689 +8388608,105.665 +16777216,209.174 +33554432,419.993 +67108864,841.032 +16,0.930816 +32,0.693248 +64,0.730112 +128,0.95744 +256,0.702464 +512,0.591872 +1024,1.19501 +2048,0.626688 +4096,0.664576 +8192,0.705504 +16384,0.80896 +32768,0.940032 +65536,1.38854 +131072,3.06176 +262144,4.7831 +524288,8.30464 +1048576,14.5121 +2097152,26.7377 +4194304,53.845 +8388608,105.159 +16777216,212.776 +33554432,420.327 +67108864,842.34 +16,0.795648 +32,0.774144 +64,0.743424 +128,1.32198 +256,0.729088 +512,0.688128 +1024,0.779264 +2048,0.730112 +4096,0.779264 +8192,0.791552 +16384,0.941056 +32768,1.08749 +65536,1.43462 +131072,3.31162 +262144,4.82304 +524288,8.80026 +1048576,14.7886 +2097152,28.3699 +4194304,54.7031 +8388608,105.116 +16777216,210.568 +33554432,420.498 +67108864,843.585 +16,0.91136 +32,0.902144 +64,0.704512 +128,0.70656 +256,0.756736 +512,0.589824 +1024,0.59904 +2048,1.3015 +4096,0.649216 +8192,0.681984 +16384,0.81408 +32768,0.9984 +65536,1.32608 +131072,2.96448 +262144,4.77286 +524288,8.01997 +1048576,14.72 +2097152,26.8442 +4194304,53.5347 +8388608,104.877 +16777216,210.492 +33554432,421.256 +67108864,841.359 +16,0.735232 +32,0.671744 +64,0.692224 +128,0.763904 +256,0.745472 +512,0.708608 +1024,0.718848 +2048,0.995328 +4096,0.760832 +8192,0.840704 +16384,0.937984 +32768,1.08134 +65536,1.45715 +131072,3.19795 +262144,4.84966 +524288,8.02406 +1048576,14.4261 +2097152,27.902 +4194304,53.7774 +8388608,105.06 +16777216,210.509 +33554432,420.736 +67108864,844.955 +16,0.84992 +32,0.869376 +64,0.602112 +128,0.596992 +256,0.598016 +512,0.864256 +1024,0.605184 +2048,0.649216 +4096,0.67584 +8192,0.791552 +16384,0.820224 +32768,1.00454 +65536,1.39776 +131072,3.09453 +262144,4.69709 +524288,7.78342 +1048576,14.9412 +2097152,27.3971 +4194304,54.0805 +8388608,105.975 +16777216,209.792 +33554432,420.458 +67108864,842.326 +16,0.746496 +32,0.653312 +64,0.782336 +128,0.636928 +256,0.695296 +512,0.740352 +1024,0.756736 +2048,0.729088 +4096,0.648192 +8192,0.6912 +16384,0.800768 +32768,1.04038 +65536,1.4551 +131072,3.01773 +262144,4.88755 +524288,8.47155 +1048576,14.3882 +2097152,27.8385 +4194304,53.7098 +8388608,105.302 +16777216,208.517 +33554432,419.68 +67108864,842.366 +16,0.745472 +32,0.743424 +64,0.724992 +128,0.708608 +256,0.728064 +512,0.731136 +1024,0.726016 +2048,0.632832 +4096,0.674816 +8192,0.704512 +16384,0.80896 +32768,1.29843 +65536,1.39981 +131072,2.92454 +262144,4.96947 +524288,8.00563 +1048576,14.5347 +2097152,28.2153 +4194304,53.419 +8388608,105.591 +16777216,212.077 +33554432,419.569 +67108864,839.972 +16,0.869376 +32,0.715776 +64,0.669696 +128,0.746496 +256,0.6656 +512,0.887808 +1024,0.749568 +2048,0.73216 +4096,0.72192 +8192,0.787456 +16384,0.806912 +32768,1.00557 +65536,1.33632 +131072,3.39866 +262144,4.736 +524288,8.03738 +1048576,14.6903 +2097152,27.6756 +4194304,53.6474 +8388608,105.127 +16777216,211.077 +33554432,419.993 +67108864,843.941 +16,0.760832 +32,0.731136 +64,0.713728 +128,0.669696 +256,0.712704 +512,0.6912 +1024,0.709632 +2048,0.809984 +4096,0.753664 +8192,0.836608 +16384,0.862208 +32768,1.05165 +65536,1.4295 +131072,3.02387 +262144,5.20294 +524288,8.18381 +1048576,14.8173 +2097152,27.8641 +4194304,53.2132 +8388608,104.966 +16777216,211.216 +33554432,422.288 +67108864,842.309 +16,0.859136 +32,0.835584 +64,0.705536 +128,0.690176 +256,0.81408 +512,0.59904 +1024,0.596992 +2048,0.657408 +4096,0.654336 +8192,0.679936 +16384,0.872448 +32768,1.13869 +65536,1.38342 +131072,3.13344 +262144,4.70528 +524288,8.64051 +1048576,14.4732 +2097152,26.9107 +4194304,53.9976 +8388608,105.576 +16777216,209.58 +33554432,420.17 +67108864,843.187 +16,0.884736 +32,0.746496 +64,0.70144 +128,0.871424 +256,0.729088 +512,0.703488 +1024,0.705536 +2048,0.743424 +4096,0.82432 +8192,1.07622 +16384,0.816128 +32768,1.0025 +65536,1.39674 +131072,2.93581 +262144,4.49843 +524288,8.49613 +1048576,14.7098 +2097152,27.8856 +4194304,54.4819 +8388608,104.711 +16777216,209.038 +33554432,420.11 +67108864,843.304 +16,0.749568 +32,0.720896 +64,0.72192 +128,0.729088 +256,0.748544 +512,0.694272 +1024,0.728064 +2048,0.766976 +4096,0.795648 +8192,0.929792 +16384,0.743424 +32768,1.00659 +65536,1.38445 +131072,2.95322 +262144,5.59718 +524288,8.36915 +1048576,15.1255 +2097152,27.604 +4194304,54.3949 +8388608,105.12 +16777216,210.435 +33554432,419.761 +67108864,845.104 +16,1.16941 +32,0.77312 +64,0.766976 +128,0.759808 +256,0.608256 +512,0.541696 +1024,0.751616 +2048,0.638976 +4096,0.643072 +8192,0.689152 +16384,0.804864 +32768,0.9984 +65536,1.38854 +131072,3.00134 +262144,4.73702 +524288,9.2119 +1048576,15.1132 +2097152,27.3623 +4194304,54.2013 +8388608,106.342 +16777216,210.229 +33554432,421.059 +67108864,842.265 +16,0.761856 +32,0.718848 +64,0.753664 +128,0.697344 +256,0.584704 +512,0.587776 +1024,0.606208 +2048,0.621568 +4096,0.661504 +8192,0.836608 +16384,0.80896 +32768,0.996352 +65536,2.10739 +131072,2.94195 +262144,4.89472 +524288,8.3159 +1048576,14.4968 +2097152,28.3351 +4194304,53.8798 +8388608,105.591 +16777216,209.707 +33554432,420.202 +67108864,846.564 +16,0.802816 +32,0.715776 +64,0.914432 +128,1.09978 +256,0.731136 +512,0.677888 +1024,0.748544 +2048,0.98304 +4096,0.713728 +8192,0.759808 +16384,0.929792 +32768,1.07827 +65536,1.46534 +131072,3.14778 +262144,4.85478 +524288,8.45414 +1048576,15.2453 +2097152,27.905 +4194304,53.0176 +8388608,105.414 +16777216,209.574 +33554432,419.886 +67108864,842.166 +16,0.760832 +32,0.786432 +64,0.719872 +128,1.26259 +256,0.720896 +512,0.724992 +1024,0.690176 +2048,0.63488 +4096,0.648192 +8192,1.06394 +16384,0.807936 +32768,0.999424 +65536,1.39776 +131072,2.944 +262144,4.73805 +524288,8.55654 +1048576,14.6514 +2097152,27.4698 +4194304,53.0125 +8388608,104.188 +16777216,210.511 +33554432,415.838 +67108864,845.207 +16,1.03014 +32,1.29638 +64,0.707584 +128,0.704512 +256,0.746496 +512,0.987136 +1024,0.843776 +2048,0.758784 +4096,0.779264 +8192,0.723968 +16384,0.874496 +32768,0.9984 +65536,1.37626 +131072,2.93581 +262144,4.9367 +524288,8.03226 +1048576,14.338 +2097152,26.752 +4194304,55.3093 +8388608,105.779 +16777216,210.647 +33554432,419.912 +67108864,841.056 +16,0.69632 +32,0.719872 +64,0.7424 +128,0.862208 +256,0.729088 +512,0.739328 +1024,0.781312 +2048,0.730112 +4096,0.999424 +8192,0.733184 +16384,0.852992 +32768,1.08646 +65536,1.4889 +131072,3.07405 +262144,5.28282 +524288,8.33229 +1048576,14.7927 +2097152,27.18 +4194304,53.0504 +8388608,105.255 +16777216,210.06 +33554432,419.867 +67108864,840.757 +16,0.743424 +32,0.749568 +64,0.753664 +128,0.71168 +256,0.702464 +512,0.679936 +1024,0.720896 +2048,0.729088 +4096,0.758784 +8192,0.862208 +16384,0.888832 +32768,1.04243 +65536,1.48378 +131072,3.05152 +262144,4.78822 +524288,8.25549 +1048576,15.6396 +2097152,27.6552 +4194304,53.374 +8388608,105.418 +16777216,210.003 +33554432,421.772 +67108864,845.122 +16,0.872448 +32,0.587776 +64,0.51712 +128,0.669696 +256,0.736256 +512,0.600064 +1024,0.734208 +2048,0.613376 +4096,0.643072 +8192,0.710592 +16384,0.822272 +32768,0.9984 +65536,1.4336 +131072,2.97882 +262144,4.73498 +524288,8.11725 +1048576,15.0292 +2097152,27.5661 +4194304,53.1937 +8388608,104.728 +16777216,210.159 +33554432,419.966 +67108864,845.319 +16,0.774144 +32,1.06189 +64,0.736256 +128,0.717824 +256,0.78336 +512,0.730112 +1024,0.73216 +2048,0.733184 +4096,0.748544 +8192,0.848896 +16384,0.910336 +32768,1.07725 +65536,1.46739 +131072,4.37658 +262144,4.99302 +524288,8.16333 +1048576,15.0415 +2097152,27.8467 +4194304,53.8327 +8388608,105.46 +16777216,210.961 +33554432,418.44 +67108864,843.842 +16,0.905216 +32,0.746496 +64,0.700416 +128,0.72704 +256,0.6912 +512,0.764928 +1024,1.39571 +2048,0.79872 +4096,0.65024 +8192,0.690176 +16384,0.811008 +32768,1.00659 +65536,1.38547 +131072,2.78938 +262144,4.72678 +524288,8.19098 +1048576,14.4968 +2097152,27.6572 +4194304,53.7764 +8388608,105.263 +16777216,210.341 +33554432,423.601 +67108864,841.229 +16,0.886784 +32,0.703488 +64,0.724992 +128,0.735232 +256,0.713728 +512,0.745472 +1024,1.14995 +2048,0.626688 +4096,0.692224 +8192,0.6912 +16384,0.806912 +32768,0.994304 +65536,1.38854 +131072,3.15085 +262144,4.75955 +524288,8.05171 +1048576,14.6913 +2097152,27.1124 +4194304,53.3985 +8388608,105.453 +16777216,210.959 +33554432,419.842 +67108864,841.919 +16,0.795648 +32,0.705536 +64,0.6912 +128,0.79872 +256,0.729088 +512,0.708608 +1024,0.728064 +2048,1.16019 +4096,0.781312 +8192,0.876544 +16384,1.09158 +32768,1.46637 +65536,1.4592 +131072,3.05971 +262144,5.15891 +524288,8.35686 +1048576,14.3944 +2097152,27.778 +4194304,54.3478 +8388608,106.629 +16777216,211.065 +33554432,420.024 +67108864,843.718 +16,0.90624 +32,0.759808 +64,0.777216 +128,0.731136 +256,0.726016 +512,0.685056 +1024,0.658432 +2048,0.743424 +4096,0.756736 +8192,0.823296 +16384,0.867328 +32768,1.00966 +65536,1.40083 +131072,2.83546 +262144,4.96538 +524288,8.38861 +1048576,14.5388 +2097152,26.967 +4194304,53.8706 +8388608,105.997 +16777216,210.399 +33554432,421.743 +67108864,842.786 +16,0.907264 +32,0.792576 +64,0.751616 +128,0.898048 +256,0.888832 +512,0.764928 +1024,0.761856 +2048,0.620544 +4096,0.659456 +8192,0.63488 +16384,0.821248 +32768,1.12128 +65536,1.64966 +131072,2.95834 +262144,4.74317 +524288,7.9831 +1048576,14.7384 +2097152,27.733 +4194304,52.8189 +8388608,106.544 +16777216,210.918 +33554432,418.835 +67108864,841.486 +16,0.764928 +32,0.72192 +64,0.731136 +128,0.676864 +256,0.719872 +512,0.750592 +1024,0.841728 +2048,0.7168 +4096,0.764928 +8192,0.771072 +16384,0.805888 +32768,1.00454 +65536,1.38957 +131072,2.95526 +262144,4.95309 +524288,8.63232 +1048576,14.5562 +2097152,27.009 +4194304,53.2511 +8388608,106.439 +16777216,210.474 +33554432,418.813 +67108864,841.832 +16,0.787456 +32,0.724992 +64,0.745472 +128,0.715776 +256,0.907264 +512,0.78336 +1024,0.715776 +2048,0.61952 +4096,0.661504 +8192,0.683008 +16384,0.81408 +32768,1.40288 +65536,1.39162 +131072,3.21536 +262144,4.51584 +524288,8.71117 +1048576,14.3565 +2097152,27.7125 +4194304,53.5972 +8388608,105.828 +16777216,211.921 +33554432,420.659 +67108864,840.862 +16,0.854016 +32,0.700416 +64,0.726016 +128,0.600064 +256,0.591872 +512,0.595968 +1024,0.592896 +2048,0.612352 +4096,0.638976 +8192,0.807936 +16384,1.04346 +32768,1.00966 +65536,1.38957 +131072,2.94912 +262144,5.48864 +524288,8.00154 +1048576,14.9463 +2097152,27.1524 +4194304,52.8835 +8388608,106.544 +16777216,212.558 +33554432,421.977 +67108864,849.981 +16,0.73728 +32,0.770048 +64,0.845824 +128,0.763904 +256,0.73728 +512,0.764928 +1024,0.746496 +2048,0.968704 +4096,0.826368 +8192,0.786432 +16384,0.736256 +32768,1.05882 +65536,1.57901 +131072,3.01056 +262144,5.40979 +524288,8.99891 +1048576,14.4251 +2097152,33.7828 +4194304,56.5463 +8388608,106.564 +16777216,211.994 +33554432,423.702 +67108864,869.151 +16,0.756736 +32,0.86528 +64,0.746496 +128,0.679936 +256,1.22573 +512,0.76288 +1024,0.813056 +2048,0.98816 +4096,0.881664 +8192,0.8192 +16384,1.03219 +32768,1.46842 +65536,1.50528 +131072,3.04538 +262144,5.06163 +524288,8.18893 diff --git a/Project2-Stream-Compaction/data_pow2_overflow/cpu.csv b/Project2-Stream-Compaction/data/Scan_data/data_pow2_overflow/cpu.csv similarity index 100% rename from Project2-Stream-Compaction/data_pow2_overflow/cpu.csv rename to Project2-Stream-Compaction/data/Scan_data/data_pow2_overflow/cpu.csv diff --git a/Project2-Stream-Compaction/data_pow2_overflow/eff.csv b/Project2-Stream-Compaction/data/Scan_data/data_pow2_overflow/eff.csv similarity index 100% rename from Project2-Stream-Compaction/data_pow2_overflow/eff.csv rename to Project2-Stream-Compaction/data/Scan_data/data_pow2_overflow/eff.csv diff --git a/Project2-Stream-Compaction/data_pow2_overflow/naive.csv b/Project2-Stream-Compaction/data/Scan_data/data_pow2_overflow/naive.csv similarity index 100% rename from Project2-Stream-Compaction/data_pow2_overflow/naive.csv rename to Project2-Stream-Compaction/data/Scan_data/data_pow2_overflow/naive.csv diff --git a/Project2-Stream-Compaction/data_pow2_overflow/shared_mem.csv b/Project2-Stream-Compaction/data/Scan_data/data_pow2_overflow/shared_mem.csv similarity index 100% rename from Project2-Stream-Compaction/data_pow2_overflow/shared_mem.csv rename to Project2-Stream-Compaction/data/Scan_data/data_pow2_overflow/shared_mem.csv diff --git a/Project2-Stream-Compaction/data_pow2_overflow/thrust.csv b/Project2-Stream-Compaction/data/Scan_data/data_pow2_overflow/thrust.csv similarity index 100% rename from Project2-Stream-Compaction/data_pow2_overflow/thrust.csv rename to Project2-Stream-Compaction/data/Scan_data/data_pow2_overflow/thrust.csv diff --git a/Project2-Stream-Compaction/data/Sort_data/data_nonpow2/radix.csv b/Project2-Stream-Compaction/data/Sort_data/data_nonpow2/radix.csv new file mode 100644 index 0000000..0e7a5f5 --- /dev/null +++ b/Project2-Stream-Compaction/data/Sort_data/data_nonpow2/radix.csv @@ -0,0 +1,910 @@ +13,6.35904 +29,6.5577 +61,5.05958 +125,5.43133 +253,6.43994 +509,6.97139 +1021,4.73085 +2045,6.32115 +4093,6.70928 +8189,6.43482 +16381,5.36986 +32765,6.44301 +65533,9.59283 +131069,7.59094 +262141,16.8663 +524285,21.3627 +1048573,33.6855 +2097149,52.1738 +4194301,85.8706 +8388605,154.743 +16777213,298.556 +33554429,576.983 +67108861,1143.9 +134217725,2251.19 +13,6.83622 +29,8.32816 +61,7.98515 +125,8.01485 +253,8.25344 +509,6.98573 +1021,5.15994 +2045,6.61811 +4093,6.23616 +8189,7.04102 +16381,7.47418 +32765,5.24595 +65533,10.0792 +131069,10.2861 +262141,17.6998 +524285,22.7092 +1048573,32.7035 +2097149,49.9927 +4194301,82.9 +8388605,153.484 +16777213,288.316 +33554429,562.341 +67108861,1139.11 +134217725,2333.28 +13,6.93658 +29,7.34618 +61,5.9863 +125,6.91814 +253,7.42912 +509,6.39078 +1021,7.0359 +2045,4.80154 +4093,6.8055 +8189,7.10758 +16381,7.2704 +32765,7.20077 +65533,5.47123 +131069,9.31635 +262141,17.6947 +524285,24.8627 +1048573,34.7105 +2097149,49.794 +4194301,83.5379 +8388605,187.098 +16777213,290.199 +33554429,585.217 +67108861,1143.29 +134217725,2277.15 +13,7.66976 +29,6.27098 +61,8.10803 +125,8.49613 +253,6.68467 +509,7.58067 +1021,7.16595 +2045,6.10816 +4093,7.88992 +8189,7.71072 +16381,7.48032 +32765,7.66054 +65533,8.5207 +131069,8.90675 +262141,18.4607 +524285,21.9208 +1048573,30.8132 +2097149,48.4721 +4194301,82.7351 +8388605,150.508 +16777213,297.797 +33554429,579.433 +67108861,1133.13 +134217725,2264.39 +13,6.61504 +29,6.68058 +61,6.95706 +125,6.62733 +253,5.77434 +509,7.04512 +1021,7.59501 +2045,7.24173 +4093,7.25709 +8189,7.94317 +16381,7.90938 +32765,7.3728 +65533,7.68205 +131069,9.51808 +262141,18.4187 +524285,22.2454 +1048573,31.3948 +2097149,50.9286 +4194301,83.3659 +8388605,151.197 +16777213,291.704 +33554429,571.614 +67108861,1145.83 +134217725,2262.99 +13,4.80154 +29,4.81587 +61,6.67546 +125,5.14765 +253,5.38931 +509,5.53779 +1021,6.47373 +2045,6.52285 +4093,8.28826 +8189,6.53722 +16381,6.73792 +32765,8.93952 +65533,8.09062 +131069,10.4376 +262141,16.9697 +524285,24.3804 +1048573,30.6708 +2097149,49.2268 +4194301,82.3163 +8388605,154.673 +16777213,295.146 +33554429,565.812 +67108861,1142.99 +134217725,2260.41 +13,6.73178 +29,6.42662 +61,7.05126 +125,7.42605 +253,6.85978 +509,6.65088 +1021,8.68762 +2045,7.5049 +4093,7.46291 +8189,8.77466 +16381,7.7609 +32765,5.17018 +65533,7.17619 +131069,9.72288 +262141,18.773 +524285,24.5412 +1048573,31.6856 +2097149,49.2595 +4194301,82.3972 +8388605,151.384 +16777213,298.756 +33554429,570.635 +67108861,1141.3 +134217725,2265.25 +13,7.00826 +29,9.2887 +61,7.28166 +125,7.1168 +253,8.24525 +509,7.14445 +1021,6.37645 +2045,4.76672 +4093,7.44346 +8189,8.13773 +16381,7.39226 +32765,7.86022 +65533,8.15923 +131069,9.61946 +262141,16.939 +524285,21.591 +1048573,31.6211 +2097149,50.7044 +4194301,82.7576 +8388605,154.305 +16777213,298.095 +33554429,579.032 +67108861,1142.98 +134217725,2276.26 +13,5.21011 +29,6.11738 +61,4.77594 +125,4.80563 +253,4.58138 +509,6.74202 +1021,4.66739 +2045,5.71494 +4093,5.82042 +8189,5.79994 +16381,7.51309 +32765,5.91667 +65533,6.66931 +131069,7.89197 +262141,17.4961 +524285,23.0779 +1048573,32.129 +2097149,47.0733 +4194301,83.0136 +8388605,150.019 +16777213,294.331 +33554429,577.424 +67108861,1136 +134217725,2255.16 +13,6.76762 +29,5.92077 +61,6.4983 +125,5.01146 +253,7.83974 +509,7.38304 +1021,9.24979 +2045,6.12966 +4093,7.79878 +8189,8.31693 +16381,4.93875 +32765,5.14662 +65533,7.83974 +131069,9.0153 +262141,16.6226 +524285,23.5827 +1048573,32.9492 +2097149,49.8063 +4194301,84.1441 +8388605,150.648 +16777213,294.392 +33554429,577.229 +67108861,1134.86 +134217725,2257.75 +13,6.62221 +29,8.73779 +61,6.82394 +125,6.57818 +253,7.22125 +509,6.65805 +1021,6.46451 +2045,5.00019 +4093,6.58739 +8189,6.7328 +16381,6.98573 +32765,8.30669 +65533,6.13376 +131069,9.08595 +262141,18.7924 +524285,23.5766 +1048573,32.0164 +2097149,49.2534 +4194301,83.8205 +8388605,151.207 +16777213,293.922 +33554429,575.659 +67108861,1140.21 +134217725,2255.87 +13,7.94214 +29,7.16698 +61,7.88992 +125,7.18234 +253,8.0599 +509,8.52275 +1021,7.36666 +2045,7.24787 +4093,6.80448 +8189,5.34323 +16381,7.84486 +32765,7.0144 +65533,6.82701 +131069,8.10086 +262141,19.4509 +524285,24.0701 +1048573,32.2028 +2097149,49.3148 +4194301,81.3824 +8388605,153.004 +16777213,293.323 +33554429,574.128 +67108861,1140.68 +134217725,2262.44 +13,7.48237 +29,8.55654 +61,8.21862 +125,7.14035 +253,8.2903 +509,6.91917 +1021,8.72448 +2045,7.06662 +4093,7.31955 +8189,8.05683 +16381,6.98573 +32765,7.00518 +65533,7.46701 +131069,10.8206 +262141,19.2338 +524285,24.7583 +1048573,31.4952 +2097149,48.2314 +4194301,85.0412 +8388605,147.374 +16777213,294.211 +33554429,579.452 +67108861,1133.35 +134217725,2260.76 +13,9.39315 +29,5.59923 +61,6.22387 +125,6.1225 +253,5.23366 +509,7.22432 +1021,8.17971 +2045,6.87002 +4093,6.71539 +8189,7.16083 +16381,6.89766 +32765,8.60877 +65533,7.6073 +131069,8.04966 +262141,18.4463 +524285,24.8402 +1048573,32.7168 +2097149,50.0029 +4194301,83.243 +8388605,151.567 +16777213,291.894 +33554429,576.331 +67108861,1145.61 +134217725,2261.86 +13,6.89254 +29,7.28678 +61,6.78195 +125,6.55565 +253,7.16493 +509,6.9591 +1021,6.76352 +2045,7.43322 +4093,7.02874 +8189,8.3753 +16381,6.08666 +32765,7.26733 +65533,7.23661 +131069,10.0157 +262141,19.1857 +524285,24.9682 +1048573,30.4159 +2097149,47.871 +4194301,86.6867 +8388605,154.329 +16777213,300.473 +33554429,573.888 +67108861,1142.58 +134217725,2260.23 +13,6.83315 +29,6.6775 +61,6.09075 +125,4.84659 +253,4.42778 +509,7.53869 +1021,9.31635 +2045,7.55405 +4093,7.34413 +8189,8.43571 +16381,4.59469 +32765,7.3257 +65533,7.94214 +131069,9.34707 +262141,16.4946 +524285,22.7246 +1048573,30.8316 +2097149,49.8627 +4194301,84.2557 +8388605,151.539 +16777213,291.34 +33554429,573.758 +67108861,1129.3 +134217725,2261.74 +13,8.48691 +29,6.61402 +61,6.9888 +125,7.64723 +253,5.59718 +509,7.7568 +1021,7.3625 +2045,7.94931 +4093,7.89606 +8189,7.74246 +16381,6.81779 +32765,7.19155 +65533,7.71072 +131069,10.0076 +262141,20.6152 +524285,24.3937 +1048573,32.7905 +2097149,50.9983 +4194301,81.6486 +8388605,152.751 +16777213,290.902 +33554429,577.519 +67108861,1146.02 +134217725,2263.31 +13,7.02157 +29,6.8055 +61,7.56941 +125,8.10291 +253,4.31514 +509,6.784 +1021,6.6263 +2045,9.68602 +4093,8.10291 +8189,7.50285 +16381,7.37382 +32765,7.61344 +65533,5.57056 +131069,9.77408 +262141,19.1078 +524285,23.3452 +1048573,30.764 +2097149,48.1454 +4194301,83.2512 +8388605,153.048 +16777213,293.258 +33554429,576.372 +67108861,1144.15 +134217725,2250.91 +13,7.04205 +29,6.64883 +61,6.45837 +125,6.87411 +253,6.55462 +509,6.49011 +1021,6.73792 +2045,6.69798 +4093,7.88992 +8189,7.34003 +16381,7.97594 +32765,6.82496 +65533,7.89914 +131069,9.87443 +262141,19.9311 +524285,22.911 +1048573,32.3686 +2097149,48.3185 +4194301,83.4847 +8388605,152.647 +16777213,295.843 +33554429,574.649 +67108861,1137.08 +134217725,2266.3 +13,6.59149 +29,8.62413 +61,7.51104 +125,7.32365 +253,7.42298 +509,7.73837 +1021,6.76966 +2045,6.71539 +4093,6.54234 +8189,7.35027 +16381,6.7625 +32765,7.81414 +65533,8.704 +131069,7.55302 +262141,18.1023 +524285,24.7265 +1048573,30.6514 +2097149,49.3384 +4194301,82.8406 +8388605,150.225 +16777213,293.661 +33554429,569.225 +67108861,1140.01 +134217725,2284.33 +13,7.00826 +29,6.28634 +61,7.38816 +125,6.34573 +253,5.71187 +509,7.66669 +1021,6.63962 +2045,6.49011 +4093,6.76147 +8189,6.60582 +16381,9.16582 +32765,8.59443 +65533,7.81824 +131069,9.36448 +262141,17.9016 +524285,24.2237 +1048573,33.0404 +2097149,49.5544 +4194301,83.9137 +8388605,156.498 +16777213,291.375 +33554429,580.844 +67108861,1135.69 +134217725,2279.52 +13,7.67795 +29,7.40147 +61,8.58419 +125,6.85261 +253,4.41446 +509,7.56019 +1021,6.33139 +2045,8.02304 +4093,7.00621 +8189,6.87206 +16381,7.62573 +32765,7.20794 +65533,10.0342 +131069,9.00403 +262141,17.6056 +524285,21.9166 +1048573,30.1445 +2097149,51.0986 +4194301,82.4197 +8388605,156.07 +16777213,299.307 +33554429,821.357 +67108861,1138.85 +134217725,2265.58 +13,6.86182 +29,8.74387 +61,5.9607 +125,8.60262 +253,5.64429 +509,7.77626 +1021,5.90336 +2045,7.5049 +4093,5.62893 +8189,7.82234 +16381,7.0103 +32765,7.17517 +65533,7.85613 +131069,10.9937 +262141,18.5446 +524285,24.8658 +1048573,31.3088 +2097149,47.4163 +4194301,81.8422 +8388605,152.084 +16777213,291.313 +33554429,576.191 +67108861,1140.57 +134217725,2255.86 +13,6.87514 +29,7.99232 +61,6.76147 +125,7.97286 +253,8.73779 +509,6.98778 +1021,7.98413 +2045,5.30022 +4093,6.97651 +8189,5.48147 +16381,6.90893 +32765,9.57747 +65533,8.53094 +131069,8.81254 +262141,18.7843 +524285,24.1234 +1048573,34.1873 +2097149,48.6246 +4194301,82.9778 +8388605,152.775 +16777213,293.393 +33554429,574.026 +67108861,1141.28 +134217725,2261.74 +13,7.61754 +29,7.49466 +61,6.20134 +125,6.6048 +253,6.75942 +509,5.55418 +1021,7.6841 +2045,6.1481 +4093,6.38669 +8189,5.56749 +16381,6.63552 +32765,7.12704 +65533,7.84384 +131069,10.3485 +262141,18.2436 +524285,24.0456 +1048573,30.6831 +2097149,49.7572 +4194301,80.9902 +8388605,150.567 +16777213,292.162 +33554429,576.157 +67108861,1132.66 +134217725,2250.21 +13,5.7856 +29,5.92589 +61,5.92896 +125,6.72154 +253,6.88845 +509,6.48704 +1021,6.58739 +2045,7.68102 +4093,6.50035 +8189,7.00006 +16381,8.34253 +32765,8.60467 +65533,7.74349 +131069,9.58566 +262141,18.5211 +524285,24.5647 +1048573,31.0579 +2097149,47.4726 +4194301,85.3002 +8388605,151.526 +16777213,294.735 +33554429,576.63 +67108861,1135.68 +134217725,2271.37 +13,7.37382 +29,5.95866 +61,7.65952 +125,7.21818 +253,7.75885 +509,6.58022 +1021,6.13478 +2045,6.51981 +4093,5.10259 +8189,6.25562 +16381,6.8055 +32765,7.01952 +65533,8.53299 +131069,7.85306 +262141,19.754 +524285,24.1807 +1048573,32.5161 +2097149,47.4481 +4194301,83.3219 +8388605,152.29 +16777213,291.726 +33554429,578.371 +67108861,1138.6 +134217725,2254.02 +13,6.92531 +29,6.65395 +61,6.33958 +125,7.0871 +253,7.15366 +509,7.31238 +1021,7.50387 +2045,7.36768 +4093,8.72755 +8189,6.53107 +16381,6.73178 +32765,6.9847 +65533,8.6487 +131069,9.03373 +262141,19.372 +524285,23.3697 +1048573,30.7436 +2097149,50.0931 +4194301,82.5027 +8388605,147.707 +16777213,294.477 +33554429,573.493 +67108861,1132.36 +134217725,2267.33 +13,5.30842 +29,5.97811 +61,6.64781 +125,6.9847 +253,6.6775 +509,6.52595 +1021,6.88947 +2045,7.18336 +4093,7.72506 +8189,7.44858 +16381,7.03181 +32765,7.47213 +65533,8.80333 +131069,8.9088 +262141,19.5758 +524285,23.4322 +1048573,32.3482 +2097149,50.4453 +4194301,82.7156 +8388605,152.416 +16777213,292.218 +33554429,571.186 +67108861,1132.15 +134217725,2263.42 +13,6.97651 +29,7.54176 +61,5.37293 +125,7.76499 +253,9.20166 +509,6.67648 +1021,6.66419 +2045,7.63597 +4093,6.19622 +8189,7.73325 +16381,7.16083 +32765,6.33344 +65533,8.9815 +131069,8.8535 +262141,20.6909 +524285,26.0393 +1048573,32.1772 +2097149,49.3527 +4194301,81.4684 +8388605,149.129 +16777213,294.125 +33554429,578.588 +67108861,1135.94 +134217725,2268.8 +13,6.80346 +29,8.49101 +61,6.5751 +125,6.60275 +253,6.83213 +509,6.69894 +1021,6.60378 +2045,6.37133 +4093,9.12486 +8189,7.84179 +16381,7.78957 +32765,7.57555 +65533,7.56531 +131069,9.45766 +262141,17.8442 +524285,23.892 +1048573,32.4168 +2097149,47.7737 +4194301,78.4333 +8388605,153.091 +16777213,294.29 +33554429,575.156 +67108861,1136.77 +134217725,2265.09 +13,6.82189 +29,6.75123 +61,7.91962 +125,8.01075 +253,7.03898 +509,8.45414 +1021,7.20282 +2045,7.60627 +4093,7.76909 +8189,6.91712 +16381,6.88538 +32765,7.07174 +65533,6.41229 +131069,9.22214 +262141,18.3163 +524285,23.3144 +1048573,33.2882 +2097149,45.5557 +4194301,85.1722 +8388605,150.738 +16777213,296.884 +33554429,580.283 +67108861,1139.27 +134217725,2261.01 +13,7.28986 +29,8.22784 +61,7.26016 +125,7.73325 +253,8.64256 +509,6.84134 +1021,8.49715 +2045,6.39795 +4093,6.20954 +8189,7.50694 +16381,6.99494 +32765,8.52275 +65533,8.8791 +131069,9.24877 +262141,19.6168 +524285,23.6544 +1048573,29.8025 +2097149,46.505 +4194301,83.3167 +8388605,151.607 +16777213,298.337 +33554429,569.492 +67108861,1138.6 +134217725,2262.87 +13,7.42298 +29,6.92429 +61,6.6775 +125,6.65088 +253,6.7113 +509,6.55667 +1021,6.45939 +2045,6.93453 +4093,5.71802 +8189,7.47725 +16381,7.4281 +32765,7.35539 +65533,8.56166 +131069,10.0434 +262141,17.0506 +524285,24.9231 +1048573,32.4178 +2097149,50.047 +4194301,83.1703 +8388605,152.141 +16777213,291.778 +33554429,573.432 +67108861,1133.21 +134217725,2256.47 +13,7.57658 +29,4.7032 +61,5.83782 +125,6.93248 +253,5.34733 +509,5.30534 +1021,6.35085 +2045,5.43232 +4093,6.70413 +8189,9.55597 +16381,7.36154 +32765,7.09734 +65533,7.49261 +131069,10.4018 +262141,20.395 +524285,24.7665 +1048573,32.0369 +2097149,49.92 +4194301,80.8653 +8388605,153.185 +16777213,294.545 +33554429,574.48 +67108861,1124.86 +134217725,2260.13 +13,6.09382 +29,5.35859 +61,7.21715 +125,4.992 +253,7.02669 +509,5.93715 +1021,6.1481 +2045,4.83635 +4093,7.66771 +8189,6.61504 +16381,6.64986 +32765,6.528 +65533,6.7113 +131069,8.99891 +262141,18.4627 +524285,22.9734 +1048573,30.505 +2097149,49.0711 +4194301,81.5872 +8388605,152.067 +16777213,297.114 +33554429,574.135 +67108861,1138.02 +134217725,2250.46 +13,6.24742 +29,6.3529 +61,6.64371 +125,7.35437 +253,5.47123 +509,6.87821 +1021,5.73235 +2045,6.81882 +4093,6.31194 +8189,6.47885 +16381,6.96627 +32765,6.3744 +65533,9.01939 +131069,10.2298 +262141,20.6623 +524285,25.2508 +1048573,32.3697 +2097149,49.8852 +4194301,82.9901 +8388605,153.939 +16777213,294.649 +33554429,572.809 +67108861,1142.08 +134217725,2263.84 +13,7.64416 +29,7.5479 +61,6.29453 +125,5.85114 +253,5.02477 +509,4.79642 +1021,4.79027 +2045,6.69594 +4093,6.49216 +8189,6.67853 +16381,7.28678 +32765,8.1111 +65533,7.64928 +131069,8.28314 +262141,18.3235 +524285,22.9919 +1048573,31.8669 +2097149,49.8012 +4194301,84.7247 +8388605,156.483 +16777213,294.42 +33554429,596.451 diff --git a/Project2-Stream-Compaction/data/Sort_data/data_nonpow2/thrust.csv b/Project2-Stream-Compaction/data/Sort_data/data_nonpow2/thrust.csv new file mode 100644 index 0000000..6dedd7f --- /dev/null +++ b/Project2-Stream-Compaction/data/Sort_data/data_nonpow2/thrust.csv @@ -0,0 +1,910 @@ +13,0.0114 +29,0.0051 +61,0.0028 +125,0.0092 +253,0.0046 +509,0.0147 +1021,0.0097 +2045,0.0155 +4093,0.0268 +8189,0.0883 +16381,0.1664 +32765,0.3246 +65533,2.379 +131069,1.3385 +262141,2.5597 +524285,7.4687 +1048573,13.5241 +2097149,23.0565 +4194301,95.8414 +8388605,193.395 +16777213,385.13 +33554429,755.448 +67108861,1460.42 +134217725,2912.36 +13,0.0027 +29,0.0071 +61,0.0209 +125,0.0088 +253,0.0059 +509,0.0464 +1021,0.0224 +2045,0.0472 +4093,0.0425 +8189,0.0779 +16381,0.3436 +32765,0.2904 +65533,0.848 +131069,1.3111 +262141,3.0369 +524285,5.0796 +1048573,10.9716 +2097149,21.3974 +4194301,89.5675 +8388605,176.263 +16777213,375.681 +33554429,758.883 +67108861,1507.65 +134217725,2951.6 +13,0.0047 +29,0.0204 +61,0.003 +125,0.019 +253,0.0212 +509,0.0125 +1021,0.0142 +2045,0.0475 +4093,0.098 +8189,0.12 +16381,0.2552 +32765,0.2866 +65533,0.5574 +131069,2.0262 +262141,3.1683 +524285,5.0057 +1048573,11.1775 +2097149,21.3271 +4194301,98.7222 +8388605,184.13 +16777213,384.997 +33554429,785.93 +67108861,1490.99 +134217725,2918.26 +13,0.0026 +29,0.0047 +61,0.0209 +125,0.0092 +253,0.0114 +509,0.0207 +1021,0.047 +2045,0.0217 +4093,0.0472 +8189,0.1791 +16381,0.1877 +32765,0.3148 +65533,0.5593 +131069,1.2133 +262141,2.8389 +524285,5.7486 +1048573,10.6359 +2097149,23.6569 +4194301,100.289 +8388605,188.321 +16777213,362.526 +33554429,736.482 +67108861,1434.33 +134217725,2887.84 +13,0.0027 +29,0.0068 +61,0.0077 +125,0.0142 +253,0.0077 +509,0.0251 +1021,0.026 +2045,0.0219 +4093,0.1265 +8189,0.1089 +16381,0.1727 +32765,0.3283 +65533,0.6751 +131069,1.2334 +262141,2.7239 +524285,5.1112 +1048573,10.3636 +2097149,22.2883 +4194301,103.325 +8388605,183.333 +16777213,369.629 +33554429,725.454 +67108861,1452.92 +134217725,2901.91 +13,0.0027 +29,0.0067 +61,0.0204 +125,0.0194 +253,0.0116 +509,0.0484 +1021,0.0151 +2045,0.0207 +4093,0.0408 +8189,0.1222 +16381,0.1712 +32765,0.3756 +65533,0.5548 +131069,1.2238 +262141,2.6165 +524285,6.0176 +1048573,10.7412 +2097149,21.9193 +4194301,94.5496 +8388605,185.198 +16777213,380.944 +33554429,736.146 +67108861,1456.69 +134217725,2884.71 +13,0.0027 +29,0.0027 +61,0.0075 +125,0.0095 +253,0.0051 +509,0.0363 +1021,0.0336 +2045,0.0252 +4093,0.1346 +8189,0.0783 +16381,0.1739 +32765,0.3344 +65533,0.5575 +131069,1.3424 +262141,2.6226 +524285,4.9859 +1048573,10.7497 +2097149,23.9159 +4194301,95.8398 +8388605,187.874 +16777213,362.821 +33554429,733.687 +67108861,1448.8 +134217725,2900.15 +13,0.0026 +29,0.0027 +61,0.0079 +125,0.0096 +253,0.0117 +509,0.0208 +1021,0.0147 +2045,0.0345 +4093,0.128 +8189,0.1534 +16381,0.1519 +32765,0.3422 +65533,0.6309 +131069,1.3395 +262141,2.8073 +524285,5.3593 +1048573,10.2617 +2097149,21.8538 +4194301,97.8402 +8388605,182.357 +16777213,366.465 +33554429,730.123 +67108861,1452.77 +134217725,2918.98 +13,0.0027 +29,0.0043 +61,0.0049 +125,0.0039 +253,0.0208 +509,0.0319 +1021,0.0236 +2045,0.0314 +4093,0.0741 +8189,0.0889 +16381,0.2119 +32765,0.3754 +65533,0.5556 +131069,1.3089 +262141,2.4741 +524285,6.7469 +1048573,10.766 +2097149,20.8559 +4194301,98.6284 +8388605,182.006 +16777213,367.485 +33554429,735.584 +67108861,1448.45 +134217725,3009.99 +13,0.0028 +29,0.0047 +61,0.0232 +125,0.0062 +253,0.0075 +509,0.0289 +1021,0.0422 +2045,0.021 +4093,0.059 +8189,0.076 +16381,0.2493 +32765,0.2891 +65533,0.6921 +131069,1.3297 +262141,2.6756 +524285,5.3522 +1048573,11.016 +2097149,21.4589 +4194301,95.7134 +8388605,184.128 +16777213,381.288 +33554429,732.675 +67108861,1447.28 +134217725,2877.69 +13,0.0087 +29,0.0042 +61,0.0078 +125,0.0033 +253,0.034 +509,0.0185 +1021,0.0205 +2045,0.0851 +4093,0.0404 +8189,0.0854 +16381,0.1604 +32765,0.6143 +65533,0.5747 +131069,1.2157 +262141,2.6067 +524285,4.9976 +1048573,10.2469 +2097149,21.4191 +4194301,94.6389 +8388605,186.556 +16777213,362.014 +33554429,744.193 +67108861,1455.73 +134217725,2896.08 +13,0.0029 +29,0.0029 +61,0.0048 +125,0.0187 +253,0.0075 +509,0.0147 +1021,0.0126 +2045,0.0211 +4093,0.1484 +8189,0.1038 +16381,0.2156 +32765,0.3573 +65533,0.5589 +131069,1.2201 +262141,3.2876 +524285,5.7233 +1048573,10.5619 +2097149,21.0206 +4194301,95.8763 +8388605,185.738 +16777213,365.602 +33554429,729.446 +67108861,1473.22 +134217725,2892.73 +13,0.0027 +29,0.0044 +61,0.0078 +125,0.0217 +253,0.0137 +509,0.0124 +1021,0.0129 +2045,0.0212 +4093,0.0568 +8189,0.0918 +16381,0.1605 +32765,0.3583 +65533,0.7411 +131069,1.3881 +262141,2.5451 +524285,5.7595 +1048573,11.6994 +2097149,20.9618 +4194301,93.4196 +8388605,185.552 +16777213,368.447 +33554429,721.794 +67108861,1506.6 +134217725,2907.84 +13,0.0026 +29,0.0061 +61,0.0046 +125,0.0033 +253,0.0122 +509,0.0289 +1021,0.0315 +2045,0.0211 +4093,0.1085 +8189,0.0797 +16381,0.211 +32765,0.423 +65533,0.572 +131069,1.308 +262141,3.5266 +524285,5.6977 +1048573,11.1024 +2097149,23.8067 +4194301,94.3694 +8388605,183.97 +16777213,379.903 +33554429,739.658 +67108861,1463.36 +134217725,2911.9 +13,0.0031 +29,0.0067 +61,0.0078 +125,0.0082 +253,0.0133 +509,0.044 +1021,0.0318 +2045,0.0213 +4093,0.0436 +8189,0.1961 +16381,0.1746 +32765,0.3059 +65533,1.0127 +131069,1.3196 +262141,2.5251 +524285,5.5541 +1048573,10.7449 +2097149,20.8959 +4194301,93.1581 +8388605,185.728 +16777213,363.414 +33554429,745.773 +67108861,1447.17 +134217725,2915.98 +13,0.0027 +29,0.0201 +61,0.0049 +125,0.0083 +253,0.0076 +509,0.037 +1021,0.0216 +2045,0.0523 +4093,0.0421 +8189,0.1264 +16381,0.1458 +32765,0.4382 +65533,0.5776 +131069,1.2783 +262141,4.0156 +524285,5.7501 +1048573,10.4437 +2097149,22.4876 +4194301,96.599 +8388605,187.221 +16777213,367.982 +33554429,739.931 +67108861,1457.81 +134217725,2894.23 +13,0.0043 +29,0.0059 +61,0.003 +125,0.0033 +253,0.0333 +509,0.0126 +1021,0.0135 +2045,0.021 +4093,0.0388 +8189,0.1218 +16381,0.2423 +32765,0.284 +65533,0.5547 +131069,1.2148 +262141,2.9474 +524285,5.4012 +1048573,10.5098 +2097149,20.9003 +4194301,93.8721 +8388605,183.204 +16777213,363.751 +33554429,735.198 +67108861,1459.99 +134217725,2890.21 +13,0.0026 +29,0.0045 +61,0.0076 +125,0.0084 +253,0.0122 +509,0.0292 +1021,0.0183 +2045,0.021 +4093,0.0423 +8189,0.0939 +16381,0.1642 +32765,0.4068 +65533,0.5689 +131069,1.3052 +262141,2.6576 +524285,6.239 +1048573,10.6844 +2097149,21.0014 +4194301,91.9386 +8388605,182.728 +16777213,366.573 +33554429,740.525 +67108861,1455.63 +134217725,2904.9 +13,0.005 +29,0.0205 +61,0.0047 +125,0.0081 +253,0.0248 +509,0.0179 +1021,0.0379 +2045,0.0216 +4093,0.0616 +8189,0.0929 +16381,0.1443 +32765,0.4443 +65533,1.3369 +131069,1.3803 +262141,2.4476 +524285,6.0599 +1048573,11.0132 +2097149,21.0805 +4194301,93.5092 +8388605,188.566 +16777213,363.209 +33554429,742.652 +67108861,1519.32 +134217725,2894.94 +13,0.0026 +29,0.016 +61,0.0076 +125,0.0085 +253,0.0086 +509,0.0222 +1021,0.0131 +2045,0.0202 +4093,0.0424 +8189,0.1069 +16381,0.3236 +32765,0.4183 +65533,0.5858 +131069,1.2163 +262141,2.4601 +524285,5.0147 +1048573,11.1252 +2097149,22.4066 +4194301,94.6518 +8388605,184.049 +16777213,364.101 +33554429,738.38 +67108861,1465.87 +134217725,2878.69 +13,0.0026 +29,0.0045 +61,0.0048 +125,0.0053 +253,0.0221 +509,0.0127 +1021,0.012 +2045,0.0212 +4093,0.0494 +8189,0.0943 +16381,0.1607 +32765,0.2885 +65533,0.6149 +131069,1.2512 +262141,3.2525 +524285,5.7394 +1048573,10.6835 +2097149,20.5591 +4194301,95.6524 +8388605,184.599 +16777213,366.585 +33554429,724.731 +67108861,1458.58 +134217725,2916.6 +13,0.0027 +29,0.0067 +61,0.0076 +125,0.0216 +253,0.012 +509,0.0474 +1021,0.0434 +2045,0.0281 +4093,0.042 +8189,0.1432 +16381,0.1749 +32765,0.3682 +65533,0.599 +131069,1.2362 +262141,2.7327 +524285,7.5851 +1048573,10.2546 +2097149,28.0859 +4194301,97.8906 +8388605,192.734 +16777213,380.638 +33554429,756.803 +67108861,1458.12 +134217725,2855.55 +13,0.0027 +29,0.003 +61,0.0062 +125,0.0054 +253,0.0127 +509,0.0368 +1021,0.0125 +2045,0.0219 +4093,0.1207 +8189,0.0751 +16381,0.2628 +32765,0.3267 +65533,0.5821 +131069,1.8082 +262141,2.5596 +524285,5.0409 +1048573,14.3314 +2097149,20.9038 +4194301,89.5461 +8388605,179.873 +16777213,366.227 +33554429,731.015 +67108861,1435.63 +134217725,2871.51 +13,0.0218 +29,0.0069 +61,0.0052 +125,0.0052 +253,0.0216 +509,0.0469 +1021,0.0279 +2045,0.0777 +4093,0.1689 +8189,0.1211 +16381,0.1521 +32765,0.2818 +65533,0.5541 +131069,1.2951 +262141,2.4834 +524285,5.0971 +1048573,10.3709 +2097149,20.9436 +4194301,96.6392 +8388605,180.917 +16777213,355.629 +33554429,732.672 +67108861,1434.84 +134217725,2871.6 +13,0.0027 +29,0.0068 +61,0.0207 +125,0.0084 +253,0.031 +509,0.0422 +1021,0.0254 +2045,0.0225 +4093,0.0635 +8189,0.0886 +16381,0.1445 +32765,0.2813 +65533,0.5595 +131069,1.3206 +262141,2.5131 +524285,5.58 +1048573,11.1729 +2097149,20.7278 +4194301,90.7274 +8388605,180.775 +16777213,361.538 +33554429,727.432 +67108861,1442.96 +134217725,2907.1 +13,0.0216 +29,0.0072 +61,0.0078 +125,0.0054 +253,0.0053 +509,0.0205 +1021,0.013 +2045,0.077 +4093,0.0941 +8189,0.1225 +16381,0.1515 +32765,0.2812 +65533,0.5777 +131069,1.2219 +262141,3.588 +524285,5.2667 +1048573,10.2608 +2097149,21.2878 +4194301,93.978 +8388605,183.962 +16777213,359.213 +33554429,723.586 +67108861,1443 +134217725,2884.87 +13,0.0028 +29,0.0047 +61,0.0207 +125,0.0083 +253,0.0246 +509,0.0257 +1021,0.0321 +2045,0.0461 +4093,0.0788 +8189,0.1079 +16381,0.3092 +32765,0.3957 +65533,0.6263 +131069,1.3522 +262141,2.5719 +524285,5.0175 +1048573,10.9329 +2097149,21.8028 +4194301,103.108 +8388605,182.655 +16777213,364.426 +33554429,726.212 +67108861,1439.98 +134217725,2891.94 +13,0.0027 +29,0.0026 +61,0.0047 +125,0.0034 +253,0.0073 +509,0.0143 +1021,0.013 +2045,0.0316 +4093,0.041 +8189,0.0775 +16381,0.2579 +32765,0.3458 +65533,0.5781 +131069,1.2169 +262141,2.5465 +524285,5.075 +1048573,10.0515 +2097149,20.9991 +4194301,97.5924 +8388605,190.326 +16777213,362.33 +33554429,723.548 +67108861,1440.03 +134217725,2875.29 +13,0.0029 +29,0.0042 +61,0.0074 +125,0.0051 +253,0.0134 +509,0.0124 +1021,0.019 +2045,0.0208 +4093,0.0403 +8189,0.1054 +16381,0.3329 +32765,0.4539 +65533,0.5787 +131069,1.4989 +262141,2.6196 +524285,4.9887 +1048573,11.2416 +2097149,20.9969 +4194301,92.367 +8388605,182.097 +16777213,357.056 +33554429,718.006 +67108861,1470.35 +134217725,2882.36 +13,0.0029 +29,0.0071 +61,0.0075 +125,0.0052 +253,0.0087 +509,0.029 +1021,0.0279 +2045,0.0408 +4093,0.1268 +8189,0.0903 +16381,0.1659 +32765,0.3002 +65533,0.5781 +131069,1.5865 +262141,2.465 +524285,5.0212 +1048573,11.8088 +2097149,21.993 +4194301,93.1137 +8388605,184.289 +16777213,390.141 +33554429,724.72 +67108861,1440.44 +134217725,2871.69 +13,0.0027 +29,0.007 +61,0.0079 +125,0.0053 +253,0.0205 +509,0.0118 +1021,0.0207 +2045,0.0471 +4093,0.0724 +8189,0.0737 +16381,0.1523 +32765,0.349 +65533,0.7925 +131069,1.4999 +262141,2.7267 +524285,5.0898 +1048573,11.4968 +2097149,22.0564 +4194301,92.3565 +8388605,183.866 +16777213,358.776 +33554429,720.452 +67108861,1449.3 +134217725,2888.59 +13,0.0028 +29,0.0027 +61,0.005 +125,0.0049 +253,0.0114 +509,0.0158 +1021,0.0318 +2045,0.033 +4093,0.042 +8189,0.0792 +16381,0.2786 +32765,0.2743 +65533,0.5594 +131069,1.2222 +262141,3.0477 +524285,5.2511 +1048573,11.2368 +2097149,21.1856 +4194301,94.8595 +8388605,177.987 +16777213,366.304 +33554429,721.243 +67108861,1454.97 +134217725,2883.52 +13,0.0163 +29,0.0071 +61,0.0048 +125,0.0082 +253,0.0205 +509,0.0075 +1021,0.0334 +2045,0.0209 +4093,0.0421 +8189,0.0747 +16381,0.2152 +32765,0.2802 +65533,0.5623 +131069,1.2074 +262141,2.6441 +524285,6.9512 +1048573,11.0734 +2097149,22.1665 +4194301,94.3564 +8388605,185.166 +16777213,366.33 +33554429,731.552 +67108861,1441.06 +134217725,2874.38 +13,0.0028 +29,0.0182 +61,0.0034 +125,0.0055 +253,0.0108 +509,0.0062 +1021,0.0139 +2045,0.0219 +4093,0.0541 +8189,0.0753 +16381,0.1805 +32765,0.2801 +65533,0.587 +131069,1.2765 +262141,2.9874 +524285,5.0248 +1048573,11.2654 +2097149,21.7837 +4194301,93.962 +8388605,183.511 +16777213,359.586 +33554429,725.72 +67108861,1441.6 +134217725,2873.35 +13,0.0047 +29,0.0048 +61,0.005 +125,0.0081 +253,0.0046 +509,0.011 +1021,0.031 +2045,0.0368 +4093,0.044 +8189,0.0914 +16381,0.1783 +32765,0.3574 +65533,0.579 +131069,1.4207 +262141,2.6662 +524285,5.2106 +1048573,12.6479 +2097149,20.9897 +4194301,92.2397 +8388605,180.767 +16777213,359.322 +33554429,714.339 +67108861,1445.16 +134217725,2927.57 +13,0.0027 +29,0.0075 +61,0.0047 +125,0.0216 +253,0.0074 +509,0.0154 +1021,0.0291 +2045,0.0212 +4093,0.0782 +8189,0.0905 +16381,0.1649 +32765,0.4604 +65533,0.5678 +131069,1.3754 +262141,2.4583 +524285,5.5183 +1048573,11.4413 +2097149,23.8916 +4194301,103.808 +8388605,180.419 +16777213,367.734 +33554429,727.537 +67108861,1448.75 +134217725,2862.93 +13,0.0027 +29,0.0028 +61,0.0029 +125,0.017 +253,0.0046 +509,0.0173 +1021,0.0341 +2045,0.0456 +4093,0.0402 +8189,0.1112 +16381,0.1468 +32765,0.287 +65533,0.5544 +131069,2.194 +262141,2.6163 +524285,5.1315 +1048573,10.986 +2097149,20.48 +4194301,93.8877 +8388605,182.384 +16777213,362.701 +33554429,713.28 +67108861,1443.71 +134217725,2884.36 +13,0.0026 +29,0.0162 +61,0.0207 +125,0.0214 +253,0.0069 +509,0.0097 +1021,0.0319 +2045,0.021 +4093,0.0389 +8189,0.1675 +16381,0.217 +32765,0.2879 +65533,0.6185 +131069,1.4387 +262141,2.5265 +524285,4.9892 +1048573,10.7515 +2097149,21.9491 +4194301,96.9281 +8388605,205.874 +16777213,361.846 +33554429,752.165 diff --git a/Project2-Stream-Compaction/data/Sort_data/data_pow2/radix.csv b/Project2-Stream-Compaction/data/Sort_data/data_pow2/radix.csv new file mode 100644 index 0000000..dcc16cd --- /dev/null +++ b/Project2-Stream-Compaction/data/Sort_data/data_pow2/radix.csv @@ -0,0 +1,933 @@ +16,5.7385 +32,5.79277 +64,6.67955 +128,5.75795 +256,5.64122 +512,7.1168 +1024,5.05549 +2048,5.10771 +4096,4.72371 +8192,5.17018 +16384,6.00166 +32768,6.87514 +65536,7.84282 +131072,6.86285 +262144,17.0732 +524288,21.8931 +1048576,33.066 +2097152,47.2914 +4194304,84.779 +8388608,156.204 +16777216,294.75 +33554432,583.485 +67108864,1140.21 +134217728,2271.62 +16,8.04864 +32,7.77114 +64,6.9335 +128,7.76704 +256,8.93338 +512,5.98835 +1024,7.4752 +2048,7.05434 +4096,6.79219 +8192,6.79219 +16384,6.95706 +32768,7.0103 +65536,8.81459 +131072,10.1192 +262144,19.0894 +524288,22.5772 +1048576,31.829 +2097152,48.8622 +4194304,81.3814 +8388608,148.377 +16777216,290.737 +33554432,586.126 +67108864,1145.14 +134217728,2290.31 +16,5.23776 +32,5.98016 +64,4.4185 +128,5.32582 +256,5.08928 +512,6.53722 +1024,5.40058 +2048,5.39955 +4096,6.15526 +8192,6.32627 +16384,6.14502 +32768,4.93568 +65536,7.48237 +131072,8.15718 +262144,17.7244 +524288,20.8517 +1048576,32.4526 +2097152,47.5709 +4194304,80.9871 +8388608,151.078 +16777216,291.817 +33554432,576.188 +67108864,1142.02 +134217728,2273.59 +16,4.80256 +32,4.40115 +64,6.75123 +128,6.83008 +256,4.5353 +512,6.94886 +1024,8.86374 +2048,7.48032 +4096,5.21216 +8192,8.0128 +16384,7.7353 +32768,7.87558 +65536,8.61389 +131072,8.61389 +262144,16.5806 +524288,23.4988 +1048576,31.83 +2097152,49.6077 +4194304,82.9665 +8388608,152.275 +16777216,295.922 +33554432,576.327 +67108864,1149.93 +134217728,2263.46 +16,4.98176 +32,5.98221 +64,5.76922 +128,5.29613 +256,6.47578 +512,7.49466 +1024,7.09939 +2048,8.49613 +4096,6.95398 +8192,5.45485 +16384,6.92224 +32768,6.89971 +65536,8.15514 +131072,9.86829 +262144,20.9756 +524288,24.279 +1048576,33.6241 +2097152,49.1633 +4194304,86.3293 +8388608,152.036 +16777216,292.928 +33554432,579.891 +67108864,1140.89 +134217728,2275.16 +16,6.88026 +32,6.68058 +64,5.99757 +128,7.31238 +256,7.52947 +512,8.05581 +1024,7.51104 +2048,7.10246 +4096,4.61107 +8192,6.97139 +16384,7.38816 +32768,7.41786 +65536,7.63494 +131072,9.43411 +262144,18.7873 +524288,23.2407 +1048576,33.5309 +2097152,48.2509 +4194304,82.7146 +8388608,152.747 +16777216,296.188 +33554432,571.362 +67108864,1131.08 +134217728,2273.23 +16,6.95091 +32,8.85043 +64,6.56282 +128,7.55405 +256,7.56531 +512,5.11795 +1024,6.68979 +2048,6.73178 +4096,6.70925 +8192,7.33389 +16384,8.14182 +32768,7.17926 +65536,9.13715 +131072,9.88262 +262144,17.2524 +524288,22.2095 +1048576,33.1684 +2097152,48.0737 +4194304,83.7724 +8388608,153.629 +16777216,297.49 +33554432,570.131 +67108864,1148.87 +134217728,2250.91 +16,8.06298 +32,7.99949 +64,6.01702 +128,7.81619 +256,8.8279 +512,7.31341 +1024,8.63744 +2048,7.90323 +4096,9.01018 +8192,9.15558 +16384,6.68979 +32768,4.68685 +65536,7.86842 +131072,9.4208 +262144,17.0496 +524288,21.7651 +1048576,31.1122 +2097152,46.2817 +4194304,84.1697 +8388608,152.588 +16777216,293.051 +33554432,579.208 +67108864,1136.47 +134217728,2260.51 +16,7.00621 +32,8.81459 +64,5.10771 +128,5.30842 +256,7.22637 +512,6.37747 +1024,6.59149 +2048,6.50957 +4096,6.51981 +8192,6.67238 +16384,6.88947 +32768,7.07277 +65536,8.38861 +131072,8.51456 +262144,17.9282 +524288,23.0359 +1048576,32.0963 +2097152,49.6845 +4194304,82.4771 +8388608,152.583 +16777216,294.523 +33554432,575.825 +67108864,1143.94 +134217728,2281.3 +16,7.0441 +32,6.69286 +64,6.71027 +128,6.77786 +256,4.50253 +512,7.01645 +1024,7.75885 +2048,4.36838 +4096,5.47123 +8192,8.04966 +16384,7.47827 +32768,8.74086 +65536,7.73734 +131072,9.78534 +262144,17.3251 +524288,22.2669 +1048576,31.7583 +2097152,48.7342 +4194304,82.7884 +8388608,150.76 +16777216,297.012 +33554432,578.473 +67108864,1148.2 +134217728,2271.24 +16,6.75635 +32,6.63654 +64,6.77376 +128,6.49626 +256,6.80141 +512,6.60685 +1024,6.45734 +2048,6.45222 +4096,6.66726 +8192,6.66624 +16384,6.81165 +32768,8.82688 +65536,8.91085 +131072,8.72038 +262144,20.4155 +524288,23.1711 +1048576,32.2437 +2097152,47.7215 +4194304,82.6184 +8388608,151.17 +16777216,297.516 +33554432,576.423 +67108864,1139.01 +134217728,2270.33 +16,7.06048 +32,9.10643 +64,5.79994 +128,5.91258 +256,8.25958 +512,6.2167 +1024,6.77069 +2048,6.6775 +4096,6.84339 +8192,6.48704 +16384,6.76966 +32768,7.13216 +65536,10.1929 +131072,9.96864 +262144,18.8436 +524288,23.9667 +1048576,31.2842 +2097152,49.109 +4194304,83.583 +8388608,152.531 +16777216,291.168 +33554432,574.269 +67108864,1137.01 +134217728,2257.57 +16,6.74202 +32,6.05286 +64,7.13626 +128,7.65542 +256,7.13728 +512,6.90586 +1024,7.9616 +2048,7.37894 +4096,7.94419 +8192,7.37485 +16384,7.38099 +32768,5.66682 +65536,6.91098 +131072,10.0239 +262144,19.4335 +524288,25.6 +1048576,33.5442 +2097152,49.3302 +4194304,84.2506 +8388608,154.936 +16777216,298.891 +33554432,578.546 +67108864,1131.67 +134217728,2268.84 +16,7.25299 +32,6.9161 +64,6.76454 +128,7.4793 +256,7.26733 +512,7.1127 +1024,7.59296 +2048,7.51923 +4096,7.75782 +8192,6.79936 +16384,5.5767 +32768,6.8864 +65536,7.74656 +131072,10.8882 +262144,19.4755 +524288,23.8469 +1048576,31.1828 +2097152,48.4936 +4194304,82.7372 +8388608,152.316 +16777216,290.075 +33554432,575.435 +67108864,1141.22 +134217728,2278.65 +16,8.03533 +32,6.88538 +64,7.39738 +128,7.19155 +256,8.32512 +512,5.57261 +1024,7.48339 +2048,7.60422 +4096,7.66362 +8192,5.1456 +16384,7.64314 +32768,7.85306 +65536,7.80698 +131072,8.35891 +262144,19.328 +524288,23.8746 +1048576,33.0762 +2097152,49.9937 +4194304,81.8985 +8388608,153.386 +16777216,295.179 +33554432,578.253 +67108864,1137.77 +134217728,2272.39 +16,7.53869 +32,6.71539 +64,9.33376 +128,7.4967 +256,6.9335 +512,6.75533 +1024,5.04218 +2048,6.86387 +4096,5.39443 +8192,6.67034 +16384,7.77114 +32768,6.88947 +65536,7.74451 +131072,9.28256 +262144,21.1108 +524288,23.851 +1048576,32.5499 +2097152,50.5672 +4194304,80.9073 +8388608,151.69 +16777216,290.615 +33554432,572.833 +67108864,1140.19 +134217728,2258.29 +16,7.30726 +32,4.97254 +64,4.86093 +128,5.79174 +256,6.08461 +512,6.03034 +1024,9.44128 +2048,6.92122 +4096,6.78502 +8192,7.97696 +16384,6.85875 +32768,8.4992 +65536,8.92826 +131072,8.96922 +262144,16.3052 +524288,23.5336 +1048576,32.1004 +2097152,49.6855 +4194304,84.1503 +8388608,151.11 +16777216,293.544 +33554432,572.757 +67108864,1136.86 +134217728,2267.15 +16,4.98381 +32,4.85376 +64,4.67456 +128,7.07584 +256,4.90803 +512,6.6263 +1024,6.53312 +2048,6.5321 +4096,7.07174 +8192,5.01965 +16384,8.18176 +32768,7.83667 +65536,7.7353 +131072,10.0342 +262144,18.8303 +524288,22.3386 +1048576,31.2771 +2097152,49.6036 +4194304,83.7294 +8388608,152.856 +16777216,291.995 +33554432,579.41 +67108864,1129.67 +134217728,2277.86 +16,8.26061 +32,7.48134 +64,6.01088 +128,4.99814 +256,5.97197 +512,5.12205 +1024,5.9648 +2048,5.8624 +4096,7.12704 +8192,5.79584 +16384,5.93606 +32768,6.95706 +65536,6.64474 +131072,8.72858 +262144,17.282 +524288,22.5874 +1048576,33.1254 +2097152,49.6486 +4194304,82.5119 +8388608,151.734 +16777216,295.345 +33554432,578.333 +67108864,1139.79 +134217728,2275.11 +16,6.61811 +32,6.58637 +64,6.71027 +128,5.75795 +256,6.75533 +512,7.18746 +1024,5.89107 +2048,6.71744 +4096,6.62118 +8192,6.57306 +16384,6.85056 +32768,5.32378 +65536,9.13101 +131072,9.65837 +262144,19.7857 +524288,24.8279 +1048576,32.4731 +2097152,49.9988 +4194304,82.4422 +8388608,153.206 +16777216,293.053 +33554432,576.947 +67108864,1144.56 +134217728,2273.02 +16,6.88947 +32,6.74509 +64,6.74202 +128,6.66726 +256,6.30682 +512,5.50605 +1024,4.90701 +2048,5.1497 +4096,6.67443 +8192,6.90688 +16384,6.59456 +32768,7.91654 +65536,8.91187 +131072,9.61024 +262144,21.6248 +524288,24.5453 +1048576,33.1868 +2097152,50.6563 +4194304,83.2317 +8388608,151.876 +16777216,292.489 +33554432,580.022 +67108864,1138.5 +134217728,2255.35 +16,6.92122 +32,9.71571 +64,5.57773 +128,8.12749 +256,7.9319 +512,7.20486 +1024,6.81574 +2048,7.13114 +4096,7.8633 +8192,7.36051 +16384,7.50899 +32768,7.0359 +65536,8.38246 +131072,9.57542 +262144,18.3194 +524288,23.9401 +1048576,34.6419 +2097152,48.9636 +4194304,82.7802 +8388608,153.482 +16777216,294.307 +33554432,571.087 +67108864,1141.4 +134217728,2285.53 +16,6.79936 +32,8.90163 +64,7.05434 +128,5.15174 +256,8.18074 +512,7.70867 +1024,7.1895 +2048,7.13216 +4096,7.4711 +8192,7.70662 +16384,7.13933 +32768,5.58694 +65536,7.73222 +131072,10.112 +262144,19.9516 +524288,24.3794 +1048576,31.6416 +2097152,50.0644 +4194304,83.1908 +8388608,150.423 +16777216,294.485 +33554432,567.91 +67108864,1141.74 +134217728,2259.21 +16,4.70835 +32,4.2711 +64,6.28019 +128,5.49171 +256,5.32992 +512,5.34426 +1024,6.54746 +2048,6.44915 +4096,8.05171 +8192,5.05037 +16384,6.80243 +32768,7.68102 +65536,6.71334 +131072,7.90733 +262144,17.2268 +524288,23.3574 +1048576,31.0804 +2097152,46.89 +4194304,82.561 +8388608,151.356 +16777216,292.959 +33554432,576.593 +67108864,1131.95 +134217728,2255.25 +16,6.49622 +32,6.6007 +64,5.24186 +128,7.02464 +256,6.42253 +512,6.55053 +1024,7.3943 +2048,6.52493 +4096,7.4199 +8192,8.95181 +16384,5.49786 +32768,8.12851 +65536,8.30771 +131072,9.43002 +262144,17.9333 +524288,23.7281 +1048576,31.1296 +2097152,50.175 +4194304,83.9352 +8388608,152.039 +16777216,293.201 +33554432,575.007 +67108864,1140.17 +134217728,2254.17 +16,5.96275 +32,5.50707 +64,5.42515 +128,4.90906 +256,4.91213 +512,4.86707 +1024,4.61107 +2048,4.6807 +4096,6.87616 +8192,7.27757 +16384,7.71482 +32768,6.88333 +65536,9.09414 +131072,9.41875 +262144,18.1023 +524288,23.5121 +1048576,31.2637 +2097152,49.7439 +4194304,84.4831 +8388608,154.951 +16777216,294.409 +33554432,573.095 +67108864,1142.43 +134217728,2271.38 +16,4.88755 +32,4.35507 +64,8.41728 +128,6.84339 +256,4.74214 +512,4.34995 +1024,5.0391 +2048,5.15482 +4096,6.57715 +8192,4.53939 +16384,7.41069 +32768,7.27654 +65536,8.39578 +131072,6.784 +262144,17.7838 +524288,21.7487 +1048576,32.5571 +2097152,49.5421 +4194304,83.5471 +8388608,153.997 +16777216,293.874 +33554432,573.619 +67108864,1141.98 +134217728,2256.34 +16,5.66067 +32,7.85203 +64,6.72358 +128,6.70003 +256,7.60525 +512,6.74406 +1024,6.72563 +2048,6.76762 +4096,6.87206 +8192,7.15571 +16384,6.3703 +32768,7.67386 +65536,8.14592 +131072,9.47405 +262144,17.6425 +524288,24.1367 +1048576,32.0891 +2097152,48.5222 +4194304,83.5594 +8388608,151.481 +16777216,292.985 +33554432,577.509 +67108864,1147.37 +134217728,2243 +16,4.53222 +32,8.04762 +64,6.73485 +128,5.19475 +256,6.44608 +512,5.61971 +1024,7.82541 +2048,5.38214 +4096,7.87046 +8192,7.97901 +16384,6.88742 +32768,7.48237 +65536,7.93088 +131072,9.86317 +262144,19.5502 +524288,25.3092 +1048576,32.638 +2097152,47.445 +4194304,84.4124 +8388608,150.271 +16777216,293.296 +33554432,571.779 +67108864,1156.54 +134217728,2258.41 +16,5.04627 +32,4.70323 +64,4.72678 +128,5.20909 +256,5.26541 +512,6.93043 +1024,6.57101 +2048,5.82656 +4096,5.76307 +8192,6.36723 +16384,6.55462 +32768,7.58989 +65536,7.44243 +131072,7.80902 +262144,17.2227 +524288,24.9723 +1048576,31.3078 +2097152,46.4681 +4194304,83.2932 +8388608,149.555 +16777216,296.081 +33554432,575.122 +67108864,1149.26 +134217728,2264.15 +16,6.98573 +32,6.72563 +64,6.63142 +128,6.87002 +256,6.56486 +512,6.62426 +1024,7.52435 +2048,7.7312 +4096,8.25139 +8192,5.7088 +16384,5.37805 +32768,7.29702 +65536,7.61037 +131072,9.97274 +262144,19.158 +524288,22.8977 +1048576,30.89 +2097152,49.8442 +4194304,81.6323 +8388608,152.761 +16777216,292.927 +33554432,574.107 +67108864,1132.99 +134217728,2256.53 +16,5.14355 +32,6.32934 +64,4.81075 +128,5.03706 +256,4.83635 +512,5.4272 +1024,5.76922 +2048,5.82656 +4096,5.68627 +8192,6.9888 +16384,7.77318 +32768,7.5223 +65536,7.67181 +131072,10.025 +262144,19.8277 +524288,24.6303 +1048576,32.1894 +2097152,50.3572 +4194304,81.791 +8388608,150.198 +16777216,294.535 +33554432,577.409 +67108864,1134.77 +134217728,2262.33 +16,7.86534 +32,5.12922 +64,7.78138 +128,7.51206 +256,5.75898 +512,6.8137 +1024,4.32742 +2048,4.35098 +4096,6.91405 +8192,8.05683 +16384,7.1209 +32768,9.51194 +65536,8.66202 +131072,9.16685 +262144,20.2097 +524288,25.4136 +1048576,31.9037 +2097152,50.1166 +4194304,84.4565 +8388608,151.038 +16777216,290.267 +33554432,576.008 +67108864,1142.48 +134217728,2252.07 +16,7.44755 +32,8.64154 +64,7.32058 +128,7.61139 +256,8.3671 +512,6.98778 +1024,8.27392 +2048,6.51674 +4096,6.53107 +8192,6.81779 +16384,6.8393 +32768,8.15206 +65536,8.58726 +131072,8.18586 +262144,17.9466 +524288,24.6313 +1048576,31.7051 +2097152,48.0051 +4194304,83.1324 +8388608,152.605 +16777216,296.395 +33554432,591.469 +67108864,1137.46 +134217728,2243.96 +16,7.1168 +32,6.94374 +64,7.05434 +128,7.44346 +256,5.89107 +512,5.4569 +1024,9.07776 +2048,5.30842 +4096,7.64826 +8192,7.44653 +16384,7.16186 +32768,8.19098 +65536,8.13875 +131072,9.56109 +262144,20.0929 +524288,25.4167 +1048576,32.8581 +2097152,49.2544 +4194304,78.5101 +8388608,151.92 +16777216,295.145 +33554432,576.879 +67108864,1139.76 +134217728,2249.78 +16,6.28531 +32,5.42003 +64,5.1712 +128,4.83226 +256,4.9961 +512,4.84762 +1024,4.78822 +2048,7.13933 +4096,6.79936 +8192,6.7328 +16384,6.79322 +32768,6.91098 +65536,7.424 +131072,8.62925 +262144,18.4228 +524288,23.9985 +1048576,31.8321 +2097152,49.195 +4194304,82.6081 +8388608,151.64 +16777216,288.948 +33554432,576.142 +67108864,1138.07 +134217728,2265.43 +16,5.11693 +32,4.4329 +64,6.71027 +128,7.02054 +256,6.62118 +512,4.41242 +1024,6.22285 +2048,6.70618 +4096,6.66829 +8192,7.27859 +16384,6.67955 +32768,9.7495 +65536,6.23514 +131072,8.91597 +262144,16.6287 +524288,22.5208 +1048576,30.7251 +2097152,49.3507 +4194304,81.2821 +8388608,151.604 +16777216,292.81 +33554432,570.394 +67108864,1126.76 +134217728,2262.82 +16,7.66566 +32,6.88538 +64,6.74918 +128,7.56019 +256,6.69184 +512,6.61299 +1024,5.24595 +2048,7.76294 +4096,6.74202 +8192,6.59149 +16384,6.8137 +32768,6.23616 +65536,9.43821 +131072,9.48941 +262144,19.3976 +524288,24.6426 +1048576,30.8398 +2097152,48.4076 +4194304,83.3249 +8388608,154.09 +16777216,295.072 +33554432,574.427 +67108864,1135.41 +134217728,2264.81 +16,4.87424 +32,5.81632 +64,4.90598 +128,4.8087 +256,4.55168 +512,5.74771 +1024,6.6816 +2048,6.94989 +4096,6.9591 +8192,7.54586 +16384,7.44755 +32768,6.94272 +65536,7.73222 +131072,9.67168 +262144,19.2532 +524288,24.9252 +1048576,30.5295 +2097152,49.7674 +4194304,82.9102 +8388608,151.755 +16777216,298.628 diff --git a/Project2-Stream-Compaction/data/Sort_data/data_pow2/thrust.csv b/Project2-Stream-Compaction/data/Sort_data/data_pow2/thrust.csv new file mode 100644 index 0000000..41ad003 --- /dev/null +++ b/Project2-Stream-Compaction/data/Sort_data/data_pow2/thrust.csv @@ -0,0 +1,933 @@ +16,0.0075 +32,0.0029 +64,0.003 +128,0.0039 +256,0.0146 +512,0.0057 +1024,0.0099 +2048,0.0245 +4096,0.0604 +8192,0.1095 +16384,0.1496 +32768,0.3017 +65536,0.6076 +131072,1.8703 +262144,2.6927 +524288,7.218 +1048576,13.1339 +2097152,53.8283 +4194304,98.1962 +8388608,192.116 +16777216,384.223 +33554432,753.74 +67108864,1455.86 +134217728,2905.27 +16,0.0028 +32,0.0069 +64,0.0075 +128,0.0225 +256,0.0126 +512,0.0102 +1024,0.0217 +2048,0.0488 +4096,0.0426 +8192,0.1388 +16384,0.1871 +32768,0.3565 +65536,0.5737 +131072,1.2749 +262144,2.5403 +524288,7.6741 +1048576,10.8598 +2097152,48.0994 +4194304,100.074 +8388608,182.265 +16777216,363.53 +33554432,726.753 +67108864,1452.12 +134217728,2987.53 +16,0.0047 +32,0.0072 +64,0.0031 +128,0.0061 +256,0.0425 +512,0.0146 +1024,0.0094 +2048,0.0239 +4096,0.0571 +8192,0.0768 +16384,0.1751 +32768,0.465 +65536,0.5712 +131072,1.3224 +262144,3.2329 +524288,5.2811 +1048576,10.9641 +2097152,56.7159 +4194304,97.6484 +8388608,203.317 +16777216,393.484 +33554432,728.65 +67108864,1456.58 +134217728,2889.64 +16,0.0191 +32,0.0068 +64,0.0046 +128,0.0099 +256,0.0135 +512,0.0145 +1024,0.0227 +2048,0.0236 +4096,0.067 +8192,0.1035 +16384,0.1857 +32768,0.3048 +65536,0.5833 +131072,1.4805 +262144,2.5592 +524288,7.0234 +1048576,11.4328 +2097152,45.9475 +4194304,94.4369 +8388608,187.09 +16777216,366.048 +33554432,736.721 +67108864,1461.1 +134217728,2959.13 +16,0.0027 +32,0.0068 +64,0.0075 +128,0.0069 +256,0.0141 +512,0.014 +1024,0.0232 +2048,0.093 +4096,0.0456 +8192,0.104 +16384,0.1795 +32768,0.2923 +65536,0.5658 +131072,1.5317 +262144,2.5963 +524288,5.2796 +1048576,11.7991 +2097152,46.2733 +4194304,99.3084 +8388608,190.078 +16777216,371.639 +33554432,754.323 +67108864,1456.32 +134217728,2909.28 +16,0.0027 +32,0.0067 +64,0.0231 +128,0.0093 +256,0.0251 +512,0.0057 +1024,0.0221 +2048,0.0346 +4096,0.0887 +8192,0.1233 +16384,0.3455 +32768,0.6507 +65536,0.5827 +131072,1.5862 +262144,2.4598 +524288,5.2245 +1048576,11.0312 +2097152,45.7408 +4194304,94.2614 +8388608,191.594 +16777216,364.206 +33554432,737.077 +67108864,1449.16 +134217728,2877.23 +16,0.0027 +32,0.0045 +64,0.0058 +128,0.006 +256,0.018 +512,0.0223 +1024,0.014 +2048,0.0234 +4096,0.1043 +8192,0.2334 +16384,0.2337 +32768,0.3672 +65536,0.6096 +131072,1.3075 +262144,2.5745 +524288,5.7599 +1048576,10.7059 +2097152,50.5869 +4194304,96.3163 +8388608,182.478 +16777216,362.534 +33554432,748.07 +67108864,1451.44 +134217728,2888.6 +16,0.0027 +32,0.0043 +64,0.0074 +128,0.0096 +256,0.0255 +512,0.014 +1024,0.0098 +2048,0.0232 +4096,0.0434 +8192,0.088 +16384,0.2119 +32768,0.2912 +65536,0.6134 +131072,1.2726 +262144,3.5596 +524288,5.1535 +1048576,10.5479 +2097152,46.9003 +4194304,93.5464 +8388608,187.529 +16777216,367.821 +33554432,726.455 +67108864,1451.18 +134217728,2922.44 +16,0.0027 +32,0.0047 +64,0.0085 +128,0.006 +256,0.0128 +512,0.0054 +1024,0.0089 +2048,0.0236 +4096,0.1393 +8192,0.0903 +16384,0.2431 +32768,0.3696 +65536,0.5595 +131072,1.356 +262144,2.5222 +524288,5.9228 +1048576,10.3468 +2097152,47.4234 +4194304,91.6539 +8388608,185.849 +16777216,363.203 +33554432,726.266 +67108864,1465.59 +134217728,2948.37 +16,0.0027 +32,0.0047 +64,0.0031 +128,0.0065 +256,0.0191 +512,0.0129 +1024,0.0417 +2048,0.0513 +4096,0.0446 +8192,0.0794 +16384,0.1688 +32768,0.3564 +65536,0.5883 +131072,1.2689 +262144,2.4592 +524288,5.4951 +1048576,10.8357 +2097152,45.2517 +4194304,91.5442 +8388608,181.912 +16777216,374.792 +33554432,725.927 +67108864,1445.34 +134217728,2901.67 +16,0.0027 +32,0.0045 +64,0.0208 +128,0.0193 +256,0.0251 +512,0.0103 +1024,0.0089 +2048,0.0399 +4096,0.0448 +8192,0.0999 +16384,0.1861 +32768,0.2956 +65536,0.5958 +131072,2.0451 +262144,2.5185 +524288,5.2442 +1048576,11.4062 +2097152,46.9382 +4194304,96.8658 +8388608,185.727 +16777216,366.025 +33554432,737.99 +67108864,1433.94 +134217728,2903.01 +16,0.0025 +32,0.0044 +64,0.0034 +128,0.0195 +256,0.0181 +512,0.0058 +1024,0.0286 +2048,0.0238 +4096,0.1366 +8192,0.0751 +16384,0.2883 +32768,0.2904 +65536,0.7458 +131072,1.3796 +262144,3.2819 +524288,5.227 +1048576,10.571 +2097152,46.2437 +4194304,89.8445 +8388608,185.717 +16777216,363.216 +33554432,734.841 +67108864,1447.57 +134217728,2911.64 +16,0.0027 +32,0.0047 +64,0.0085 +128,0.0039 +256,0.0171 +512,0.0144 +1024,0.0092 +2048,0.0237 +4096,0.0455 +8192,0.0727 +16384,0.183 +32768,0.2838 +65536,0.6274 +131072,1.2615 +262144,2.9446 +524288,5.1935 +1048576,10.4826 +2097152,46.2779 +4194304,92.1948 +8388608,189.222 +16777216,366.019 +33554432,730.158 +67108864,1456.5 +134217728,2898.22 +16,0.0026 +32,0.0069 +64,0.0075 +128,0.0095 +256,0.0239 +512,0.0103 +1024,0.0098 +2048,0.0236 +4096,0.0445 +8192,0.1454 +16384,0.2922 +32768,1.287 +65536,0.6231 +131072,1.2927 +262144,2.8384 +524288,5.1454 +1048576,10.852 +2097152,44.5099 +4194304,99.7367 +8388608,191.158 +16777216,398.534 +33554432,782.012 +67108864,1457.42 +134217728,2900.47 +16,0.0027 +32,0.0048 +64,0.0049 +128,0.0225 +256,0.0371 +512,0.0141 +1024,0.022 +2048,0.0229 +4096,0.0449 +8192,0.1331 +16384,0.1511 +32768,0.2811 +65536,0.5887 +131072,1.2516 +262144,2.6829 +524288,5.6604 +1048576,10.8225 +2097152,43.82 +4194304,92.8502 +8388608,185.847 +16777216,354.827 +33554432,722.205 +67108864,1448.38 +134217728,2899.35 +16,0.0027 +32,0.0027 +64,0.0074 +128,0.0061 +256,0.014 +512,0.0144 +1024,0.0092 +2048,0.0495 +4096,0.0548 +8192,0.0745 +16384,0.2373 +32768,0.6106 +65536,0.5757 +131072,1.3012 +262144,2.4588 +524288,5.4724 +1048576,11.9116 +2097152,47.2582 +4194304,90.176 +8388608,186.772 +16777216,355.382 +33554432,721.926 +67108864,1437.05 +134217728,2865.67 +16,0.003 +32,0.0294 +64,0.0046 +128,0.02 +256,0.0306 +512,0.009 +1024,0.0093 +2048,0.0239 +4096,0.0571 +8192,0.0872 +16384,0.2223 +32768,0.3795 +65536,0.598 +131072,1.2917 +262144,3.3023 +524288,5.1649 +1048576,10.8897 +2097152,49.4216 +4194304,96.0327 +8388608,185.029 +16777216,361.057 +33554432,721.187 +67108864,1426.31 +134217728,2873.55 +16,0.0044 +32,0.0045 +64,0.005 +128,0.0063 +256,0.0193 +512,0.0147 +1024,0.0095 +2048,0.1077 +4096,0.1432 +8192,0.0905 +16384,0.1661 +32768,0.3031 +65536,0.5789 +131072,1.2617 +262144,3.2751 +524288,5.6768 +1048576,11.7154 +2097152,45.2314 +4194304,93.2075 +8388608,184.573 +16777216,361.703 +33554432,721.078 +67108864,1438.16 +134217728,2926.33 +16,0.0046 +32,0.0073 +64,0.008 +128,0.0089 +256,0.0412 +512,0.0272 +1024,0.0156 +2048,0.0496 +4096,0.0443 +8192,0.0791 +16384,0.2927 +32768,0.2809 +65536,0.7302 +131072,1.4279 +262144,3.4255 +524288,7.4474 +1048576,12.1369 +2097152,47.3726 +4194304,109.629 +8388608,182.913 +16777216,367.447 +33554432,733.049 +67108864,1446.95 +134217728,2909.96 +16,0.0026 +32,0.0028 +64,0.0054 +128,0.0067 +256,0.0251 +512,0.0063 +1024,0.0282 +2048,0.0237 +4096,0.0443 +8192,0.1237 +16384,0.1512 +32768,0.2808 +65536,0.5723 +131072,1.5044 +262144,2.5849 +524288,5.8442 +1048576,11.5651 +2097152,47.1037 +4194304,98.4073 +8388608,184.959 +16777216,358.256 +33554432,727.857 +67108864,1467.26 +134217728,2864.18 +16,0.0027 +32,0.0029 +64,0.0029 +128,0.0105 +256,0.0568 +512,0.0058 +1024,0.0224 +2048,0.0227 +4096,0.0799 +8192,0.1496 +16384,0.1983 +32768,0.305 +65536,0.5687 +131072,1.271 +262144,2.4551 +524288,5.1299 +1048576,11.5062 +2097152,48.0402 +4194304,90.3235 +8388608,184.874 +16777216,359.436 +33554432,717.115 +67108864,1429.22 +134217728,2858.64 +16,0.0027 +32,0.0205 +64,0.0078 +128,0.0062 +256,0.0252 +512,0.0091 +1024,0.0286 +2048,0.0236 +4096,0.0483 +8192,0.1135 +16384,0.2029 +32768,0.2804 +65536,0.9921 +131072,1.2554 +262144,2.4996 +524288,5.5279 +1048576,10.3012 +2097152,45.7887 +4194304,91.9197 +8388608,185.252 +16777216,367.349 +33554432,723.863 +67108864,1430.71 +134217728,2875.4 +16,0.0027 +32,0.0043 +64,0.0051 +128,0.0238 +256,0.0201 +512,0.0091 +1024,0.0215 +2048,0.0237 +4096,0.044 +8192,0.1031 +16384,0.2492 +32768,0.2799 +65536,0.5849 +131072,1.301 +262144,2.7737 +524288,5.5261 +1048576,10.5962 +2097152,47.603 +4194304,92.1483 +8388608,184.543 +16777216,361.974 +33554432,728.247 +67108864,1433.82 +134217728,2871.18 +16,0.0043 +32,0.0206 +64,0.0206 +128,0.0063 +256,0.0308 +512,0.0138 +1024,0.0414 +2048,0.0222 +4096,0.0448 +8192,0.0769 +16384,0.179 +32768,0.3232 +65536,0.5624 +131072,1.2853 +262144,2.5167 +524288,5.2197 +1048576,11.4488 +2097152,44.8867 +4194304,95.5519 +8388608,182.93 +16777216,359.07 +33554432,719.648 +67108864,1427.25 +134217728,2852.85 +16,0.0027 +32,0.0044 +64,0.0047 +128,0.0231 +256,0.0249 +512,0.0092 +1024,0.009 +2048,0.0498 +4096,0.0447 +8192,0.078 +16384,0.184 +32768,0.4797 +65536,0.6193 +131072,1.7358 +262144,2.4491 +524288,5.1549 +1048576,13.9813 +2097152,45.4197 +4194304,90.4189 +8388608,182.515 +16777216,360.341 +33554432,705.592 +67108864,1443.76 +134217728,2867.01 +16,0.0028 +32,0.0044 +64,0.0052 +128,0.0066 +256,0.0239 +512,0.0093 +1024,0.0097 +2048,0.0339 +4096,0.114 +8192,0.0769 +16384,0.2372 +32768,0.2806 +65536,0.5948 +131072,1.4979 +262144,2.455 +524288,5.2243 +1048576,11.3354 +2097152,44.3262 +4194304,95.4475 +8388608,183.444 +16777216,368.975 +33554432,721.379 +67108864,1431.69 +134217728,2852.25 +16,0.0027 +32,0.0045 +64,0.0049 +128,0.0101 +256,0.0183 +512,0.0139 +1024,0.0346 +2048,0.0339 +4096,0.045 +8192,0.1099 +16384,0.2044 +32768,0.3132 +65536,0.5567 +131072,1.2368 +262144,2.5741 +524288,6.0054 +1048576,10.581 +2097152,46.8896 +4194304,96.2426 +8388608,180.801 +16777216,361.217 +33554432,718.152 +67108864,1429 +134217728,2868.83 +16,0.0027 +32,0.0069 +64,0.0073 +128,0.0061 +256,0.045 +512,0.0144 +1024,0.0098 +2048,0.0237 +4096,0.0461 +8192,0.0735 +16384,0.2772 +32768,0.2804 +65536,0.8582 +131072,2.6692 +262144,2.753 +524288,5.1354 +1048576,10.6987 +2097152,44.6843 +4194304,92.3889 +8388608,180.723 +16777216,366.359 +33554432,725.093 +67108864,1432.6 +134217728,2861.61 +16,0.0026 +32,0.0233 +64,0.0075 +128,0.0067 +256,0.0179 +512,0.0143 +1024,0.0232 +2048,0.0231 +4096,0.1056 +8192,0.0914 +16384,0.2395 +32768,0.3111 +65536,0.5569 +131072,1.2238 +262144,2.4635 +524288,5.2346 +1048576,10.8408 +2097152,47.2428 +4194304,97.7078 +8388608,183.978 +16777216,362.979 +33554432,719.964 +67108864,1434.59 +134217728,2863.71 +16,0.0027 +32,0.0044 +64,0.0046 +128,0.0039 +256,0.0169 +512,0.0147 +1024,0.0094 +2048,0.0237 +4096,0.0943 +8192,0.1034 +16384,0.2044 +32768,0.3307 +65536,0.5728 +131072,1.2528 +262144,2.5211 +524288,5.4031 +1048576,11.049 +2097152,43.424 +4194304,91.9904 +8388608,183.445 +16777216,372.864 +33554432,722.539 +67108864,1436.1 +134217728,2843.27 +16,0.0029 +32,0.0075 +64,0.0076 +128,0.0086 +256,0.0158 +512,0.0138 +1024,0.0405 +2048,0.0236 +4096,0.1343 +8192,0.1124 +16384,0.1703 +32768,0.2832 +65536,0.5599 +131072,1.2341 +262144,3.3217 +524288,5.735 +1048576,10.8169 +2097152,44.7256 +4194304,93.5235 +8388608,181.917 +16777216,354.696 +33554432,726.341 +67108864,1446.67 +134217728,2875.07 +16,0.0027 +32,0.007 +64,0.0077 +128,0.0062 +256,0.0269 +512,0.0148 +1024,0.0093 +2048,0.026 +4096,0.0799 +8192,0.141 +16384,0.4421 +32768,0.281 +65536,0.9565 +131072,1.2782 +262144,3.1201 +524288,5.6528 +1048576,11.5133 +2097152,43.9635 +4194304,91.596 +8388608,195.107 +16777216,353.533 +33554432,718.949 +67108864,1434.76 +134217728,2860.62 +16,0.0164 +32,0.0074 +64,0.0031 +128,0.0102 +256,0.0195 +512,0.014 +1024,0.009 +2048,0.0634 +4096,0.0446 +8192,0.0754 +16384,0.3429 +32768,0.3268 +65536,0.5814 +131072,1.2719 +262144,2.4777 +524288,5.2265 +1048576,10.8015 +2097152,51.0929 +4194304,90.1433 +8388608,179.798 +16777216,354.966 +33554432,731.741 +67108864,1439.49 +134217728,2862.82 +16,0.0161 +32,0.0049 +64,0.0051 +128,0.0096 +256,0.0241 +512,0.0332 +1024,0.0094 +2048,0.0238 +4096,0.0444 +8192,0.0889 +16384,0.1513 +32768,0.5031 +65536,0.5997 +131072,1.3857 +262144,2.5087 +524288,5.1772 +1048576,11.3012 +2097152,44.8792 +4194304,91.7704 +8388608,185.394 +16777216,387.576 +33554432,766.873 +67108864,1438.91 +134217728,2967.33 +16,0.0045 +32,0.0202 +64,0.0046 +128,0.0199 +256,0.0176 +512,0.0094 +1024,0.0346 +2048,0.0232 +4096,0.0444 +8192,0.1235 +16384,0.1502 +32768,0.4926 +65536,0.5733 +131072,1.6521 +262144,2.5329 +524288,5.377 +1048576,11.9464 +2097152,45.5378 +4194304,96.7573 +8388608,185.439 +16777216,364.825 +33554432,722.599 +67108864,1433.75 +134217728,2867.37 +16,0.0044 +32,0.0044 +64,0.0074 +128,0.0065 +256,0.0318 +512,0.0096 +1024,0.0337 +2048,0.0343 +4096,0.0774 +8192,0.1433 +16384,0.2607 +32768,0.3448 +65536,0.5818 +131072,1.2753 +262144,2.5936 +524288,5.0498 +1048576,10.4051 +2097152,45.1465 +4194304,92.7598 +8388608,185.438 +16777216,361.887 +33554432,737.066 +67108864,1467.2 +134217728,2871.21 +16,0.0027 +32,0.0049 +64,0.0044 +128,0.0073 +256,0.0197 +512,0.0143 +1024,0.0161 +2048,0.0464 +4096,0.0446 +8192,0.0793 +16384,0.2374 +32768,0.5991 +65536,0.5706 +131072,1.3998 +262144,2.7135 +524288,5.2324 +1048576,10.5788 +2097152,45.1157 +4194304,90.1408 +8388608,181.795 +16777216,364.522 +33554432,721.957 +67108864,1431.15 +134217728,2874.16 +16,0.0027 +32,0.0043 +64,0.0034 +128,0.0042 +256,0.0245 +512,0.0109 +1024,0.0526 +2048,0.0244 +4096,0.0631 +8192,0.1214 +16384,0.2377 +32768,0.2805 +65536,0.5833 +131072,1.2821 +262144,3.4827 +524288,5.1161 +1048576,11.4642 +2097152,49.4287 +4194304,93.1013 +8388608,177.743 +16777216,364.265 +33554432,730.251 +67108864,1428.23 +134217728,2862.61 +16,0.0027 +32,0.0047 +64,0.005 +128,0.0037 +256,0.0134 +512,0.0136 +1024,0.0222 +2048,0.0238 +4096,0.0611 +8192,0.0911 +16384,0.2823 +32768,0.5742 +65536,0.9484 +131072,1.2684 +262144,2.6531 +524288,5.9231 +1048576,10.9744 +2097152,43.38 +4194304,90.3833 +8388608,186.821 +16777216,366.362 diff --git a/Project2-Stream-Compaction/data/Stream_compaction_data/data_nonpow2/cpu_with.csv b/Project2-Stream-Compaction/data/Stream_compaction_data/data_nonpow2/cpu_with.csv new file mode 100644 index 0000000..00f24a7 --- /dev/null +++ b/Project2-Stream-Compaction/data/Stream_compaction_data/data_nonpow2/cpu_with.csv @@ -0,0 +1,923 @@ +13,0.0002 +29,0.0003 +61,0.0005 +125,0.0007 +253,0.001 +509,0.0018 +1021,0.0046 +2045,0.0065 +4093,0.015 +8189,0.0279 +16381,0.0468 +32765,0.1019 +65533,0.1973 +131069,0.3962 +262141,0.8009 +524285,1.7087 +1048573,4.8495 +2097149,6.2643 +4194301,13.9408 +8388605,27.6602 +16777213,49.1884 +33554429,94.6494 +67108861,182.458 +134217725,356.807 +268435453,714.138 +13,0.0002 +29,0.0002 +61,0.0004 +125,0.0006 +253,0.0009 +509,0.0017 +1021,0.0029 +2045,0.0057 +4093,0.0125 +8189,0.0356 +16381,0.067 +32765,0.1108 +65533,0.1971 +131069,0.4159 +262141,0.8614 +524285,1.8876 +1048573,3.0164 +2097149,6.2 +4194301,11.3662 +8388605,22.4057 +16777213,45.5992 +33554429,91.2534 +67108861,178.474 +134217725,352.176 +268435453,702.175 +13,0.0001 +29,0.0003 +61,0.0003 +125,0.0007 +253,0.001 +509,0.0018 +1021,0.0034 +2045,0.0056 +4093,0.0115 +8189,0.0231 +16381,0.0454 +32765,0.1094 +65533,0.2022 +131069,0.4201 +262141,0.9515 +524285,1.6137 +1048573,4.0552 +2097149,6.2996 +4194301,10.8663 +8388605,22.8875 +16777213,45.6427 +33554429,93.1426 +67108861,181.223 +134217725,360.735 +268435453,713.965 +13,0.0003 +29,0.0003 +61,0.0003 +125,0.0007 +253,0.0009 +509,0.0016 +1021,0.0033 +2045,0.0061 +4093,0.0118 +8189,0.0229 +16381,0.0472 +32765,0.1108 +65533,0.2412 +131069,0.4403 +262141,0.8795 +524285,1.5786 +1048573,2.8911 +2097149,5.8979 +4194301,12.0845 +8388605,23.1553 +16777213,45.6747 +33554429,92.0319 +67108861,181.465 +134217725,359.487 +268435453,706.528 +13,0.0001 +29,0.0005 +61,0.0003 +125,0.0005 +253,0.0008 +509,0.0016 +1021,0.0031 +2045,0.0059 +4093,0.0115 +8189,0.0231 +16381,0.0452 +32765,0.1084 +65533,0.174 +131069,0.373 +262141,0.8041 +524285,1.5644 +1048573,2.9487 +2097149,5.8818 +4194301,11.5539 +8388605,22.5499 +16777213,44.9387 +33554429,89.5112 +67108861,177.564 +134217725,354.718 +268435453,709.742 +13,0.0002 +29,0.0002 +61,0.0003 +125,0.0006 +253,0.001 +509,0.0017 +1021,0.0031 +2045,0.0058 +4093,0.0112 +8189,0.0245 +16381,0.0767 +32765,0.1085 +65533,0.2194 +131069,0.3906 +262141,0.9719 +524285,1.8126 +1048573,3.0282 +2097149,5.5853 +4194301,13.109 +8388605,23.8141 +16777213,47.6581 +33554429,90.076 +67108861,179.26 +134217725,358.236 +268435453,712.204 +13,0.0002 +29,0.0002 +61,0.0003 +125,0.0006 +253,0.001 +509,0.0016 +1021,0.003 +2045,0.0056 +4093,0.0112 +8189,0.0227 +16381,0.0455 +32765,0.1405 +65533,0.1989 +131069,0.483 +262141,1.0455 +524285,1.5491 +1048573,2.9494 +2097149,5.9476 +4194301,11.7123 +8388605,23.1063 +16777213,45.202 +33554429,100.256 +67108861,178.691 +134217725,353.987 +268435453,703.255 +13,0.0002 +29,0.0003 +61,0.0006 +125,0.001 +253,0.001 +509,0.0018 +1021,0.0034 +2045,0.006 +4093,0.0111 +8189,0.024 +16381,0.0443 +32765,0.1075 +65533,0.1788 +131069,0.4095 +262141,0.9351 +524285,1.6418 +1048573,3.4854 +2097149,5.8809 +4194301,11.4392 +8388605,23.0585 +16777213,47.8367 +33554429,88.2889 +67108861,177.617 +134217725,349.507 +268435453,710.379 +13,0.0002 +29,0.0003 +61,0.0004 +125,0.0005 +253,0.0009 +509,0.0018 +1021,0.003 +2045,0.0063 +4093,0.0117 +8189,0.0239 +16381,0.045 +32765,0.1117 +65533,0.2501 +131069,0.4801 +262141,0.8712 +524285,1.7299 +1048573,2.9011 +2097149,5.7629 +4194301,11.419 +8388605,21.9699 +16777213,45.8465 +33554429,90.4213 +67108861,181.634 +134217725,358.918 +268435453,715.653 +13,0.0002 +29,0.0002 +61,0.0004 +125,0.0007 +253,0.001 +509,0.0035 +1021,0.0031 +2045,0.0061 +4093,0.0116 +8189,0.0236 +16381,0.0455 +32765,0.1094 +65533,0.2033 +131069,0.6721 +262141,0.8186 +524285,1.6356 +1048573,3.853 +2097149,5.703 +4194301,11.705 +8388605,22.9736 +16777213,44.7481 +33554429,91.2725 +67108861,176.771 +134217725,359.841 +268435453,718.945 +13,0.0002 +29,0.0003 +61,0.0002 +125,0.0007 +253,0.0011 +509,0.0019 +1021,0.0033 +2045,0.006 +4093,0.0302 +8189,0.0234 +16381,0.0878 +32765,0.1112 +65533,0.2377 +131069,0.4592 +262141,0.8466 +524285,1.669 +1048573,3.1537 +2097149,6.9688 +4194301,11.3853 +8388605,23.2356 +16777213,45.6913 +33554429,92.4206 +67108861,182.939 +134217725,350.718 +268435453,705.643 +13,0.0002 +29,0.0002 +61,0.0003 +125,0.0006 +253,0.0009 +509,0.0015 +1021,0.0031 +2045,0.0192 +4093,0.012 +8189,0.0231 +16381,0.0434 +32765,0.0921 +65533,0.2698 +131069,0.397 +262141,0.8569 +524285,1.7313 +1048573,3.0425 +2097149,5.5051 +4194301,12.3038 +8388605,22.4953 +16777213,45.5346 +33554429,91.7983 +67108861,182.133 +134217725,352.024 +268435453,700.823 +13,0.0002 +29,0.0003 +61,0.0003 +125,0.0005 +253,0.0009 +509,0.0016 +1021,0.003 +2045,0.0255 +4093,0.0119 +8189,0.0237 +16381,0.0471 +32765,0.1311 +65533,0.2095 +131069,0.3767 +262141,0.8013 +524285,1.5347 +1048573,3.1477 +2097149,5.8368 +4194301,12.7547 +8388605,21.9648 +16777213,46.7434 +33554429,89.1622 +67108861,176.338 +134217725,349.715 +268435453,702.774 +13,0.0002 +29,0.0002 +61,0.0003 +125,0.0006 +253,0.001 +509,0.0018 +1021,0.0032 +2045,0.006 +4093,0.0123 +8189,0.0417 +16381,0.0443 +32765,0.1329 +65533,0.1869 +131069,0.4444 +262141,0.854 +524285,1.6689 +1048573,2.9637 +2097149,5.9219 +4194301,11.326 +8388605,22.5612 +16777213,45.2822 +33554429,88.3442 +67108861,175.937 +134217725,347.498 +268435453,701.16 +13,0.0002 +29,0.0002 +61,0.0007 +125,0.0006 +253,0.001 +509,0.0016 +1021,0.0032 +2045,0.0055 +4093,0.0247 +8189,0.0221 +16381,0.0831 +32765,0.1282 +65533,0.1857 +131069,0.4523 +262141,0.8847 +524285,1.5071 +1048573,3.1652 +2097149,5.7153 +4194301,11.8604 +8388605,24.1675 +16777213,45.2746 +33554429,93.0035 +67108861,180.184 +134217725,354.948 +268435453,701.563 +13,0.0003 +29,0.0002 +61,0.0003 +125,0.0005 +253,0.0009 +509,0.0016 +1021,0.0035 +2045,0.0057 +4093,0.0114 +8189,0.0225 +16381,0.0452 +32765,0.108 +65533,0.1995 +131069,0.4532 +262141,0.8693 +524285,1.6716 +1048573,3.1353 +2097149,6.6054 +4194301,11.4872 +8388605,23.7708 +16777213,45.2281 +33554429,87.5058 +67108861,183.365 +134217725,353.445 +268435453,704.791 +13,0.0002 +29,0.0002 +61,0.0003 +125,0.0006 +253,0.0011 +509,0.0019 +1021,0.0031 +2045,0.0063 +4093,0.0124 +8189,0.0234 +16381,0.0665 +32765,0.1114 +65533,0.237 +131069,0.3774 +262141,0.9133 +524285,1.6378 +1048573,2.8912 +2097149,5.7834 +4194301,11.6104 +8388605,24.2795 +16777213,46.5272 +33554429,88.5108 +67108861,184.313 +134217725,350.945 +268435453,704.3 +13,0.0002 +29,0.0003 +61,0.0004 +125,0.0007 +253,0.0011 +509,0.0022 +1021,0.0031 +2045,0.006 +4093,0.0123 +8189,0.0548 +16381,0.0544 +32765,0.0867 +65533,0.1994 +131069,0.4507 +262141,0.8962 +524285,1.6706 +1048573,2.8707 +2097149,5.7043 +4194301,11.7379 +8388605,23.5456 +16777213,46.6657 +33554429,88.8465 +67108861,179.176 +134217725,354.743 +268435453,702.204 +13,0.0002 +29,0.0002 +61,0.0004 +125,0.0006 +253,0.0012 +509,0.0018 +1021,0.0041 +2045,0.0063 +4093,0.0115 +8189,0.0234 +16381,0.0496 +32765,0.1264 +65533,0.1809 +131069,0.3715 +262141,0.8533 +524285,1.7666 +1048573,3.4152 +2097149,6.1466 +4194301,10.7561 +8388605,22.6888 +16777213,45.5117 +33554429,90.1662 +67108861,178.765 +134217725,359.983 +268435453,700.797 +13,0.0005 +29,0.0003 +61,0.0004 +125,0.0006 +253,0.0011 +509,0.002 +1021,0.0032 +2045,0.0062 +4093,0.012 +8189,0.0537 +16381,0.055 +32765,0.159 +65533,0.2371 +131069,0.4499 +262141,0.8119 +524285,1.5971 +1048573,3.0219 +2097149,5.7704 +4194301,11.7643 +8388605,22.6825 +16777213,44.6805 +33554429,90.888 +67108861,175.451 +134217725,349.535 +268435453,709.874 +13,0.0002 +29,0.0002 +61,0.0003 +125,0.0006 +253,0.001 +509,0.0019 +1021,0.0039 +2045,0.006 +4093,0.0114 +8189,0.0231 +16381,0.0778 +32765,0.1662 +65533,0.2296 +131069,0.3494 +262141,1.6118 +524285,1.6197 +1048573,2.9279 +2097149,5.9902 +4194301,11.6278 +8388605,23.0631 +16777213,44.1403 +33554429,90.9049 +67108861,179.881 +134217725,352.328 +268435453,703.951 +13,0.0002 +29,0.0003 +61,0.0003 +125,0.0006 +253,0.001 +509,0.0019 +1021,0.0032 +2045,0.0057 +4093,0.0117 +8189,0.0226 +16381,0.0605 +32765,0.111 +65533,0.1798 +131069,0.3946 +262141,0.9054 +524285,1.56 +1048573,3.263 +2097149,5.8612 +4194301,12.4005 +8388605,22.7381 +16777213,47.269 +33554429,88.7778 +67108861,176.145 +134217725,352.255 +268435453,698.086 +13,0.0001 +29,0.0002 +61,0.0003 +125,0.0005 +253,0.001 +509,0.0018 +1021,0.0032 +2045,0.0058 +4093,0.0115 +8189,0.038 +16381,0.0584 +32765,0.1054 +65533,0.2131 +131069,0.3614 +262141,0.8715 +524285,1.6126 +1048573,3.0234 +2097149,5.6303 +4194301,14.191 +8388605,26.1124 +16777213,45.9624 +33554429,89.8317 +67108861,180.846 +134217725,351.419 +268435453,703.961 +13,0.0002 +29,0.0003 +61,0.0003 +125,0.0005 +253,0.001 +509,0.0017 +1021,0.0036 +2045,0.0079 +4093,0.0113 +8189,0.0228 +16381,0.055 +32765,0.0906 +65533,0.2037 +131069,0.4301 +262141,0.8976 +524285,1.6328 +1048573,2.8951 +2097149,5.9547 +4194301,11.662 +8388605,21.849 +16777213,42.9926 +33554429,91.8358 +67108861,177.443 +134217725,347.971 +268435453,704.997 +13,0.0002 +29,0.0003 +61,0.0006 +125,0.0005 +253,0.001 +509,0.0018 +1021,0.0029 +2045,0.0057 +4093,0.0268 +8189,0.0227 +16381,0.0451 +32765,0.0923 +65533,0.2063 +131069,0.4777 +262141,0.8352 +524285,1.5418 +1048573,3.0437 +2097149,5.4738 +4194301,10.8617 +8388605,22.4095 +16777213,44.5119 +33554429,90.0569 +67108861,177.661 +134217725,351.811 +268435453,703.381 +13,0.0002 +29,0.0003 +61,0.0003 +125,0.0006 +253,0.0011 +509,0.0017 +1021,0.0029 +2045,0.0247 +4093,0.0117 +8189,0.0239 +16381,0.0599 +32765,0.1229 +65533,0.1776 +131069,0.3756 +262141,0.8328 +524285,1.4575 +1048573,2.9296 +2097149,5.7821 +4194301,11.4493 +8388605,22.7907 +16777213,45.6434 +33554429,92.8721 +67108861,177.475 +134217725,349.992 +268435453,710.087 +13,0.0001 +29,0.0001 +61,0.0003 +125,0.0008 +253,0.001 +509,0.0016 +1021,0.003 +2045,0.0059 +4093,0.0127 +8189,0.0232 +16381,0.047 +32765,0.1098 +65533,0.2107 +131069,0.4257 +262141,0.7457 +524285,1.5991 +1048573,2.9335 +2097149,5.8014 +4194301,11.7168 +8388605,22.7584 +16777213,45.5153 +33554429,92.2806 +67108861,178.131 +134217725,351.645 +268435453,704.37 +13,0.0002 +29,0.0002 +61,0.0003 +125,0.0006 +253,0.0009 +509,0.0017 +1021,0.0031 +2045,0.0056 +4093,0.0117 +8189,0.0225 +16381,0.0467 +32765,0.1046 +65533,0.2363 +131069,0.4503 +262141,0.9298 +524285,1.6151 +1048573,2.9975 +2097149,6.101 +4194301,11.5573 +8388605,23.4934 +16777213,45.2367 +33554429,89.6501 +67108861,179.575 +134217725,354.902 +268435453,706.048 +13,0.0002 +29,0.0002 +61,0.0002 +125,0.0006 +253,0.001 +509,0.0018 +1021,0.0032 +2045,0.0296 +4093,0.0115 +8189,0.0235 +16381,0.045 +32765,0.1322 +65533,0.2141 +131069,0.3744 +262141,1.0111 +524285,1.5043 +1048573,2.8946 +2097149,6.9677 +4194301,11.4949 +8388605,23.1256 +16777213,44.9026 +33554429,93.5969 +67108861,179.563 +134217725,350.887 +268435453,709.56 +13,0.0002 +29,0.0005 +61,0.0004 +125,0.0006 +253,0.0009 +509,0.0017 +1021,0.0032 +2045,0.0059 +4093,0.012 +8189,0.0238 +16381,0.0445 +32765,0.1089 +65533,0.1878 +131069,0.4303 +262141,0.8903 +524285,1.5529 +1048573,3.0818 +2097149,5.6138 +4194301,11.2594 +8388605,23.3249 +16777213,48.1073 +33554429,87.9275 +67108861,181.847 +134217725,351.133 +268435453,699.154 +13,0.0002 +29,0.0002 +61,0.0003 +125,0.0006 +253,0.001 +509,0.0018 +1021,0.0032 +2045,0.0062 +4093,0.0118 +8189,0.0218 +16381,0.0458 +32765,0.1066 +65533,0.1954 +131069,0.4288 +262141,0.7666 +524285,1.5997 +1048573,3.2759 +2097149,6.2566 +4194301,11.8588 +8388605,22.7147 +16777213,48.0187 +33554429,89.1233 +67108861,176.457 +134217725,353.158 +268435453,703.315 +13,0.0002 +29,0.0003 +61,0.0003 +125,0.0007 +253,0.001 +509,0.0017 +1021,0.0031 +2045,0.0057 +4093,0.0112 +8189,0.0226 +16381,0.0451 +32765,0.1146 +65533,0.19 +131069,0.4811 +262141,0.8589 +524285,1.5318 +1048573,3.5405 +2097149,5.6228 +4194301,11.8681 +8388605,22.1719 +16777213,45.0419 +33554429,89.0289 +67108861,179.949 +134217725,353.842 +268435453,697.294 +13,0.0002 +29,0.0005 +61,0.0004 +125,0.0005 +253,0.0014 +509,0.0017 +1021,0.003 +2045,0.0058 +4093,0.0114 +8189,0.0227 +16381,0.064 +32765,0.1124 +65533,0.2009 +131069,0.4278 +262141,0.8709 +524285,1.5897 +1048573,3.1161 +2097149,6.1035 +4194301,11.3405 +8388605,22.9749 +16777213,44.8191 +33554429,90.1893 +67108861,179.584 +134217725,347.44 +268435453,701.777 +13,0.0001 +29,0.0002 +61,0.0004 +125,0.0005 +253,0.001 +509,0.002 +1021,0.0032 +2045,0.0064 +4093,0.0124 +8189,0.0238 +16381,0.0477 +32765,0.1099 +65533,0.2031 +131069,0.4282 +262141,0.892 +524285,1.5239 +1048573,2.9676 +2097149,5.8439 +4194301,11.6782 +8388605,23.0873 +16777213,45.4437 +33554429,88.8316 +67108861,178.373 +134217725,386.233 +268435453,773.446 +13,0.0002 +29,0.0002 +61,0.0004 +125,0.0006 +253,0.0011 +509,0.0019 +1021,0.0032 +2045,0.006 +4093,0.0117 +8189,0.0236 +16381,0.0469 +32765,0.1124 +65533,0.2005 +131069,0.4168 +262141,1.1624 +524285,1.4884 +1048573,3.1253 +2097149,5.6422 +4194301,11.6287 +8388605,22.4216 +16777213,46.5371 +33554429,88.2267 +67108861,186.686 +134217725,386.598 +268435453,706.312 +13,0.0001 +29,0.0002 +61,0.0003 +125,0.0006 +253,0.0012 +509,0.0017 +1021,0.0034 +2045,0.0062 +4093,0.0118 +8189,0.0286 +16381,0.0576 +32765,0.1598 +65533,0.1999 +131069,0.4452 +262141,0.8454 +524285,1.6252 +1048573,2.8919 +2097149,6.0394 +4194301,11.9955 +8388605,23.513 +16777213,44.3544 +33554429,89.9159 +67108861,178.224 +134217725,351.825 +268435453,708.39 +13,0.0002 +29,0.0001 +61,0.0003 +125,0.0007 +253,0.0009 +509,0.002 +1021,0.0032 +2045,0.0057 +4093,0.012 +8189,0.0235 +16381,0.0645 +32765,0.1085 +65533,0.1963 +131069,0.5305 +262141,0.7798 +524285,1.9358 +1048573,3.1301 +2097149,6.0456 +4194301,11.2115 +8388605,23.5509 +16777213,45.7782 +33554429,92.2027 +67108861,177.791 diff --git a/Project2-Stream-Compaction/data/Stream_compaction_data/data_nonpow2/cpu_without.csv b/Project2-Stream-Compaction/data/Stream_compaction_data/data_nonpow2/cpu_without.csv new file mode 100644 index 0000000..5161449 --- /dev/null +++ b/Project2-Stream-Compaction/data/Stream_compaction_data/data_nonpow2/cpu_without.csv @@ -0,0 +1,924 @@ +13,0.0002 +29,0.0002 +61,0.0003 +125,0.0009 +253,0.0015 +509,0.0031 +1021,0.0059 +2045,0.0054 +4093,0.0112 +8189,0.0211 +16381,0.0447 +32765,0.0863 +65533,0.2166 +131069,0.3527 +262141,0.7975 +524285,1.4489 +1048573,3.7309 +2097149,6.277 +4194301,10.7375 +8388605,22.7739 +16777213,46.2932 +33554429,89.3897 +67108861,179.822 +134217725,348.832 +268435453,707.613 +13,0.0002 +29,0.0003 +61,0.0004 +125,0.0008 +253,0.0007 +509,0.0027 +1021,0.0028 +2045,0.0057 +4093,0.0108 +8189,0.0205 +16381,0.0423 +32765,0.0868 +65533,0.2201 +131069,0.3351 +262141,0.69 +524285,1.3477 +1048573,2.7091 +2097149,6.1722 +4194301,10.8771 +8388605,21.2667 +16777213,45.0367 +33554429,87.1675 +67108861,177.383 +134217725,354.253 +268435453,705.847 +13,0.0001 +29,0.0004 +61,0.0006 +125,0.0009 +253,0.0015 +509,0.0026 +1021,0.0051 +2045,0.0093 +4093,0.0372 +8189,0.0234 +16381,0.0417 +32765,0.0843 +65533,0.1684 +131069,0.3399 +262141,0.6471 +524285,1.2947 +1048573,2.9387 +2097149,5.4765 +4194301,10.9182 +8388605,21.5157 +16777213,44.1418 +33554429,86.1577 +67108861,179.014 +134217725,352.283 +268435453,710.144 +13,0.0002 +29,0.0004 +61,0.0003 +125,0.0008 +253,0.0008 +509,0.0027 +1021,0.0031 +2045,0.0054 +4093,0.0111 +8189,0.0214 +16381,0.0569 +32765,0.0894 +65533,0.1829 +131069,0.5066 +262141,0.6931 +524285,1.8149 +1048573,2.6406 +2097149,5.2633 +4194301,11.9074 +8388605,21.4079 +16777213,44.6963 +33554429,86.2805 +67108861,177.415 +134217725,354.488 +268435453,706.016 +13,0.0001 +29,0.0004 +61,0.0003 +125,0.0005 +253,0.0015 +509,0.0018 +1021,0.0038 +2045,0.0053 +4093,0.0333 +8189,0.0217 +16381,0.0434 +32765,0.0846 +65533,0.3817 +131069,0.3854 +262141,0.7878 +524285,1.4048 +1048573,3.0137 +2097149,5.3202 +4194301,11.251 +8388605,22.5801 +16777213,42.489 +33554429,88.2472 +67108861,177.742 +134217725,356.408 +268435453,710.087 +13,0.0002 +29,0.0002 +61,0.0006 +125,0.0004 +253,0.0018 +509,0.0026 +1021,0.0049 +2045,0.0056 +4093,0.0106 +8189,0.0215 +16381,0.074 +32765,0.0829 +65533,0.1718 +131069,0.3599 +262141,0.644 +524285,1.367 +1048573,3.189 +2097149,5.6439 +4194301,12.4116 +8388605,21.6358 +16777213,42.6556 +33554429,91.2014 +67108861,174.964 +134217725,351.065 +268435453,709.357 +13,0.0001 +29,0.0002 +61,0.0002 +125,0.0008 +253,0.0013 +509,0.0016 +1021,0.0029 +2045,0.0095 +4093,0.0105 +8189,0.037 +16381,0.0779 +32765,0.0829 +65533,0.1771 +131069,0.3476 +262141,0.6807 +524285,1.3921 +1048573,2.6445 +2097149,5.6502 +4194301,10.8748 +8388605,21.3219 +16777213,43.631 +33554429,87.5901 +67108861,178.953 +134217725,365.423 +268435453,709.55 +13,0.0002 +29,0.0006 +61,0.0005 +125,0.0009 +253,0.0017 +509,0.0028 +1021,0.0053 +2045,0.0058 +4093,0.0241 +8189,0.0212 +16381,0.0426 +32765,0.0813 +65533,0.1722 +131069,0.3423 +262141,0.7037 +524285,1.7413 +1048573,2.8424 +2097149,7.0964 +4194301,10.8652 +8388605,26.4524 +16777213,44.8852 +33554429,95.9369 +67108861,175.271 +134217725,354.349 +268435453,706.536 +13,0.0001 +29,0.0002 +61,0.0005 +125,0.0008 +253,0.0016 +509,0.0018 +1021,0.005 +2045,0.0073 +4093,0.033 +8189,0.0228 +16381,0.044 +32765,0.0913 +65533,0.1686 +131069,0.3603 +262141,0.6428 +524285,1.6564 +1048573,2.8868 +2097149,7.1652 +4194301,12.4767 +8388605,23.4561 +16777213,42.976 +33554429,89.0402 +67108861,177.026 +134217725,356.666 +268435453,713.328 +13,0.0001 +29,0.0001 +61,0.0003 +125,0.0008 +253,0.0143 +509,0.0025 +1021,0.004 +2045,0.0058 +4093,0.0162 +8189,0.0214 +16381,0.0627 +32765,0.0856 +65533,0.1649 +131069,0.3424 +262141,0.6943 +524285,1.4424 +1048573,3.0472 +2097149,5.3628 +4194301,10.59 +8388605,22.3723 +16777213,41.9438 +33554429,87.9528 +67108861,177.185 +134217725,356.397 +268435453,706.531 +13,0.0002 +29,0.0001 +61,0.0004 +125,0.0006 +253,0.015 +509,0.0028 +1021,0.0036 +2045,0.0055 +4093,0.0106 +8189,0.0207 +16381,0.0633 +32765,0.082 +65533,0.2259 +131069,0.3953 +262141,0.6761 +524285,1.3914 +1048573,3.6923 +2097149,5.5207 +4194301,10.7939 +8388605,21.2003 +16777213,43.7996 +33554429,86.5621 +67108861,177.718 +134217725,353.146 +268435453,706.805 +13,0.0001 +29,0.0005 +61,0.0005 +125,0.0008 +253,0.0148 +509,0.0013 +1021,0.0035 +2045,0.0093 +4093,0.0116 +8189,0.021 +16381,0.0412 +32765,0.0869 +65533,0.1774 +131069,0.3429 +262141,0.6692 +524285,1.2932 +1048573,3.3073 +2097149,5.5047 +4194301,10.8122 +8388605,21.8567 +16777213,44.9255 +33554429,87.0138 +67108861,178.035 +134217725,349.266 +268435453,698.171 +13,0.0001 +29,0.0002 +61,0.0003 +125,0.0006 +253,0.0013 +509,0.0158 +1021,0.0029 +2045,0.0097 +4093,0.011 +8189,0.0205 +16381,0.0644 +32765,0.0819 +65533,0.1702 +131069,0.3345 +262141,0.7114 +524285,1.355 +1048573,2.6188 +2097149,5.4098 +4194301,11.274 +8388605,23.3016 +16777213,42.8513 +33554429,90.1879 +67108861,175.758 +134217725,346.223 +268435453,699.135 +13,0.0001 +29,0.0003 +61,0.0004 +125,0.0005 +253,0.0017 +509,0.0032 +1021,0.0029 +2045,0.0097 +4093,0.0111 +8189,0.0341 +16381,0.0551 +32765,0.0842 +65533,0.1727 +131069,0.351 +262141,0.6894 +524285,1.341 +1048573,2.9477 +2097149,5.5778 +4194301,10.8695 +8388605,22.1274 +16777213,45.4298 +33554429,86.2632 +67108861,175.311 +134217725,354.349 +268435453,698.503 +13,0.0001 +29,0.0002 +61,0.0003 +125,0.0004 +253,0.0014 +509,0.0015 +1021,0.0027 +2045,0.0078 +4093,0.0134 +8189,0.0204 +16381,0.0441 +32765,0.1487 +65533,0.1703 +131069,0.3376 +262141,0.7209 +524285,1.5434 +1048573,2.6496 +2097149,5.7502 +4194301,11.0278 +8388605,21.1974 +16777213,42.6648 +33554429,85.5403 +67108861,182.145 +134217725,346.353 +268435453,707.556 +13,0.0002 +29,0.0003 +61,0.0005 +125,0.0008 +253,0.0008 +509,0.0017 +1021,0.0027 +2045,0.0098 +4093,0.0192 +8189,0.0249 +16381,0.0804 +32765,0.0828 +65533,0.2099 +131069,0.3595 +262141,0.7065 +524285,1.7419 +1048573,2.8681 +2097149,5.615 +4194301,12.922 +8388605,23.4233 +16777213,44.424 +33554429,89.0712 +67108861,176.193 +134217725,352.643 +268435453,700.726 +13,0.0002 +29,0.0003 +61,0.0006 +125,0.0006 +253,0.0016 +509,0.003 +1021,0.0053 +2045,0.0059 +4093,0.0111 +8189,0.0217 +16381,0.0748 +32765,0.0829 +65533,0.1978 +131069,0.3589 +262141,0.723 +524285,1.6224 +1048573,2.6958 +2097149,5.3467 +4194301,11.5771 +8388605,21.0603 +16777213,42.3692 +33554429,90.3229 +67108861,175.783 +134217725,351.512 +268435453,702.917 +13,0.0001 +29,0.0001 +61,0.0003 +125,0.0005 +253,0.0011 +509,0.0021 +1021,0.0035 +2045,0.0087 +4093,0.0109 +8189,0.021 +16381,0.0395 +32765,0.0956 +65533,0.2297 +131069,0.3456 +262141,0.712 +524285,1.3593 +1048573,2.7641 +2097149,5.2348 +4194301,12.7711 +8388605,20.6259 +16777213,42.8089 +33554429,89.4567 +67108861,179.441 +134217725,353.374 +268435453,699.763 +13,0.0002 +29,0.0002 +61,0.0007 +125,0.0006 +253,0.0145 +509,0.0029 +1021,0.005 +2045,0.0057 +4093,0.0323 +8189,0.0214 +16381,0.0417 +32765,0.0877 +65533,0.1739 +131069,0.3673 +262141,1.6079 +524285,1.6788 +1048573,2.7594 +2097149,5.5361 +4194301,10.7272 +8388605,21.6321 +16777213,44.5421 +33554429,86.0339 +67108861,177.696 +134217725,351.153 +268435453,705.877 +13,0.0001 +29,0.0004 +61,0.0002 +125,0.0005 +253,0.0009 +509,0.0029 +1021,0.0203 +2045,0.0058 +4093,0.0111 +8189,0.0407 +16381,0.0609 +32765,0.084 +65533,0.1692 +131069,0.3491 +262141,0.6895 +524285,1.8404 +1048573,2.6728 +2097149,5.2789 +4194301,10.6687 +8388605,21.5183 +16777213,46.4988 +33554429,85.547 +67108861,175.28 +134217725,347.837 +268435453,697.146 +13,0.0001 +29,0.0002 +61,0.0003 +125,0.0009 +253,0.0014 +509,0.0029 +1021,0.0029 +2045,0.0072 +4093,0.0117 +8189,0.0534 +16381,0.0609 +32765,0.0842 +65533,0.1725 +131069,0.3451 +262141,0.7151 +524285,1.3351 +1048573,2.6619 +2097149,5.429 +4194301,10.8022 +8388605,20.6023 +16777213,46.8518 +33554429,85.8326 +67108861,175.518 +134217725,351.473 +268435453,695.844 +13,0.0001 +29,0.0002 +61,0.0004 +125,0.0009 +253,0.0014 +509,0.0027 +1021,0.0029 +2045,0.0064 +4093,0.011 +8189,0.0201 +16381,0.0479 +32765,0.1036 +65533,0.1778 +131069,0.3351 +262141,0.6738 +524285,1.3343 +1048573,2.6731 +2097149,5.2994 +4194301,12.0947 +8388605,22.2962 +16777213,42.4889 +33554429,89.3125 +67108861,174.693 +134217725,347.113 +268435453,695.185 +13,0.0001 +29,0.0003 +61,0.0004 +125,0.0009 +253,0.0008 +509,0.0028 +1021,0.0028 +2045,0.0097 +4093,0.0109 +8189,0.0215 +16381,0.0431 +32765,0.0853 +65533,0.1784 +131069,0.3358 +262141,0.9037 +524285,1.4067 +1048573,3.3509 +2097149,5.2253 +4194301,10.5735 +8388605,21.7457 +16777213,42.1169 +33554429,88.8376 +67108861,177.373 +134217725,351.165 +268435453,694.33 +13,0.0001 +29,0.0003 +61,0.0004 +125,0.0006 +253,0.0015 +509,0.0027 +1021,0.0215 +2045,0.009 +4093,0.027 +8189,0.0211 +16381,0.0414 +32765,0.0873 +65533,0.1699 +131069,0.3634 +262141,0.6705 +524285,1.3 +1048573,2.6913 +2097149,5.3402 +4194301,10.6012 +8388605,20.9108 +16777213,45.779 +33554429,86.2213 +67108861,175.108 +134217725,354.64 +268435453,696.77 +13,0.0002 +29,0.0004 +61,0.0003 +125,0.0009 +253,0.0016 +509,0.0027 +1021,0.0047 +2045,0.026 +4093,0.013 +8189,0.0223 +16381,0.0412 +32765,0.0892 +65533,0.1655 +131069,0.3485 +262141,0.7933 +524285,1.3517 +1048573,2.7124 +2097149,5.6138 +4194301,10.71 +8388605,22.1585 +16777213,44.9765 +33554429,84.0652 +67108861,173.08 +134217725,354.091 +268435453,704.843 +13,0.0001 +29,0.0002 +61,0.0004 +125,0.0006 +253,0.0016 +509,0.0017 +1021,0.0028 +2045,0.0074 +4093,0.0245 +8189,0.021 +16381,0.0623 +32765,0.0821 +65533,0.1967 +131069,0.3481 +262141,0.757 +524285,1.4495 +1048573,2.7041 +2097149,5.4024 +4194301,11.2823 +8388605,22.4046 +16777213,46.1456 +33554429,86.6306 +67108861,176.845 +134217725,350.665 +268435453,697.574 +13,0.0001 +29,0.0002 +61,0.0002 +125,0.0007 +253,0.0009 +509,0.0023 +1021,0.0028 +2045,0.0052 +4093,0.0112 +8189,0.0226 +16381,0.0612 +32765,0.0851 +65533,0.1709 +131069,0.3487 +262141,0.7958 +524285,1.4129 +1048573,2.6729 +2097149,5.605 +4194301,11.2298 +8388605,21.4918 +16777213,44.1826 +33554429,84.0596 +67108861,175.338 +134217725,354.239 +268435453,696.878 +13,0.0001 +29,0.0001 +61,0.0003 +125,0.0011 +253,0.0009 +509,0.0028 +1021,0.0027 +2045,0.012 +4093,0.0318 +8189,0.0207 +16381,0.0436 +32765,0.0853 +65533,0.2379 +131069,0.3515 +262141,0.6915 +524285,1.4586 +1048573,3.8124 +2097149,5.2806 +4194301,10.4954 +8388605,21.6654 +16777213,43.0598 +33554429,87.0188 +67108861,175.561 +134217725,345.291 +268435453,703.085 +13,0.0001 +29,0.0001 +61,0.0003 +125,0.0008 +253,0.0016 +509,0.003 +1021,0.003 +2045,0.0089 +4093,0.011 +8189,0.0226 +16381,0.0537 +32765,0.1174 +65533,0.1657 +131069,0.3589 +262141,0.8192 +524285,1.561 +1048573,2.8021 +2097149,5.3517 +4194301,10.2554 +8388605,21.4403 +16777213,44.2908 +33554429,85.1485 +67108861,175.364 +134217725,354.029 +268435453,700.185 +13,0.0001 +29,0.0001 +61,0.0006 +125,0.0005 +253,0.0015 +509,0.0026 +1021,0.0027 +2045,0.0092 +4093,0.0107 +8189,0.0212 +16381,0.0752 +32765,0.0821 +65533,0.217 +131069,0.3387 +262141,0.7226 +524285,1.3644 +1048573,2.6266 +2097149,7.7056 +4194301,11.0909 +8388605,22.9163 +16777213,42.375 +33554429,92.1504 +67108861,177.802 +134217725,349.126 +268435453,696.599 +13,0.0002 +29,0.0002 +61,0.0006 +125,0.0009 +253,0.0146 +509,0.0028 +1021,0.0033 +2045,0.0058 +4093,0.0104 +8189,0.0211 +16381,0.0696 +32765,0.0824 +65533,0.2112 +131069,0.3581 +262141,0.6924 +524285,1.7831 +1048573,3.0086 +2097149,6.8203 +4194301,11.3851 +8388605,24.3165 +16777213,45.2642 +33554429,90.9088 +67108861,172.16 +134217725,358.747 +268435453,707.422 +13,0.0001 +29,0.0001 +61,0.0005 +125,0.0009 +253,0.0008 +509,0.0029 +1021,0.0034 +2045,0.0055 +4093,0.0106 +8189,0.021 +16381,0.0585 +32765,0.0881 +65533,0.1724 +131069,0.3462 +262141,0.7139 +524285,1.4404 +1048573,3.383 +2097149,5.2802 +4194301,10.8445 +8388605,21.3323 +16777213,44.9868 +33554429,90.643 +67108861,179.798 +134217725,353.414 +268435453,707.517 +13,0.0001 +29,0.0003 +61,0.0004 +125,0.0008 +253,0.0016 +509,0.0022 +1021,0.0026 +2045,0.0057 +4093,0.0105 +8189,0.0347 +16381,0.0427 +32765,0.0826 +65533,0.172 +131069,0.3359 +262141,0.7026 +524285,1.4659 +1048573,3.9414 +2097149,5.1889 +4194301,11.0958 +8388605,21.3988 +16777213,42.5408 +33554429,87.7597 +67108861,178.008 +134217725,346.724 +268435453,713.862 +13,0.0001 +29,0.0001 +61,0.0007 +125,0.0008 +253,0.001 +509,0.0028 +1021,0.0029 +2045,0.0056 +4093,0.0111 +8189,0.0221 +16381,0.0497 +32765,0.0812 +65533,0.2256 +131069,0.3331 +262141,0.7173 +524285,1.3094 +1048573,2.7464 +2097149,5.0813 +4194301,10.7644 +8388605,21.3083 +16777213,42.8236 +33554429,88.9717 +67108861,180.424 +134217725,455.441 +268435453,774.2 +13,0.0001 +29,0.0002 +61,0.0003 +125,0.0005 +253,0.0008 +509,0.0019 +1021,0.0028 +2045,0.0066 +4093,0.0162 +8189,0.021 +16381,0.0755 +32765,0.0873 +65533,0.2471 +131069,0.3273 +262141,0.6846 +524285,1.6063 +1048573,2.5895 +2097149,5.2812 +4194301,11.9212 +8388605,22.9982 +16777213,51.9211 +33554429,91.1344 +67108861,177.019 +134217725,350.444 +268435453,702.74 +13,0.0001 +29,0.0001 +61,0.0005 +125,0.0006 +253,0.0008 +509,0.0027 +1021,0.0031 +2045,0.0111 +4093,0.0316 +8189,0.0239 +16381,0.076 +32765,0.1043 +65533,0.1853 +131069,0.3885 +262141,0.661 +524285,1.4166 +1048573,2.6578 +2097149,5.1513 +4194301,11.5444 +8388605,22.2243 +16777213,46.7388 +33554429,83.8459 +67108861,180.051 +134217725,355.098 +268435453,698.659 +13,0.0001 +29,0.0002 +61,0.0007 +125,0.0005 +253,0.0008 +509,0.0015 +1021,0.0028 +2045,0.0228 +4093,0.0196 +8189,0.0397 +16381,0.0439 +32765,0.0883 +65533,0.1737 +131069,0.3348 +262141,0.7009 +524285,1.3731 +1048573,2.6416 +2097149,5.4587 +4194301,11.2085 +8388605,21.8276 +16777213,43.4263 +33554429,91.9404 +67108861,175.722 +134217725,361.519 diff --git a/Project2-Stream-Compaction/data/Stream_compaction_data/data_nonpow2/eff.csv b/Project2-Stream-Compaction/data/Stream_compaction_data/data_nonpow2/eff.csv new file mode 100644 index 0000000..638038f --- /dev/null +++ b/Project2-Stream-Compaction/data/Stream_compaction_data/data_nonpow2/eff.csv @@ -0,0 +1,923 @@ +13,0.720896 +29,0.82224 +61,0.697344 +125,0.828384 +253,0.658432 +509,0.692256 +1021,0.854016 +2045,0.780288 +4093,0.9728 +8189,1.05062 +16381,1.13661 +32765,1.29331 +65533,2.33981 +131069,2.78835 +262141,5.54595 +524285,9.43104 +1048573,16.6769 +2097149,30.2561 +4194301,58.4632 +8388605,117.072 +16777213,239.304 +33554429,473.875 +67108861,939.836 +134217725,1874.61 +268435453,3751.79 +13,0.915456 +29,0.7168 +61,0.75776 +125,0.846848 +253,0.95744 +509,1.00762 +1021,0.909312 +2045,0.930816 +4093,1.21139 +8189,1.06496 +16381,1.08646 +32765,1.49299 +65533,1.82886 +131069,3.37306 +262141,5.05754 +524285,8.43571 +1048573,16.8325 +2097149,30.1906 +4194301,58.5605 +8388605,113.196 +16777213,232.41 +33554429,470 +67108861,939.366 +134217725,1865.74 +268435453,3760.55 +13,1.06291 +29,0.82432 +61,0.837632 +125,1.34144 +253,0.871424 +509,1.12742 +1021,0.816128 +2045,0.997376 +4093,0.995328 +8189,1.06701 +16381,1.14995 +32765,1.71622 +65533,1.78483 +131069,3.03206 +262141,4.8425 +524285,8.63846 +1048573,17.2575 +2097149,30.9228 +4194301,59.0602 +8388605,115.045 +16777213,231.4 +33554429,468.585 +67108861,942.884 +134217725,1886.1 +268435453,3742.75 +13,0.867328 +29,0.712704 +61,0.84992 +125,0.949248 +253,0.941056 +509,0.857088 +1021,0.900096 +2045,1.31686 +4093,0.958464 +8189,1.0752 +16381,1.15712 +32765,1.53395 +65533,1.82989 +131069,2.94093 +262141,5.00736 +524285,9.20064 +1048573,18.0081 +2097149,29.7062 +4194301,59.1328 +8388605,115.594 +16777213,231.713 +33554429,467.62 +67108861,943.12 +134217725,1873.8 +268435453,3733.15 +13,0.843776 +29,0.663552 +61,0.68608 +125,1.6087 +253,0.978944 +509,0.88576 +1021,0.935936 +2045,0.940032 +4093,1.63635 +8189,0.994304 +16381,1.18067 +32765,1.31686 +65533,2.06234 +131069,3.28704 +262141,5.15174 +524285,8.77363 +1048573,16.0276 +2097149,29.95 +4194301,58.241 +8388605,113.812 +16777213,236.707 +33554429,469.083 +67108861,931.93 +134217725,1894.07 +268435453,3737.78 +13,1.0025 +29,0.88064 +61,1.00762 +125,0.841728 +253,0.734208 +509,0.935936 +1021,0.886784 +2045,0.896 +4093,0.98816 +8189,1.03322 +16381,1.34144 +32765,1.47763 +65533,1.92614 +131069,2.84672 +262141,4.8128 +524285,9.63686 +1048573,15.999 +2097149,30.6852 +4194301,57.7413 +8388605,113.891 +16777213,232.454 +33554429,472.402 +67108861,947.121 +134217725,1882.03 +268435453,3759.39 +13,0.804864 +29,0.862208 +61,1.05686 +125,0.910336 +253,0.878592 +509,1.00659 +1021,0.796672 +2045,0.985088 +4093,1.03424 +8189,1.06906 +16381,1.62099 +32765,1.4633 +65533,1.96198 +131069,2.86106 +262141,5.00941 +524285,9.22726 +1048573,16.6205 +2097149,30.3616 +4194301,58.8626 +8388605,115.746 +16777213,232.412 +33554429,466.648 +67108861,932.509 +134217725,1886.4 +268435453,3735.14 +13,1.53088 +29,0.789504 +61,1.12435 +125,0.841728 +253,0.841728 +509,0.876544 +1021,1.14688 +2045,1.4121 +4093,1.03117 +8189,1.2329 +16381,1.07827 +32765,1.46842 +65533,1.93843 +131069,2.88256 +262141,5.05651 +524285,8.82483 +1048573,15.8771 +2097149,30.6801 +4194301,57.9635 +8388605,115.761 +16777213,229.576 +33554429,465.057 +67108861,936.014 +134217725,1871.21 +268435453,3721.48 +13,0.790528 +29,0.789504 +61,0.817152 +125,1.06189 +253,0.878592 +509,0.786432 +1021,0.861184 +2045,1.03322 +4093,1.11206 +8189,1.43258 +16381,1.11104 +32765,2.11046 +65533,1.85242 +131069,2.94093 +262141,4.98893 +524285,9.29587 +1048573,16.4598 +2097149,31.6938 +4194301,58.0086 +8388605,114.629 +16777213,235.248 +33554429,470.074 +67108861,937.233 +134217725,1882.49 +268435453,3730.66 +13,1.00045 +29,0.955392 +61,0.862208 +125,0.941056 +253,0.847872 +509,0.843776 +1021,0.850944 +2045,1.05472 +4093,1.11411 +8189,0.98816 +16381,1.49914 +32765,1.33325 +65533,1.92512 +131069,3.1785 +262141,5.51117 +524285,8.7808 +1048573,16.254 +2097149,29.8547 +4194301,58.409 +8388605,114.313 +16777213,234.458 +33554429,470.572 +67108861,947.326 +134217725,1870.75 +268435453,3781.44 +13,0.956416 +29,0.874496 +61,0.946176 +125,0.954368 +253,0.847872 +509,0.8704 +1021,1.3568 +2045,1.07418 +4093,0.859136 +8189,1.19194 +16381,1.2073 +32765,2.90099 +65533,1.81658 +131069,3.36589 +262141,4.98074 +524285,8.91699 +1048573,15.829 +2097149,29.995 +4194301,58.1079 +8388605,116.089 +16777213,237.411 +33554429,469.996 +67108861,946.939 +134217725,1874.16 +268435453,3750.76 +13,1.59642 +29,0.782336 +61,0.873472 +125,0.83456 +253,0.866304 +509,0.837632 +1021,0.94208 +2045,1.01581 +4093,1.37728 +8189,1.05267 +16381,1.15302 +32765,1.72646 +65533,1.84013 +131069,3.27885 +262141,5.25312 +524285,9.27334 +1048573,16.128 +2097149,30.1773 +4194301,59.1155 +8388605,115.091 +16777213,231.092 +33554429,464.675 +67108861,936.077 +134217725,1863.22 +268435453,3740.4 +13,0.723968 +29,0.7936 +61,0.7936 +125,0.775168 +253,1.37728 +509,0.891904 +1021,0.919552 +2045,1.30458 +4093,1.02195 +8189,0.914432 +16381,1.44998 +32765,1.51142 +65533,1.79302 +131069,3.63827 +262141,5.4313 +524285,9.7321 +1048573,15.7768 +2097149,31.2084 +4194301,57.7055 +8388605,114.224 +16777213,236.318 +33554429,468.382 +67108861,939.82 +134217725,1888.54 +268435453,3740.61 +13,0.891904 +29,0.90624 +61,1.42029 +125,0.89088 +253,0.833536 +509,0.83456 +1021,0.858112 +2045,0.847872 +4093,1.56262 +8189,1.12435 +16381,1.74182 +32765,1.55034 +65533,2.2016 +131069,2.86413 +262141,5.05344 +524285,8.5975 +1048573,16.0225 +2097149,30.1722 +4194301,58.4315 +8388605,116.098 +16777213,233.541 +33554429,472.032 +67108861,940.071 +134217725,1878.22 +268435453,3766.6 +13,0.897024 +29,1.17043 +61,0.919552 +125,0.81408 +253,1.28819 +509,0.92672 +1021,0.874496 +2045,0.961536 +4093,1.03117 +8189,1.05574 +16381,1.09773 +32765,1.42234 +65533,1.81555 +131069,3.1703 +262141,5.33914 +524285,8.66509 +1048573,16.2918 +2097149,30.0534 +4194301,58.4847 +8388605,116.949 +16777213,232.693 +33554429,469.066 +67108861,932.019 +134217725,1887.12 +268435453,3749.12 +13,0.8448 +29,0.859136 +61,0.736256 +125,1.18272 +253,0.719872 +509,0.753664 +1021,0.765952 +2045,1.15507 +4093,0.861184 +8189,1.29434 +16381,1.10182 +32765,1.82784 +65533,2.14835 +131069,2.75968 +262141,5.31866 +524285,8.23603 +1048573,16.6912 +2097149,30.636 +4194301,58.1929 +8388605,115.391 +16777213,229.838 +33554429,468.451 +67108861,941.537 +134217725,1867.94 +268435453,3744.96 +13,0.879616 +29,0.910336 +61,0.883712 +125,0.879616 +253,1.26464 +509,0.736256 +1021,0.830464 +2045,0.894976 +4093,0.896 +8189,0.929792 +16381,1.17862 +32765,1.33734 +65533,1.8647 +131069,2.94502 +262141,5.39341 +524285,8.69171 +1048573,16.1741 +2097149,31.4604 +4194301,60.6321 +8388605,114.882 +16777213,235.423 +33554429,470.926 +67108861,942.818 +134217725,1883.67 +268435453,3726.95 +13,1.77766 +29,0.825344 +61,0.909312 +125,0.891904 +253,1.09568 +509,0.820224 +1021,0.815104 +2045,0.937984 +4093,1.21958 +8189,1.23802 +16381,1.32813 +32765,1.6087 +65533,1.79712 +131069,2.87744 +262141,5.02067 +524285,8.66304 +1048573,15.9283 +2097149,29.6079 +4194301,58.4274 +8388605,114.017 +16777213,236.661 +33554429,472.499 +67108861,940.913 +134217725,1870.92 +268435453,3779.4 +13,0.83968 +29,1.19706 +61,0.83456 +125,0.81408 +253,1.08237 +509,1.05677 +1021,0.894976 +2045,0.909312 +4093,1.15814 +8189,1.08646 +16381,1.11104 +32765,1.55341 +65533,2.00499 +131069,3.03821 +262141,5.22035 +524285,8.64051 +1048573,15.9754 +2097149,30.079 +4194301,60.3351 +8388605,116.143 +16777213,231.477 +33554429,473.144 +67108861,938.436 +134217725,1877.45 +268435453,3755.25 +13,1.23802 +29,1.09261 +61,0.845824 +125,0.831488 +253,0.97792 +509,0.928768 +1021,1.15814 +2045,1.87597 +4093,1.21958 +8189,1.39674 +16381,1.21242 +32765,1.4633 +65533,1.83603 +131069,2.90406 +262141,5.05754 +524285,8.55654 +1048573,16.1167 +2097149,31.3733 +4194301,58.8882 +8388605,115.895 +16777213,230.788 +33554429,463.507 +67108861,943.489 +134217725,1870.23 +268435453,3728.42 +13,0.776192 +29,0.919552 +61,0.796672 +125,1.1776 +253,1.08749 +509,0.92672 +1021,0.909312 +2045,1.03117 +4093,1.50528 +8189,1.29638 +16381,1.29741 +32765,1.72134 +65533,1.92819 +131069,3.0976 +262141,5.21728 +524285,8.76544 +1048573,15.5351 +2097149,29.9151 +4194301,57.47 +8388605,113.016 +16777213,235.913 +33554429,473.309 +67108861,935.351 +134217725,1881.01 +268435453,3737.66 +13,0.891904 +29,0.934912 +61,1.06086 +125,0.925696 +253,0.86528 +509,0.949248 +1021,0.986112 +2045,0.959488 +4093,0.958464 +8189,1.34554 +16381,1.26157 +32765,1.47558 +65533,1.88723 +131069,2.87334 +262141,5.62176 +524285,9.41773 +1048573,15.743 +2097149,30.5572 +4194301,57.8499 +8388605,114.144 +16777213,232.287 +33554429,474.592 +67108861,946.349 +134217725,1884.24 +268435453,3756.38 +13,1.28 +29,0.738304 +61,0.817152 +125,0.817152 +253,1.18477 +509,0.93696 +1021,0.776192 +2045,1.01683 +4093,0.939008 +8189,1.72544 +16381,1.13971 +32765,1.48582 +65533,1.78074 +131069,3.45088 +262141,5.05446 +524285,8.97024 +1048573,16.1198 +2097149,31.2955 +4194301,59.9153 +8388605,114.73 +16777213,231.06 +33554429,467.247 +67108861,940.649 +134217725,1878.95 +268435453,3758.43 +13,0.797696 +29,0.98304 +61,0.874496 +125,0.924672 +253,0.96256 +509,0.786432 +1021,0.93184 +2045,1.03424 +4093,1.05062 +8189,1.05677 +16381,1.59539 +32765,1.62611 +65533,2.10534 +131069,2.88666 +262141,5.13741 +524285,8.84224 +1048573,16.2724 +2097149,30.7732 +4194301,57.984 +8388605,114.205 +16777213,229.613 +33554429,464.928 +67108861,939.014 +134217725,1876.11 +268435453,3738.1 +13,0.897024 +29,0.820224 +61,0.694272 +125,0.795648 +253,0.900096 +509,1.08749 +1021,0.959488 +2045,1.152 +4093,1.01478 +8189,0.992256 +16381,1.21446 +32765,1.39264 +65533,1.89235 +131069,3.10374 +262141,5.57978 +524285,8.96307 +1048573,15.7573 +2097149,31.273 +4194301,58.5482 +8388605,113.693 +16777213,235.191 +33554429,481.105 +67108861,948.238 +134217725,1887.07 +268435453,3737.81 +13,0.838656 +29,0.673792 +61,0.862208 +125,0.857088 +253,0.791552 +509,0.81408 +1021,1.1223 +2045,0.948224 +4093,1.08646 +8189,1.15405 +16381,1.3097 +32765,1.77357 +65533,1.85037 +131069,2.94707 +262141,4.87526 +524285,9.96352 +1048573,15.87 +2097149,30.3124 +4194301,58.8329 +8388605,117.523 +16777213,231.043 +33554429,469.723 +67108861,940.374 +134217725,1871.32 +268435453,3766.83 +13,0.725984 +29,0.709632 +61,0.765952 +125,0.708608 +253,0.714752 +509,0.812032 +1021,0.85504 +2045,0.816128 +4093,0.959488 +8189,0.994304 +16381,2.61632 +32765,1.3097 +65533,1.7623 +131069,2.90099 +262141,5.03091 +524285,9.63789 +1048573,16.8223 +2097149,30.1056 +4194301,58.2277 +8388605,116.815 +16777213,233.289 +33554429,467.547 +67108861,936.168 +134217725,1867.27 +268435453,3736.88 +13,0.87552 +29,1.22163 +61,0.68608 +125,1.05779 +253,0.748544 +509,1.03526 +1021,0.821248 +2045,0.85504 +4093,0.956416 +8189,1.00045 +16381,1.24621 +32765,1.28102 +65533,1.70291 +131069,2.70848 +262141,4.81178 +524285,8.58214 +1048573,16.4096 +2097149,30.1353 +4194301,57.5836 +8388605,115.103 +16777213,233.058 +33554429,460.424 +67108861,939.165 +134217725,1870.61 +268435453,3748.04 +13,1.94867 +29,0.94208 +61,0.71168 +125,0.71168 +253,0.9216 +509,0.93696 +1021,0.826368 +2045,0.831488 +4093,0.858112 +8189,0.986112 +16381,2.01523 +32765,1.37011 +65533,1.93946 +131069,2.87949 +262141,5.29306 +524285,8.5801 +1048573,16.0164 +2097149,29.2864 +4194301,57.001 +8388605,115.517 +16777213,233.873 +33554429,470.657 +67108861,937.622 +134217725,1884.18 +268435453,3727.44 +13,0.683008 +29,0.719872 +61,0.78848 +125,0.713728 +253,0.764928 +509,0.815104 +1021,0.86016 +2045,0.841728 +4093,1.62099 +8189,0.907264 +16381,1.07725 +32765,1.38035 +65533,2.13811 +131069,2.92762 +262141,5.00531 +524285,8.92416 +1048573,15.8505 +2097149,29.6489 +4194301,58.0035 +8388605,115.069 +16777213,233.307 +33554429,473.661 +67108861,944.09 +134217725,1883.21 +268435453,3801.62 +13,0.900096 +29,0.925696 +61,0.888832 +125,0.915456 +253,1.03117 +509,0.748544 +1021,0.873472 +2045,0.81408 +4093,0.891904 +8189,1.0752 +16381,1.1223 +32765,2.31014 +65533,1.8688 +131069,2.76685 +262141,5.39341 +524285,8.72243 +1048573,15.9867 +2097149,30.0155 +4194301,58.7602 +8388605,116.393 +16777213,230.669 +33554429,467.976 +67108861,935.884 +134217725,1883.63 +268435453,3750.19 +13,1.68243 +29,0.96768 +61,0.907264 +125,0.869376 +253,1.19706 +509,0.748544 +1021,0.763904 +2045,0.927744 +4093,0.909312 +8189,0.985088 +16381,1.40083 +32765,1.32403 +65533,1.76947 +131069,2.73408 +262141,5.59718 +524285,8.55347 +1048573,15.7706 +2097149,31.0876 +4194301,58.2717 +8388605,116.922 +16777213,231.651 +33554429,466.146 +67108861,935.914 +134217725,1874.47 +268435453,3751.9 +13,0.854016 +29,1.35373 +61,0.922624 +125,1.21958 +253,0.884736 +509,0.922624 +1021,0.765952 +2045,0.812032 +4093,0.857088 +8189,0.970752 +16381,1.3097 +32765,1.37728 +65533,1.9456 +131069,3.05766 +262141,4.78618 +524285,8.7767 +1048573,15.8945 +2097149,29.9407 +4194301,58.6332 +8388605,115.552 +16777213,234.961 +33554429,472.043 +67108861,939.341 +134217725,1886.4 +268435453,3744.48 +13,0.795648 +29,0.951296 +61,1.29229 +125,0.923648 +253,1.34144 +509,0.766976 +1021,0.77824 +2045,0.820224 +4093,0.902144 +8189,1.1008 +16381,1.42848 +32765,1.37523 +65533,2.46272 +131069,2.75661 +262141,5.4999 +524285,8.51661 +1048573,16.1321 +2097149,29.7994 +4194301,57.9308 +8388605,113.31 +16777213,238.761 +33554429,472.637 +67108861,937.264 +134217725,1909.09 +268435453,3786.6 +13,0.928768 +29,0.909312 +61,0.83968 +125,0.929792 +253,0.768 +509,0.805888 +1021,1.33325 +2045,2.21594 +4093,1.22675 +8189,0.971776 +16381,1.18374 +32765,1.64352 +65533,2.32755 +131069,2.75661 +262141,5.78867 +524285,8.51149 +1048573,16.0328 +2097149,29.9489 +4194301,61.0775 +8388605,118.923 +16777213,230.376 +33554429,474.202 +67108861,935.747 +134217725,1877.25 +268435453,3747.93 +13,0.961536 +29,0.924672 +61,0.846848 +125,0.90112 +253,1.08339 +509,0.984064 +1021,0.914432 +2045,1.55853 +4093,1.06803 +8189,1.10285 +16381,1.2032 +32765,1.4039 +65533,1.91898 +131069,2.86413 +262141,5.23878 +524285,8.84224 +1048573,15.7174 +2097149,30.2346 +4194301,58.1427 +8388605,116.161 +16777213,229.472 +33554429,468.043 +67108861,933.594 +134217725,1861.28 +268435453,3731.72 +13,0.826368 +29,1.11206 +61,1.11718 +125,0.92672 +253,0.724992 +509,0.85504 +1021,0.772096 +2045,1.57184 +4093,0.8448 +8189,0.944128 +16381,1.16019 +32765,1.31174 +65533,2.20365 +131069,3.29728 +262141,5.09542 +524285,8.88218 +1048573,16.4639 +2097149,29.7574 +4194301,59.4371 +8388605,118.179 +16777213,235.738 +33554429,469.574 +67108861,945.937 diff --git a/Project2-Stream-Compaction/data/Stream_compaction_data/data_nonpow2/shared_mem.csv b/Project2-Stream-Compaction/data/Stream_compaction_data/data_nonpow2/shared_mem.csv new file mode 100644 index 0000000..0edeef0 --- /dev/null +++ b/Project2-Stream-Compaction/data/Stream_compaction_data/data_nonpow2/shared_mem.csv @@ -0,0 +1,923 @@ +13,0.982016 +29,0.79872 +61,0.95024 +125,0.985088 +253,0.710656 +509,0.703456 +1021,0.80384 +2045,1.07626 +4093,1.17658 +8189,0.957472 +16381,0.969728 +32765,1.13869 +65533,2.29171 +131069,3.59322 +262141,5.47021 +524285,10.4837 +1048573,16.6062 +2097149,31.7583 +4194301,57.0798 +8388605,112.317 +16777213,222.278 +33554429,442.609 +67108861,891.446 +134217725,1777.51 +268435453,3550.8 +13,0.827392 +29,1.09875 +61,0.950272 +125,0.891904 +253,1.01478 +509,1.024 +1021,0.922624 +2045,1.03117 +4093,0.95232 +8189,1.01581 +16381,1.36704 +32765,1.38342 +65533,2.27021 +131069,3.84307 +262141,6.37338 +524285,9.08288 +1048573,16.3062 +2097149,29.5936 +4194301,55.934 +8388605,110.674 +16777213,219.608 +33554429,441.127 +67108861,887.805 +134217725,1765.57 +268435453,3558.83 +13,1.02093 +29,0.932864 +61,0.868352 +125,1.08749 +253,0.949248 +509,1.33837 +1021,0.866304 +2045,0.9472 +4093,1.12742 +8189,0.961536 +16381,1.23494 +32765,1.44384 +65533,3.52563 +131069,3.92499 +262141,5.89312 +524285,9.06342 +1048573,16.3871 +2097149,29.7615 +4194301,57.5212 +8388605,110.313 +16777213,221.084 +33554429,442.849 +67108861,885.734 +134217725,1780.3 +268435453,3537.85 +13,0.79872 +29,0.749568 +61,0.932864 +125,1.70086 +253,1.06189 +509,0.785408 +1021,0.859136 +2045,1.3312 +4093,1.01376 +8189,0.959488 +16381,1.18682 +32765,1.41005 +65533,2.31117 +131069,3.69664 +262141,5.41798 +524285,9.63277 +1048573,15.8065 +2097149,30.7958 +4194301,57.1156 +8388605,111.188 +16777213,221.179 +33554429,441.297 +67108861,884.221 +134217725,1781.25 +268435453,3549.53 +13,0.831488 +29,0.780288 +61,1.65581 +125,1.21958 +253,0.93184 +509,0.990208 +1021,0.980992 +2045,0.815104 +4093,1.09875 +8189,1.01069 +16381,0.987136 +32765,1.28717 +65533,2.98598 +131069,3.48979 +262141,6.62118 +524285,8.95488 +1048573,16.554 +2097149,29.993 +4194301,57.1566 +8388605,110.073 +16777213,221.038 +33554429,439.737 +67108861,886.819 +134217725,1779.53 +268435453,3537.69 +13,1.09363 +29,1.50938 +61,0.90624 +125,0.984064 +253,1.04243 +509,1.05882 +1021,0.876544 +2045,0.846848 +4093,0.934912 +8189,1.28922 +16381,1.20934 +32765,1.35885 +65533,2.56 +131069,3.61677 +262141,5.72518 +524285,9.69318 +1048573,15.4931 +2097149,29.4646 +4194301,56.2156 +8388605,109.804 +16777213,222.023 +33554429,440.998 +67108861,883.885 +134217725,1775.82 +268435453,3556.52 +13,0.949248 +29,0.894976 +61,0.925696 +125,0.915456 +253,1.38854 +509,0.915456 +1021,1.38035 +2045,0.806912 +4093,1.1049 +8189,1.74592 +16381,1.27898 +32765,2.02957 +65533,2.5047 +131069,3.57786 +262141,5.48147 +524285,9.07878 +1048573,16.0676 +2097149,29.7492 +4194301,57.0675 +8388605,109.908 +16777213,220.451 +33554429,442.93 +67108861,894.549 +134217725,1778.32 +268435453,3546.78 +13,1.03629 +29,1.08442 +61,0.992256 +125,0.91136 +253,1.13152 +509,1.04858 +1021,1.44282 +2045,1.08237 +4093,0.960512 +8189,1.06701 +16381,1.56262 +32765,1.17453 +65533,2.89075 +131069,4.00589 +262141,6.30477 +524285,9.58157 +1048573,16.4864 +2097149,29.3243 +4194301,56.2371 +8388605,108.79 +16777213,219.959 +33554429,443.056 +67108861,886.519 +134217725,1772.5 +268435453,3544.63 +13,0.953344 +29,0.963584 +61,1.93741 +125,0.992256 +253,0.90624 +509,1.06701 +1021,0.897024 +2045,0.984064 +4093,1.85037 +8189,1.00454 +16381,1.40288 +32765,1.34656 +65533,2.42586 +131069,3.57171 +262141,6.40102 +524285,8.86272 +1048573,15.7133 +2097149,30.933 +4194301,55.4281 +8388605,109.151 +16777213,220.033 +33554429,445.964 +67108861,895.004 +134217725,1771.8 +268435453,3553.83 +13,0.996352 +29,0.909312 +61,0.842752 +125,1.00454 +253,1.89747 +509,1.12128 +1021,1.11309 +2045,1.0537 +4093,0.984064 +8189,1.37011 +16381,1.2247 +32765,1.46227 +65533,2.6153 +131069,4.08576 +262141,5.92794 +524285,9.12282 +1048573,16.9472 +2097149,30.0411 +4194301,57.557 +8388605,111.113 +16777213,219.054 +33554429,441.377 +67108861,887.659 +134217725,1787.83 +268435453,3550.06 +13,1.15302 +29,1.00659 +61,1.00864 +125,1.06598 +253,0.932864 +509,1.01171 +1021,0.973824 +2045,1.0711 +4093,1.13971 +8189,1.25133 +16381,1.05472 +32765,1.41926 +65533,2.30707 +131069,3.5584 +262141,5.48147 +524285,10.154 +1048573,16.9196 +2097149,29.0028 +4194301,55.9657 +8388605,110.839 +16777213,220.53 +33554429,441.847 +67108861,890.273 +134217725,1774.03 +268435453,3551.47 +13,1.04755 +29,0.864256 +61,0.88576 +125,0.9728 +253,0.979968 +509,1.34246 +1021,1.08134 +2045,0.920576 +4093,1.01376 +8189,1.19706 +16381,1.01274 +32765,1.34758 +65533,3.45395 +131069,3.82362 +262141,6.47578 +524285,9.1392 +1048573,16.4639 +2097149,30.1527 +4194301,55.2059 +8388605,110.546 +16777213,221.213 +33554429,441.612 +67108861,884.788 +134217725,1770.81 +268435453,3560.7 +13,1.16634 +29,0.859136 +61,0.835584 +125,1.34861 +253,0.96768 +509,0.969728 +1021,1.31174 +2045,1.03014 +4093,1.07725 +8189,0.95232 +16381,1.17248 +32765,1.48173 +65533,2.58355 +131069,3.62598 +262141,5.84192 +524285,9.50989 +1048573,15.829 +2097149,28.8655 +4194301,57.4966 +8388605,108.911 +16777213,219.811 +33554429,443.17 +67108861,889.484 +134217725,1770.87 +268435453,3555.31 +13,1.17555 +29,0.907264 +61,0.892928 +125,0.915456 +253,0.764928 +509,1.06701 +1021,0.919552 +2045,1.04448 +4093,1.05677 +8189,0.987136 +16381,1.72339 +32765,1.46022 +65533,2.74125 +131069,3.74682 +262141,6.42662 +524285,8.7255 +1048573,15.8484 +2097149,30.2971 +4194301,56.6732 +8388605,110.047 +16777213,221.303 +33554429,448.044 +67108861,889.979 +134217725,1785.41 +268435453,3548.7 +13,0.963584 +29,1.00557 +61,0.979968 +125,0.909312 +253,1.01069 +509,1.18682 +1021,1.28 +2045,1.12128 +4093,1.00045 +8189,1.46227 +16381,1.14483 +32765,1.30662 +65533,2.81805 +131069,3.8656 +262141,5.68934 +524285,10.1458 +1048573,16.4721 +2097149,29.0621 +4194301,56.7009 +8388605,111.575 +16777213,222.365 +33554429,446.276 +67108861,892.793 +134217725,1771.72 +268435453,3560.77 +13,0.774144 +29,0.83456 +61,1.13971 +125,1.22368 +253,0.809984 +509,0.893952 +1021,0.898048 +2045,1.3527 +4093,0.991232 +8189,0.879616 +16381,1.07315 +32765,1.1776 +65533,2.46886 +131069,3.28806 +262141,7.03078 +524285,9.53958 +1048573,16.0625 +2097149,30.2961 +4194301,56.6446 +8388605,109.562 +16777213,221.611 +33554429,444.448 +67108861,885.414 +134217725,1774.47 +268435453,3560.29 +13,1.0752 +29,0.939008 +61,1.19398 +125,1.07622 +253,0.805888 +509,0.775168 +1021,0.782336 +2045,1.39981 +4093,0.817152 +8189,0.869376 +16381,1.35373 +32765,2.04083 +65533,2.99213 +131069,3.06381 +262141,5.45587 +524285,9.28973 +1048573,16.7844 +2097149,29.2751 +4194301,57.1904 +8388605,111.161 +16777213,219.809 +33554429,441.022 +67108861,886.208 +134217725,1791 +268435453,3553.78 +13,1.06189 +29,0.940032 +61,0.92672 +125,1.08339 +253,1.05165 +509,0.9472 +1021,1.28614 +2045,0.935936 +4093,0.958464 +8189,0.98816 +16381,1.21242 +32765,1.42029 +65533,3.0433 +131069,3.59526 +262141,6.09792 +524285,9.31328 +1048573,16.386 +2097149,29.1768 +4194301,57.8365 +8388605,110.002 +16777213,220.102 +33554429,446.781 +67108861,883.085 +134217725,1785.17 +268435453,3544.02 +13,1.23904 +29,0.948224 +61,1.19706 +125,0.966656 +253,0.915456 +509,0.94208 +1021,0.924672 +2045,0.888832 +4093,1.2544 +8189,1.03117 +16381,1.21651 +32765,1.43462 +65533,2.88051 +131069,3.59014 +262141,5.64122 +524285,9.70342 +1048573,17.1203 +2097149,29.9151 +4194301,59.6951 +8388605,110.109 +16777213,220.676 +33554429,442.865 +67108861,887.324 +134217725,1775.67 +268435453,3532.78 +13,0.987136 +29,1.01478 +61,0.943104 +125,0.945152 +253,0.915456 +509,0.882688 +1021,1.01683 +2045,1.18477 +4093,1.1735 +8189,1.06496 +16381,1.51962 +32765,1.40288 +65533,2.54362 +131069,3.47238 +262141,5.4231 +524285,9.55898 +1048573,15.913 +2097149,30.2264 +4194301,56.7675 +8388605,109.728 +16777213,221.885 +33554429,445 +67108861,886.282 +134217725,1777.8 +268435453,3548.23 +13,0.93184 +29,1.22061 +61,0.93184 +125,1.2247 +253,0.98816 +509,1.06496 +1021,0.982016 +2045,1.0025 +4093,0.932864 +8189,1.12333 +16381,1.13869 +32765,1.61075 +65533,2.51187 +131069,4.00589 +262141,5.87571 +524285,9.0368 +1048573,16.1311 +2097149,29.014 +4194301,55.7701 +8388605,108.847 +16777213,225.118 +33554429,441.043 +67108861,887.743 +134217725,1773.81 +268435453,3558.55 +13,1.06291 +29,0.954368 +61,0.90624 +125,1.2503 +253,1.1561 +509,0.9216 +1021,1.1264 +2045,1.14381 +4093,0.997376 +8189,0.978944 +16381,1.52166 +32765,1.88723 +65533,2.74842 +131069,3.96698 +262141,5.9607 +524285,9.30099 +1048573,17.7869 +2097149,29.013 +4194301,58.0485 +8388605,109.877 +16777213,221.382 +33554429,443.543 +67108861,896.618 +134217725,1780.59 +268435453,3551.27 +13,0.932864 +29,0.996352 +61,0.959488 +125,1.03117 +253,1.02502 +509,1.24621 +1021,1.00147 +2045,1.35066 +4093,1.04346 +8189,1.25747 +16381,1.53907 +32765,1.4121 +65533,2.68288 +131069,3.45907 +262141,6.17984 +524285,8.84838 +1048573,15.9263 +2097149,30.3462 +4194301,56.2708 +8388605,112.66 +16777213,219.867 +33554429,440.759 +67108861,886.448 +134217725,1777.44 +268435453,3547.68 +13,0.9472 +29,1.04755 +61,1.00966 +125,0.928768 +253,1.28307 +509,1.06394 +1021,1.0281 +2045,1.09875 +4093,1.1049 +8189,1.13869 +16381,1.36397 +32765,1.36294 +65533,2.66035 +131069,3.90144 +262141,6.1184 +524285,9.41875 +1048573,16.2468 +2097149,29.3663 +4194301,56.6968 +8388605,110.132 +16777213,224.373 +33554429,442.492 +67108861,887.564 +134217725,1782.23 +268435453,3543.88 +13,1.05574 +29,0.963584 +61,0.96256 +125,0.902144 +253,1.05882 +509,0.994304 +1021,1.07622 +2045,1.06701 +4093,1.48992 +8189,1.01786 +16381,1.29536 +32765,1.34042 +65533,2.60608 +131069,3.83078 +262141,6.36006 +524285,9.24672 +1048573,15.4501 +2097149,29.2762 +4194301,56.3067 +8388605,109.001 +16777213,221.843 +33554429,443.589 +67108861,887.356 +134217725,1785.13 +268435453,3550.5 +13,0.944128 +29,0.973824 +61,0.908288 +125,0.932864 +253,0.804864 +509,1.04346 +1021,0.92672 +2045,1.2759 +4093,0.986112 +8189,1.21958 +16381,1.38547 +32765,1.64966 +65533,2.65626 +131069,3.59526 +262141,5.92384 +524285,9.25798 +1048573,15.9068 +2097149,29.1226 +4194301,56.5955 +8388605,109.101 +16777213,221.896 +33554429,441.127 +67108861,888.838 +134217725,1784.57 +268435453,3547.24 +13,0.835584 +29,0.780288 +61,1.21139 +125,1.0281 +253,0.770048 +509,0.945152 +1021,0.959488 +2045,0.795648 +4093,0.90112 +8189,0.859136 +16381,0.996352 +32765,1.18989 +65533,2.43917 +131069,4.1431 +262141,5.74362 +524285,9.4761 +1048573,16.5908 +2097149,30.081 +4194301,56.5125 +8388605,111.895 +16777213,222.226 +33554429,447.503 +67108861,884.602 +134217725,1779.62 +268435453,3540.29 +13,1.19296 +29,1.00966 +61,1.27181 +125,0.821248 +253,0.770048 +509,0.821248 +1021,0.842752 +2045,0.935936 +4093,0.859136 +8189,0.857088 +16381,1.13152 +32765,1.4889 +65533,2.28864 +131069,3.40787 +262141,5.30739 +524285,9.50784 +1048573,16.641 +2097149,29.6479 +4194301,58.07 +8388605,109.951 +16777213,223.305 +33554429,448.103 +67108861,887.312 +134217725,1774.54 +268435453,3547.29 +13,1.03014 +29,1.05984 +61,0.781312 +125,0.811008 +253,0.78848 +509,1.43258 +1021,0.777216 +2045,1.23494 +4093,1.79814 +8189,0.915456 +16381,1.66298 +32765,1.1776 +65533,2.70438 +131069,3.79699 +262141,5.56544 +524285,9.01427 +1048573,17.6292 +2097149,29.9397 +4194301,56.0415 +8388605,109.002 +16777213,220.262 +33554429,443.476 +67108861,887.855 +134217725,1774.77 +268435453,3552.92 +13,0.818176 +29,0.801792 +61,0.78336 +125,0.830464 +253,0.919552 +509,0.770048 +1021,0.848896 +2045,0.796672 +4093,1.12128 +8189,0.845824 +16381,1.06189 +32765,1.33837 +65533,2.36851 +131069,3.36282 +262141,5.77434 +524285,9.26413 +1048573,15.3078 +2097149,29.7779 +4194301,57.6788 +8388605,108.305 +16777213,221.978 +33554429,441.338 +67108861,893.174 +134217725,1774.54 +268435453,3552.5 +13,0.915456 +29,1.03424 +61,1.73466 +125,0.950272 +253,1.08339 +509,0.771072 +1021,0.796672 +2045,1.74797 +4093,0.811008 +8189,0.8704 +16381,1.03629 +32765,2.0736 +65533,2.35725 +131069,3.76218 +262141,5.57978 +524285,8.54426 +1048573,17.0107 +2097149,29.3806 +4194301,57.601 +8388605,109.761 +16777213,222.404 +33554429,444.596 +67108861,891.007 +134217725,1781.86 +268435453,3542.43 +13,0.964608 +29,1.03731 +61,1.15507 +125,1.05472 +253,1.02195 +509,0.766976 +1021,1.18477 +2045,1.31584 +4093,0.83456 +8189,0.963584 +16381,0.982016 +32765,1.27386 +65533,3.10989 +131069,3.64749 +262141,5.54701 +524285,9.1689 +1048573,15.9662 +2097149,29.4697 +4194301,56.5053 +8388605,111.162 +16777213,221.369 +33554429,442.675 +67108861,889.895 +134217725,1778.09 +268435453,3552.91 +13,1.08749 +29,1.05165 +61,1.66912 +125,1.0711 +253,0.772096 +509,1.02707 +1021,0.828416 +2045,0.869376 +4093,1.1561 +8189,0.867328 +16381,1.08442 +32765,1.1817 +65533,2.62963 +131069,3.47443 +262141,5.52038 +524285,9.09824 +1048573,16.5888 +2097149,29.4605 +4194301,56.3507 +8388605,111.137 +16777213,220.996 +33554429,442.92 +67108861,889.729 +134217725,1766.1 +268435453,3552.7 +13,0.914432 +29,0.991232 +61,1.02707 +125,1.09773 +253,0.77824 +509,0.77824 +1021,0.797696 +2045,0.805888 +4093,0.825344 +8189,1.56979 +16381,0.99328 +32765,1.17555 +65533,2.52416 +131069,3.60237 +262141,5.61766 +524285,8.53094 +1048573,17.4408 +2097149,29.6223 +4194301,57.6502 +8388605,110.567 +16777213,221.463 +33554429,441.19 +67108861,885.204 +134217725,1850.11 +268435453,4027.12 +13,0.924672 +29,1.03834 +61,1.24211 +125,1.0793 +253,1.06189 +509,0.817152 +1021,0.825344 +2045,0.811008 +4093,0.876544 +8189,1.31686 +16381,2.05414 +32765,1.28922 +65533,3.17747 +131069,4.09293 +262141,5.90438 +524285,8.77568 +1048573,15.8894 +2097149,29.5158 +4194301,57.8949 +8388605,110.122 +16777213,246.015 +33554429,448.822 +67108861,891.463 +134217725,1776.26 +268435453,3537.68 +13,1.08237 +29,1.07622 +61,1.00966 +125,0.966656 +253,1.03322 +509,0.818176 +1021,0.996352 +2045,0.861184 +4093,1.39469 +8189,1.38138 +16381,0.98816 +32765,1.66605 +65533,2.3808 +131069,3.8441 +262141,5.52346 +524285,8.3927 +1048573,16.5591 +2097149,29.9377 +4194301,56.107 +8388605,109.827 +16777213,224.539 +33554429,442.075 +67108861,884.767 +134217725,1785.53 +268435453,3530.4 +13,1.06598 +29,1.00864 +61,1.01478 +125,0.946176 +253,0.78336 +509,1.27488 +1021,0.78336 +2045,0.792576 +4093,0.933888 +8189,1.31994 +16381,1.42336 +32765,1.31994 +65533,2.75149 +131069,3.58707 +262141,5.79379 +524285,9.51706 +1048573,16.213 +2097149,30.4998 +4194301,56.702 +8388605,112.76 +16777213,219.565 +33554429,445.246 +67108861,887.337 diff --git a/Project2-Stream-Compaction/data/Stream_compaction_data/data_pow2/cpu_with.csv b/Project2-Stream-Compaction/data/Stream_compaction_data/data_pow2/cpu_with.csv new file mode 100644 index 0000000..3c1864e --- /dev/null +++ b/Project2-Stream-Compaction/data/Stream_compaction_data/data_pow2/cpu_with.csv @@ -0,0 +1,1371 @@ +16,0.0002 +32,0.0003 +64,0.0004 +128,0.0006 +256,0.0011 +512,0.0016 +1024,0.0041 +2048,0.006 +4096,0.0144 +8192,0.0307 +16384,0.0459 +32768,0.1082 +65536,0.1872 +131072,0.5142 +262144,0.9013 +524288,1.5088 +1048576,2.9924 +2097152,5.816 +4194304,10.9035 +8388608,22.5186 +16777216,46.321 +33554432,91.0134 +67108864,178.824 +134217728,346.269 +268435456,671.694 +16,0.0002 +32,0.0003 +64,0.0004 +128,0.0005 +256,0.0011 +512,0.0016 +1024,0.0033 +2048,0.006 +4096,0.0113 +8192,0.0227 +16384,0.0508 +32768,0.1259 +65536,0.1813 +131072,0.3741 +262144,1.0571 +524288,1.4961 +1048576,2.968 +2097152,5.7434 +4194304,13.818 +8388608,25.2703 +16777216,44.5829 +33554432,86.1327 +67108864,177.227 +134217728,350.886 +268435456,693.268 +16,0.0002 +32,0.0002 +64,0.0003 +128,0.0005 +256,0.0011 +512,0.0016 +1024,0.0032 +2048,0.0064 +4096,0.0124 +8192,0.0221 +16384,0.0568 +32768,0.0939 +65536,0.1838 +131072,0.3942 +262144,0.8785 +524288,1.503 +1048576,2.98 +2097152,5.7071 +4194304,11.1383 +8388608,23.5885 +16777216,43.1234 +33554432,86.9055 +67108864,174.449 +134217728,347.199 +268435456,675.506 +16,0.0001 +32,0.0003 +64,0.0006 +128,0.0006 +256,0.0011 +512,0.0016 +1024,0.0033 +2048,0.0062 +4096,0.0119 +8192,0.0229 +16384,0.0482 +32768,0.09 +65536,0.1951 +131072,0.4195 +262144,0.9126 +524288,1.483 +1048576,2.9762 +2097152,5.8789 +4194304,11.7911 +8388608,24.2535 +16777216,44.2609 +33554432,87.2814 +67108864,166.429 +134217728,348.521 +268435456,712.412 +16,0.0002 +32,0.0003 +64,0.0004 +128,0.0005 +256,0.001 +512,0.0017 +1024,0.0029 +2048,0.0058 +4096,0.0111 +8192,0.0417 +16384,0.0552 +32768,0.0938 +65536,0.1868 +131072,0.4572 +262144,0.8563 +524288,1.5424 +1048576,4.1651 +2097152,5.2307 +4194304,11.7205 +8388608,22.9635 +16777216,45.1866 +33554432,89.9113 +67108864,177.769 +134217728,335.807 +268435456,674.811 +16,0.0003 +32,0.0003 +64,0.0003 +128,0.0005 +256,0.0025 +512,0.0021 +1024,0.0035 +2048,0.0062 +4096,0.0123 +8192,0.0368 +16384,0.0459 +32768,0.1091 +65536,0.2641 +131072,0.4177 +262144,1.1602 +524288,1.5931 +1048576,2.9394 +2097152,5.746 +4194304,10.8921 +8388608,23.6599 +16777216,48.126 +33554432,90.3424 +67108864,175.198 +134217728,381.24 +268435456,708.391 +16,0.0002 +32,0.0004 +64,0.0004 +128,0.0005 +256,0.001 +512,0.0018 +1024,0.0038 +2048,0.0065 +4096,0.0129 +8192,0.0256 +16384,0.0838 +32768,0.1444 +65536,0.2161 +131072,0.4425 +262144,0.8244 +524288,1.4242 +1048576,2.7981 +2097152,6.0586 +4194304,11.6898 +8388608,23.2416 +16777216,46.0699 +33554432,88.4112 +67108864,176.887 +134217728,349.369 +268435456,696.806 +16,0.0002 +32,0.0002 +64,0.0004 +128,0.0005 +256,0.0011 +512,0.002 +1024,0.003 +2048,0.0059 +4096,0.0118 +8192,0.0533 +16384,0.047 +32768,0.0927 +65536,0.1969 +131072,0.4237 +262144,0.8665 +524288,1.5584 +1048576,2.9302 +2097152,5.9883 +4194304,13.0451 +8388608,22.297 +16777216,44.3484 +33554432,91.6488 +67108864,175.382 +134217728,351.256 +268435456,694.578 +16,0.0002 +32,0.0002 +64,0.0004 +128,0.0005 +256,0.0011 +512,0.0017 +1024,0.0033 +2048,0.0061 +4096,0.0116 +8192,0.023 +16384,0.0456 +32768,0.1126 +65536,0.205 +131072,0.3753 +262144,0.7224 +524288,1.7823 +1048576,2.9014 +2097152,7.2446 +4194304,10.8564 +8388608,21.9505 +16777216,47.5296 +33554432,87.9637 +67108864,178.376 +134217728,343.863 +268435456,703.423 +16,0.0002 +32,0.0003 +64,0.0004 +128,0.0008 +256,0.001 +512,0.0017 +1024,0.0032 +2048,0.0067 +4096,0.0123 +8192,0.0235 +16384,0.0453 +32768,0.1109 +65536,0.2007 +131072,0.3747 +262144,0.8964 +524288,1.5468 +1048576,2.8933 +2097152,5.8858 +4194304,12.9874 +8388608,23.6447 +16777216,44.7818 +33554432,88.3879 +67108864,180.085 +134217728,348.425 +268435456,700.476 +16,0.0002 +32,0.0002 +64,0.0003 +128,0.0007 +256,0.0012 +512,0.0022 +1024,0.0037 +2048,0.0064 +4096,0.0125 +8192,0.0229 +16384,0.0435 +32768,0.1104 +65536,0.1865 +131072,0.4237 +262144,0.8171 +524288,1.5302 +1048576,2.9604 +2097152,5.8357 +4194304,12.4103 +8388608,22.3664 +16777216,45.1582 +33554432,92.7766 +67108864,174.739 +134217728,348.588 +268435456,695.344 +16,0.0002 +32,0.0003 +64,0.0002 +128,0.0005 +256,0.001 +512,0.0021 +1024,0.0034 +2048,0.0063 +4096,0.0115 +8192,0.023 +16384,0.0466 +32768,0.1089 +65536,0.2796 +131072,0.395 +262144,0.9396 +524288,1.5955 +1048576,2.917 +2097152,6.0113 +4194304,12.1766 +8388608,22.7108 +16777216,49.187 +33554432,88.9858 +67108864,177.91 +134217728,346.326 +268435456,696.252 +16,0.0002 +32,0.0003 +64,0.0006 +128,0.0007 +256,0.0011 +512,0.0016 +1024,0.0032 +2048,0.0061 +4096,0.0114 +8192,0.0275 +16384,0.0484 +32768,0.107 +65536,0.208 +131072,0.3855 +262144,0.9122 +524288,1.801 +1048576,2.9367 +2097152,5.9555 +4194304,12.2458 +8388608,28.0363 +16777216,45.99 +33554432,87.6313 +67108864,176.13 +134217728,352.201 +268435456,700.172 +16,0.0002 +32,0.0002 +64,0.0006 +128,0.0006 +256,0.001 +512,0.0016 +1024,0.0031 +2048,0.0073 +4096,0.012 +8192,0.0221 +16384,0.0452 +32768,0.1089 +65536,0.1863 +131072,0.3746 +262144,0.7351 +524288,1.4731 +1048576,3.0283 +2097152,5.9753 +4194304,11.596 +8388608,22.1651 +16777216,47.2775 +33554432,94.0061 +67108864,183.147 +134217728,362.039 +268435456,697.684 +16,0.0002 +32,0.0002 +64,0.0004 +128,0.0005 +256,0.001 +512,0.0019 +1024,0.003 +2048,0.006 +4096,0.0123 +8192,0.0234 +16384,0.0775 +32768,0.1184 +65536,0.1883 +131072,0.6683 +262144,1.7728 +524288,1.6209 +1048576,2.9858 +2097152,5.8178 +4194304,12.4518 +8388608,23.8922 +16777216,45.637 +33554432,92.2917 +67108864,177.181 +134217728,349.592 +268435456,707.379 +16,0.0002 +32,0.0002 +64,0.0004 +128,0.0006 +256,0.0011 +512,0.0018 +1024,0.0036 +2048,0.0068 +4096,0.0128 +8192,0.0248 +16384,0.048 +32768,0.0945 +65536,0.1913 +131072,0.4218 +262144,0.9208 +524288,1.5265 +1048576,2.8969 +2097152,5.957 +4194304,12.6147 +8388608,23.7434 +16777216,44.7254 +33554432,88.9881 +67108864,178.626 +134217728,347.977 +268435456,701.574 +16,0.0002 +32,0.0003 +64,0.0003 +128,0.0006 +256,0.0011 +512,0.0018 +1024,0.003 +2048,0.0064 +4096,0.0116 +8192,0.0368 +16384,0.0668 +32768,0.1427 +65536,0.1862 +131072,0.4602 +262144,0.9069 +524288,1.5036 +1048576,3.0211 +2097152,5.708 +4194304,11.0884 +8388608,21.9851 +16777216,44.78 +33554432,88.4944 +67108864,178.417 +134217728,353.235 +268435456,699.082 +16,0.0002 +32,0.0002 +64,0.0004 +128,0.0005 +256,0.001 +512,0.0017 +1024,0.0033 +2048,0.0058 +4096,0.0116 +8192,0.0235 +16384,0.0476 +32768,0.1085 +65536,0.193 +131072,0.4806 +262144,0.9809 +524288,1.5667 +1048576,3.0039 +2097152,5.8083 +4194304,12.0485 +8388608,22.6701 +16777216,45.4474 +33554432,91.052 +67108864,178.712 +134217728,357.396 +268435456,699.653 +16,0.0002 +32,0.0003 +64,0.0003 +128,0.0005 +256,0.0011 +512,0.0018 +1024,0.0032 +2048,0.0063 +4096,0.012 +8192,0.0224 +16384,0.0465 +32768,0.1316 +65536,0.1983 +131072,0.3877 +262144,0.838 +524288,1.6062 +1048576,3.1144 +2097152,5.752 +4194304,11.1527 +8388608,23.9699 +16777216,44.228 +33554432,91.6663 +67108864,180.94 +134217728,350.328 +268435456,707.733 +16,0.0001 +32,0.0003 +64,0.0005 +128,0.0006 +256,0.0011 +512,0.0017 +1024,0.0029 +2048,0.0059 +4096,0.0113 +8192,0.0247 +16384,0.0543 +32768,0.0955 +65536,0.2013 +131072,0.4526 +262144,0.8644 +524288,1.5878 +1048576,3.0084 +2097152,5.9891 +4194304,11.2654 +8388608,22.1302 +16777216,45.8212 +33554432,88.3417 +67108864,175.316 +134217728,355.763 +268435456,723.299 +16,0.0002 +32,0.0005 +64,0.0003 +128,0.0005 +256,0.001 +512,0.0019 +1024,0.0033 +2048,0.0068 +4096,0.0147 +8192,0.0227 +16384,0.0459 +32768,0.1201 +65536,0.1966 +131072,0.444 +262144,0.8497 +524288,1.8199 +1048576,2.9054 +2097152,5.8577 +4194304,11.323 +8388608,22.1448 +16777216,45.7832 +33554432,90.6043 +67108864,179.238 +134217728,350.342 +268435456,710.16 +16,0.0002 +32,0.0002 +64,0.0004 +128,0.0005 +256,0.0009 +512,0.0015 +1024,0.0032 +2048,0.0062 +4096,0.0118 +8192,0.0234 +16384,0.0545 +32768,0.1298 +65536,0.187 +131072,0.4208 +262144,0.7483 +524288,1.5977 +1048576,3.0086 +2097152,5.7725 +4194304,13.4253 +8388608,23.4173 +16777216,44.9282 +33554432,91.5471 +67108864,175.673 +134217728,352.734 +268435456,703.575 +16,0.0002 +32,0.0003 +64,0.0004 +128,0.0006 +256,0.0009 +512,0.0016 +1024,0.0029 +2048,0.0058 +4096,0.0129 +8192,0.042 +16384,0.0625 +32768,0.0971 +65536,0.2429 +131072,0.3626 +262144,0.8894 +524288,1.4458 +1048576,2.9906 +2097152,5.8632 +4194304,12.4781 +8388608,23.454 +16777216,43.6482 +33554432,92.4688 +67108864,177.671 +134217728,354.069 +268435456,696.738 +16,0.0002 +32,0.0002 +64,0.0004 +128,0.0007 +256,0.0009 +512,0.0019 +1024,0.0034 +2048,0.0067 +4096,0.0325 +8192,0.0252 +16384,0.0451 +32768,0.1094 +65536,0.1973 +131072,0.4048 +262144,0.8794 +524288,1.6905 +1048576,3.0138 +2097152,5.9683 +4194304,11.5458 +8388608,23.2905 +16777216,44.275 +33554432,91.0899 +67108864,179.702 +134217728,352.733 +268435456,701.803 +16,0.0002 +32,0.0003 +64,0.0005 +128,0.0006 +256,0.001 +512,0.0016 +1024,0.0032 +2048,0.0063 +4096,0.0128 +8192,0.0288 +16384,0.0464 +32768,0.0954 +65536,0.1998 +131072,0.3886 +262144,0.9152 +524288,1.6402 +1048576,2.9492 +2097152,6.0133 +4194304,11.6692 +8388608,24.0232 +16777216,44.8382 +33554432,90.7799 +67108864,177.88 +134217728,350.317 +268435456,697.939 +16,0.0002 +32,0.0003 +64,0.0004 +128,0.0005 +256,0.001 +512,0.0016 +1024,0.0031 +2048,0.0058 +4096,0.0308 +8192,0.0271 +16384,0.0595 +32768,0.103 +65536,0.24 +131072,0.3956 +262144,0.8842 +524288,1.7636 +1048576,3.0638 +2097152,5.6796 +4194304,12.6395 +8388608,23.1501 +16777216,45.4258 +33554432,88.7791 +67108864,175.437 +134217728,350.883 +268435456,704.486 +16,0.0002 +32,0.0002 +64,0.0003 +128,0.0006 +256,0.0012 +512,0.002 +1024,0.0032 +2048,0.006 +4096,0.0113 +8192,0.0233 +16384,0.0786 +32768,0.1649 +65536,0.2054 +131072,0.4954 +262144,0.8779 +524288,1.5678 +1048576,3.0435 +2097152,6.1005 +4194304,11.5524 +8388608,23.6811 +16777216,44.4962 +33554432,89.0159 +67108864,177.516 +134217728,347.737 +268435456,703.458 +16,0.0002 +32,0.0005 +64,0.0004 +128,0.0005 +256,0.0011 +512,0.0015 +1024,0.0033 +2048,0.0059 +4096,0.0118 +8192,0.0233 +16384,0.0471 +32768,0.144 +65536,0.185 +131072,0.3751 +262144,0.8304 +524288,2.0945 +1048576,3.0591 +2097152,6.2642 +4194304,11.237 +8388608,23.7597 +16777216,49.4265 +33554432,88.7111 +67108864,178.444 +134217728,350.311 +268435456,705.273 +16,0.0001 +32,0.0002 +64,0.0003 +128,0.0006 +256,0.0011 +512,0.0018 +1024,0.0032 +2048,0.006 +4096,0.0123 +8192,0.0244 +16384,0.0466 +32768,0.1048 +65536,0.2051 +131072,0.3807 +262144,0.8745 +524288,1.5778 +1048576,2.9417 +2097152,7.3399 +4194304,11.5123 +8388608,24.5728 +16777216,49.3065 +33554432,88.0146 +67108864,179.73 +134217728,348.992 +268435456,697.639 +16,0.0001 +32,0.0003 +64,0.0006 +128,0.0005 +256,0.0011 +512,0.0016 +1024,0.0036 +2048,0.0065 +4096,0.0123 +8192,0.0286 +16384,0.047 +32768,0.1097 +65536,0.2003 +131072,0.3921 +262144,0.7683 +524288,1.6024 +1048576,3.0138 +2097152,5.833 +4194304,11.4598 +8388608,22.8168 +16777216,46.3738 +33554432,89.4309 +67108864,175.108 +134217728,353.938 +268435456,702.573 +16,0.0002 +32,0.0001 +64,0.0003 +128,0.0005 +256,0.0011 +512,0.0016 +1024,0.0035 +2048,0.0062 +4096,0.0148 +8192,0.0267 +16384,0.0469 +32768,0.1104 +65536,0.2321 +131072,0.4252 +262144,0.8217 +524288,1.6603 +1048576,3.0548 +2097152,5.7139 +4194304,11.2261 +8388608,24.4349 +16777216,45.1457 +33554432,90.788 +67108864,175.276 +134217728,349.828 +268435456,707.316 +16,0.0003 +32,0.0002 +64,0.0003 +128,0.0005 +256,0.0011 +512,0.0018 +1024,0.0029 +2048,0.0059 +4096,0.0116 +8192,0.0234 +16384,0.0448 +32768,0.0959 +65536,0.1872 +131072,0.3714 +262144,0.934 +524288,1.6955 +1048576,2.8847 +2097152,6.0394 +4194304,11.595 +8388608,24.0679 +16777216,44.6281 +33554432,90.0335 +67108864,176.738 +134217728,348.484 +268435456,698.513 +16,0.0002 +32,0.0003 +64,0.0004 +128,0.0007 +256,0.0011 +512,0.0018 +1024,0.0032 +2048,0.006 +4096,0.0117 +8192,0.0241 +16384,0.0473 +32768,0.1101 +65536,0.2222 +131072,0.3969 +262144,0.8708 +524288,1.7636 +1048576,2.9192 +2097152,5.9581 +4194304,12.5366 +8388608,24.7304 +16777216,47.0556 +33554432,88.3422 +67108864,178.015 +134217728,352.953 +268435456,703.679 +16,0.0002 +32,0.0006 +64,0.0003 +128,0.0006 +256,0.0013 +512,0.0018 +1024,0.0031 +2048,0.0062 +4096,0.0119 +8192,0.0542 +16384,0.0464 +32768,0.1236 +65536,0.2031 +131072,0.4703 +262144,0.8628 +524288,1.5524 +1048576,3.314 +2097152,7.3118 +4194304,11.5582 +8388608,22.107 +16777216,44.9727 +33554432,93.3107 +67108864,176.314 +134217728,351.198 +268435456,697.964 +16,0.0002 +32,0.0002 +64,0.0004 +128,0.0005 +256,0.001 +512,0.0017 +1024,0.0031 +2048,0.0057 +4096,0.028 +8192,0.0226 +16384,0.0461 +32768,0.1621 +65536,0.1983 +131072,0.4319 +262144,0.853 +524288,1.5803 +1048576,2.931 +2097152,6.2913 +4194304,11.8673 +8388608,22.7847 +16777216,44.313 +33554432,91.1145 +67108864,180.555 +134217728,353.414 +268435456,699.114 +16,0.0002 +32,0.0006 +64,0.0004 +128,0.0006 +256,0.001 +512,0.0016 +1024,0.0029 +2048,0.006 +4096,0.0116 +8192,0.0236 +16384,0.0456 +32768,0.1118 +65536,0.2155 +131072,0.3927 +262144,0.8799 +524288,1.5722 +1048576,3.0161 +2097152,6.5343 +4194304,11.0758 +8388608,23.5676 +16777216,44.5698 +33554432,93.2397 +67108864,178.331 +134217728,350.661 +268435456,698.743 +16,0.0002 +32,0.0003 +64,0.0003 +128,0.0006 +256,0.0011 +512,0.0017 +1024,0.0032 +2048,0.0062 +4096,0.012 +8192,0.0234 +16384,0.046 +32768,0.111 +65536,0.2309 +131072,0.3759 +262144,1.0365 +524288,1.5848 +1048576,2.9803 +2097152,6.0406 +4194304,13.5789 +8388608,23.317 +16777216,43.5921 +33554432,88.2691 +67108864,178.461 +134217728,349.612 +268435456,696.33 +16,0.0003 +32,0.0002 +64,0.0003 +128,0.0008 +256,0.0009 +512,0.0016 +1024,0.0036 +2048,0.0057 +4096,0.0118 +8192,0.0234 +16384,0.0593 +32768,0.0895 +65536,0.2945 +131072,0.3744 +262144,0.8395 +524288,1.5894 +1048576,3.0866 +2097152,6.0682 +4194304,11.815 +8388608,23.02 +16777216,46.8495 +33554432,91.0357 +67108864,190.869 +134217728,368.655 +268435456,707.166 +16,0.0003 +32,0.0003 +64,0.0003 +128,0.0005 +256,0.0174 +512,0.0016 +1024,0.003 +2048,0.0062 +4096,0.0112 +8192,0.0238 +16384,0.044 +32768,0.1097 +65536,0.2141 +131072,0.4515 +262144,0.9899 +524288,1.6301 +1048576,3.3587 +2097152,5.8473 +4194304,11.8018 +8388608,24.9649 +16777216,49.8613 +33554432,88.5712 +67108864,175.427 +134217728,361.461 +268435456,741.901 +16,0.0002 +32,0.0003 +64,0.0005 +128,0.0008 +256,0.0011 +512,0.0019 +1024,0.0032 +2048,0.0064 +4096,0.0116 +8192,0.0263 +16384,0.0468 +32768,0.1125 +65536,0.2514 +131072,0.4523 +262144,0.8845 +524288,2.1698 +1048576,3.0946 +2097152,6.8354 +4194304,11.7752 +8388608,24.8787 +16777216,45.6448 +33554432,92.5079 +67108864,183.811 +134217728,373.281 +268435456,733.446 +16,0.0002 +32,0.0002 +64,0.0004 +128,0.0005 +256,0.001 +512,0.0017 +1024,0.0031 +2048,0.0063 +4096,0.0119 +8192,0.0377 +16384,0.048 +32768,0.1092 +65536,0.2309 +131072,0.5174 +262144,0.9001 +524288,1.5163 +1048576,3.9506 +2097152,6.0254 +4194304,11.3557 +8388608,23.0287 +16777216,45.0412 +33554432,92.6062 +67108864,189.463 +134217728,365.473 +268435456,737.714 +16,0.0002 +32,0.0002 +64,0.0006 +128,0.0006 +256,0.001 +512,0.0018 +1024,0.0031 +2048,0.0105 +4096,0.0118 +8192,0.0238 +16384,0.047 +32768,0.0935 +65536,0.2314 +131072,0.4407 +262144,0.8898 +524288,2.0694 +1048576,3.1484 +2097152,5.732 +4194304,11.4505 +8388608,23.095 +16777216,46.7376 +33554432,92.8298 +67108864,179.678 +134217728,351.04 +268435456,723.637 +16,0.0002 +32,0.0002 +64,0.0003 +128,0.0006 +256,0.001 +512,0.0015 +1024,0.0035 +2048,0.0058 +4096,0.0115 +8192,0.0408 +16384,0.0787 +32768,0.1718 +65536,0.1888 +131072,0.4398 +262144,0.8689 +524288,1.8787 +1048576,3.104 +2097152,5.8927 +4194304,11.9823 +8388608,22.3335 +16777216,45.0468 +33554432,93.5437 +67108864,179.027 +134217728,383.949 +268435456,715.914 +16,0.0003 +32,0.0002 +64,0.0003 +128,0.0006 +256,0.0011 +512,0.0022 +1024,0.004 +2048,0.0075 +4096,0.0255 +8192,0.0225 +16384,0.0586 +32768,0.0933 +65536,0.193 +131072,0.482 +262144,0.9241 +524288,1.6988 +1048576,4.1594 +2097152,5.9438 +4194304,11.6612 +8388608,24.5737 +16777216,44.826 +33554432,97.5941 +67108864,179.95 +134217728,358.837 +268435456,718.63 +16,0.0002 +32,0.0002 +64,0.0003 +128,0.0005 +256,0.001 +512,0.0016 +1024,0.005 +2048,0.0059 +4096,0.0116 +8192,0.0235 +16384,0.0562 +32768,0.1246 +65536,0.2516 +131072,0.505 +262144,0.8793 +524288,1.518 +1048576,3.0444 +2097152,6.2455 +4194304,14.0454 +8388608,24.8925 +16777216,48.1358 +33554432,91.2609 +67108864,180.784 +134217728,356.646 +268435456,706.507 +16,0.0002 +32,0.0002 +64,0.0004 +128,0.0005 +256,0.0009 +512,0.0015 +1024,0.0032 +2048,0.0057 +4096,0.0111 +8192,0.0229 +16384,0.0445 +32768,0.0956 +65536,0.2079 +131072,0.54 +262144,0.7505 +524288,1.5573 +1048576,3.0017 +2097152,5.6114 +4194304,11.5027 +8388608,23.6533 +16777216,46.6837 +33554432,88.9079 +67108864,178.321 +134217728,359.131 +268435456,708.749 +16,0.0002 +32,0.0002 +64,0.0004 +128,0.0006 +256,0.0011 +512,0.004 +1024,0.0033 +2048,0.0067 +4096,0.0118 +8192,0.0375 +16384,0.0456 +32768,0.0909 +65536,0.2171 +131072,0.3772 +262144,0.7851 +524288,1.6027 +1048576,2.9423 +2097152,7.0642 +4194304,11.6966 +8388608,22.5445 +16777216,46.087 +33554432,91.2358 +67108864,177.71 +134217728,351.197 +268435456,709.403 +16,0.0002 +32,0.0002 +64,0.0003 +128,0.0005 +256,0.0011 +512,0.0017 +1024,0.0034 +2048,0.0065 +4096,0.0128 +8192,0.0239 +16384,0.0466 +32768,0.1112 +65536,0.235 +131072,0.4812 +262144,0.8152 +524288,1.5343 +1048576,3.0069 +2097152,5.6642 +4194304,11.7277 +8388608,24.0372 +16777216,44.6511 +33554432,90.2759 +67108864,187.937 +134217728,350.389 +268435456,704.719 +16,0.0002 +32,0.0003 +64,0.0003 +128,0.0005 +256,0.0013 +512,0.0017 +1024,0.0039 +2048,0.0198 +4096,0.0119 +8192,0.0371 +16384,0.0488 +32768,0.0959 +65536,0.2353 +131072,0.513 +262144,0.8297 +524288,1.5391 +1048576,2.9408 +2097152,5.751 +4194304,12.6888 +8388608,24.0229 +16777216,47.406 +33554432,89.9687 +67108864,176.034 +134217728,355.479 +268435456,702.784 +16,0.0002 +32,0.0003 +64,0.0004 +128,0.0005 +256,0.0011 +512,0.0018 +1024,0.0034 +2048,0.0061 +4096,0.0124 +8192,0.0228 +16384,0.0454 +32768,0.1464 +65536,0.1855 +131072,0.3924 +262144,0.892 +524288,1.6895 +1048576,2.9021 +2097152,6.0126 +4194304,11.9244 +8388608,22.8811 +16777216,48.4382 +33554432,88.8967 +67108864,176.185 +134217728,388.454 +268435456,757.256 +16,0.0002 +32,0.0003 +64,0.0004 +128,0.0005 +256,0.001 +512,0.0019 +1024,0.0031 +2048,0.0063 +4096,0.0119 +8192,0.0229 +16384,0.0504 +32768,0.1226 +65536,0.1872 +131072,0.4906 +262144,0.9895 +524288,1.6569 +1048576,3.05 +2097152,5.7314 +4194304,11.7786 +8388608,22.8523 +16777216,47.7788 +33554432,88.2306 +67108864,182.878 +134217728,372.503 +268435456,739.312 +16,0.0002 +32,0.0002 +64,0.0003 +128,0.0008 +256,0.001 +512,0.0017 +1024,0.0055 +2048,0.0194 +4096,0.0118 +8192,0.0222 +16384,0.0463 +32768,0.0904 +65536,0.2041 +131072,0.5211 +262144,0.8383 +524288,1.5587 +1048576,2.7631 +2097152,5.7251 +4194304,11.6317 +8388608,23.5972 +16777216,48.2251 +33554432,90.333 +67108864,179.769 +134217728,356.16 +268435456,743.58 +16,0.0002 +32,0.0001 +64,0.0003 +128,0.0006 +256,0.0009 +512,0.0018 +1024,0.0031 +2048,0.0064 +4096,0.0124 +8192,0.0376 +16384,0.0564 +32768,0.0931 +65536,0.2014 +131072,0.4681 +262144,0.7204 +524288,1.541 +1048576,2.8757 +2097152,5.7412 +4194304,12.1295 +8388608,24.9028 +16777216,47.4251 +33554432,94.569 +67108864,188.105 +134217728,364.91 +268435456,735.546 +16,0.0002 +32,0.0003 +64,0.0003 +128,0.0005 +256,0.0014 +512,0.0017 +1024,0.0031 +2048,0.0064 +4096,0.0155 +8192,0.0232 +16384,0.0469 +32768,0.0936 +65536,0.2505 +131072,0.5221 +262144,0.7985 +524288,1.485 +1048576,2.8998 +2097152,6.0612 +4194304,11.3729 +8388608,23.2813 +16777216,45.3878 +33554432,88.7686 +67108864,190.56 +134217728,353.309 +268435456,701.868 +16,0.0002 +32,0.0002 +64,0.0003 +128,0.0007 +256,0.0017 +512,0.0017 +1024,0.0033 +2048,0.0064 +4096,0.0259 +8192,0.0277 +16384,0.0475 +32768,0.113 +65536,0.2301 +131072,0.3741 +262144,0.94 +524288,1.6636 +1048576,3.1441 +2097152,5.8067 +4194304,13.1513 +8388608,24.7768 +16777216,48.0559 diff --git a/Project2-Stream-Compaction/data/Stream_compaction_data/data_pow2/cpu_without.csv b/Project2-Stream-Compaction/data/Stream_compaction_data/data_pow2/cpu_without.csv new file mode 100644 index 0000000..6aa0dec --- /dev/null +++ b/Project2-Stream-Compaction/data/Stream_compaction_data/data_pow2/cpu_without.csv @@ -0,0 +1,1371 @@ +16,0.0002 +32,0.0004 +64,0.0004 +128,0.0009 +256,0.001 +512,0.0016 +1024,0.0029 +2048,0.0056 +4096,0.0119 +8192,0.0284 +16384,0.0435 +32768,0.0819 +65536,0.1767 +131072,0.4384 +262144,0.8429 +524288,1.7027 +1048576,2.7156 +2097152,5.6164 +4194304,11.0421 +8388608,24.7709 +16777216,44.8604 +33554432,93.11 +67108864,176.681 +134217728,335.069 +268435456,682.426 +16,0.0001 +32,0.0002 +64,0.0006 +128,0.0009 +256,0.001 +512,0.0029 +1024,0.0055 +2048,0.0061 +4096,0.0196 +8192,0.0208 +16384,0.0431 +32768,0.0844 +65536,0.1792 +131072,0.3307 +262144,0.7054 +524288,1.4983 +1048576,2.716 +2097152,5.2369 +4194304,10.4689 +8388608,23.0293 +16777216,42.7821 +33554432,81.2208 +67108864,174.556 +134217728,336.501 +268435456,695.409 +16,0.0001 +32,0.0002 +64,0.0004 +128,0.0006 +256,0.0018 +512,0.0021 +1024,0.0046 +2048,0.0056 +4096,0.0119 +8192,0.0226 +16384,0.0415 +32768,0.0849 +65536,0.3475 +131072,0.3615 +262144,0.6836 +524288,1.3727 +1048576,2.4496 +2097152,5.6101 +4194304,10.8534 +8388608,19.7415 +16777216,41.1805 +33554432,81.8753 +67108864,172.542 +134217728,340.058 +268435456,697.402 +16,0.0001 +32,0.0004 +64,0.0004 +128,0.0006 +256,0.0011 +512,0.0017 +1024,0.0027 +2048,0.0059 +4096,0.012 +8192,0.0348 +16384,0.0435 +32768,0.0872 +65536,0.1685 +131072,0.6534 +262144,0.6765 +524288,1.4064 +1048576,2.6332 +2097152,5.8366 +4194304,14.0794 +8388608,23.701 +16777216,42.4542 +33554432,83.2737 +67108864,164.23 +134217728,345.449 +268435456,680.071 +16,0.0002 +32,0.0001 +64,0.0002 +128,0.0005 +256,0.001 +512,0.0027 +1024,0.0037 +2048,0.0057 +4096,0.0111 +8192,0.0392 +16384,0.0434 +32768,0.0851 +65536,0.2229 +131072,0.3413 +262144,0.7196 +524288,1.6449 +1048576,2.9374 +2097152,4.9908 +4194304,10.3716 +8388608,20.9815 +16777216,44.7591 +33554432,86.1674 +67108864,173.671 +134217728,340.239 +268435456,709.34 +16,0.0001 +32,0.0002 +64,0.0006 +128,0.0009 +256,0.0009 +512,0.0021 +1024,0.0036 +2048,0.0107 +4096,0.0192 +8192,0.0242 +16384,0.0748 +32768,0.0844 +65536,0.1709 +131072,0.3598 +262144,0.6923 +524288,1.3397 +1048576,2.7688 +2097152,5.1949 +4194304,10.3327 +8388608,25.4277 +16777216,47.6861 +33554432,86.5501 +67108864,169.242 +134217728,388.429 +268435456,706.963 +16,0.0001 +32,0.0002 +64,0.0003 +128,0.0009 +256,0.0014 +512,0.0016 +1024,0.006 +2048,0.006 +4096,0.0118 +8192,0.0228 +16384,0.0579 +32768,0.0875 +65536,0.1736 +131072,0.4 +262144,0.7121 +524288,1.3757 +1048576,3.2912 +2097152,5.4003 +4194304,11.9626 +8388608,21.0037 +16777216,43.5806 +33554432,90.6363 +67108864,174.219 +134217728,350.27 +268435456,702.739 +16,0.0002 +32,0.0003 +64,0.0002 +128,0.0008 +256,0.0008 +512,0.002 +1024,0.0032 +2048,0.0058 +4096,0.011 +8192,0.036 +16384,0.0525 +32768,0.0845 +65536,0.1757 +131072,0.6564 +262144,0.6551 +524288,1.472 +1048576,2.6178 +2097152,5.2685 +4194304,11.2574 +8388608,21.5827 +16777216,44.7539 +33554432,86.5369 +67108864,171.779 +134217728,348.409 +268435456,699.981 +16,0.0001 +32,0.0002 +64,0.0004 +128,0.001 +256,0.0016 +512,0.003 +1024,0.0059 +2048,0.008 +4096,0.0204 +8192,0.0224 +16384,0.0605 +32768,0.0967 +65536,0.1793 +131072,0.3494 +262144,0.7593 +524288,1.4812 +1048576,2.7046 +2097152,5.9248 +4194304,12.0803 +8388608,24.0132 +16777216,44.319 +33554432,93.1337 +67108864,173.833 +134217728,349.748 +268435456,705.945 +16,0.0001 +32,0.0003 +64,0.0005 +128,0.001 +256,0.0016 +512,0.002 +1024,0.0029 +2048,0.0066 +4096,0.0112 +8192,0.0208 +16384,0.0631 +32768,0.1041 +65536,0.2174 +131072,0.3363 +262144,0.6972 +524288,1.6194 +1048576,2.6442 +2097152,5.8899 +4194304,11.4259 +8388608,21.1752 +16777216,46.0976 +33554432,90.5909 +67108864,171.884 +134217728,347.548 +268435456,704.235 +16,0.0002 +32,0.0002 +64,0.0003 +128,0.001 +256,0.0016 +512,0.0029 +1024,0.0052 +2048,0.0289 +4096,0.0107 +8192,0.0209 +16384,0.0553 +32768,0.1187 +65536,0.1705 +131072,0.3658 +262144,0.726 +524288,1.3776 +1048576,2.7794 +2097152,5.3395 +4194304,11.0735 +8388608,21.5245 +16777216,44.5499 +33554432,88.0702 +67108864,176.132 +134217728,346.402 +268435456,702.756 +16,0.0001 +32,0.0002 +64,0.0006 +128,0.0005 +256,0.0008 +512,0.0016 +1024,0.0031 +2048,0.0108 +4096,0.0109 +8192,0.0405 +16384,0.0605 +32768,0.0839 +65536,0.1788 +131072,0.3593 +262144,0.6974 +524288,1.5783 +1048576,2.7766 +2097152,6.9115 +4194304,10.9061 +8388608,24.765 +16777216,45.587 +33554432,87.9968 +67108864,170.591 +134217728,350.451 +268435456,704.275 +16,0.0001 +32,0.0006 +64,0.0006 +128,0.001 +256,0.0016 +512,0.0028 +1024,0.0032 +2048,0.0245 +4096,0.0213 +8192,0.0524 +16384,0.043 +32768,0.0843 +65536,0.1687 +131072,0.3413 +262144,0.7029 +524288,1.3716 +1048576,2.8923 +2097152,5.4973 +4194304,12.4048 +8388608,22.6855 +16777216,42.5056 +33554432,91.4573 +67108864,171.863 +134217728,347.607 +268435456,699.286 +16,0.0001 +32,0.0002 +64,0.0003 +128,0.0004 +256,0.0013 +512,0.0018 +1024,0.0033 +2048,0.0055 +4096,0.0112 +8192,0.0207 +16384,0.0404 +32768,0.0873 +65536,0.1704 +131072,0.3376 +262144,0.6849 +524288,1.3323 +1048576,2.7788 +2097152,5.1421 +4194304,11.1266 +8388608,22.2664 +16777216,45.0504 +33554432,86.3016 +67108864,185.786 +134217728,364.954 +268435456,698.632 +16,0.0001 +32,0.0002 +64,0.0004 +128,0.0008 +256,0.0015 +512,0.0028 +1024,0.0028 +2048,0.0053 +4096,0.0107 +8192,0.021 +16384,0.0414 +32768,0.0894 +65536,0.178 +131072,0.5051 +262144,0.6481 +524288,1.4398 +1048576,2.5995 +2097152,5.2765 +4194304,10.7966 +8388608,21.5873 +16777216,42.9272 +33554432,84.9409 +67108864,171.115 +134217728,380.22 +268435456,698.127 +16,0.0001 +32,0.0004 +64,0.0005 +128,0.0009 +256,0.0146 +512,0.0029 +1024,0.0056 +2048,0.0109 +4096,0.0201 +8192,0.0264 +16384,0.0571 +32768,0.0871 +65536,0.1776 +131072,0.3479 +262144,0.6925 +524288,2.7075 +1048576,2.618 +2097152,5.6404 +4194304,11.5857 +8388608,22.681 +16777216,43.268 +33554432,87.9966 +67108864,174.656 +134217728,349.446 +268435456,701.212 +16,0.0001 +32,0.0004 +64,0.0003 +128,0.0009 +256,0.001 +512,0.0016 +1024,0.0053 +2048,0.0058 +4096,0.0108 +8192,0.0491 +16384,0.0582 +32768,0.1048 +65536,0.1806 +131072,0.3404 +262144,0.6572 +524288,1.4068 +1048576,2.7312 +2097152,5.7274 +4194304,11.681 +8388608,21.8862 +16777216,45.9282 +33554432,89.777 +67108864,173.554 +134217728,357.127 +268435456,708.858 +16,0.0001 +32,0.0003 +64,0.0004 +128,0.0009 +256,0.0016 +512,0.0029 +1024,0.0056 +2048,0.0054 +4096,0.0323 +8192,0.023 +16384,0.0576 +32768,0.1062 +65536,0.2667 +131072,0.3326 +262144,0.7568 +524288,1.4545 +1048576,2.6332 +2097152,5.4902 +4194304,10.6294 +8388608,22.0102 +16777216,44.4495 +33554432,86.3781 +67108864,177.215 +134217728,349.079 +268435456,699.75 +16,0.0001 +32,0.0004 +64,0.0003 +128,0.0009 +256,0.015 +512,0.0031 +1024,0.0055 +2048,0.0105 +4096,0.0114 +8192,0.0241 +16384,0.1061 +32768,0.0864 +65536,0.1773 +131072,0.3309 +262144,0.6512 +524288,1.5917 +1048576,2.6515 +2097152,5.5255 +4194304,10.8267 +8388608,21.2895 +16777216,42.5658 +33554432,85.9002 +67108864,175.934 +134217728,350.842 +268435456,700.219 +16,0.0001 +32,0.0004 +64,0.0004 +128,0.0008 +256,0.0015 +512,0.0027 +1024,0.0027 +2048,0.0053 +4096,0.0176 +8192,0.0227 +16384,0.0541 +32768,0.0888 +65536,0.1774 +131072,0.3723 +262144,0.7107 +524288,1.3257 +1048576,2.7259 +2097152,5.6431 +4194304,11.4821 +8388608,21.9066 +16777216,46.0031 +33554432,86.3793 +67108864,175.863 +134217728,349.328 +268435456,698.485 +16,0.0001 +32,0.0004 +64,0.0003 +128,0.0008 +256,0.0015 +512,0.0015 +1024,0.0038 +2048,0.0057 +4096,0.0226 +8192,0.0207 +16384,0.0418 +32768,0.0828 +65536,0.1654 +131072,0.6594 +262144,0.6902 +524288,1.3687 +1048576,2.6149 +2097152,5.7958 +4194304,10.6025 +8388608,22.2906 +16777216,44.6106 +33554432,85.691 +67108864,175.022 +134217728,355.194 +268435456,704.34 +16,0.0001 +32,0.0003 +64,0.0005 +128,0.0009 +256,0.0014 +512,0.0025 +1024,0.0029 +2048,0.0051 +4096,0.0336 +8192,0.0202 +16384,0.0431 +32768,0.0872 +65536,0.168 +131072,0.3426 +262144,0.6722 +524288,1.6511 +1048576,2.8469 +2097152,5.4252 +4194304,10.6545 +8388608,21.1074 +16777216,45.2375 +33554432,86.0075 +67108864,172.536 +134217728,352.014 +268435456,697.052 +16,0.0002 +32,0.0005 +64,0.0003 +128,0.0005 +256,0.0008 +512,0.0014 +1024,0.0048 +2048,0.0073 +4096,0.0107 +8192,0.0348 +16384,0.0431 +32768,0.1321 +65536,0.1741 +131072,0.344 +262144,0.6909 +524288,1.3915 +1048576,2.9876 +2097152,5.2655 +4194304,10.9058 +8388608,21.4742 +16777216,48.1003 +33554432,85.7283 +67108864,174.281 +134217728,353.5 +268435456,704.112 +16,0.0001 +32,0.0004 +64,0.0006 +128,0.0009 +256,0.001 +512,0.0019 +1024,0.0031 +2048,0.0065 +4096,0.0109 +8192,0.0221 +16384,0.0432 +32768,0.0848 +65536,0.1788 +131072,0.4989 +262144,0.7757 +524288,1.4458 +1048576,2.6784 +2097152,5.2871 +4194304,11.2392 +8388608,20.8303 +16777216,44.2938 +33554432,85.4026 +67108864,174.064 +134217728,352.474 +268435456,704.818 +16,0.0002 +32,0.0005 +64,0.0003 +128,0.0008 +256,0.0014 +512,0.002 +1024,0.0028 +2048,0.0071 +4096,0.0111 +8192,0.0215 +16384,0.0448 +32768,0.088 +65536,0.172 +131072,0.3423 +262144,0.6999 +524288,1.2939 +1048576,2.6937 +2097152,5.4599 +4194304,10.6196 +8388608,21.3847 +16777216,46.8651 +33554432,85.2546 +67108864,175.41 +134217728,353.388 +268435456,705.359 +16,0.0001 +32,0.0002 +64,0.0005 +128,0.0009 +256,0.0009 +512,0.0029 +1024,0.0027 +2048,0.0054 +4096,0.0107 +8192,0.0247 +16384,0.0409 +32768,0.1572 +65536,0.1739 +131072,0.4716 +262144,0.7384 +524288,1.3065 +1048576,2.6951 +2097152,5.3498 +4194304,10.9418 +8388608,21.1254 +16777216,47.0937 +33554432,85.6237 +67108864,170.498 +134217728,352.365 +268435456,700.088 +16,0.0001 +32,0.0005 +64,0.0002 +128,0.0009 +256,0.0014 +512,0.0026 +1024,0.0053 +2048,0.0093 +4096,0.0108 +8192,0.0227 +16384,0.0754 +32768,0.0858 +65536,0.1687 +131072,0.3408 +262144,0.703 +524288,1.3549 +1048576,3.1548 +2097152,5.2919 +4194304,10.8271 +8388608,20.5866 +16777216,43.9057 +33554432,87.1507 +67108864,176.251 +134217728,351.027 +268435456,701.519 +16,0.0001 +32,0.0003 +64,0.0005 +128,0.0143 +256,0.0008 +512,0.0021 +1024,0.0187 +2048,0.0055 +4096,0.02 +8192,0.048 +16384,0.0419 +32768,0.0836 +65536,0.1704 +131072,0.4321 +262144,0.6716 +524288,1.4215 +1048576,2.6703 +2097152,5.307 +4194304,13.3021 +8388608,22.7729 +16777216,44.0914 +33554432,89.4414 +67108864,173.668 +134217728,351.713 +268435456,703.771 +16,0.0001 +32,0.0004 +64,0.0002 +128,0.0004 +256,0.0016 +512,0.0029 +1024,0.0083 +2048,0.0084 +4096,0.0195 +8192,0.0217 +16384,0.0429 +32768,0.0887 +65536,0.1814 +131072,0.3444 +262144,0.6869 +524288,1.7123 +1048576,2.6708 +2097152,5.2299 +4194304,12.2155 +8388608,24.6636 +16777216,42.5757 +33554432,88.5964 +67108864,175.743 +134217728,351.119 +268435456,713.69 +16,0.0164 +32,0.0004 +64,0.0004 +128,0.0008 +256,0.0013 +512,0.0028 +1024,0.0053 +2048,0.006 +4096,0.0118 +8192,0.033 +16384,0.0425 +32768,0.0835 +65536,0.1719 +131072,0.4691 +262144,0.8075 +524288,1.4266 +1048576,2.6639 +2097152,5.7053 +4194304,11.1607 +8388608,21.0557 +16777216,46.3328 +33554432,85.528 +67108864,174.924 +134217728,349.031 +268435456,698.31 +16,0.0002 +32,0.0002 +64,0.0003 +128,0.0006 +256,0.0015 +512,0.0028 +1024,0.005 +2048,0.0055 +4096,0.0119 +8192,0.021 +16384,0.0622 +32768,0.091 +65536,0.173 +131072,0.3342 +262144,0.7082 +524288,1.358 +1048576,2.6104 +2097152,5.5767 +4194304,10.7427 +8388608,21.1969 +16777216,46.4821 +33554432,86.6729 +67108864,170.812 +134217728,349.427 +268435456,707.097 +16,0.0002 +32,0.0002 +64,0.0004 +128,0.0005 +256,0.0016 +512,0.0015 +1024,0.005 +2048,0.0055 +4096,0.0112 +8192,0.0223 +16384,0.0419 +32768,0.0837 +65536,0.1815 +131072,0.3292 +262144,0.6802 +524288,1.4445 +1048576,2.896 +2097152,5.2725 +4194304,10.7029 +8388608,21.2664 +16777216,43.8605 +33554432,84.0786 +67108864,174.146 +134217728,346.784 +268435456,709.063 +16,0.0001 +32,0.0006 +64,0.0004 +128,0.0006 +256,0.0016 +512,0.0031 +1024,0.0031 +2048,0.0103 +4096,0.0124 +8192,0.0209 +16384,0.0878 +32768,0.0847 +65536,0.1694 +131072,0.3351 +262144,0.6923 +524288,1.3049 +1048576,2.6803 +2097152,5.383 +4194304,11.8313 +8388608,22.9676 +16777216,43.7907 +33554432,89.1462 +67108864,177.879 +134217728,351.456 +268435456,702.461 +16,0.0001 +32,0.0003 +64,0.0006 +128,0.0004 +256,0.0008 +512,0.002 +1024,0.0215 +2048,0.0101 +4096,0.0193 +8192,0.0789 +16384,0.0937 +32768,0.0842 +65536,0.1796 +131072,0.3588 +262144,0.6762 +524288,1.395 +1048576,2.6687 +2097152,5.3089 +4194304,10.4355 +8388608,22.203 +16777216,42.7095 +33554432,86.2585 +67108864,175.737 +134217728,342.322 +268435456,707.67 +16,0.0001 +32,0.0003 +64,0.0005 +128,0.0008 +256,0.0016 +512,0.003 +1024,0.0049 +2048,0.0297 +4096,0.0139 +8192,0.0208 +16384,0.0609 +32768,0.1781 +65536,0.1725 +131072,0.3481 +262144,0.6884 +524288,1.411 +1048576,2.8144 +2097152,5.4253 +4194304,10.3794 +8388608,24.4788 +16777216,43.043 +33554432,85.9505 +67108864,176.758 +134217728,346.299 +268435456,703.865 +16,0.0001 +32,0.0002 +64,0.0003 +128,0.0009 +256,0.0012 +512,0.0021 +1024,0.0236 +2048,0.0054 +4096,0.0103 +8192,0.0214 +16384,0.0422 +32768,0.0846 +65536,0.173 +131072,0.3336 +262144,0.7211 +524288,1.6876 +1048576,2.6408 +2097152,5.3873 +4194304,10.5054 +8388608,21.1817 +16777216,44.2905 +33554432,85.943 +67108864,173.673 +134217728,350.476 +268435456,700.164 +16,0.0001 +32,0.0001 +64,0.0003 +128,0.0005 +256,0.0008 +512,0.0027 +1024,0.0039 +2048,0.0291 +4096,0.0109 +8192,0.0215 +16384,0.0568 +32768,0.0832 +65536,0.1815 +131072,0.3453 +262144,0.687 +524288,1.3256 +1048576,3.4575 +2097152,5.227 +4194304,11.2147 +8388608,21.104 +16777216,42.9064 +33554432,86.8779 +67108864,175.59 +134217728,344.415 +268435456,700.232 +16,0.0001 +32,0.0002 +64,0.0003 +128,0.0004 +256,0.0008 +512,0.0017 +1024,0.0027 +2048,0.0266 +4096,0.0208 +8192,0.0235 +16384,0.0564 +32768,0.0898 +65536,0.1778 +131072,0.3507 +262144,0.7186 +524288,1.3552 +1048576,2.6385 +2097152,5.2903 +4194304,10.6927 +8388608,22.6672 +16777216,46.1108 +33554432,85.0503 +67108864,191.271 +134217728,369.516 +268435456,716.176 +16,0.0002 +32,0.0005 +64,0.0003 +128,0.0005 +256,0.0015 +512,0.0026 +1024,0.0029 +2048,0.0095 +4096,0.0131 +8192,0.0443 +16384,0.0418 +32768,0.082 +65536,0.1713 +131072,0.5232 +262144,0.7814 +524288,1.3401 +1048576,2.6983 +2097152,5.2171 +4194304,10.7075 +8388608,21.6251 +16777216,43.9719 +33554432,91.0978 +67108864,178.642 +134217728,355.734 +268435456,740.628 +16,0.0002 +32,0.0003 +64,0.0003 +128,0.0007 +256,0.0018 +512,0.0029 +1024,0.0028 +2048,0.0056 +4096,0.0107 +8192,0.0221 +16384,0.0605 +32768,0.1002 +65536,0.1646 +131072,0.3547 +262144,0.6471 +524288,1.3482 +1048576,2.6135 +2097152,7.2024 +4194304,11.8227 +8388608,24.1999 +16777216,46.4314 +33554432,83.9867 +67108864,185.945 +134217728,383.485 +268435456,744.263 +16,0.0002 +32,0.0002 +64,0.0005 +128,0.0006 +256,0.0007 +512,0.0016 +1024,0.0033 +2048,0.0245 +4096,0.0112 +8192,0.0222 +16384,0.0467 +32768,0.0852 +65536,0.1908 +131072,0.3593 +262144,0.6683 +524288,1.3318 +1048576,2.7299 +2097152,5.3239 +4194304,10.4438 +8388608,21.9451 +16777216,46.2893 +33554432,86.3175 +67108864,174.958 +134217728,368.314 +268435456,750.606 +16,0.0001 +32,0.0002 +64,0.0004 +128,0.0006 +256,0.0016 +512,0.0016 +1024,0.0029 +2048,0.0054 +4096,0.0231 +8192,0.0219 +16384,0.056 +32768,0.0826 +65536,0.2223 +131072,0.3599 +262144,1.0599 +524288,1.4622 +1048576,2.6387 +2097152,6.4564 +4194304,10.7296 +8388608,22.4162 +16777216,47.0075 +33554432,88.527 +67108864,171.022 +134217728,347.354 +268435456,721.039 +16,0.0002 +32,0.0003 +64,0.0003 +128,0.0006 +256,0.0013 +512,0.0024 +1024,0.0049 +2048,0.0095 +4096,0.1791 +8192,0.0584 +16384,0.0754 +32768,0.1057 +65536,0.165 +131072,0.3362 +262144,0.8445 +524288,1.3519 +1048576,2.9072 +2097152,7.2401 +4194304,11.1294 +8388608,23.2812 +16777216,45.3039 +33554432,89.5576 +67108864,185.203 +134217728,369.254 +268435456,736.034 +16,0.0001 +32,0.0002 +64,0.0003 +128,0.014 +256,0.001 +512,0.0016 +1024,0.0242 +2048,0.0067 +4096,0.0197 +8192,0.0214 +16384,0.0688 +32768,0.083 +65536,0.1723 +131072,0.3474 +262144,0.6769 +524288,1.3505 +1048576,2.7724 +2097152,5.8294 +4194304,10.9456 +8388608,22.2763 +16777216,48.7276 +33554432,92.6623 +67108864,176.209 +134217728,356.808 +268435456,706.225 +16,0.0002 +32,0.0003 +64,0.0004 +128,0.0008 +256,0.0009 +512,0.0026 +1024,0.0049 +2048,0.0055 +4096,0.0114 +8192,0.0534 +16384,0.0457 +32768,0.1342 +65536,0.1695 +131072,0.3408 +262144,0.6867 +524288,1.3535 +1048576,2.662 +2097152,5.5299 +4194304,10.9316 +8388608,22.0226 +16777216,43.1261 +33554432,88.9781 +67108864,178.021 +134217728,347.914 +268435456,693.804 +16,0.0001 +32,0.0003 +64,0.0004 +128,0.0007 +256,0.0008 +512,0.0026 +1024,0.0053 +2048,0.0096 +4096,0.0104 +8192,0.0226 +16384,0.0681 +32768,0.1231 +65536,0.1888 +131072,0.3433 +262144,0.6702 +524288,1.343 +1048576,2.7128 +2097152,5.7421 +4194304,11.4643 +8388608,21.0198 +16777216,45.072 +33554432,85.2218 +67108864,175.051 +134217728,351.525 +268435456,690.183 +16,0.0002 +32,0.0001 +64,0.0004 +128,0.0009 +256,0.0012 +512,0.0022 +1024,0.0164 +2048,0.0061 +4096,0.0115 +8192,0.0342 +16384,0.0423 +32768,0.0886 +65536,0.1712 +131072,0.3873 +262144,0.6632 +524288,1.3593 +1048576,2.7161 +2097152,6.6871 +4194304,10.7791 +8388608,21.6848 +16777216,43.0374 +33554432,87.0853 +67108864,177.783 +134217728,356.385 +268435456,701.888 +16,0.0001 +32,0.0002 +64,0.0006 +128,0.0005 +256,0.0014 +512,0.0028 +1024,0.0034 +2048,0.008 +4096,0.0429 +8192,0.0248 +16384,0.0537 +32768,0.0817 +65536,0.1658 +131072,0.3568 +262144,0.6851 +524288,1.4124 +1048576,2.5992 +2097152,5.2308 +4194304,10.9045 +8388608,23.6722 +16777216,46.8247 +33554432,87.948 +67108864,189.137 +134217728,350.955 +268435456,706.693 +16,0.0001 +32,0.0002 +64,0.0003 +128,0.0008 +256,0.0008 +512,0.0019 +1024,0.0028 +2048,0.0058 +4096,0.0109 +8192,0.0213 +16384,0.0436 +32768,0.0831 +65536,0.1751 +131072,0.3378 +262144,0.6879 +524288,1.3283 +1048576,3.0175 +2097152,5.2775 +4194304,11.5201 +8388608,22.5328 +16777216,42.3091 +33554432,88.0426 +67108864,175.641 +134217728,348.908 +268435456,699.993 +16,0.0002 +32,0.0004 +64,0.0005 +128,0.0005 +256,0.0011 +512,0.0028 +1024,0.0056 +2048,0.0098 +4096,0.0111 +8192,0.0209 +16384,0.0948 +32768,0.111 +65536,0.1703 +131072,0.3508 +262144,0.7105 +524288,1.3744 +1048576,3.2414 +2097152,5.2771 +4194304,12.2937 +8388608,23.338 +16777216,42.7144 +33554432,89.4402 +67108864,176.158 +134217728,354.913 +268435456,738.871 +16,0.0002 +32,0.0004 +64,0.0003 +128,0.0005 +256,0.0013 +512,0.0014 +1024,0.0049 +2048,0.0088 +4096,0.011 +8192,0.0215 +16384,0.0419 +32768,0.0831 +65536,0.1704 +131072,0.336 +262144,0.7254 +524288,1.3597 +1048576,2.6776 +2097152,5.6688 +4194304,12.0131 +8388608,24.9333 +16777216,44.5357 +33554432,86.2637 +67108864,188.836 +134217728,354.732 +268435456,713.443 +16,0.0001 +32,0.0002 +64,0.0003 +128,0.0008 +256,0.0014 +512,0.0018 +1024,0.0043 +2048,0.0054 +4096,0.0108 +8192,0.0348 +16384,0.0449 +32768,0.1067 +65536,0.177 +131072,0.3321 +262144,0.6703 +524288,1.369 +1048576,3.1287 +2097152,5.4641 +4194304,11.2403 +8388608,24.0695 +16777216,42.2762 +33554432,89.4538 +67108864,175.145 +134217728,358.332 +268435456,721.248 +16,0.0002 +32,0.0004 +64,0.0138 +128,0.0005 +256,0.0009 +512,0.0017 +1024,0.0048 +2048,0.0116 +4096,0.0466 +8192,0.0589 +16384,0.0686 +32768,0.1115 +65536,0.2136 +131072,0.3396 +262144,0.7524 +524288,1.4298 +1048576,2.8104 +2097152,5.5336 +4194304,10.9352 +8388608,22.324 +16777216,45.1294 +33554432,88.3907 +67108864,192.903 +134217728,375.494 +268435456,716.414 +16,0.0001 +32,0.0003 +64,0.0006 +128,0.0009 +256,0.0009 +512,0.0019 +1024,0.0186 +2048,0.0059 +4096,0.0145 +8192,0.0236 +16384,0.0568 +32768,0.1103 +65536,0.169 +131072,0.3793 +262144,0.7077 +524288,1.3595 +1048576,3.4014 +2097152,5.4595 +4194304,11.9487 +8388608,22.1231 +16777216,52.4248 +33554432,89.3893 +67108864,182.812 +134217728,360.407 +268435456,701.212 +16,0.0001 +32,0.0002 +64,0.0003 +128,0.0009 +256,0.0017 +512,0.0028 +1024,0.0051 +2048,0.0105 +4096,0.0203 +8192,0.0218 +16384,0.0919 +32768,0.1489 +65536,0.1712 +131072,0.3572 +262144,0.6953 +524288,1.3033 +1048576,2.6615 +2097152,5.3257 +4194304,10.3885 +8388608,23.4203 +16777216,42.986 diff --git a/Project2-Stream-Compaction/data/Stream_compaction_data/data_pow2/eff.csv b/Project2-Stream-Compaction/data/Stream_compaction_data/data_pow2/eff.csv new file mode 100644 index 0000000..13e59fe --- /dev/null +++ b/Project2-Stream-Compaction/data/Stream_compaction_data/data_pow2/eff.csv @@ -0,0 +1,1371 @@ +16,0.91648 +32,0.647168 +64,0.873472 +128,0.670752 +256,0.702464 +512,0.770048 +1024,0.763872 +2048,0.813088 +4096,0.837632 +8192,1.61894 +16384,1.07312 +32768,1.27386 +65536,2.44429 +131072,3.09043 +262144,4.66947 +524288,8.37632 +1048576,15.6723 +2097152,29.8312 +4194304,60.1344 +8388608,116.532 +16777216,238.13 +33554432,475.415 +67108864,937.818 +134217728,1893.06 +268435456,3739.07 +16,0.7424 +32,0.917504 +64,0.866304 +128,0.789504 +256,0.894976 +512,0.963584 +1024,0.809984 +2048,0.91648 +4096,1.22573 +8192,1.08237 +16384,1.12742 +32768,1.52883 +65536,1.9753 +131072,3.41299 +262144,5.46918 +524288,9.09926 +1048576,16.1966 +2097152,30.7589 +4194304,58.1765 +8388608,115.842 +16777216,232.839 +33554432,472.843 +67108864,939.284 +134217728,1866.95 +268435456,3776.2 +16,0.715776 +32,0.941056 +64,1.57286 +128,0.862208 +256,0.82944 +512,0.881664 +1024,0.927744 +2048,0.812032 +4096,0.866304 +8192,1.08749 +16384,1.17658 +32768,2.26918 +65536,1.90669 +131072,3.10784 +262144,5.09747 +524288,9.07366 +1048576,15.8167 +2097152,30.292 +4194304,58.0997 +8388608,115.645 +16777216,230.966 +33554432,473.051 +67108864,945.819 +134217728,1891.72 +268435456,3753.65 +16,0.678912 +32,0.676864 +64,0.760832 +128,0.904192 +256,1.60563 +512,1.0199 +1024,0.792576 +2048,0.82944 +4096,1.19706 +8192,1.03219 +16384,1.32608 +32768,1.39571 +65536,1.77869 +131072,3.03923 +262144,4.80973 +524288,8.77466 +1048576,16.5581 +2097152,31.316 +4194304,59.0254 +8388608,115.457 +16777216,232.083 +33554432,463.908 +67108864,943.967 +134217728,1858.35 +268435456,3758.54 +16,0.903168 +32,0.83456 +64,0.805888 +128,0.859136 +256,0.882688 +512,1.00864 +1024,1.22675 +2048,0.851904 +4096,0.892928 +8192,1.22368 +16384,1.19091 +32768,1.30048 +65536,1.85754 +131072,2.71974 +262144,5.31866 +524288,8.91597 +1048576,15.8013 +2097152,30.89 +4194304,58.5892 +8388608,114.506 +16777216,234.361 +33554432,469.392 +67108864,940.707 +134217728,1881.55 +268435456,3738.79 +16,0.959488 +32,1.2503 +64,0.846848 +128,1.04858 +256,0.886784 +512,0.82432 +1024,1.39469 +2048,1.0711 +4096,1.39059 +8192,1.11309 +16384,1.13869 +32768,1.2759 +65536,1.71008 +131072,2.82829 +262144,4.77491 +524288,8.53094 +1048576,16.1331 +2097152,29.7073 +4194304,58.2011 +8388608,115.249 +16777216,235.572 +33554432,475.481 +67108864,947.639 +134217728,1886.36 +268435456,3762.98 +16,1.41005 +32,0.76288 +64,1.18067 +128,1.19501 +256,0.924672 +512,0.937984 +1024,1.62304 +2048,1.07418 +4096,1.18579 +8192,1.14995 +16384,1.42131 +32768,1.96608 +65536,2.23437 +131072,3.0423 +262144,5.39546 +524288,8.42138 +1048576,15.4501 +2097152,30.5992 +4194304,58.4571 +8388608,117.109 +16777216,232.41 +33554432,468.296 +67108864,942.114 +134217728,1889.28 +268435456,3743.54 +16,0.975872 +32,0.785408 +64,0.841728 +128,0.946176 +256,0.842752 +512,0.891904 +1024,0.93696 +2048,1.12845 +4096,1.16326 +8192,1.03219 +16384,1.52986 +32768,1.32506 +65536,1.72851 +131072,3.75501 +262144,4.87219 +524288,8.45619 +1048576,15.7512 +2097152,29.8527 +4194304,58.2267 +8388608,117.027 +16777216,232.138 +33554432,464.787 +67108864,942.983 +134217728,1875.07 +268435456,3739.44 +16,1.04038 +32,0.668672 +64,0.791552 +128,0.707584 +256,0.7424 +512,0.873472 +1024,0.812032 +2048,0.818176 +4096,0.939008 +8192,0.920576 +16384,1.08237 +32768,1.31277 +65536,2.05517 +131072,2.9655 +262144,5.1456 +524288,8.57498 +1048576,15.7972 +2097152,30.2459 +4194304,57.558 +8388608,115.867 +16777216,236.408 +33554432,469.579 +67108864,940.729 +134217728,1885.58 +268435456,3742.01 +16,1.05062 +32,0.871424 +64,0.98816 +128,0.842752 +256,0.866304 +512,0.741376 +1024,1.01786 +2048,0.974848 +4096,1.39878 +8192,0.948224 +16384,1.0793 +32768,1.29024 +65536,1.92307 +131072,3.10989 +262144,5.97811 +524288,8.56064 +1048576,16.1618 +2097152,29.5608 +4194304,59.223 +8388608,115.707 +16777216,231.73 +33554432,471.377 +67108864,943.246 +134217728,1871.18 +268435456,3764.57 +16,1.84013 +32,0.786432 +64,0.898048 +128,1.16429 +256,1.03219 +512,0.984064 +1024,0.864256 +2048,0.93184 +4096,0.852992 +8192,1.11411 +16384,1.14483 +32768,1.80326 +65536,1.82784 +131072,2.90406 +262144,4.76672 +524288,9.06342 +1048576,16.3215 +2097152,29.5301 +4194304,58.8974 +8388608,116.71 +16777216,234.05 +33554432,466.349 +67108864,934.026 +134217728,1889.99 +268435456,3755.06 +16,0.648192 +32,0.672768 +64,0.934912 +128,0.761856 +256,0.781312 +512,1.1008 +1024,0.928768 +2048,1.02707 +4096,1.38138 +8192,0.920576 +16384,1.14995 +32768,1.31482 +65536,1.72954 +131072,3.50925 +262144,5.4231 +524288,8.57293 +1048576,16.6257 +2097152,30.5295 +4194304,59.2589 +8388608,112.6 +16777216,232.283 +33554432,464.319 +67108864,936.6 +134217728,1866 +268435456,3724.92 +16,0.831488 +32,0.909312 +64,0.830464 +128,1.18784 +256,0.940032 +512,0.795648 +1024,0.94208 +2048,1.1223 +4096,0.995328 +8192,0.980992 +16384,1.14278 +32768,1.34246 +65536,2.2999 +131072,3.32288 +262144,5.06778 +524288,8.96205 +1048576,15.6785 +2097152,29.8179 +4194304,58.6916 +8388608,114.204 +16777216,235.581 +33554432,471.448 +67108864,941.172 +134217728,1880.8 +268435456,3729.01 +16,0.840704 +32,0.869376 +64,0.976896 +128,0.918528 +256,1.13459 +512,0.738304 +1024,1.16122 +2048,1.02912 +4096,1.08749 +8192,1.06701 +16384,1.15302 +32768,1.48685 +65536,1.88518 +131072,2.7136 +262144,5.32685 +524288,8.48998 +1048576,16.0758 +2097152,30.2664 +4194304,60.8287 +8388608,116.485 +16777216,233.91 +33554432,468.41 +67108864,953.693 +134217728,1868.87 +268435456,3763.42 +16,0.933888 +32,0.86528 +64,0.918528 +128,0.892864 +256,1.0025 +512,0.8704 +1024,0.929792 +2048,0.809984 +4096,0.850944 +8192,0.934912 +16384,1.2247 +32768,1.32096 +65536,2.08486 +131072,2.72179 +262144,5.39853 +524288,8.53094 +1048576,16.2417 +2097152,29.6622 +4194304,58.2052 +8388608,115.253 +16777216,235.208 +33554432,467.352 +67108864,933.71 +134217728,1878.85 +268435456,3746.65 +16,0.649216 +32,0.722944 +64,0.740352 +128,0.989184 +256,0.863232 +512,0.813056 +1024,0.929792 +2048,0.85504 +4096,1.1735 +8192,0.96256 +16384,1.12435 +32768,1.41312 +65536,1.72544 +131072,2.78426 +262144,5.1456 +524288,8.49818 +1048576,15.9273 +2097152,30.5859 +4194304,59.8333 +8388608,114.549 +16777216,230.393 +33554432,464.312 +67108864,937.834 +134217728,1888.38 +268435456,3732.64 +16,0.863232 +32,0.759808 +64,0.775168 +128,1.20525 +256,0.74752 +512,0.75264 +1024,0.806912 +2048,0.821248 +4096,0.910336 +8192,1.2544 +16384,1.22163 +32768,1.35578 +65536,1.8729 +131072,3.37408 +262144,5.99757 +524288,8.77978 +1048576,16.0328 +2097152,30.0001 +4194304,57.8755 +8388608,115.664 +16777216,235.238 +33554432,471.48 +67108864,940.577 +134217728,1887.46 +268435456,3745.91 +16,0.879616 +32,0.874496 +64,0.915456 +128,0.940032 +256,1.29536 +512,0.717824 +1024,0.956416 +2048,0.878592 +4096,0.83968 +8192,0.909312 +16384,1.33939 +32768,1.84525 +65536,2.84672 +131072,3.00954 +262144,4.84659 +524288,8.79411 +1048576,15.8116 +2097152,29.5721 +4194304,58.8401 +8388608,117.98 +16777216,233.474 +33554432,472.106 +67108864,943.885 +134217728,1873.24 +268435456,3765.76 +16,1.71725 +32,0.97792 +64,0.961536 +128,1.0199 +256,1.14586 +512,0.821248 +1024,0.897024 +2048,1.68243 +4096,0.841728 +8192,0.918528 +16384,1.06394 +32768,1.39981 +65536,1.71725 +131072,2.816 +262144,5.25824 +524288,8.8535 +1048576,15.66 +2097152,30.507 +4194304,60.0177 +8388608,115.378 +16777216,233.924 +33554432,467.77 +67108864,935.6 +134217728,1880.27 +268435456,3738.12 +16,0.780288 +32,0.848896 +64,0.867328 +128,0.841728 +256,0.9216 +512,0.83968 +1024,0.863232 +2048,0.802816 +4096,0.862208 +8192,0.999424 +16384,1.36704 +32768,1.48275 +65536,1.77971 +131072,2.93171 +262144,5.40672 +524288,8.50842 +1048576,16.214 +2097152,29.8435 +4194304,57.5447 +8388608,114.819 +16777216,230.082 +33554432,464.001 +67108864,935.969 +134217728,1861.6 +268435456,3748.18 +16,0.995328 +32,1.04346 +64,1.06291 +128,0.937984 +256,0.8448 +512,0.87552 +1024,1.0025 +2048,1.20525 +4096,1.02502 +8192,1.11002 +16384,1.31683 +32768,1.44282 +65536,1.82886 +131072,2.8631 +262144,5.35757 +524288,8.87091 +1048576,16.1352 +2097152,29.8476 +4194304,58.3987 +8388608,116.408 +16777216,234.467 +33554432,472.663 +67108864,934.736 +134217728,1886.05 +268435456,3736.23 +16,1.08544 +32,0.864256 +64,1.18682 +128,0.894976 +256,0.873472 +512,0.955392 +1024,0.758784 +2048,1.28922 +4096,0.969728 +8192,1.03629 +16384,1.07725 +32768,1.35782 +65536,1.93331 +131072,3.43142 +262144,5.37293 +524288,9.50067 +1048576,15.7286 +2097152,30.6135 +4194304,58.7438 +8388608,115.446 +16777216,234.486 +33554432,470.607 +67108864,943.738 +134217728,1874.18 +268435456,3762.46 +16,0.718848 +32,0.740352 +64,0.745472 +128,0.774144 +256,0.78848 +512,0.746496 +1024,0.941056 +2048,0.848896 +4096,1.21446 +8192,1.01069 +16384,1.42438 +32768,1.52269 +65536,1.96301 +131072,3.28294 +262144,5.24698 +524288,8.47155 +1048576,16.7578 +2097152,30.3073 +4194304,58.0925 +8388608,117.803 +16777216,232.125 +33554432,469.018 +67108864,930.703 +134217728,1878.57 +268435456,3745.27 +16,0.946176 +32,0.804864 +64,0.886784 +128,0.897024 +256,1.68346 +512,1.06291 +1024,1.18272 +2048,0.887808 +4096,0.917504 +8192,0.91136 +16384,1.06701 +32768,1.39571 +65536,1.82272 +131072,2.7392 +262144,5.0432 +524288,8.58522 +1048576,17.5104 +2097152,31.0999 +4194304,58.709 +8388608,113.335 +16777216,230.502 +33554432,464.887 +67108864,936.96 +134217728,1867.75 +268435456,3727.99 +16,0.720896 +32,0.749568 +64,0.740352 +128,0.7168 +256,0.81408 +512,0.744448 +1024,0.828416 +2048,1.26976 +4096,0.960512 +8192,1.21034 +16384,1.47558 +32768,1.33325 +65536,1.76435 +131072,2.83955 +262144,5.87469 +524288,9.10746 +1048576,16.2263 +2097152,30.6493 +4194304,57.1023 +8388608,116.488 +16777216,236.217 +33554432,470.385 +67108864,941.828 +134217728,1879.06 +268435456,3732.8 +16,0.66048 +32,0.883712 +64,0.781312 +128,1.0455 +256,0.838656 +512,0.914432 +1024,0.968704 +2048,0.971776 +4096,1.86266 +8192,1.18374 +16384,1.25645 +32768,1.51142 +65536,2.0224 +131072,3.23789 +262144,5.47942 +524288,8.97741 +1048576,15.9416 +2097152,30.1455 +4194304,58.3844 +8388608,117.873 +16777216,233.564 +33554432,474.811 +67108864,944.226 +134217728,1876.26 +268435456,3757.03 +16,0.841728 +32,0.802816 +64,0.908288 +128,0.801792 +256,1.16224 +512,0.920576 +1024,1.11821 +2048,1.0025 +4096,0.868352 +8192,1.5319 +16384,1.16531 +32768,1.34554 +65536,2.37466 +131072,3.52563 +262144,4.84659 +524288,8.41216 +1048576,15.9724 +2097152,29.9704 +4194304,58.2943 +8388608,114.843 +16777216,231.187 +33554432,471.015 +67108864,939.542 +134217728,1878.85 +268435456,3748.34 +16,1.28307 +32,0.879616 +64,0.69632 +128,1.0455 +256,0.744448 +512,1.7449 +1024,0.753664 +2048,0.982016 +4096,0.899072 +8192,1.46944 +16384,1.10387 +32768,1.69677 +65536,1.88314 +131072,3.28397 +262144,5.17222 +524288,9.13408 +1048576,16.5396 +2097152,29.7155 +4194304,57.7884 +8388608,114.998 +16777216,231.955 +33554432,462.702 +67108864,939.082 +134217728,1873.47 +268435456,3732.25 +16,0.714752 +32,1.07418 +64,0.80384 +128,0.722944 +256,1.4377 +512,0.740352 +1024,0.920576 +2048,0.893952 +4096,0.966656 +8192,1.21344 +16384,1.08646 +32768,1.71418 +65536,1.88621 +131072,2.7095 +262144,5.46611 +524288,8.22374 +1048576,15.7614 +2097152,29.8435 +4194304,57.8058 +8388608,115.676 +16777216,235.234 +33554432,471.652 +67108864,937.299 +134217728,1887.29 +268435456,3734.08 +16,0.828416 +32,0.900096 +64,0.684032 +128,0.941056 +256,0.734208 +512,0.864256 +1024,1.10182 +2048,1.23187 +4096,1.1223 +8192,1.05574 +16384,1.93434 +32768,1.29536 +65536,1.72646 +131072,3.05766 +262144,4.77286 +524288,8.94464 +1048576,15.7645 +2097152,30.1681 +4194304,58.3977 +8388608,114.877 +16777216,237.275 +33554432,469.209 +67108864,938.074 +134217728,1878.28 +268435456,3763.14 +16,1.32915 +32,0.87552 +64,1.10182 +128,0.892928 +256,0.900096 +512,0.909312 +1024,0.925696 +2048,1.36602 +4096,1.1264 +8192,0.955392 +16384,1.12947 +32768,1.29638 +65536,1.69574 +131072,2.98803 +262144,4.69504 +524288,9.76691 +1048576,16.6963 +2097152,30.2909 +4194304,58.8913 +8388608,121.001 +16777216,232.208 +33554432,468.433 +67108864,938.404 +134217728,1874.06 +268435456,3746.7 +16,0.878592 +32,0.866304 +64,1.12333 +128,0.96768 +256,0.731136 +512,1.85139 +1024,0.935936 +2048,0.795648 +4096,1.04755 +8192,1.00557 +16384,1.37728 +32768,1.5616 +65536,1.83296 +131072,2.9225 +262144,4.84147 +524288,8.80026 +1048576,16.3471 +2097152,29.9663 +4194304,58.4141 +8388608,117.986 +16777216,233.266 +33554432,466.438 +67108864,939.48 +134217728,1863.81 +268435456,3741.44 +16,0.729088 +32,1.85651 +64,1.2329 +128,1.08339 +256,0.735232 +512,0.751616 +1024,0.77312 +2048,0.874496 +4096,1.00762 +8192,1.024 +16384,1.19501 +32768,1.408 +65536,1.76333 +131072,3.72429 +262144,4.81485 +524288,9.18733 +1048576,15.618 +2097152,30.6995 +4194304,58.2042 +8388608,113.663 +16777216,236.342 +33554432,470.255 +67108864,936.094 +134217728,1886.11 +268435456,3739 +16,0.868352 +32,0.946176 +64,0.87552 +128,1.06189 +256,0.928768 +512,1.02605 +1024,0.982016 +2048,1.10387 +4096,1.07315 +8192,1.20832 +16384,1.1735 +32768,1.42643 +65536,1.72032 +131072,2.75661 +262144,5.32173 +524288,8.43878 +1048576,16.47 +2097152,31.231 +4194304,59.1247 +8388608,112.886 +16777216,234.684 +33554432,474.32 +67108864,946.712 +134217728,1873.85 +268435456,3753.57 +16,0.959488 +32,1.09978 +64,1.17146 +128,0.940032 +256,0.935936 +512,0.87552 +1024,0.797696 +2048,1.13664 +4096,1.16736 +8192,1.31891 +16384,1.29229 +32768,1.50221 +65536,1.77766 +131072,2.92762 +262144,5.11181 +524288,8.59443 +1048576,16.2755 +2097152,30.2766 +4194304,58.6189 +8388608,117.096 +16777216,232.28 +33554432,471.37 +67108864,942.013 +134217728,1876.44 +268435456,3750.31 +16,0.708608 +32,0.868352 +64,0.88576 +128,0.9728 +256,0.804864 +512,0.8192 +1024,0.769024 +2048,1.03936 +4096,0.854016 +8192,1.10797 +16384,1.0752 +32768,1.54317 +65536,2.98189 +131072,3.65568 +262144,5.34528 +524288,8.68454 +1048576,15.6723 +2097152,29.8281 +4194304,59.4104 +8388608,116.072 +16777216,231.705 +33554432,465.101 +67108864,940.293 +134217728,1869.77 +268435456,3739.22 +16,1.21139 +32,0.746496 +64,0.877568 +128,0.881664 +256,0.920576 +512,0.980992 +1024,0.843776 +2048,0.828416 +4096,1.55136 +8192,0.923648 +16384,1.11718 +32768,1.29229 +65536,1.93229 +131072,2.8713 +262144,5.78867 +524288,9.37882 +1048576,16.1495 +2097152,30.0728 +4194304,57.4935 +8388608,115.66 +16777216,235.25 +33554432,473.082 +67108864,938.91 +134217728,1885.06 +268435456,4396.55 +16,0.949248 +32,0.79872 +64,1.0711 +128,0.857088 +256,1.02093 +512,0.83968 +1024,1.2841 +2048,0.81408 +4096,1.29843 +8192,0.953344 +16384,1.25949 +32768,1.78278 +65536,2.05312 +131072,3.04435 +262144,5.18554 +524288,9.10336 +1048576,16.3226 +2097152,37.3985 +4194304,59.3582 +8388608,135.122 +16777216,241.24 +33554432,475.632 +67108864,978.084 +134217728,1885.73 +268435456,3844.28 +16,0.910336 +32,0.848896 +64,1.39469 +128,0.925696 +256,1.27898 +512,1.08954 +1024,0.867328 +2048,0.88064 +4096,0.857088 +8192,0.91136 +16384,1.26669 +32768,1.66298 +65536,2.20262 +131072,3.10784 +262144,5.00326 +524288,8.41523 +1048576,16.5233 +2097152,31.3426 +4194304,58.581 +8388608,115.78 +16777216,235.582 +33554432,472.408 +67108864,948.15 +134217728,1890.94 +268435456,3763.14 +16,0.84992 +32,0.830464 +64,0.789504 +128,0.856064 +256,0.846848 +512,0.897024 +1024,0.9984 +2048,1.04448 +4096,1.04346 +8192,1.0752 +16384,1.43974 +32768,1.37114 +65536,1.79098 +131072,3.35053 +262144,5.08006 +524288,8.56371 +1048576,16.2365 +2097152,30.7517 +4194304,60.7252 +8388608,116.346 +16777216,232.614 +33554432,465.392 +67108864,951.25 +134217728,1876.88 +268435456,3807.58 +16,0.692224 +32,1.39366 +64,0.974848 +128,0.863232 +256,1.41005 +512,0.807936 +1024,0.845824 +2048,1.34554 +4096,0.937984 +8192,0.912384 +16384,1.68032 +32768,1.37523 +65536,2.30912 +131072,2.98906 +262144,5.55315 +524288,8.6016 +1048576,15.7266 +2097152,31.4849 +4194304,58.1837 +8388608,117.005 +16777216,233.969 +33554432,468.331 +67108864,951.943 +134217728,1931.13 +268435456,3769.99 +16,0.9728 +32,0.717824 +64,0.78336 +128,0.771072 +256,0.89088 +512,0.799744 +1024,0.827392 +2048,1.01581 +4096,0.903168 +8192,1.0281 +16384,1.11718 +32768,1.29126 +65536,1.68755 +131072,3.06893 +262144,5.10157 +524288,8.9856 +1048576,16.1505 +2097152,30.2961 +4194304,57.7434 +8388608,115.594 +16777216,239.502 +33554432,471.31 +67108864,940.627 +134217728,1892.85 +268435456,3812.75 +16,0.750592 +32,0.804864 +64,0.871424 +128,0.80384 +256,0.959488 +512,0.867328 +1024,1.26771 +2048,1.04141 +4096,1.15917 +8192,1.27488 +16384,1.21856 +32768,1.31277 +65536,1.93536 +131072,3.05152 +262144,5.36474 +524288,8.9856 +1048576,15.5924 +2097152,29.1482 +4194304,60.9147 +8388608,116.106 +16777216,229.259 +33554432,469.363 +67108864,957.157 +134217728,1891.72 +268435456,3795.23 +16,0.879616 +32,0.726016 +64,0.74752 +128,0.91136 +256,0.751616 +512,0.914432 +1024,1.26669 +2048,0.856064 +4096,1.05165 +8192,1.02502 +16384,1.21856 +32768,1.42541 +65536,1.80429 +131072,3.16211 +262144,4.95923 +524288,8.45312 +1048576,15.614 +2097152,29.9766 +4194304,61.9459 +8388608,114.3 +16777216,249.142 +33554432,472.394 +67108864,946.636 +134217728,1888.29 +268435456,3770.85 +16,0.919552 +32,0.72192 +64,1.13254 +128,0.99328 +256,1.35987 +512,1.12333 +1024,0.871424 +2048,0.951296 +4096,0.96256 +8192,1.08544 +16384,1.2544 +32768,1.46637 +65536,2.11763 +131072,3.04435 +262144,5.2439 +524288,9.01837 +1048576,17.1284 +2097152,29.6919 +4194304,57.0644 +8388608,114.156 +16777216,244.982 +33554432,472.05 +67108864,937.596 +134217728,1883.64 +268435456,3739.89 +16,0.712704 +32,0.740352 +64,0.741376 +128,0.765952 +256,0.733184 +512,0.745472 +1024,0.781312 +2048,0.809984 +4096,0.846848 +8192,0.994304 +16384,1.08339 +32768,1.57798 +65536,1.97939 +131072,2.80883 +262144,5.28589 +524288,9.15866 +1048576,15.5085 +2097152,29.4359 +4194304,58.0526 +8388608,114.576 +16777216,234.25 +33554432,471.615 +67108864,942.649 +134217728,1872.1 +268435456,3762.24 +16,1.57082 +32,0.93184 +64,0.994304 +128,0.828416 +256,0.863232 +512,0.820224 +1024,1.27693 +2048,0.971776 +4096,0.837632 +8192,1.16531 +16384,1.16941 +32768,1.55546 +65536,1.92717 +131072,3.06483 +262144,5.5337 +524288,8.49101 +1048576,17.3025 +2097152,29.5987 +4194304,58.5626 +8388608,116.174 +16777216,231.52 +33554432,469.637 +67108864,936.03 +134217728,1873.87 +268435456,3749.61 +16,0.703488 +32,0.681984 +64,1.02298 +128,0.764928 +256,0.771072 +512,0.878592 +1024,0.82944 +2048,1.02707 +4096,0.97792 +8192,0.971776 +16384,1.20218 +32768,1.31174 +65536,1.76538 +131072,2.88973 +262144,4.9664 +524288,8.94157 +1048576,15.959 +2097152,30.0872 +4194304,57.5928 +8388608,114.5 +16777216,229.956 +33554432,465.519 +67108864,960.672 +134217728,1869.96 +268435456,3685.25 +16,0.714752 +32,0.724992 +64,1.01786 +128,0.789504 +256,0.857088 +512,0.816128 +1024,1.02912 +2048,1.33325 +4096,0.871424 +8192,1.15507 +16384,1.17043 +32768,1.34349 +65536,1.81555 +131072,2.84877 +262144,5.04934 +524288,8.99379 +1048576,15.5894 +2097152,30.2858 +4194304,57.0573 +8388608,114.134 +16777216,236.901 +33554432,470.908 +67108864,938.888 +134217728,1884.8 +268435456,3735.53 +16,0.84992 +32,0.68608 +64,0.734208 +128,0.841728 +256,0.896 +512,1.02707 +1024,0.864256 +2048,1.01171 +4096,0.920576 +8192,1.31686 +16384,1.14995 +32768,1.52166 +65536,1.77971 +131072,2.85594 +262144,5.4313 +524288,8.55859 +1048576,15.5638 +2097152,30.4538 +4194304,59.435 +8388608,113.743 +16777216,234.093 +33554432,472.12 +67108864,943.031 +134217728,1879.62 +268435456,3842.28 +16,0.878592 +32,0.867328 +64,2.50982 +128,1.12538 +256,0.965632 +512,0.843776 +1024,0.907264 +2048,0.968704 +4096,1.09261 +8192,1.03424 +16384,1.23494 +32768,1.37216 +65536,1.84115 +131072,3.01056 +262144,4.79539 +524288,8.79923 +1048576,15.615 +2097152,30.3657 +4194304,57.2559 +8388608,114.769 +16777216,240.661 +33554432,468.855 +67108864,979.09 +134217728,1901.86 +268435456,3789.33 +16,0.616448 +32,0.923648 +64,0.912384 +128,0.857088 +256,0.790528 +512,0.920576 +1024,0.769024 +2048,1.00557 +4096,1.04141 +8192,1.10694 +16384,1.3824 +32768,1.55238 +65536,1.78278 +131072,2.87232 +262144,5.0944 +524288,8.73882 +1048576,15.4204 +2097152,30.081 +4194304,57.3624 +8388608,115.765 +16777216,236.693 +33554432,463.302 +67108864,950.186 +134217728,1905.87 +268435456,3758.53 +16,0.89088 +32,0.792576 +64,0.816128 +128,0.9216 +256,1.04038 +512,1.09158 +1024,0.893952 +2048,0.934912 +4096,1.08954 +8192,1.15405 +16384,1.30662 +32768,1.72339 +65536,1.99885 +131072,3.01773 +262144,5.37702 +524288,8.48486 +1048576,15.6621 +2097152,29.2219 +4194304,57.5222 +8388608,118.136 +16777216,235.965 +33554432,471.673 +67108864,943.337 +134217728,1883.59 +268435456,3747.06 +16,0.818176 +32,0.857088 +64,0.995328 +128,0.712704 +256,0.722944 +512,0.802816 +1024,0.86528 +2048,0.989184 +4096,1.18579 +8192,1.08339 +16384,1.14074 +32768,1.29126 +65536,1.84627 +131072,2.74637 +262144,5.22752 +524288,8.78592 +1048576,15.8167 +2097152,29.951 +4194304,60.0248 +8388608,115.09 +16777216,239.436 +33554432,471.351 +67108864,953.21 +134217728,1871.36 +268435456,3750.34 +16,0.720896 +32,0.687104 +64,0.642048 +128,1.03834 +256,1.00966 +512,0.771072 +1024,0.973824 +2048,1.20013 +4096,1.09773 +8192,1.13971 +16384,1.07622 +32768,1.29229 +65536,1.73466 +131072,2.8375 +262144,5.0903 +524288,8.94566 +1048576,16.172 +2097152,31.234 +4194304,58.7244 +8388608,117.098 +16777216,234.404 diff --git a/Project2-Stream-Compaction/data/Stream_compaction_data/data_pow2/shared_mem.csv b/Project2-Stream-Compaction/data/Stream_compaction_data/data_pow2/shared_mem.csv new file mode 100644 index 0000000..e82664f --- /dev/null +++ b/Project2-Stream-Compaction/data/Stream_compaction_data/data_pow2/shared_mem.csv @@ -0,0 +1,1371 @@ +16,1.0281 +32,0.813056 +64,0.927744 +128,1.16736 +256,1.12538 +512,0.741408 +1024,0.845856 +2048,0.859168 +4096,0.817152 +8192,0.81616 +16384,1.40493 +32768,1.40083 +65536,2.688 +131072,3.70688 +262144,5.77434 +524288,8.94771 +1048576,16.8571 +2097152,30.5746 +4194304,57.8857 +8388608,119.439 +16777216,224.6 +33554432,448.19 +67108864,882.165 +134217728,1776.24 +268435456,3544.18 +16,0.835584 +32,0.807936 +64,0.95232 +128,1.01171 +256,0.979968 +512,0.904192 +1024,0.80384 +2048,1.39059 +4096,1.05165 +8192,1.03322 +16384,1.18374 +32768,1.36397 +65536,2.53542 +131072,3.53075 +262144,5.85523 +524288,9.17504 +1048576,16.3226 +2097152,29.8158 +4194304,56.5361 +8388608,109.529 +16777216,225.388 +33554432,444.895 +67108864,888.444 +134217728,1783.43 +268435456,3559.09 +16,1.17658 +32,1.09568 +64,1.0281 +128,0.9728 +256,0.953344 +512,1.08544 +1024,1.05062 +2048,0.799744 +4096,1.44077 +8192,0.900096 +16384,1.26157 +32768,1.36704 +65536,2.74534 +131072,4.23219 +262144,5.56237 +524288,9.87546 +1048576,17.0004 +2097152,29.9858 +4194304,55.9831 +8388608,110.109 +16777216,222.432 +33554432,443.28 +67108864,884.19 +134217728,1791.73 +268435456,3550.87 +16,0.924672 +32,0.857088 +64,0.837632 +128,1.66298 +256,1.10899 +512,1.02195 +1024,0.782336 +2048,0.818176 +4096,0.835584 +8192,1.13254 +16384,1.48582 +32768,1.27693 +65536,2.23334 +131072,3.52973 +262144,6.25664 +524288,9.57338 +1048576,16.1382 +2097152,29.5414 +4194304,55.9012 +8388608,108.713 +16777216,221.307 +33554432,443.645 +67108864,885.699 +134217728,1779.99 +268435456,3557.33 +16,0.9728 +32,1.00864 +64,1.03219 +128,1.04243 +256,0.987136 +512,0.78336 +1024,0.786432 +2048,0.817152 +4096,0.817152 +8192,1.26362 +16384,1.4295 +32768,1.18784 +65536,2.94707 +131072,3.78374 +262144,5.67091 +524288,9.3737 +1048576,15.7276 +2097152,29.609 +4194304,59.6695 +8388608,109.537 +16777216,221.695 +33554432,442.754 +67108864,889.71 +134217728,1774.41 +268435456,3531.58 +16,1.44077 +32,1.02605 +64,1.01786 +128,1.01376 +256,1.14176 +512,0.939008 +1024,0.909312 +2048,1.66707 +4096,0.99328 +8192,0.851968 +16384,1.55546 +32768,1.18374 +65536,2.72794 +131072,3.65261 +262144,5.88288 +524288,9.67168 +1048576,15.8843 +2097152,29.0847 +4194304,56.2903 +8388608,108.442 +16777216,221.498 +33554432,445.263 +67108864,891.921 +134217728,1804.83 +268435456,3541.94 +16,1.28614 +32,0.905216 +64,1.03322 +128,1.60358 +256,1.13664 +512,1.37011 +1024,1.0496 +2048,1.01376 +4096,1.30765 +8192,1.23597 +16384,1.29741 +32768,1.66093 +65536,2.61632 +131072,3.57786 +262144,5.96582 +524288,9.10131 +1048576,15.7932 +2097152,29.7318 +4194304,55.7169 +8388608,113.362 +16777216,219.244 +33554432,445.396 +67108864,892.832 +134217728,1771.63 +268435456,3546.91 +16,0.996352 +32,1.08237 +64,1.04038 +128,1.0496 +256,1.34758 +512,1.06496 +1024,1.11002 +2048,1.03219 +4096,0.86016 +8192,1.52269 +16384,1.43974 +32768,1.1817 +65536,2.69312 +131072,3.3024 +262144,5.32378 +524288,9.02963 +1048576,16.001 +2097152,30.0861 +4194304,59.0971 +8388608,110.078 +16777216,220.806 +33554432,442.461 +67108864,888.583 +134217728,1772.67 +268435456,3542.08 +16,1.14074 +32,0.848896 +64,0.831488 +128,0.795648 +256,1.46842 +512,1.21446 +1024,0.769024 +2048,0.806912 +4096,0.822272 +8192,0.87552 +16384,0.995328 +32768,1.30662 +65536,2.28659 +131072,3.96083 +262144,6.0119 +524288,9.14022 +1048576,15.7757 +2097152,29.3868 +4194304,56.448 +8388608,110.95 +16777216,220.194 +33554432,442.25 +67108864,885.425 +134217728,1766.93 +268435456,3533.57 +16,1.07008 +32,1.0537 +64,0.928768 +128,1.15302 +256,1.34042 +512,1.15405 +1024,1.14483 +2048,1.19706 +4096,0.941056 +8192,0.859136 +16384,1.28922 +32768,1.20013 +65536,2.52723 +131072,3.35667 +262144,5.26848 +524288,8.86682 +1048576,16.7465 +2097152,29.8711 +4194304,56.1213 +8388608,111.031 +16777216,220.986 +33554432,444.675 +67108864,888.365 +134217728,1778.94 +268435456,3554.62 +16,1.04448 +32,0.995328 +64,1.33427 +128,1.00864 +256,1.08646 +512,0.939008 +1024,0.787456 +2048,0.852992 +4096,0.8192 +8192,0.935936 +16384,1.18374 +32768,1.2544 +65536,2.51392 +131072,3.37306 +262144,6.29555 +524288,9.95021 +1048576,17.5555 +2097152,30.0534 +4194304,57.5048 +8388608,109.811 +16777216,221.048 +33554432,442.545 +67108864,890.865 +134217728,1777.51 +268435456,3557.06 +16,1.17555 +32,1.13766 +64,0.758784 +128,0.77824 +256,0.851968 +512,1.28717 +1024,1.46739 +2048,1.04038 +4096,0.985088 +8192,1.11206 +16384,1.00557 +32768,1.97018 +65536,2.39514 +131072,3.19386 +262144,5.39238 +524288,8.99379 +1048576,15.6856 +2097152,30.3524 +4194304,57.0368 +8388608,110.267 +16777216,221.378 +33554432,445.341 +67108864,883.924 +134217728,1777.65 +268435456,3554.44 +16,1.17555 +32,1.2544 +64,1.19808 +128,0.881664 +256,0.96768 +512,0.979968 +1024,1.06803 +2048,1.05779 +4096,0.990208 +8192,1.16634 +16384,1.13869 +32768,1.2544 +65536,2.72589 +131072,3.32595 +262144,5.76922 +524288,9.984 +1048576,16.1331 +2097152,29.9817 +4194304,57.0327 +8388608,111.748 +16777216,221.454 +33554432,442.631 +67108864,888.566 +134217728,1776.96 +268435456,3532.69 +16,0.905216 +32,1.04038 +64,1.04038 +128,1.01786 +256,0.781312 +512,2.02342 +1024,0.77824 +2048,1.76026 +4096,0.85504 +8192,1.16019 +16384,1.18067 +32768,1.6343 +65536,2.67366 +131072,3.44576 +262144,6.41638 +524288,8.98355 +1048576,16.6738 +2097152,30.2244 +4194304,56.873 +8388608,112.04 +16777216,220.87 +33554432,448.681 +67108864,886.246 +134217728,1773.96 +268435456,3549.01 +16,1.51859 +32,1.08544 +64,0.969728 +128,1.02912 +256,1.03526 +512,1.35782 +1024,0.796672 +2048,1.36909 +4096,1.23085 +8192,1.28512 +16384,1.08134 +32768,1.64045 +65536,3.03309 +131072,3.38534 +262144,6.37645 +524288,8.73472 +1048576,16.7301 +2097152,30.4087 +4194304,56.6497 +8388608,109.244 +16777216,223.449 +33554432,442.131 +67108864,888.775 +134217728,1774.3 +268435456,3553.89 +16,0.871424 +32,1.03014 +64,0.787456 +128,0.78336 +256,0.795648 +512,0.93184 +1024,0.835584 +2048,0.792576 +4096,1.34246 +8192,0.86528 +16384,1.26259 +32768,1.23904 +65536,3.01875 +131072,4.0663 +262144,5.51219 +524288,9.22624 +1048576,16.1157 +2097152,30.8961 +4194304,57.3901 +8388608,111.721 +16777216,219.395 +33554432,442.362 +67108864,894.538 +134217728,1778.42 +268435456,3551.81 +16,0.89088 +32,0.859136 +64,1.6343 +128,0.77824 +256,0.828416 +512,0.797696 +1024,0.782336 +2048,0.791552 +4096,1.4592 +8192,0.917504 +16384,1.26771 +32768,1.35066 +65536,2.7863 +131072,3.46214 +262144,5.08723 +524288,9.25184 +1048576,15.6078 +2097152,29.1041 +4194304,56.5094 +8388608,109.879 +16777216,223.123 +33554432,443.329 +67108864,890.516 +134217728,1775 +268435456,3545.22 +16,1.15814 +32,1.08134 +64,0.98304 +128,1.06291 +256,1.03322 +512,1.0281 +1024,0.979968 +2048,0.83456 +4096,0.812032 +8192,1.21242 +16384,1.20525 +32768,1.49299 +65536,2.2569 +131072,3.85126 +262144,5.65146 +524288,9.22112 +1048576,18.0613 +2097152,29.6479 +4194304,56.0824 +8388608,112.771 +16777216,220.941 +33554432,443.879 +67108864,890.748 +134217728,1771.5 +268435456,3550.5 +16,1.03526 +32,0.995328 +64,0.9984 +128,0.999424 +256,0.995328 +512,1.7961 +1024,0.985088 +2048,0.786432 +4096,0.856064 +8192,1.90464 +16384,1.03629 +32768,1.52474 +65536,3.04538 +131072,3.59219 +262144,5.56442 +524288,9.61741 +1048576,16.2048 +2097152,30.6412 +4194304,56.7572 +8388608,108.573 +16777216,221.873 +33554432,442.773 +67108864,885.335 +134217728,1773.39 +268435456,3537.39 +16,0.92672 +32,1.03731 +64,1.0711 +128,1.08336 +256,0.892928 +512,0.799744 +1024,0.782336 +2048,1.07622 +4096,0.903168 +8192,1.42541 +16384,0.979968 +32768,1.17248 +65536,2.27328 +131072,3.23686 +262144,5.70061 +524288,9.85088 +1048576,16.7854 +2097152,29.2833 +4194304,56.0701 +8388608,109.234 +16777216,224.474 +33554432,443.171 +67108864,885.889 +134217728,1776.34 +268435456,3534.34 +16,1.12845 +32,1.14176 +64,0.917504 +128,0.95744 +256,0.940032 +512,1.14995 +1024,0.9728 +2048,1.0967 +4096,1.10182 +8192,1.07315 +16384,1.11309 +32768,1.31072 +65536,2.4791 +131072,3.34438 +262144,5.71904 +524288,10.1192 +1048576,17.4264 +2097152,29.952 +4194304,56.4142 +8388608,111.184 +16777216,222.254 +33554432,443.675 +67108864,883.703 +134217728,1778.19 +268435456,3541.67 +16,0.989184 +32,1.06598 +64,0.987136 +128,1.08851 +256,1.05165 +512,1.33837 +1024,0.77824 +2048,0.791552 +4096,0.917504 +8192,0.90624 +16384,1.0496 +32768,1.63635 +65536,2.97267 +131072,3.83795 +262144,5.56442 +524288,9.06957 +1048576,16.343 +2097152,30.166 +4194304,55.9708 +8388608,109.77 +16777216,220.928 +33554432,443.872 +67108864,886.741 +134217728,1769.98 +268435456,3544.94 +16,0.959488 +32,0.83456 +64,1.03117 +128,0.828416 +256,1.4551 +512,0.772096 +1024,1.22163 +2048,0.787456 +4096,0.821248 +8192,1.29434 +16384,1.25338 +32768,1.59642 +65536,3.43859 +131072,3.71917 +262144,6.3785 +524288,9.23546 +1048576,17.0168 +2097152,29.5772 +4194304,56.3384 +8388608,112.171 +16777216,221.673 +33554432,444.875 +67108864,884.904 +134217728,1773.36 +268435456,3540.36 +16,0.871424 +32,1.03117 +64,1.05882 +128,1.00762 +256,1.31174 +512,0.949248 +1024,1.01581 +2048,0.807936 +4096,1.04243 +8192,1.01683 +16384,1.59744 +32768,1.17658 +65536,2.47091 +131072,3.64134 +262144,6.01088 +524288,9.47302 +1048576,16.4209 +2097152,29.356 +4194304,55.5479 +8388608,110.284 +16777216,220.902 +33554432,443.606 +67108864,887.082 +134217728,1774.75 +268435456,3542.85 +16,0.95232 +32,0.837632 +64,0.86528 +128,0.758784 +256,1.19296 +512,0.787456 +1024,2.09306 +2048,0.794624 +4096,0.878592 +8192,0.85504 +16384,0.990208 +32768,1.88109 +65536,2.45453 +131072,3.67206 +262144,5.53165 +524288,9.1136 +1048576,16.8428 +2097152,29.694 +4194304,56.2596 +8388608,108.94 +16777216,221.092 +33554432,441.129 +67108864,887.699 +134217728,1772.2 +268435456,3549.53 +16,1.11309 +32,0.973824 +64,0.886784 +128,1.01376 +256,0.909312 +512,0.904192 +1024,0.930816 +2048,0.9472 +4096,1.00966 +8192,1.06086 +16384,1.19603 +32768,1.94458 +65536,2.29171 +131072,3.56966 +262144,5.4999 +524288,9.40544 +1048576,16.8909 +2097152,29.0007 +4194304,55.8602 +8388608,110.323 +16777216,220.731 +33554432,447.797 +67108864,888.333 +134217728,1773.79 +268435456,3539.98 +16,1.08442 +32,0.961536 +64,0.920576 +128,1.05267 +256,1.19808 +512,1.08851 +1024,1.98246 +2048,0.797696 +4096,0.818176 +8192,1.25133 +16384,1.152 +32768,1.40186 +65536,2.64909 +131072,3.47648 +262144,5.5081 +524288,8.99584 +1048576,16.6103 +2097152,29.6161 +4194304,59.9071 +8388608,112.266 +16777216,220.165 +33554432,441.044 +67108864,895.649 +134217728,1771.85 +268435456,3544.44 +16,1.07315 +32,0.795648 +64,1.17043 +128,0.790528 +256,0.794624 +512,0.774144 +1024,0.770048 +2048,0.82944 +4096,0.83456 +8192,0.871424 +16384,1.06189 +32768,1.30662 +65536,2.74534 +131072,3.30752 +262144,5.38829 +524288,10.8503 +1048576,16.5007 +2097152,28.886 +4194304,55.9227 +8388608,109.688 +16777216,221.444 +33554432,442.812 +67108864,885.897 +134217728,1773.64 +268435456,3536.26 +16,1.05267 +32,0.899072 +64,0.898048 +128,0.776192 +256,0.831488 +512,0.792576 +1024,0.930816 +2048,1.17658 +4096,1.3353 +8192,2.33779 +16384,1.08954 +32768,1.42438 +65536,2.98496 +131072,3.31571 +262144,5.47021 +524288,8.90266 +1048576,16.3891 +2097152,29.7441 +4194304,56.5279 +8388608,109.785 +16777216,222.225 +33554432,442.769 +67108864,883.315 +134217728,1773.87 +268435456,3545.95 +16,1.12333 +32,1.03936 +64,0.771072 +128,0.807936 +256,0.920576 +512,0.838656 +1024,1.27283 +2048,0.802816 +4096,1.50323 +8192,0.904192 +16384,0.985088 +32768,1.22778 +65536,2.27533 +131072,3.97926 +262144,5.58899 +524288,10.3475 +1048576,16.6595 +2097152,29.5178 +4194304,57.8038 +8388608,109.398 +16777216,221.256 +33554432,444.637 +67108864,881.39 +134217728,1767.43 +268435456,3534.49 +16,0.999424 +32,1.23085 +64,1.05165 +128,1.08442 +256,0.94208 +512,1.20934 +1024,1.06496 +2048,1.03629 +4096,1.10285 +8192,0.913408 +16384,1.06803 +32768,1.31174 +65536,2.27021 +131072,4.48211 +262144,5.23059 +524288,8.68147 +1048576,16.1065 +2097152,29.9725 +4194304,55.7947 +8388608,109.329 +16777216,220.647 +33554432,444.699 +67108864,889.642 +134217728,1770.12 +268435456,3536.41 +16,1.08851 +32,0.970752 +64,1.00454 +128,0.95232 +256,1.21754 +512,1.01376 +1024,1.03629 +2048,1.59232 +4096,1.03936 +8192,0.98816 +16384,1.23802 +32768,1.39571 +65536,2.79757 +131072,3.77958 +262144,5.96992 +524288,9.22624 +1048576,15.7686 +2097152,30.7876 +4194304,56.0159 +8388608,109.614 +16777216,218.981 +33554432,444.183 +67108864,883.841 +134217728,1776.23 +268435456,3560.45 +16,1.4295 +32,0.9216 +64,1.16531 +128,0.770048 +256,0.786432 +512,0.77312 +1024,0.882688 +2048,0.864256 +4096,0.978944 +8192,1.26157 +16384,1.00147 +32768,1.17555 +65536,2.45453 +131072,3.25222 +262144,5.49376 +524288,9.37267 +1048576,16.2959 +2097152,29.0427 +4194304,55.4066 +8388608,109.892 +16777216,218.613 +33554432,444.223 +67108864,883.891 +134217728,1773.15 +268435456,3535.43 +16,0.955392 +32,1.21754 +64,1.01069 +128,1.40083 +256,1.06598 +512,1.25338 +1024,0.87552 +2048,1.30048 +4096,0.937984 +8192,1.05574 +16384,1.17043 +32768,1.6087 +65536,2.52416 +131072,3.65261 +262144,5.71085 +524288,9.8519 +1048576,15.9212 +2097152,29.4799 +4194304,56.8617 +8388608,110.909 +16777216,220.475 +33554432,445.386 +67108864,898.761 +134217728,1769.12 +268435456,3536.58 +16,1.10285 +32,0.96768 +64,1.21037 +128,0.994304 +256,0.954368 +512,0.791552 +1024,0.804864 +2048,1.26362 +4096,0.970752 +8192,0.889856 +16384,0.984064 +32768,1.2329 +65536,2.45146 +131072,3.25427 +262144,6.26381 +524288,9.01325 +1048576,15.958 +2097152,29.3171 +4194304,56.5033 +8388608,111.556 +16777216,222.222 +33554432,443.843 +67108864,884.929 +134217728,1774.78 +268435456,3548.52 +16,1.77152 +32,1.30867 +64,1.24416 +128,0.892928 +256,1.52166 +512,0.811008 +1024,1.00966 +2048,0.86528 +4096,0.9472 +8192,0.974848 +16384,1.01786 +32768,1.21958 +65536,2.34906 +131072,3.88198 +262144,5.98733 +524288,9.55392 +1048576,15.916 +2097152,29.8383 +4194304,57.7362 +8388608,110.898 +16777216,221.114 +33554432,443.262 +67108864,884.385 +134217728,1775.81 +268435456,3540.36 +16,0.887808 +32,0.836608 +64,0.994304 +128,0.934912 +256,1.29741 +512,1.0793 +1024,0.797696 +2048,0.80896 +4096,0.809984 +8192,0.900096 +16384,1.82784 +32768,1.38957 +65536,2.68493 +131072,3.44269 +262144,5.70778 +524288,9.34502 +1048576,17.0844 +2097152,29.3724 +4194304,55.8909 +8388608,108.157 +16777216,220.31 +33554432,442.342 +67108864,887.932 +134217728,1778.59 +268435456,3603.08 +16,1.21446 +32,1.01069 +64,1.02707 +128,0.863232 +256,1.59949 +512,0.831488 +1024,0.77824 +2048,0.904192 +4096,1.0025 +8192,1.03936 +16384,1.08749 +32768,1.28717 +65536,2.92659 +131072,3.48262 +262144,5.42413 +524288,9.20474 +1048576,16.428 +2097152,32.5458 +4194304,67.6045 +8388608,108.562 +16777216,225.119 +33554432,454.894 +67108864,898.64 +134217728,1792.91 +268435456,3582.44 +16,1.00147 +32,1.00966 +64,1.09158 +128,1.15302 +256,1.40186 +512,0.804864 +1024,0.861184 +2048,0.932864 +4096,1.14893 +8192,0.930816 +16384,1.01171 +32768,1.34963 +65536,2.58355 +131072,3.28602 +262144,5.2736 +524288,9.39315 +1048576,16.9185 +2097152,29.3827 +4194304,56.3333 +8388608,111.567 +16777216,223.969 +33554432,451.887 +67108864,892.854 +134217728,1786.12 +268435456,3566.78 +16,1.03731 +32,1.08851 +64,1.03936 +128,1.01376 +256,1.11411 +512,1.00762 +1024,1.03424 +2048,1.08339 +4096,1.45715 +8192,1.06394 +16384,1.54112 +32768,1.18682 +65536,2.59174 +131072,3.69766 +262144,5.54701 +524288,8.9856 +1048576,15.8863 +2097152,29.9653 +4194304,56.9825 +8388608,112.372 +16777216,232.3 +33554432,452.856 +67108864,892.789 +134217728,1793.12 +268435456,3555.42 +16,0.818176 +32,0.903168 +64,1.43258 +128,1.22061 +256,0.766976 +512,1.35373 +1024,0.840704 +2048,0.796672 +4096,0.96256 +8192,1.51866 +16384,1.52986 +32768,1.25542 +65536,2.7689 +131072,3.65773 +262144,5.56339 +524288,9.02144 +1048576,16.94 +2097152,29.8619 +4194304,56.193 +8388608,109.9 +16777216,220.294 +33554432,446.129 +67108864,887.13 +134217728,1793.7 +268435456,3551.85 +16,0.828416 +32,0.766976 +64,0.823296 +128,0.809984 +256,0.835584 +512,1.34349 +1024,0.809984 +2048,0.794624 +4096,0.8448 +8192,0.874496 +16384,1.11206 +32768,1.28307 +65536,2.46067 +131072,3.79904 +262144,5.56237 +524288,9.06957 +1048576,15.9365 +2097152,30.5592 +4194304,55.3789 +8388608,109.825 +16777216,220.423 +33554432,440.515 +67108864,882.406 +134217728,1788.01 +268435456,3595.58 +16,0.925696 +32,1.0711 +64,1.37728 +128,1.05062 +256,0.996352 +512,1.07622 +1024,1.06189 +2048,1.04038 +4096,1.26874 +8192,1.82067 +16384,1.1008 +32768,1.21754 +65536,2.82317 +131072,3.53997 +262144,6.72563 +524288,9.15456 +1048576,15.4552 +2097152,28.9434 +4194304,59.8641 +8388608,116.614 +16777216,227.822 +33554432,452.384 +67108864,889.943 +134217728,1819.45 +268435456,3566.87 +16,1.02502 +32,0.944128 +64,1.2073 +128,0.973824 +256,1.32608 +512,1.10896 +1024,0.995328 +2048,1.16634 +4096,0.932864 +8192,0.985088 +16384,1.39776 +32768,1.34451 +65536,2.57536 +131072,3.61062 +262144,5.72928 +524288,9.52115 +1048576,16.129 +2097152,29.4666 +4194304,55.5366 +8388608,110.68 +16777216,226.191 +33554432,457.048 +67108864,894.687 +134217728,1776.44 +268435456,3584.62 +16,0.898048 +32,1.11718 +64,1.4592 +128,1.0793 +256,0.991232 +512,1.01376 +1024,1.06496 +2048,0.961536 +4096,1.17965 +8192,1.32608 +16384,1.17146 +32768,1.63635 +65536,2.96755 +131072,4.25062 +262144,5.27053 +524288,9.06342 +1048576,16.7926 +2097152,29.0601 +4194304,55.6861 +8388608,110.344 +16777216,230.253 +33554432,450.364 +67108864,891.337 +134217728,1781.72 +268435456,3542.19 +16,0.84992 +32,0.831488 +64,0.825344 +128,0.790528 +256,0.781312 +512,0.756736 +1024,0.805888 +2048,0.872448 +4096,1.04141 +8192,1.05267 +16384,1.03526 +32768,1.23904 +65536,2.65626 +131072,3.23789 +262144,5.68525 +524288,9.12896 +1048576,15.4245 +2097152,29.5322 +4194304,56.6569 +8388608,112.658 +16777216,219.957 +33554432,441.621 +67108864,893.935 +134217728,1773.66 +268435456,3541.03 +16,0.969728 +32,1.07827 +64,1.1223 +128,0.940032 +256,0.948224 +512,1.0025 +1024,1.01888 +2048,1.06394 +4096,1.12435 +8192,1.06598 +16384,1.44179 +32768,1.64864 +65536,2.48627 +131072,3.91475 +262144,5.17018 +524288,9.9072 +1048576,16.9779 +2097152,29.5444 +4194304,55.3267 +8388608,112.329 +16777216,219.94 +33554432,440.995 +67108864,885.3 +134217728,1770.51 +268435456,3533.31 +16,1.18784 +32,0.848896 +64,0.82432 +128,0.827392 +256,0.9216 +512,0.769024 +1024,0.7936 +2048,0.884736 +4096,1.11411 +8192,1.02195 +16384,1.26464 +32768,1.24109 +65536,2.43814 +131072,3.54406 +262144,6.74202 +524288,9.40954 +1048576,16.0573 +2097152,30.0943 +4194304,58.2656 +8388608,109.191 +16777216,219.93 +33554432,443.19 +67108864,900.63 +134217728,1783.44 +268435456,3545.3 +16,1.12128 +32,1.12333 +64,1.00147 +128,1.09568 +256,0.898048 +512,1.03936 +1024,1.01888 +2048,1.0281 +4096,1.0711 +8192,1.19194 +16384,1.47763 +32768,1.31072 +65536,2.2743 +131072,4.15642 +262144,5.88083 +524288,9.10131 +1048576,15.4419 +2097152,29.8271 +4194304,56.2575 +8388608,109.668 +16777216,221.11 +33554432,444.777 +67108864,885.6 +134217728,1779.45 +268435456,3542.84 +16,0.874496 +32,0.831488 +64,0.86528 +128,0.836608 +256,0.8192 +512,0.86528 +1024,1.0496 +2048,1.03117 +4096,1.37318 +8192,1.16122 +16384,1.16224 +32768,1.64557 +65536,2.67366 +131072,3.6311 +262144,5.62278 +524288,9.44742 +1048576,15.7594 +2097152,28.4611 +4194304,58.5933 +8388608,108.47 +16777216,221.272 +33554432,442.662 +67108864,888.302 +134217728,1770.63 +268435456,3580.33 +16,0.958464 +32,0.940032 +64,1.07315 +128,1.32813 +256,0.93696 +512,0.969728 +1024,1.14586 +2048,1.02707 +4096,1.00557 +8192,1.26771 +16384,1.37421 +32768,1.82067 +65536,2.49344 +131072,3.47853 +262144,5.60742 +524288,9.16378 +1048576,15.9672 +2097152,28.6628 +4194304,55.4537 +8388608,108.86 +16777216,218.855 +33554432,447.44 +67108864,897.894 +134217728,1787.89 +268435456,3548.12 +16,1.09158 +32,1.08134 +64,1.04653 +128,1.0793 +256,0.996352 +512,0.976896 +1024,1.09056 +2048,1.03526 +4096,1.08544 +8192,1.27898 +16384,1.20627 +32768,1.99475 +65536,2.81907 +131072,3.38944 +262144,5.67808 +524288,8.97741 +1048576,15.8607 +2097152,29.2526 +4194304,54.8178 +8388608,111.6 +16777216,220.163 +33554432,443.183 +67108864,899.156 +134217728,1779.27 +268435456,3575.08 +16,1.16429 +32,1.04653 +64,0.76288 +128,0.992256 +256,0.995328 +512,1.03014 +1024,0.941056 +2048,1.33837 +4096,1.27386 +8192,1.0537 +16384,1.34963 +32768,1.66605 +65536,2.54874 +131072,3.69971 +262144,5.05958 +524288,9.25491 +1048576,15.9222 +2097152,30.3012 +4194304,56.0691 +8388608,109.264 +16777216,220.261 +33554432,442.528 +67108864,909.787 +134217728,1776.7 +268435456,3584.81 +16,1.14995 +32,1.06496 +64,0.80896 +128,0.836608 +256,0.753664 +512,0.838656 +1024,0.996352 +2048,1.52371 +4096,1.34963 +8192,0.859136 +16384,0.984064 +32768,1.45715 +65536,2.88973 +131072,3.42528 +262144,5.96992 +524288,9.54982 +1048576,16.4475 +2097152,29.4717 +4194304,56.9436 +8388608,114.194 +16777216,228.138 +33554432,457.313 +67108864,892.004 +134217728,1772.29 +268435456,3547.74 +16,0.846848 +32,1.31994 +64,0.864256 +128,0.794624 +256,0.809984 +512,1.32403 +1024,0.769024 +2048,0.812032 +4096,1.24109 +8192,0.894976 +16384,1.04653 +32768,1.47661 +65536,2.80883 +131072,4.29568 +262144,6.272 +524288,10.0168 +1048576,16.0451 +2097152,30.1353 +4194304,56.3589 +8388608,110.33 +16777216,220.712 diff --git a/Project2-Stream-Compaction/src/data_gen.cpp b/Project2-Stream-Compaction/src/data_gen.cpp index 4628078..8c9b03e 100644 --- a/Project2-Stream-Compaction/src/data_gen.cpp +++ b/Project2-Stream-Compaction/src/data_gen.cpp @@ -21,13 +21,15 @@ using namespace std; #define max_value_scan 50 #define max_value_compaction 4 #define max_value_sorting 500 -#define cpu_scan true +#define do_scan false +#define do_sort true // true skips scan (so set to false if we want scan or stream compaction data) +#define cpu_scan true // always keep this true to get metrics (pass/fail) #define naive_scan true #define efficient_scan true #define shared_mem_scan true #define thrust_scan true -#define pow_2 true - +#define pow_2 false +#define max_pow 26 void csv_write(float time, unsigned long long size, string file_name){ std::ofstream outfile; outfile.open(file_name, std::ios_base::app); @@ -41,65 +43,134 @@ int main(int argc, char* argv[]) { printf("** SCAN Data Gen **\n"); printf("****************\n"); int pow = 4; - while (true) { + while (true && !do_sort) { unsigned long long int SIZE; - cout << pow << endl; - if (pow >= 31) + if (pow > 28) pow = 4; + cout << pow << endl; if (pow_2) - SIZE = std::pow(2,pow); // Power of 2 + SIZE = 1ULL << pow; // Power of 2 else - SIZE = std::pow(2, pow) - 3; // Non-Power-Of-Two + SIZE = (1ULL << pow) - 3; // Non-Power-Of-Two long long *a = new long long[SIZE]; long long *b = new long long[SIZE]; long long *c = new long long[SIZE]; - genArray(SIZE - 1, a, 50); // Leave a 0 at the end to test that edge case + genArray(SIZE - 1, a, (do_scan)? max_value_scan: max_value_compaction); // Leave a 0 at the end to test that edge case a[SIZE - 1] = 0; // get time float time = -1; + float count, expectedCount; // set solution if (cpu_scan) { - zeroArray(SIZE, b); - StreamCompaction::CPU::scan(SIZE, b, a); - time = StreamCompaction::CPU::timer().getCpuElapsedTimeForPreviousOperation(); - csv_write(time, SIZE, "cpu.csv"); - cout << "CPU:"; printArray(SIZE, b, true); + zeroArray(SIZE, b); // reset ans + zeroArray(SIZE, c); + if (do_scan) { + StreamCompaction::CPU::scan(SIZE, b, a); + time = StreamCompaction::CPU::timer().getCpuElapsedTimeForPreviousOperation(); + csv_write(time, SIZE, "cpu.csv"); + cout << "CPU:"; printArray(SIZE, b, true); + } + else { + count = StreamCompaction::CPU::compactWithoutScan(SIZE, b, a); // baseline + expectedCount = count; + time = StreamCompaction::CPU::timer().getCpuElapsedTimeForPreviousOperation(); + csv_write(time, SIZE, "cpu_without.csv"); + cout << "BAS (" << count << "):"; printArray(count, b, true); // baseline + count = StreamCompaction::CPU::compactWithoutScan(SIZE, c, a); // without + time = StreamCompaction::CPU::timer().getCpuElapsedTimeForPreviousOperation(); + csv_write(time, SIZE, "cpu_with.csv"); + cout << "CPU (" < 27) + pow = 4; + cout << pow << endl; + if (pow_2) + SIZE = 1ULL<> > (n, dev_mask, dev_idata); + checkCUDAErrorWithLine("mask gen failed!"); + // scan the mask array (can be done in parallel by using a balanced binary tree) + cudaMemcpy(dev_indices, dev_mask, closest_pow2 * sizeof(long long), cudaMemcpyDeviceToDevice); + dev_scan(closest_pow2, dev_indices, dev_mask); + checkCUDAErrorWithLine("dev scan failed!"); + // Scatter array (go to each position and copy the value) + Common::kernScatter << > > (closest_pow2, dev_odata, dev_idata, dev_mask, dev_indices); + + checkCUDAErrorWithLine("scatter failed!"); + //read data back + long long res; + cudaMemcpy(&res, dev_indices + n - 1, sizeof(long long), cudaMemcpyDeviceToHost); + res = idata[n - 1] ? res + 1 : res; + cudaMemcpy(odata, dev_odata, n * sizeof(long long), cudaMemcpyDeviceToHost); + cudaFree(dev_odata); + cudaFree(dev_idata); + cudaFree(dev_mask); + cudaFree(dev_indices); timer().endGpuTimer(); + return res; } } } diff --git a/Project2-Stream-Compaction/stream_compaction/efficient.h b/Project2-Stream-Compaction/stream_compaction/efficient.h index 1b7c24a..c95c865 100644 --- a/Project2-Stream-Compaction/stream_compaction/efficient.h +++ b/Project2-Stream-Compaction/stream_compaction/efficient.h @@ -12,8 +12,8 @@ namespace StreamCompaction { } namespace SharedMemory { StreamCompaction::Common::PerformanceTimer& timer(); - void scan(unsigned long long int n, long long *odata, long long *idata); void dev_scan(unsigned long long int n, long long *odata, long long *idata); + unsigned long long int compact(unsigned long long int n, long long *odata, const long long *idata); } } From 3217bf4e0e67cf35435ae8d6e07c6f7e3c1dd711 Mon Sep 17 00:00:00 2001 From: Vaibhav Arcot Date: Tue, 17 Sep 2019 00:26:21 -0400 Subject: [PATCH 18/34] Finished backprop (tested on xor) --- .../character_recognition/mlp.cu | 202 +- .../character_recognition/mlp.h | 15 +- Project2-Character-Recognition/src/main.cpp | 36 +- .../data/Scan_data/data_nonpow2/data.csv | 3469 +++++++++++++ .../Scan_data/data_nonpow2_faster/cpu.csv | 895 ++++ .../Scan_data/data_nonpow2_faster/data.csv | 896 ++++ .../Scan_data/data_nonpow2_faster/eff.csv | 894 ++++ .../Scan_data/data_nonpow2_faster/naive.csv | 894 ++++ .../data_nonpow2_faster/shared_mem.csv | 894 ++++ .../Scan_data/data_nonpow2_faster/thrust.csv | 894 ++++ .../data/Scan_data/data_pow2/data.csv | 4549 +++++++++++++++++ .../data/Scan_data/data_pow2_faster/cpu.csv | 893 ++++ .../data/Scan_data/data_pow2_faster/data.csv | 894 ++++ .../data/Scan_data/data_pow2_faster/eff.csv | 893 ++++ .../data/Scan_data/data_pow2_faster/naive.csv | 893 ++++ .../Scan_data/data_pow2_faster/shared_mem.csv | 893 ++++ .../Scan_data/data_pow2_faster/thrust.csv | 892 ++++ .../data/Sort_data/data_nonpow2/data.csv | 911 ++++ .../data/Sort_data/data_nonpow2/thrust.csv | 910 ---- .../data/Sort_data/data_pow2/data.csv | 934 ++++ .../data/Sort_data/data_pow2/thrust.csv | 933 ---- .../data_nonpow2/data.csv | 925 ++++ .../Stream_compaction_data/data_pow2/data.csv | 1372 +++++ Project2-Stream-Compaction/src/data_gen.cpp | 8 +- .../stream_compaction/cpu.cu | 6 +- .../stream_compaction/efficient.cu | 9 +- .../stream_compaction/naive.cu | 4 +- .../stream_compaction/thrust.cu | 4 +- 28 files changed, 23063 insertions(+), 1949 deletions(-) create mode 100644 Project2-Stream-Compaction/data/Scan_data/data_nonpow2/data.csv create mode 100644 Project2-Stream-Compaction/data/Scan_data/data_nonpow2_faster/cpu.csv create mode 100644 Project2-Stream-Compaction/data/Scan_data/data_nonpow2_faster/data.csv create mode 100644 Project2-Stream-Compaction/data/Scan_data/data_nonpow2_faster/eff.csv create mode 100644 Project2-Stream-Compaction/data/Scan_data/data_nonpow2_faster/naive.csv create mode 100644 Project2-Stream-Compaction/data/Scan_data/data_nonpow2_faster/shared_mem.csv create mode 100644 Project2-Stream-Compaction/data/Scan_data/data_nonpow2_faster/thrust.csv create mode 100644 Project2-Stream-Compaction/data/Scan_data/data_pow2/data.csv create mode 100644 Project2-Stream-Compaction/data/Scan_data/data_pow2_faster/cpu.csv create mode 100644 Project2-Stream-Compaction/data/Scan_data/data_pow2_faster/data.csv create mode 100644 Project2-Stream-Compaction/data/Scan_data/data_pow2_faster/eff.csv create mode 100644 Project2-Stream-Compaction/data/Scan_data/data_pow2_faster/naive.csv create mode 100644 Project2-Stream-Compaction/data/Scan_data/data_pow2_faster/shared_mem.csv create mode 100644 Project2-Stream-Compaction/data/Scan_data/data_pow2_faster/thrust.csv create mode 100644 Project2-Stream-Compaction/data/Sort_data/data_nonpow2/data.csv delete mode 100644 Project2-Stream-Compaction/data/Sort_data/data_nonpow2/thrust.csv create mode 100644 Project2-Stream-Compaction/data/Sort_data/data_pow2/data.csv delete mode 100644 Project2-Stream-Compaction/data/Sort_data/data_pow2/thrust.csv create mode 100644 Project2-Stream-Compaction/data/Stream_compaction_data/data_nonpow2/data.csv create mode 100644 Project2-Stream-Compaction/data/Stream_compaction_data/data_pow2/data.csv diff --git a/Project2-Character-Recognition/character_recognition/mlp.cu b/Project2-Character-Recognition/character_recognition/mlp.cu index 8c7c738..680875f 100644 --- a/Project2-Character-Recognition/character_recognition/mlp.cu +++ b/Project2-Character-Recognition/character_recognition/mlp.cu @@ -6,10 +6,12 @@ #include #include #include +#include #include // kernals namespace CharacterRecognition { +#define enable_debug true using Common::PerformanceTimer; PerformanceTimer& timer() { @@ -18,6 +20,8 @@ namespace CharacterRecognition { } void printCuda(double *a1, int n, string name) { + if (!enable_debug) + return; double *print_a = new double[n]; cout << name.c_str() << endl; cout << "{" << endl; @@ -45,11 +49,11 @@ namespace CharacterRecognition { C[index] = max(0.0f, A[index]); } - __global__ void relu_grad(int n, double *g, double * grad) { // assumes grad is a 2d array of size n x n + __global__ void relu_grad(int n, double *z, double * grad) { int index = threadIdx.x + (blockIdx.x * blockDim.x); if (index >= n) return; - grad[index * n + index] = max(0.0f, g[index]); // makes a diagona matrix + grad[index] = (z[index] > 0) ? 1 : 0;; // makes a diagona matrix } __global__ void softmax_activation(int n, double *A, double *C, double exp_sum) { @@ -59,14 +63,6 @@ namespace CharacterRecognition { C[index] = exp(A[index]) / exp_sum; } - __global__ void softmax_grad(int n, double *g, double * grad) { - int index_i = threadIdx.x + (blockIdx.x * blockDim.x); - int index_j = threadIdx.y + (blockIdx.y * blockDim.y); - if (index_i >= n || index_j >= n) - return; - grad[index_i * n + index_j] = g[index_i] * ((index_i == index_j) - g[index_j]); - } - __global__ void scan(int n, double *data, int d) {// function to get sum (for softmax layer) int tmp_d = 1 << (d + 1); int index = (blockDim.x * blockIdx.x + threadIdx.x)*tmp_d; @@ -89,21 +85,26 @@ namespace CharacterRecognition { data[index] = val; } - __global__ void gpu_matrix_mult(const double *a, const double *b, double *c, const int m, const int n, const int k) - { - int row = blockIdx.y * blockDim.y + threadIdx.y; - int col = blockIdx.x * blockDim.x + threadIdx.x; - int sum = 0; - if (col < k && row < m) - { - for (int i = 0; i < n; i++) - { - sum += a[row * n + i] * b[i * k + col]; - } - c[row * k + col] = sum; - } + __global__ void element_mult(int n, double *a, double *b, double *c) { + int index = blockIdx.x * blockDim.x + threadIdx.x; + if (index >= n) + return; + c[index] = a[index] * b[index]; } + __global__ void update_params(int n, double *param, double *grad, double lr) { + int index = blockIdx.x * blockDim.x + threadIdx.x; + if (index >= n) + return; + param[index] -= lr * grad[index]; + } + + __global__ void memset(int n, double *data, float value) { + int index = blockIdx.x * blockDim.x + threadIdx.x; + if (index >= n) + return; + data[index] = value; + } ////////////////////////////// /* Helper */ ////////////////////////////// @@ -128,8 +129,9 @@ namespace CharacterRecognition { params.layer_sizes = layers; // init raw data holder cudaMalloc((void**)&dev_data, n * sizeof(double)); + cudaMalloc((void**)&dev_y, layers[params.layer_count - 1] * sizeof(double)); layers.insert(layers.begin(), n); - double *dev_w, *dev_b, *dev_g, *dev_a, *dev_jac; + double *dev_w, *dev_b, *dev_z, *dev_a, *dev_da; int blocks; for (int i = 0; i < params.layer_count; i++) { cudaMalloc((void**)&dev_w, (layers[i] * layers[i + 1]) * sizeof(double)); @@ -138,85 +140,108 @@ namespace CharacterRecognition { checkCUDAErrorWithLine("Cuda malloc failed!"); // initilize w, b using gaussian distribution GPU_fill_rand(dev_w, layers[i] * layers[i + 1], 2.0 / layers[i]); // uniform random initilization - //printCuda(dev_w, layers[i] * layers[i + 1], "W fresh"); - GPU_fill_rand(dev_b, layers[i + 1], 0.1f); // zero initilizaton is fine for biases + // memset dev_b + blocks = (layers[i + 1] + params.block_size - 1) / params.block_size; + memset << > > (layers[i + 1], dev_b, 0.1); + //GPU_fill_rand(dev_b, layers[i + 1], 2.0 / layers[i]); // zero initilizaton is fine for biases // push into vector w.push_back(dev_w); b.push_back(dev_b); // intermediate results arrays - cudaMalloc((void**)&dev_g, (layers[i + 1]) * sizeof(double)); + cudaMalloc((void**)&dev_z, (layers[i + 1]) * sizeof(double)); checkCUDAErrorWithLine("Cuda malloc failed!"); cudaMalloc((void**)&dev_a, (layers[i + 1]) * sizeof(double)); checkCUDAErrorWithLine("Cuda malloc failed!"); - g.push_back(dev_g); + z.push_back(dev_z); a.push_back(dev_a); + // grad arrays cudaMalloc((void**)&dev_w, (layers[i] * layers[i + 1]) * sizeof(double)); checkCUDAErrorWithLine("Cuda malloc failed!"); - dL_dg.push_back(dev_w); - cudaMalloc((void**)&dev_jac, (layers[i + 1]) * (layers[i + 1]) * sizeof(double)); + dL_dw.push_back(dev_w); // gradient of w + + cudaMalloc((void**)&dev_da, (layers[i + 1]) * sizeof(double)); + checkCUDAErrorWithLine("Cuda malloc failed!"); + dL_dz.push_back(dev_da); // da/dg has dimensions output(g) * output(g) + + cudaMalloc((void**)&dev_da, (layers[i]) * sizeof(double)); + checkCUDAErrorWithLine("Cuda malloc failed!"); + dL_da.push_back(dev_da); // da/dg has dimensions output(g) * output(g) + // relu grad + cudaMalloc((void**)&dev_z, (layers[i + 1]) * sizeof(double)); checkCUDAErrorWithLine("Cuda malloc failed!"); - da_dg.push_back(dev_jac); // da/dg has dimensions output(g) * output(g) + d_relu.push_back(dev_z); } // initilizaton cublas handle cublasCreate(&handle); - // init final grad buffer - cudaMalloc((void**)&dL_dyhat, layers[params.layer_count] * sizeof(double)); + /*for (int i = 0; i < params.layer_count; i++) { + printCuda(w[i], (layers[i] * layers[i + 1]), "INIT W" + to_string(i)); + printCuda(b[i], (layers[i + 1]), "INIT B" + to_string(i)); + }*/ } // C(m,n) = A(m,k) * B(k,n) - void Net::gpu_blas_mmul(const double *A, const double *B, double *C, const int m, const int k, const int n) { - int lda = m, ldb = k, ldc = m; - const double alf = 1; + // lda = k (if transposed) + // ldb = n (if we transpose) + // ldb = n (if we transpose) + void Net::gpu_blas_mmul(const double *A, const double *B, double *C, const int m, const int k, const int n, bool trans_flag_a, bool trans_flag_b) { + int lda, ldb, ldc; + lda = (!trans_flag_a) ? m : k; + ldb = (!trans_flag_b) ? k : n; + ldc = m; + const double alf = 1; // gpu vs cpu const double bet = 0; const double *alpha = &alf; const double *beta = &bet; // Do the actual multiplication - cublasDgemm(handle, CUBLAS_OP_N, CUBLAS_OP_N, m, n, k, alpha, A, lda, B, ldb, beta, C, ldc); + cublasDgemm(handle, (cublasOperation_t)trans_flag_a, (cublasOperation_t)trans_flag_b, m, n, k, alpha, A, lda, B, ldb, beta, C, ldc); } double* Net::forward(double *data, int n) { double *res = new double[params.layer_sizes[params.layer_count - 1]](); assert(n == params.input_size); + // copy over data to process cudaMemcpy(dev_data, data, n * sizeof(double), cudaMemcpyHostToDevice); + checkCUDAErrorWithLine("Cuda memcpy failed!"); for (int i = 0; i < params.layer_count; i++) { blocks = ceil((params.layer_sizes[i] + params.block_size - 1) / params.block_size); // clear g, a for this layer - cudaMemset(g[i], 0, params.layer_sizes[i] * sizeof(double)); + cudaMemset(z[i], 0, params.layer_sizes[i] * sizeof(double)); checkCUDAErrorWithLine("Cuda memset failed!"); cudaMemset(a[i], 0, params.layer_sizes[i] * sizeof(double)); checkCUDAErrorWithLine("Cuda memset failed!"); // matrix multiplication - if (!i) { // first iteration, so a[i] hasn't been set yet - gpu_blas_mmul(dev_data, w[i], g[i], 1, params.input_size, params.layer_sizes[i]); + if (!i) { // first iteration, so a[i-1] hasn't been set yet + gpu_blas_mmul(w[i], dev_data, z[i], params.layer_sizes[i], params.input_size, 1); // wx + b checkCUDAErrorWithLine("gpu mult failed!"); } else { - gpu_blas_mmul(a[i - 1], w[i], g[i], 1, params.layer_sizes[i-1], params.layer_sizes[i]); + gpu_blas_mmul(w[i], a[i - 1], z[i], params.layer_sizes[i], params.layer_sizes[i - 1], 1);// wx + b checkCUDAErrorWithLine("gpu mult failed!"); } // bias addition - bias_addition << > > (params.layer_sizes[i], g[i], b[i], g[i]); // put result back into g[i] + bias_addition << > > (params.layer_sizes[i], z[i], b[i], z[i]); // put result back into z[i] checkCUDAErrorWithLine("bias addition failed!"); if (i != params.layer_count - 1) { // relu activation - relu_activation << > > (params.layer_sizes[i], g[i], a[i]); + relu_activation << > > (params.layer_sizes[i], z[i], a[i]); checkCUDAErrorWithLine("relu failed!"); } else { - exp_copy << > > (params.layer_sizes[i], a[i], g[i]); + //exp_copy << > > (params.layer_sizes[i], a[i], z[i]); // why do this anymore lol checkCUDAErrorWithLine("exp copy failed!"); // todo move this to the gpu this later double *tmp = new double[params.layer_sizes[i]]; double exp_sum = 0; - cudaMemcpy(tmp, a[i], params.layer_sizes[i] * sizeof(double), cudaMemcpyDeviceToHost); + cudaMemcpy(tmp, z[i], params.layer_sizes[i] * sizeof(double), cudaMemcpyDeviceToHost); // used to be a[i] + checkCUDAErrorWithLine("Cuda memcpy failed!"); for (int pos = 0; pos < params.layer_sizes[i]; pos++) - exp_sum += tmp[pos]; + exp_sum += exp(tmp[pos]); delete[] tmp; // modified scan to get the exponential sum of all elements (P1 of assignment used!!) // softmax activation checkCUDAErrorWithLine("Cuda memcpy failed!"); - softmax_activation <<>> (params.layer_sizes[i], g[i], a[i], exp_sum); + softmax_activation <<>> (params.layer_sizes[i], z[i], a[i], exp_sum); checkCUDAErrorWithLine("softmax failed!"); } } @@ -227,41 +252,70 @@ namespace CharacterRecognition { void Net::backprop(double *y) { // calculate loss grad - blocks = ceil((params.layer_sizes[params.layer_count - 1] + params.block_size - 1) / params.block_size); - bias_addition <<> > (params.layer_sizes[params.layer_count - 1], a[params.layer_count - 1], y, dL_dyhat, -1); // y_hat - y - // call softmax with correct number of threads + int n = -1; + cudaMemcpy(dev_y, y, params.layer_sizes[params.layer_count - 1] * sizeof(double), cudaMemcpyHostToDevice); + checkCUDAErrorWithLine("Cuda memcpy failed!"); for (int i = params.layer_count - 1; i >= 0; i--) { - blocks = ceil((params.layer_sizes[i] + params.block_size - 1) / params.block_size); - // activation blocks - if (i == params.layer_count - 1) { // softmax grad - dim3 gridDim(blocks, blocks); - dim3 blockDim(params.block_size, params.block_size); - softmax_grad <<< gridDim, blockDim >>> (params.layer_sizes[i], g[i], da_dg[i]); + n = params.layer_sizes[i]; + blocks = ceil((n + params.block_size - 1) / params.block_size); + if (i == params.layer_count - 1) { // softmax + //printCuda(a[i], n, "A" + to_string(i)); + bias_addition << > > (n, a[i], dev_y, dL_dz[i], -1); // y_hat - y + checkCUDAErrorWithLine("bias addition failed!"); } - else { // relu grad - relu_grad <<< blocks, params.block_size >>> (params.layer_sizes[i], g[i], da_dg[i]); + else { // relu + //printCuda(z[i], n, "z"+to_string(i)); + relu_grad<< > > (n, z[i], d_relu[i]); // relu grad + checkCUDAErrorWithLine("relu grad failed!"); + /*printCuda(d_relu[i], n, "d_relu" + to_string(i)); + printCuda(dL_da[i], n, "dA" + to_string(i));*/ + element_mult << > > (n, d_relu[i], dL_da[i], dL_dz[i]); // dz = da * a' + checkCUDAErrorWithLine("element wise mult failed!"); } - // weight pass - if (i == params.layer_count - 1) { - //dL_dg[i] = dL_dyhat * da_dg[i]; + if (i != 0) { + //printCuda(dL_dz[i], params.layer_sizes[i], "dL_dz" + to_string(i)); + gpu_blas_mmul(dL_dz[i], a[i-1], dL_dw[i], params.layer_sizes[i], 1, params.layer_sizes[i-1], false, true); // dw + checkCUDAErrorWithLine("Matrix mult failed!"); + //printCuda(dL_dw[i], params.layer_sizes[i] * params.layer_sizes[i - 1], "dL_dw" + to_string(i)); + //printCuda(dL_da[i - 1], params.layer_sizes[i - 2], "dA" + to_string(i - 1) + " Prv loop"); + gpu_blas_mmul(w[i], dL_dz[i], dL_da[i - 1], params.layer_sizes[i - 1], params.layer_sizes[i], 1, true, false); // da + checkCUDAErrorWithLine("Matrix mult failed!"); + //printCuda(dL_da[i-1], params.layer_sizes[i-2], "dA" + to_string(i - 1) + " Prv loop"); + checkCUDAErrorWithLine(("Print error failed! " + to_string(i)).c_str()); } else { - //dL_dg[i] = dL_dg[i + 1] * w[i + 1] * da_dg[i]; + gpu_blas_mmul(dL_dz[i], dev_data, dL_dw[i], params.layer_sizes[i], 1, params.input_size, false, true); // dw + checkCUDAErrorWithLine("Matrix mult failed!"); } - // } - // update weights for (int i = 0; i < params.layer_count; i++) { - //dL_dw = dL_dg[i] * a[i]; - //dL_db = dL_dg[i] + 1; // add const to value?? - //w[i] = w[i] + params.lr * dL_dw; - //b[i] = b[i] + params.lr * dL_db; + int layer_im1; + if (i != 0) + layer_im1 = params.layer_sizes[i - 1]; + else + layer_im1 = params.input_size; + // W + n = params.layer_sizes[i] * layer_im1; + blocks = ceil((n + params.block_size - 1) / params.block_size); + update_params << > > (n, w[i], dL_dw[i], params.lr); + checkCUDAErrorWithLine("Update w failed!"); + //B + n = params.layer_sizes[i]; + blocks = ceil((n + params.block_size - 1) / params.block_size); + update_params << > > (n, b[i], dL_dz[i], params.lr); + checkCUDAErrorWithLine("Update b failed!"); + // print grads + //printCuda(dL_dw[i], layer_im1 * params.layer_sizes[i], "Grad W" + to_string(i)); + //printCuda(dL_dz[i], params.layer_sizes[i], "Grad b"+to_string(i)); + checkCUDAErrorWithLine("Print failed!"); } + } double Net::loss(int *y) { return -1; } + Net::~Net() { // free weights and biases for (auto x : w) @@ -269,17 +323,21 @@ namespace CharacterRecognition { for (auto x : b) cudaFree(x); // intermediate values - for (auto x : g) + for (auto x : z) cudaFree(x); for (auto x : a) cudaFree(x); // grads - for (auto x : dL_dg) + for (auto x : dL_dz) + cudaFree(x); + for (auto x : dL_da) + cudaFree(x); + for (auto x : dL_dw) cudaFree(x); - for (auto x : da_dg) + for (auto x : d_relu) cudaFree(x); - cudaFree(dL_dyhat); cudaFree(dev_data); + cudaFree(dev_y); // clean culbas hand cublasDestroy(handle); } diff --git a/Project2-Character-Recognition/character_recognition/mlp.h b/Project2-Character-Recognition/character_recognition/mlp.h index ea80cce..310a338 100644 --- a/Project2-Character-Recognition/character_recognition/mlp.h +++ b/Project2-Character-Recognition/character_recognition/mlp.h @@ -19,25 +19,28 @@ namespace CharacterRecognition { class Net { // input data double *dev_data; + double *dev_y; // cublas cublasHandle_t handle; vector w; vector b; // intermediate results - vector g; - vector a; + vector z; // z = w * x + b + vector a; // int blocks; // gradient variables - vector dL_dg; - vector da_dg; // activation function grads (dy_dg for the final layer) - double * dL_dyhat; + vector dL_dz; // z = wx + b + vector dL_da; // activation function grads (dy_dg for the final layer) + vector dL_dw; + // relu gradient + vector d_relu; // parameters Params params; // helperfunctions for the class // Fill the array A(nr_rows_A, nr_cols_A) with random numbers on GPU void GPU_fill_rand(double *A, int size, double std); // multiplication of matrices - void gpu_blas_mmul(const double *A, const double *B, double *C, const int m, const int k, const int n); + void gpu_blas_mmul(const double *A, const double *B, double *C, const int m, const int k, const int n, bool trans_flag_a = false, bool trans_flag_b = false); public: Net(int n, vector layers, double lr); // creates weight matrixs double* forward(double *data, int n); // returns class diff --git a/Project2-Character-Recognition/src/main.cpp b/Project2-Character-Recognition/src/main.cpp index e0bd59e..bce10ec 100644 --- a/Project2-Character-Recognition/src/main.cpp +++ b/Project2-Character-Recognition/src/main.cpp @@ -14,9 +14,9 @@ //#include #include //#include -#define inputs 196 -#define classes 52 -#define lr 0.2 +#define inputs 2 +#define classes 2 +#define lr 0.007 using namespace std; //int image_read(string path) { // cv::Mat image = cv::imread(path.c_str(), 0); @@ -53,16 +53,26 @@ int main(int argc, char* argv[]) { for (auto x : files) cout << x << endl;*/ // test forward pass - CharacterRecognition::Net nn(inputs, {98, 52, 52, classes}, lr); - double data[inputs] = {0}; - auto x = nn.forward(data, inputs); -// nn.backprop(data); - double sum = 0; - for (int i = 0; i < classes; i++) { - cout << x[i] << ", " << endl; - sum += x[i]; + CharacterRecognition::Net nn(inputs, {4, 3, classes}, lr); + double input[4][2] = { {0, 0}, {0, 1}, { 1,0 }, {1, 1} }; + double output[4][2] = { {0, 1}, {1,0}, {1,0}, {0, 1} }; + int i; + for (i = 0; i < 4000; i++) { + auto x = nn.forward(input[i%4], inputs); + nn.backprop(output[i % 4]); + // cout << output[i % 4][0] << ", " << output[i % 4][1] << ":"; + //cout << x[0] << ", " << x[1] < x[1]) + cout << i << ((output[i % 4][0] == 1) ? "Works" : "Fail") < 0.5) == output[i][0]); + } + cout << "Passes " << count << " Out of 4"; return 0; } diff --git a/Project2-Stream-Compaction/data/Scan_data/data_nonpow2/data.csv b/Project2-Stream-Compaction/data/Scan_data/data_nonpow2/data.csv new file mode 100644 index 0000000..c72af31 --- /dev/null +++ b/Project2-Stream-Compaction/data/Scan_data/data_nonpow2/data.csv @@ -0,0 +1,3469 @@ +Array Size,CPU (s),Na‹ve (s),Work Efficient (s),Shared Memory (s),Thrust (s) +13,0.0001,0.78848,1.29536,2.08794,0.731104 +29,0.0001,0.577568,0.555008,0.65024,0.567296 +61,0.0001,0.515104,0.55296,0.979968,0.78336 +125,0.0002,0.538656,0.71984,0.65232,0.64 +253,0.0002,0.633888,0.632864,0.907296,0.656384 +509,0.0005,0.633856,0.694304,1.18886,0.59904 +1021,0.0008,0.569344,0.891904,0.685056,0.688128 +2045,0.0018,0.550912,0.617472,0.638976,0.569344 +4093,0.003,0.7168,0.717824,0.723968,0.535552 +8189,0.0047,0.612384,0.74752,2.048,0.603104 +16381,0.0083,0.859168,0.954368,2.80166,0.703488 +32765,0.017,0.943072,1.08032,1.18374,2.29376 +65533,0.0384,1.68653,1.76026,1.4551,1.72646 +131069,0.6201,2.30198,2.47706,2.65322,2.95632 +262141,1.2854,4.08678,3.93523,4.11546,4.63258 +524285,2.4867,7.75987,7.99952,8.76957,8.52685 +1048573,5.0989,16.257,14.3882,14.5009,15.0088 +2097149,10.2603,31.7532,28.8799,29.1185,29.5444 +4194301,20.4964,60.3873,58.8278,57.6676,54.1522 +8388605,40.3128,114.596,110.401,107.148,108.373 +16777213,77.5941,233.576,223.199,213.902,214.377 +33554429,160.059,479.864,444.506,426.532,424.74 +67108861,310.585,940.764,880.391,850.781,849.39 +13,0.0001,0.631808,0.84992,0.796672,0.902144 +29,0.0002,0.632832,0.761856,0.930816,0.739328 +61,0.0002,0.592896,0.628736,0.611328,0.681984 +125,0.0003,0.617472,0.648192,0.615424,0.68096 +253,0.0002,0.740352,0.743424,0.661504,0.703488 +509,0.0006,0.65024,0.704512,0.991232,0.889856 +1021,0.0011,0.702464,0.857088,0.973824,0.813056 +2045,0.001,0.65024,0.805888,0.743424,0.736256 +4093,0.0039,0.565248,0.836608,0.723968,0.63488 +8189,0.0037,0.797696,0.963584,0.811008,0.756736 +16381,0.0078,0.80896,1.34042,0.882688,1.01581 +32765,0.0187,1.12026,1.22163,1.11206,1.0967 +65533,0.0413,1.47866,1.61894,1.68448,1.46534 +131069,0.6038,2.44941,2.62554,2.69722,3.1447 +262141,1.1759,4.19226,4.05197,4.53837,4.84966 +524285,2.7852,8.05888,8.14592,7.49978,8.51558 +1048573,5.4708,14.8449,14.8449,14.3739,15.2842 +2097149,9.4267,29.313,28.2839,27.4616,27.3203 +4194301,19.2171,56.8422,57.6625,53.3217,52.9981 +8388605,37.7091,113.047,111.261,108.136,105.59 +16777213,76.128,229.787,221.366,211.114,208.991 +33554429,153.625,461.272,432.236,423.523,421.916 +67108861,309.95,929.762,891.409,853.208,843.378 +13,0.0001,0.616448,1.03526,0.6656,0.697344 +29,0.0002,0.519168,0.567296,1.00762,0.649216 +61,0.0001,0.638976,0.662528,0.78848,1.10797 +125,0.0003,0.622592,0.799744,0.708608,0.676864 +253,0.0002,0.879616,0.64,1.27283,0.667648 +509,0.0004,0.944128,0.688128,0.694272,0.658432 +1021,0.0004,0.644096,0.712704,0.602112,0.591872 +2045,0.0008,0.679936,0.913408,0.73728,0.679936 +4093,0.0017,0.83456,0.804864,0.775168,0.978944 +8189,0.0037,0.802816,0.867328,0.749568,0.73728 +16381,0.0083,1.00454,1.01786,1.15917,0.837632 +32765,0.0365,1.56672,1.19501,1.04346,1.12026 +65533,0.0373,1.46432,1.85344,1.46432,1.72851 +131069,0.6008,2.80064,2.41357,3.4089,2.95322 +262141,1.3973,4.32538,3.9977,4.93363,5.13741 +524285,2.435,8.09882,7.55098,7.58784,8.2217 +1048573,4.7008,14.8808,14.8275,14.2336,14.5879 +2097149,10.1406,28.5194,29.2884,27.7862,26.9128 +4194301,19.2924,56.3579,55.081,53.3289,53.7917 +8388605,39.389,113.422,113.037,103.998,106.443 +16777213,78.7847,227.882,217.132,212.582,209.703 +33554429,157.191,460.56,443.74,424.963,421.019 +67108861,306.106,929.059,878.959,857.714,852.817 +13,0.0001,0.495616,0.667648,0.856064,0.76288 +29,0.0001,0.589824,0.740352,0.66048,0.738304 +61,0.0002,0.649216,0.82432,0.751616,0.685056 +125,0.0001,0.473088,0.5632,0.621568,0.57856 +253,0.0002,0.835584,0.683008,0.708608,0.607232 +509,0.0007,0.541696,0.598016,0.567296,0.589824 +1021,0.0004,0.833536,0.73216,0.693248,0.617472 +2045,0.001,0.970752,0.777216,1.13562,0.923648 +4093,0.0041,0.684032,0.997376,0.735232,0.685056 +8189,0.0036,0.712704,0.852992,0.83968,0.845824 +16381,0.0078,0.854016,1.0455,0.888832,1.11411 +32765,0.0178,0.953344,1.13965,1.10285,1.06598 +65533,0.0387,1.47661,1.89952,1.56672,1.44077 +131069,0.6927,2.30605,2.52826,2.65626,3.09453 +262141,1.5262,4.35712,4.20557,4.41549,4.88653 +524285,2.4104,7.72301,7.61549,8.00973,8.37018 +1048573,5.0729,15.3774,14.7753,14.5295,14.5357 +2097149,10.3558,29.7349,28.8512,29.3437,27.819 +4194301,19.2896,57.2948,56.0486,54.4645,53.8296 +8388605,37.8047,113.704,111.057,104.999,109.691 +16777213,83.0659,228.367,220.57,210.781,210.656 +33554429,156.668,461.875,434.303,427.41,423.736 +67108861,306.02,931.698,893.744,849.746,844.404 +13,0.0001,0.579584,0.830464,0.917504,0.920576 +29,0.0001,0.589824,0.90624,0.88064,0.779264 +61,0.0001,0.638976,0.820224,0.72192,0.67584 +125,0.0001,0.61952,0.750592,0.708608,0.796672 +253,0.0003,0.581632,0.733184,0.707584,0.623616 +509,0.0007,0.535552,0.899072,0.649216,0.748544 +1021,0.001,0.6656,0.88064,0.822272,0.770048 +2045,0.0008,0.712704,1.55034,0.692224,0.602112 +4093,0.002,0.80384,0.776192,0.95232,0.661504 +8189,0.0034,0.730112,0.946176,0.784384,0.851968 +16381,0.0079,0.908288,1.22368,0.84992,0.894976 +32765,0.0344,1.16634,1.2288,1.07315,1.1008 +65533,0.0422,1.45613,1.6599,1.55238,1.48992 +131069,0.6041,2.82419,2.47296,2.75456,3.67616 +262141,1.3412,4.28442,4.06528,4.64579,4.77389 +524285,2.5412,7.75578,7.53562,7.69946,8.39885 +1048573,5.2878,15.232,14.7005,14.2408,15.6375 +2097149,9.3535,29.8168,29.6663,27.86,27.2364 +4194301,19.1962,57.2662,55.1875,54.4215,53.8685 +8388605,38.4629,113.378,109.612,106,105.99 +16777213,77.8652,228.241,218.236,214.232,211.406 +33554429,161.005,460.875,443.783,424.462,422.215 +67108861,304.557,930.913,880.783,851.778,841.851 +13,0.0001,0.553984,0.69632,0.729088,1.19398 +29,0.0001,0.622592,0.741376,0.765952,0.772096 +61,0.0001,0.671744,0.622592,0.69632,0.770048 +125,0.0003,0.618496,0.756736,0.637952,0.763904 +253,0.0003,0.5376,0.774144,0.72192,0.677888 +509,0.0003,0.607232,0.856064,0.667648,0.62464 +1021,0.0007,0.55808,0.780288,0.73728,0.806912 +2045,0.0022,0.663552,0.739328,0.69632,0.68096 +4093,0.0043,0.84992,0.910336,0.705536,0.770048 +8189,0.0037,0.932864,0.777216,0.730112,0.791552 +16381,0.0081,0.943104,1.08032,0.98816,0.897024 +32765,0.0178,1.04038,1.29024,1.14176,1.0752 +65533,0.0369,1.53088,1.67219,1.61894,1.58208 +131069,0.7346,2.69722,2.66342,2.66138,3.15085 +262141,1.2012,4.33661,4.38784,4.27213,4.82611 +524285,2.4312,7.90528,8.16435,8.70093,8.20122 +1048573,5.4446,14.9463,14.935,14.3391,14.8285 +2097149,9.6761,29.2618,29.1072,28.4826,27.4862 +4194301,19.4252,57.4095,55.9575,53.6771,53.8808 +8388605,37.4371,113.178,110.583,104.967,108.685 +16777213,74.4498,231.726,222.962,211.902,209.821 +33554429,154.131,465.281,435.257,423.906,421.071 +67108861,305.85,932.215,889.662,847.485,852.606 +13,0,0.57856,0.68096,0.668672,0.78848 +29,0.0001,0.621568,0.750592,0.708608,0.859136 +61,0.0001,0.598016,0.681984,0.744448,0.828416 +125,0.0003,0.618496,0.678912,0.7424,0.693248 +253,0.0005,0.535552,0.69632,0.756736,0.65536 +509,0.0005,0.590848,0.648192,0.656384,0.714752 +1021,0.0012,0.714752,0.770048,0.697344,0.695296 +2045,0.0014,0.620544,0.676864,0.6912,0.734208 +4093,0.0018,0.690176,0.918528,0.764928,0.703488 +8189,0.0035,0.863232,0.9216,0.969728,0.842752 +16381,0.0077,0.90624,1.41926,0.920576,0.94208 +32765,0.0349,0.961536,1.20525,1.24826,1.13664 +65533,0.0367,1.43667,1.93024,1.49709,1.4336 +131069,0.604,2.26509,2.52006,2.47194,3.03514 +262141,1.1701,4.34995,4.04685,4.6377,4.87731 +524285,2.4101,7.64416,7.38301,8.05069,8.41318 +1048573,4.7037,14.5869,15.2228,14.6125,14.7425 +2097149,9.5182,30.0534,28.7293,27.6152,27.7617 +4194301,18.8001,56.234,56.2708,53.2111,53.8388 +8388605,37.7161,113.55,109.487,104.967,104.497 +16777213,77.7443,228.105,217.448,210.647,209.439 +33554429,154.452,458.935,443.936,421.392,419.612 +67108861,310.091,932.61,879.346,859.103,846.669 +13,0.0001,0.627712,0.557056,0.556032,0.666624 +29,0.0002,0.427008,0.65536,0.592896,0.766976 +61,0.0001,0.632832,0.695296,0.90624,0.862208 +125,0.0002,0.485376,0.718848,0.919552,0.88576 +253,0.0004,0.545792,0.66048,0.642048,0.83968 +509,0.0005,0.571392,0.811008,1.29434,0.82944 +1021,0.0007,0.601088,0.843776,0.585728,0.83968 +2045,0.0014,0.580608,0.927744,0.912384,0.799744 +4093,0.0023,0.549888,0.712704,0.617472,0.58368 +8189,0.0035,0.740352,0.780288,0.6656,0.61952 +16381,0.0123,0.806912,1.04653,0.784384,0.753664 +32765,0.0186,0.966656,1.17862,1.22266,1.09568 +65533,0.0379,1.44998,1.61485,1.58925,1.47661 +131069,0.6452,2.26918,2.40026,2.69107,3.03616 +262141,1.1695,4.72371,4.06221,4.4544,5.74771 +524285,2.3428,8.00051,8.45312,7.91962,8.27597 +1048573,4.7599,15.0047,14.934,14.5285,14.6125 +2097149,10.4525,29.8609,28.4047,26.9343,28.4242 +4194301,18.9709,58.199,58.4714,53.8829,55.7578 +8388605,40.6591,113.738,110.875,105.146,105.669 +16777213,75.2794,229.298,222.233,209.864,215.086 +33554429,156.137,462.368,433.102,426.073,422.132 +67108861,308.847,931.537,893.808,852.723,850.23 +13,0.0001,0.5888,0.631808,0.664576,0.932864 +29,0.0001,0.556032,0.812032,0.898048,0.882688 +61,0.0002,0.47104,0.794624,0.740352,0.707584 +125,0.0002,0.480256,0.646144,0.73216,0.709632 +253,0.0001,0.528384,0.704512,0.729088,0.75776 +509,0.0004,0.510976,0.736256,0.710656,1.03014 +1021,0.0005,0.58368,0.739328,0.726016,0.642048 +2045,0.001,0.925696,0.929792,0.73216,0.83968 +4093,0.0016,0.687104,1.01683,0.751616,0.730112 +8189,0.0039,0.598016,0.76288,0.779264,0.750592 +16381,0.0086,0.874496,1.04858,0.881664,0.925696 +32765,0.0356,1.05984,1.24928,1.06496,1.0967 +65533,0.0401,1.44384,1.65376,1.45818,1.52576 +131069,0.7627,2.28659,2.41152,2.64909,2.94298 +262141,1.2052,4.06016,4.0448,4.3561,5.63712 +524285,2.6041,8.1193,8.02202,8.00666,8.32717 +1048573,4.938,15.3825,14.7692,14.8142,14.4712 +2097149,10.0049,28.9823,29.6602,27.1729,27.4145 +4194301,18.611,56.8658,56.0814,54.8536,53.3299 +8388605,38.8795,113.41,110.287,105.88,105.172 +16777213,78.1883,228.959,217.829,211.13,209.461 +33554429,161.037,464.778,443.009,425.643,421.006 +67108861,307.197,931.89,880.937,849.469,844.531 +13,0.0001,0.689152,1.08339,0.859136,1.07418 +29,0.0001,0.612352,0.847872,0.847872,0.81408 +61,0.0002,0.664576,0.728064,0.897024,0.71168 +125,0.0002,0.623616,0.632832,0.673792,0.785408 +253,0.0002,0.627712,0.663552,0.677888,0.75264 +509,0.0003,0.666624,0.688128,0.83968,0.594944 +1021,0.0005,0.753664,0.80896,0.91136,0.621568 +2045,0.0009,0.677888,0.78848,0.722944,0.70144 +4093,0.0018,1.13869,0.7936,0.689152,1.08442 +8189,0.004,0.789504,0.864256,0.831488,0.734208 +16381,0.0084,0.821248,1.47456,0.920576,0.959488 +32765,0.0221,1.0967,1.31482,1.1305,1.32096 +65533,0.0364,1.5913,1.90874,1.46022,1.88109 +131069,0.6026,2.30707,2.66547,2.73306,3.18874 +262141,1.2386,4.22502,4.07654,5.53677,4.60288 +524285,2.3941,7.6585,7.51002,7.57658,7.86432 +1048573,4.8338,15.2064,14.5121,15.3149,14.9484 +2097149,10.2174,29.6069,28.0945,27.3644,27.5046 +4194301,19.1884,57.2467,57.3809,52.82,53.7272 +8388605,37.7018,114.149,110.112,105.709,103.917 +16777213,75.9132,228.016,222.933,212.031,210.137 +33554429,157.19,462.565,434.594,422.84,420.972 +67108861,310.586,931.718,894.351,850.814,847.056 +13,0.0001,0.55808,0.668672,0.636928,0.6912 +29,0.0001,0.557056,0.756736,0.79872,1.2288 +61,0.0001,0.625664,0.837632,0.861184,0.730112 +125,0.0002,0.524288,0.618496,1.11104,0.724992 +253,0.0006,0.525312,0.796672,0.848896,0.690176 +509,0.0006,0.774144,0.78848,0.728064,0.636928 +1021,0.0012,0.774144,0.754688,1.74694,0.677888 +2045,0.0019,0.729088,0.657408,0.712704,0.65024 +4093,0.0023,0.925696,0.928768,0.697344,0.69632 +8189,0.0034,0.734208,0.95744,1.04755,0.868352 +16381,0.0078,0.840704,1.0537,0.912384,0.93696 +32765,0.0325,1.05984,1.27693,1.3056,1.07622 +65533,0.0363,1.76947,1.60973,1.44998,1.43667 +131069,0.6136,2.41664,2.36442,3.09248,3.01363 +262141,1.2441,4.23117,4.05299,4.37862,4.6121 +524285,2.3998,8.76851,7.73939,8.47155,7.96058 +1048573,4.7578,15.2207,15.7266,14.3032,15.3989 +2097149,9.9385,28.8031,28.9536,27.9173,27.7914 +4194301,19.1265,56.6979,57.559,54.6529,53.5808 +8388605,39.3726,114.035,110.804,106.977,105.091 +16777213,76.2613,229.147,217.959,210.045,210.381 +33554429,153.54,460.355,446.505,423.656,421.467 +67108861,314.965,933.104,887.132,853.806,838.826 +13,0.0001,0.594944,0.84992,0.900096,0.812032 +29,0.0002,0.615424,0.765952,0.867328,0.738304 +61,0.0002,0.817152,0.72704,0.5632,0.528384 +125,0.0002,0.553984,0.539648,0.60928,0.574464 +253,0.0002,0.540672,0.582656,0.567296,0.591872 +509,0.0002,0.785408,0.739328,0.6656,0.759808 +1021,0.0004,0.712704,0.75264,0.685056,0.626688 +2045,0.001,0.81408,0.768,0.687104,0.851968 +4093,0.0019,0.710656,1.06394,0.831488,0.730112 +8189,0.0036,0.739328,0.83968,1.43872,0.8192 +16381,0.0072,0.913408,1.03117,1.13869,0.792576 +32765,0.0181,1.29946,1.22368,1.06394,1.12333 +65533,0.0379,1.46739,2.15347,1.95277,1.52474 +131069,0.5852,2.23334,3.13037,2.60403,2.99622 +262141,1.2507,4.32845,4.11238,4.31821,4.92032 +524285,2.4329,7.62061,7.43936,8.51251,7.91245 +1048573,4.8197,15.6006,15.1316,14.5111,15.3672 +2097149,9.4813,28.6474,29.6591,28.6403,28.0115 +4194301,19.5742,58.3967,56.6118,54.7287,53.6392 +8388605,37.7021,113.483,110.636,104.758,106.44 +16777213,81.8261,227.168,221.813,210.274,210.856 +33554429,155.508,461.591,435.709,428.705,419.796 +67108861,304.997,931.369,900.391,854.504,849.398 +13,0.0001,0.538624,1.43667,0.787456,0.715776 +29,0.0001,0.605184,0.726016,0.958464,0.662528 +61,0.0003,0.770048,0.630784,0.663552,0.638976 +125,0.0003,0.807936,0.96768,0.54272,0.612352 +253,0.0005,0.678912,0.715776,0.785408,0.88064 +509,0.0002,0.862208,0.796672,0.668672,0.656384 +1021,0.0004,0.730112,0.774144,0.777216,0.677888 +2045,0.0009,0.801792,1.4807,0.726016,0.70656 +4093,0.0017,0.687104,0.80384,0.699392,0.720896 +8189,0.0035,0.86016,0.927744,0.912384,0.70656 +16381,0.0336,0.86016,1.03219,1.08749,0.909312 +32765,0.0178,1.09773,1.19706,1.17658,1.13971 +65533,0.0496,1.52371,1.67629,1.55238,1.48685 +131069,0.749,2.32243,3.19181,2.60608,3.26451 +262141,1.2079,4.12058,4.59469,4.41037,4.87936 +524285,2.6494,7.74554,7.9145,7.62163,8.43776 +1048573,5.1772,15.8403,14.6401,14.6196,14.9033 +2097149,9.7953,29.2639,28.8174,27.1483,27.8446 +4194301,19.5246,59.3971,58.838,53.4129,55.2888 +8388605,41.272,114.167,111.165,105.155,106.162 +16777213,75.4757,229.063,219.942,210.357,209.142 +33554429,153.352,461.781,441.139,424.88,420.75 +67108861,311.401,933.5,880.761,854.311,851.155 +13,0.0001,0.581632,0.611328,0.705536,0.68608 +29,0.0001,0.493568,0.695296,0.625664,0.598016 +61,0.0001,0.621568,0.80384,0.654336,0.627712 +125,0.0002,0.512,0.658432,0.695296,0.876544 +253,0.0003,0.679936,0.70656,0.667648,0.704512 +509,0.0005,0.666624,0.666624,0.784384,0.782336 +1021,0.0005,0.641024,0.948224,0.863232,1.1735 +2045,0.0008,0.628736,0.854016,0.74752,0.789504 +4093,0.0025,0.72192,0.89088,0.79872,0.693248 +8189,0.017,0.758784,0.951296,1.13357,0.784384 +16381,0.0076,0.811008,1.08646,1.00864,0.93184 +32765,0.0172,1.37523,1.22982,1.68858,1.13459 +65533,0.0375,1.49709,1.61894,1.67014,1.49299 +131069,0.7581,2.23437,2.49958,2.94707,3.0976 +262141,1.2755,4.95923,3.97414,4.41139,4.75238 +524285,2.563,8.0681,7.91142,8.28928,8.77363 +1048573,5.2355,15.1521,15.3846,14.3821,15.0845 +2097149,9.4288,28.9526,28.9434,28.3894,28.0893 +4194301,19.1557,59.5999,55.9135,53.5593,53.4641 +8388605,40.6577,113.883,110.28,107.74,106.172 +16777213,76.0369,232.983,222.561,210.291,210.987 +33554429,151.646,463.19,433.889,421.572,421.01 +67108861,308.952,935.998,897.567,851.251,848.459 +13,0.0001,0.724992,0.734208,0.748544,0.647168 +29,0.0002,0.705536,0.661504,0.698368,0.65024 +61,0.0002,0.848896,0.731136,0.754688,0.654336 +125,0.0002,0.632832,0.79872,0.68096,0.833536 +253,0.0003,0.602112,0.712704,0.585728,0.621568 +509,0.0002,0.653312,0.754688,0.791552,0.717824 +1021,0.0004,0.56832,0.8704,0.685056,0.748544 +2045,0.0009,0.768,0.999424,0.801792,0.664576 +4093,0.0042,0.707584,1.00352,1.05677,0.743424 +8189,0.0061,1.06701,0.893952,1.05472,0.74752 +16381,0.023,0.98816,1.02502,1.54624,1.10694 +32765,0.0166,1.10285,1.23597,1.52883,1.11821 +65533,0.0788,1.44998,1.63738,1.46534,1.41722 +131069,0.7151,2.2999,2.53542,2.50163,3.2727 +262141,1.2076,4.23014,3.93216,4.66842,4.74522 +524285,2.4517,7.88275,8.04147,8.10598,8.00352 +1048573,5.1194,15.4255,14.6729,14.2643,14.677 +2097149,9.404,29.7011,28.7263,26.8268,27.2404 +4194301,21.0661,57.0081,55.3667,53.4374,53.676 +8388605,38.2189,112.428,109.8,106.44,105.472 +16777213,78.8381,228.108,217.759,209.554,208.338 +33554429,157.638,462.127,444.364,423.248,421.361 +67108861,312.291,934.219,881.966,850.691,844.271 +13,0.0001,0.724992,0.690176,1.0752,0.723968 +29,0.0002,0.8704,0.777216,0.790528,0.959488 +61,0.0001,0.794624,0.615424,0.741376,0.724992 +125,0.0001,0.513024,0.713728,0.779264,0.796672 +253,0.0004,0.530432,0.72704,0.733184,0.6656 +509,0.0006,0.690176,0.726016,0.656384,0.626688 +1021,0.0004,0.585728,0.772096,0.592896,0.891904 +2045,0.0009,0.591872,0.796672,0.763904,0.709632 +4093,0.0018,0.764928,0.822272,0.694272,0.72192 +8189,0.0039,0.816128,0.961536,0.766976,0.724992 +16381,0.0075,0.90624,1.25235,0.937984,0.941056 +32765,0.0351,1.1817,1.2288,1.0711,1.26157 +65533,0.04,1.49299,1.61382,1.65786,1.46637 +131069,0.5829,2.25075,2.42586,2.54976,3.05664 +262141,1.2111,4.28339,4.03763,4.74931,4.82406 +524285,2.6364,7.90016,7.83053,8.5719,8.17971 +1048573,5.0352,14.9709,15.4911,14.0298,14.8296 +2097149,9.6087,29.1348,28.4385,27.734,29.527 +4194301,18.8805,58.58,55.5428,53.59,54.7656 +8388605,39.2855,113.128,110.047,106.016,105.923 +16777213,76.6146,230.167,221.981,210.111,210.928 +33554429,156.218,458.357,435.73,424.766,422.782 +67108861,308.049,929.798,894.432,854.03,846.926 +13,0.0001,0.766976,0.75264,0.743424,0.743424 +29,0.0001,0.543744,0.6656,0.676864,0.570368 +61,0.0002,0.497664,0.490496,0.700416,0.602112 +125,0.0002,0.518144,0.51712,1.03936,0.57344 +253,0.0002,0.628736,0.729088,1.01274,0.751616 +509,0.0007,0.678912,0.861184,0.744448,0.700416 +1021,0.0011,0.55296,0.708608,1.02195,0.799744 +2045,0.0009,0.557056,0.70144,0.7936,1.44077 +4093,0.0026,0.60928,0.98304,0.717824,0.79872 +8189,0.0038,0.776192,0.970752,1.02502,0.744448 +16381,0.0081,0.775168,1.07213,1.08339,0.929792 +32765,0.016,1.18886,1.27795,0.960512,1.05779 +65533,0.0389,1.55341,1.90771,1.44794,1.47046 +131069,0.654,2.28352,2.59891,2.75046,3.51642 +262141,1.2099,4.11136,4.09805,4.43597,4.97562 +524285,2.353,7.87763,7.53152,8.28621,8.06605 +1048573,4.7692,15.5996,15.8024,13.867,15.4655 +2097149,9.5133,29.1737,29.6745,27.4176,27.9624 +4194301,19.9007,57.2959,54.3949,54.9079,53.1558 +8388605,38.4648,113.421,111.688,105.856,106.173 +16777213,79.368,228.742,216.797,210.419,210.875 +33554429,155.064,461.869,443.455,420.866,421.057 +67108861,309.183,926.029,878.618,851.633,843.993 +13,0.0001,0.473088,0.49664,0.61952,0.509952 +29,0.0001,0.776192,0.581632,0.617472,0.60928 +61,0.0002,0.541696,0.631808,0.54784,0.520192 +125,0.0004,0.516096,0.96256,0.632832,0.539648 +253,0.0003,0.523264,0.616448,0.608256,0.766976 +509,0.0005,1.29536,0.693248,0.755712,0.642048 +1021,0.0005,0.52736,0.792576,0.759808,0.688128 +2045,0.002,0.647168,0.82432,0.780288,0.935936 +4093,0.0017,1.44589,0.876544,0.7936,0.733184 +8189,0.0044,0.694272,1.37523,0.847872,0.748544 +16381,0.0081,0.755712,1.43667,0.862208,0.9728 +32765,0.0437,1.11411,1.37626,1.05062,1.06701 +65533,0.0364,1.60563,1.664,1.56774,1.88211 +131069,0.6012,2.33882,2.41152,2.66854,2.88051 +262141,1.2024,4.53222,4.04173,4.3735,5.47738 +524285,2.5164,7.90118,7.80288,8.70605,8.02406 +1048573,5.3011,14.7108,14.7241,14.4691,14.8818 +2097149,9.2648,30.0329,27.9491,27.9183,27.3213 +4194301,19.788,57.1392,58.5779,53.0278,52.4861 +8388605,37.8216,113.988,111.341,105.589,105.138 +16777213,75.5491,229.293,226.396,210.833,209.673 +33554429,152.229,463.078,434.749,423.82,422.11 +67108861,312.054,930.994,893.563,853.079,840.994 +13,0,0.677888,0.846848,0.95744,0.851968 +29,0.0001,0.681984,0.746496,0.751616,0.713728 +61,0.0002,0.627712,0.980992,0.801792,0.755712 +125,0.0002,0.591872,0.676864,0.867328,0.755712 +253,0.0004,0.653312,0.698368,0.700416,0.729088 +509,0.0004,1.16531,0.777216,0.6912,0.65536 +1021,0.0004,0.969728,0.702464,0.674816,0.81408 +2045,0.001,0.695296,0.8192,0.739328,1.03427 +4093,0.0041,0.758784,0.858112,0.738304,1.42234 +8189,0.0039,0.687104,0.857088,0.96768,0.710656 +16381,0.0077,0.791552,0.999424,0.971776,0.840704 +32765,0.0173,1.13152,1.22573,1.92614,1.14074 +65533,0.0367,1.52371,1.62099,1.48582,1.46432 +131069,0.5997,2.31014,2.47501,2.46067,2.97677 +262141,1.2046,4.11648,4.78208,4.13798,5.74362 +524285,2.3441,7.79162,7.55098,7.75578,8.76442 +1048573,4.7283,15.3825,14.6749,15.2637,14.2438 +2097149,9.6764,29.3345,29.0345,28.2644,27.8241 +4194301,18.6766,58.4888,56.0404,53.9914,53.7764 +8388605,38.5604,114.651,110.756,105.601,105.9 +16777213,78.6532,230.62,218.877,212.141,210.475 +33554429,155.821,461.022,442.646,424.806,422.713 +67108861,304.551,930.635,877.669,856.338,842.733 +13,0.0001,0.673792,0.948224,0.877568,0.806912 +29,0.0003,0.590848,0.888832,0.877568,0.643072 +61,0.0001,0.65024,0.699392,0.755712,0.657408 +125,0.0001,0.610304,0.7936,0.718848,0.646144 +253,0.0002,0.562176,0.766976,0.717824,0.84992 +509,0.0003,0.780288,0.746496,0.7168,0.712704 +1021,0.001,0.591872,0.835584,0.705536,0.714752 +2045,0.0009,0.748544,0.776192,0.751616,0.673792 +4093,0.0018,0.786432,0.896,0.805888,0.794624 +8189,0.0037,0.937984,0.970752,0.800768,1.04243 +16381,0.0084,0.908288,0.92672,0.94208,1.29126 +32765,0.0465,1.18067,1.48275,1.08954,1.20422 +65533,0.0424,1.48685,1.78586,1.63942,1.61997 +131069,0.6004,2.31014,2.4832,2.48832,3.53587 +262141,1.2104,4.2455,4.02842,4.4841,4.87219 +524285,2.4147,8.45005,8.23808,8.04966,8.44186 +1048573,4.8354,15.4993,14.7405,14.5469,14.7354 +2097149,9.5166,29.3304,28.503,27.8886,27.5835 +4194301,18.5364,57.5621,57.0952,53.2777,53.7436 +8388605,37.9391,113.044,109.767,106.211,107.529 +16777213,75.9457,228.819,221.299,211.014,208.857 +33554429,154.035,464.075,435.659,423.424,424.162 +67108861,313.419,935.826,895.312,855.258,844.974 +13,0.0001,0.556032,0.664576,0.764928,0.736256 +29,0.0002,0.56832,0.646144,0.729088,0.946176 +61,0.0004,0.820224,0.750592,0.713728,0.801792 +125,0.0001,0.714752,0.872448,0.733184,0.663552 +253,0.0002,0.718848,0.702464,0.719872,0.813056 +509,0.0005,0.656384,1.34656,0.755712,0.88064 +1021,0.0004,0.555008,0.779264,0.786432,0.774144 +2045,0.0009,0.718848,0.869376,0.759744,0.774144 +4093,0.0231,0.730112,0.763904,1.02912,0.820224 +8189,0.0038,0.859136,0.929792,0.99328,0.799744 +16381,0.0084,1.42643,1.08749,0.924672,0.86528 +32765,0.051,1.1479,1.23187,1.13254,1.07725 +65533,0.0364,1.44691,1.6681,1.48992,1.50016 +131069,0.6207,2.40845,2.42176,2.84877,3.14778 +262141,1.2726,4.4247,4.1001,4.52096,5.40262 +524285,2.3963,8.04147,8.53299,8.10496,8.09574 +1048573,5.3218,16.5724,14.6657,15.0569,14.9146 +2097149,9.7951,27.8139,29.3212,27.6838,27.5436 +4194301,18.9905,57.0143,55.5633,53.6054,53.6842 +8388605,39.8028,113.384,110.188,104.994,106.893 +16777213,78.5332,228.425,218.352,210.916,210.788 +33554429,155.014,461.883,446.271,425.155,420.422 +67108861,310.607,937.09,878.021,854.041,844.555 +13,0.0001,0.719872,0.913408,0.92672,0.893952 +29,0.0001,0.58368,0.744448,0.790528,0.708608 +61,0.0001,0.50688,0.796672,0.781312,1.31789 +125,0.0003,0.631808,0.685056,0.715776,0.894976 +253,0.0002,0.530432,1.00659,0.777216,0.781312 +509,0.0003,0.539648,0.927744,0.78848,0.831488 +1021,0.0004,0.760832,0.804864,0.789504,0.761856 +2045,0.0009,0.723968,0.917504,0.702464,0.668672 +4093,0.0017,1.01069,0.805888,0.751616,0.738304 +8189,0.019,0.666624,1.36294,0.854016,0.806912 +16381,0.0077,0.915456,1.07315,0.924672,0.868352 +32765,0.0463,0.997376,1.72442,1.0967,1.13357 +65533,0.0396,1.5104,1.6855,1.48275,1.93331 +131069,0.5861,2.61427,2.67674,2.78016,4.3817 +262141,1.207,4.88448,3.97107,4.47386,5.08109 +524285,2.5278,7.89197,7.43424,7.72096,8.064 +1048573,4.6671,15.0436,15.6129,14.5654,14.7036 +2097149,9.3971,28.8707,27.7709,27.9327,27.8405 +4194301,19.0929,57.8826,57.2631,53.2869,53.6125 +8388605,35.9556,113.619,110.559,105.945,105.715 +16777213,75.6997,228.007,221.181,211.338,210.831 +33554429,148.21,460.758,433.954,424.148,422.491 +67108861,292.346,927.411,890.453,851.23,845.674 +13,0.0001,0.627712,0.877568,0.836608,0.656384 +29,0.0001,0.625664,0.77312,0.776192,0.840704 +61,0.0001,0.751616,0.815104,0.746496,0.687104 +125,0.0002,0.52736,0.68608,0.797696,0.843776 +253,0.0002,0.647168,0.77312,1.6855,0.88064 +509,0.0004,0.581632,0.631808,0.780288,0.761856 +1021,0.0005,0.667648,0.831488,0.724992,0.698368 +2045,0.002,0.723968,0.846848,0.708608,0.677888 +4093,0.0019,0.796672,0.8704,2.17498,0.782336 +8189,0.0036,0.73216,0.848896,0.944128,0.81408 +16381,0.0082,1.01069,1.05677,0.939008,0.892928 +32765,0.0183,1.09568,1.21651,1.05984,1.06086 +65533,0.0379,1.41005,1.72442,1.85856,1.73056 +131069,0.6019,2.24973,2.50266,2.85696,3.4816 +262141,1.2037,4.16461,4.22502,4.1513,5.18042 +524285,2.4096,7.70253,7.43424,7.65952,8.03021 +1048573,4.4368,14.9494,14.7927,15.062,14.9309 +2097149,9.4904,29.6028,29.1267,27.3172,27.7811 +4194301,17.9187,57.8519,55.3124,53.5562,54.0621 +8388605,39.3901,113.952,110.653,106.258,105.542 +16777213,74.1735,227.564,217.388,211.342,210.041 +33554429,147.912,461.563,439.605,423.034,422.044 +67108861,293.861,930.079,876.86,852.257,842.562 +13,0.0001,0.562176,0.914432,0.816128,0.866304 +29,0.0002,0.543744,0.704512,0.77824,1.03117 +61,0.0002,0.590848,0.797696,1.36602,0.995328 +125,0.0003,0.625664,0.770048,0.667648,0.653312 +253,0.0004,0.530432,0.794624,0.735232,0.96768 +509,0.0006,0.510976,0.83968,0.830464,0.811008 +1021,0.0005,0.627712,0.969728,0.802816,0.730112 +2045,0.0016,0.559104,0.739328,0.7936,0.659456 +4093,0.0022,0.813056,0.93184,0.8448,0.755712 +8189,0.0034,0.72192,0.959488,0.842752,1.19603 +16381,0.0077,0.750592,1.41517,0.925696,0.986112 +32765,0.0443,1.05062,1.29024,1.11206,1.25952 +65533,0.0357,1.49504,2.52109,1.54214,1.55238 +131069,0.5846,2.3593,2.46784,2.63475,3.04947 +262141,1.1684,4.51277,4.31104,4.78822,5.10976 +524285,2.3402,8.30464,7.99949,7.85408,8.04762 +1048573,4.6834,15.23,14.3985,14.5377,14.6268 +2097149,9.449,30.3974,28.1887,27.777,29.5199 +4194301,17.9492,58.4387,56.3538,54.3058,54.1655 +8388605,36.7361,113.253,109.991,105.929,106.359 +16777213,76.3707,230.451,222.296,211.804,209.469 +33554429,145.114,461.157,436.161,424.807,422.297 +67108861,292.011,931.18,892.245,851.612,845.543 +13,0.0001,0.500736,1.91693,0.9216,0.896 +29,0.0001,0.488448,0.840704,0.87552,0.667648 +61,0.0002,1.07827,0.804864,0.812032,0.695296 +125,0.0002,0.7424,0.75264,1.39878,0.74752 +253,0.0003,0.845824,0.734208,0.65536,0.749568 +509,0.0004,0.661504,0.784384,0.775168,1.09056 +1021,0.0007,0.692224,0.744448,0.71168,0.673792 +2045,0.0009,0.555008,1.10797,0.842752,0.722944 +4093,0.0018,0.728064,0.87552,0.797696,0.703488 +8189,0.0035,0.641024,0.946176,0.86016,0.794624 +16381,0.0087,0.749568,1.0537,1.97427,0.982016 +32765,0.052,1.1049,1.2288,1.06291,1.03014 +65533,0.0381,1.53805,1.67834,1.84627,1.51654 +131069,0.5859,2.23949,2.47091,2.6153,3.12422 +262141,1.2041,4.34995,4.58342,4.48717,5.29818 +524285,2.3977,7.68717,8.46643,8.18278,8.47565 +1048573,4.7199,15.019,14.5603,14.4261,14.6862 +2097149,8.9169,29.2803,28.8891,28.9116,28.9147 +4194301,19.5177,57.3184,55.511,53.4088,54.185 +8388605,38.5846,115.252,108.989,105.424,105.564 +16777213,72.1001,229.087,217.41,210.595,209.907 +33554429,145.755,460.287,441.888,425.528,422.348 +67108861,296.603,926.888,876.076,848.979,845.924 +13,0.0001,0.575488,1.11206,0.893952,0.925696 +29,0.0001,0.60928,0.751616,0.80896,0.75264 +61,0.0002,0.590848,0.734208,0.775168,1.2073 +125,0.0002,0.605184,0.761856,0.6656,2.39104 +253,0.0002,0.637952,0.630784,0.637952,0.616448 +509,0.0005,0.592896,0.647168,0.559104,0.531456 +1021,0.0005,0.565248,0.62464,0.611328,0.60928 +2045,0.0015,0.61952,0.710656,0.65024,0.600064 +4093,0.0018,0.663552,0.830464,0.784384,0.776192 +8189,0.0035,0.636928,0.999424,0.98304,0.897024 +16381,0.0095,0.756736,1.10797,1.02707,0.975872 +32765,0.0445,1.17965,1.26054,1.12333,1.21242 +65533,0.0517,1.36397,1.90669,1.54317,1.5319 +131069,0.5827,2.32243,2.51494,2.69619,3.17645 +262141,1.1697,4.34381,4.08269,4.70323,5.08109 +524285,2.5639,8.0384,7.41683,7.92986,8.3671 +1048573,4.4357,15.4685,14.7814,14.1865,14.4671 +2097149,9.0661,29.3847,28.6228,27.5855,27.6152 +4194301,20.1138,58.4305,56.9661,53.0637,53.6248 +8388605,36.7008,114.938,111.277,105.821,104.907 +16777213,73.4308,228.043,222.879,212.549,211.065 +33554429,148.833,460.794,436.013,426.773,420.345 +67108861,298.376,923.099,890.381,851.131,844.226 +13,0.0001,0.431104,0.845824,0.761856,0.812032 +29,0.0001,0.68096,0.7936,0.801792,0.768 +61,0.0003,0.513024,1.03731,0.765952,0.664576 +125,0.0003,0.524288,0.765952,0.719872,0.715776 +253,0.0002,0.528384,0.876544,0.770048,0.687104 +509,0.0192,0.50176,0.846848,0.794624,0.733184 +1021,0.0004,0.526336,0.892928,0.822272,0.7424 +2045,0.0198,0.540672,0.905216,0.799744,0.708608 +4093,0.0018,0.577536,0.879616,1.21754,0.82944 +8189,0.004,0.628736,0.93696,0.84992,0.765952 +16381,0.0074,0.941056,1.04653,0.910336,0.879616 +32765,0.0343,1.06086,1.34554,1.10285,1.08032 +65533,0.037,1.51142,1.68346,1.56058,1.56979 +131069,0.6024,2.26406,2.44736,2.67981,3.08838 +262141,1.2085,4.29261,4.67558,4.30387,4.97869 +524285,2.4232,7.78752,8.06195,7.68614,8.51661 +1048573,4.9071,15.0282,15.1839,14.1466,14.293 +2097149,10.3078,29.0458,28.9935,27.649,28.1958 +4194301,17.9122,57.6655,54.9796,53.4026,53.8655 +8388605,37.4956,113.398,109.897,105.983,104.654 +16777213,71.7648,229.109,219.413,209.693,209.677 +33554429,145.491,461.018,443.959,424.841,421.716 +67108861,294.315,928.077,879.661,850.393,844.234 +13,0.0001,0.513024,0.65536,0.801792,0.67072 +29,0.0002,0.515072,0.802816,0.78336,0.713728 +61,0.0001,0.67072,0.681984,0.649216,0.72192 +125,0.0003,0.702464,0.6912,0.674816,0.6912 +253,0.0003,1.48275,0.77824,0.907264,0.729088 +509,0.0004,0.51712,0.772096,0.760832,1.07213 +1021,0.0004,0.551936,0.791552,0.779264,0.782336 +2045,0.0009,0.540672,0.904192,0.78336,0.755712 +4093,0.0018,0.738304,0.869376,0.799744,0.724992 +8189,0.0035,0.636928,1.1223,1.38035,0.842752 +16381,0.0273,0.881664,1.10387,0.907264,0.990208 +32765,0.0253,1.16634,1.22163,1.32096,1.09466 +65533,0.0373,1.3609,1.70598,1.52781,1.56262 +131069,0.6024,2.4279,2.45862,2.5897,3.13754 +262141,1.2369,4.26701,4.0489,4.52198,4.87731 +524285,2.3408,7.72608,7.77728,7.4711,8.2391 +1048573,4.8763,15.0508,15.49,14.462,14.4763 +2097149,9.9291,29.0949,27.8108,28.1866,27.8938 +4194301,18.8287,56.2872,56.1684,54.2659,53.3791 +8388605,35.9297,114.033,110.073,105.847,105.488 +16777213,77.4387,228.768,221.379,211.265,209.506 +33554429,147.842,460.896,435.932,424.849,421.82 +67108861,294.635,928.911,892.04,853.665,843.663 +13,0,0.551936,0.91648,1.81453,0.840704 +29,0.0002,0.489472,0.837632,0.769024,0.73216 +61,0.0002,0.676864,0.728064,0.67072,0.699392 +125,0.0002,0.535552,0.867328,1.74285,0.800768 +253,0.0002,0.531456,0.8192,0.826368,0.695296 +509,0.0004,0.52224,0.749568,0.644096,0.66048 +1021,0.0009,0.649216,0.782336,1.03936,0.748544 +2045,0.0009,0.707584,0.779264,0.772096,0.816128 +4093,0.0019,0.603136,0.89088,0.826368,1.31072 +8189,0.0038,0.842752,0.898048,0.805888,0.83968 +16381,0.0284,0.940032,0.976896,0.955392,0.937984 +32765,0.0165,1.2032,1.23392,1.26157,1.1479 +65533,0.039,1.42234,1.69882,1.50528,1.49402 +131069,0.5856,2.304,2.58662,2.79757,2.98803 +262141,1.1706,4.2752,4.14208,4.5056,4.73395 +524285,2.3998,7.91245,7.57146,7.51923,7.9657 +1048573,4.6861,15.7696,14.38,14.166,14.9617 +2097149,9.129,29.5997,28.6577,26.9281,27.5886 +4194301,18.2538,57.3911,56.0056,54.2915,54.2208 +8388605,39.5213,112.526,110.348,106.636,105.019 +16777213,72.2643,228.471,218.258,210.022,210.551 +33554429,145.557,458.793,441.596,423.886,420.46 +67108861,290.317,929.126,876.29,850.857,842.131 +13,0.0001,0.493568,0.713728,0.7168,0.718848 +29,0.0004,0.495616,0.750592,0.801792,0.641024 +61,0.0001,0.714752,0.789504,0.673792,0.729088 +125,0.0002,0.700416,0.777216,0.780288,0.768 +253,0.0004,0.774144,0.753664,1.20627,0.729088 +509,0.0003,0.886784,0.715776,0.832512,0.746496 +1021,0.0007,0.66048,0.763904,0.763904,0.71168 +2045,0.0017,0.852992,0.918528,0.707584,0.753664 +4093,0.0019,0.756736,0.822272,1.11821,0.81408 +8189,0.0078,0.826368,1.01171,0.800768,0.723968 +16381,0.008,1.1223,1.04653,1.30458,0.894976 +32765,0.0313,1.07622,1.21754,1.1561,1.05779 +65533,0.0397,1.3865,1.70906,1.52269,1.53702 +131069,0.6031,2.65011,2.53952,2.55283,3.0505 +262141,1.2081,4.352,4.43597,4.38784,4.90291 +524285,2.5825,7.89606,7.4752,8.62618,8.01178 +1048573,6.194,15.5781,14.7487,14.2438,14.5357 +2097149,10.1276,30.1199,28.7642,27.7821,28.0689 +4194301,20.405,57.4444,57.3645,54.0733,53.3709 +8388605,35.881,113.044,109.519,105.354,106.926 +16777213,75.9838,227.855,220.311,211.764,210.613 +33554429,150.617,461.74,432.938,422.43,420.196 +67108861,299.768,926.644,893.503,846.865,845.79 +13,0.0001,0.560128,1.13254,0.917504,1.27898 +29,0.0001,0.49664,0.75264,0.776192,0.739264 +61,0.0003,0.733184,0.930816,0.799744,0.754688 +125,0.0001,0.472064,0.759808,0.770048,0.971776 +253,0.0004,0.785408,0.809984,0.685056,0.771072 +509,0.0007,0.539648,0.794624,0.786432,0.743424 +1021,0.0011,0.633856,0.748544,0.80896,0.764928 +2045,0.0017,0.596992,0.866304,0.781312,0.76288 +4093,0.0232,0.764928,0.90112,0.95232,0.766976 +8189,0.0035,0.796672,0.929792,0.866304,0.851968 +16381,0.0077,0.785408,1.06394,0.968704,0.93184 +32765,0.0161,1.47968,1.31277,1.19808,1.09773 +65533,0.0363,1.39059,1.69677,1.52064,1.53293 +131069,0.6028,2.32141,2.4361,2.94707,3.04947 +262141,1.174,4.72474,4.16563,4.94899,4.53018 +524285,2.4103,7.79981,7.50387,8.06093,8.24115 +1048573,4.804,14.6207,14.9924,14.8736,14.7476 +2097149,9.4982,28.714,29.3673,27.8149,28.3884 +4194301,18.1335,58.5564,55.3226,54.9294,53.5665 +8388605,38.2382,115.26,112.981,108.288,105.004 +16777213,73.9456,228.293,218.346,213.884,211.528 +33554429,147.483,463.545,438.222,424.915,420.002 +67108861,296.084,931.032,874.479,847.315,843.456 +13,0.0001,0.483328,1.05062,0.731136,0.710656 +29,0.0001,0.49152,0.712704,0.67584,0.729088 +61,0.0001,0.622592,0.823296,0.775168,1.04346 +125,0.0003,0.47616,0.807936,0.785408,1.17965 +253,0.0002,0.52224,0.785408,0.787456,0.749568 +509,0.0006,0.6144,0.750592,0.789504,0.702464 +1021,0.0005,0.54272,0.815104,0.791552,0.736256 +2045,0.002,0.671744,0.863232,0.781312,0.750592 +4093,0.0039,0.611328,0.900096,0.809984,0.801792 +8189,0.0036,0.67072,0.980992,0.859136,0.850944 +16381,0.0082,0.842752,1.0793,0.954368,0.935936 +32765,0.0181,0.992256,1.21344,1.24211,1.11104 +65533,0.071,1.6128,2.23334,1.82067,1.58822 +131069,0.5838,2.69312,2.93274,2.62554,3.12934 +262141,1.2084,4.33152,4.05402,4.53325,4.70938 +524285,2.5939,8.07526,8.25037,7.99027,8.09779 +1048573,4.6397,14.9268,14.7814,14.5879,14.7948 +2097149,10.2132,29.6008,27.9726,27.0418,27.5794 +4194301,18.3158,57.0153,56.49,53.7508,53.6269 +8388605,35.8415,112.044,111.08,105.417,105.978 +16777213,72.2375,228.025,221.073,210.551,208.907 +33554429,150.88,462.705,432.894,422.76,422.719 +67108861,293.804,929.998,891.552,852.127,843.554 +13,0.0001,0.571392,0.7424,0.7424,0.637952 +29,0.0002,0.479232,0.741376,0.772096,1.22778 +61,0.0003,0.556032,1.10592,0.760832,0.740352 +125,0.0002,0.50176,0.764928,0.76288,1.79098 +253,0.0004,0.529408,0.75264,0.775168,0.754688 +509,0.0004,0.535552,1.2032,0.780288,0.98816 +1021,0.0009,0.67584,1.29331,0.800768,0.753664 +2045,0.0021,1.48173,0.889856,0.761856,0.77312 +4093,0.0036,0.681984,0.867328,0.801792,0.679936 +8189,0.0036,0.826368,0.954368,0.85504,0.805888 +16381,0.0081,0.751616,1.05165,1.26054,0.95744 +32765,0.0181,0.961536,1.24723,1.22163,1.09158 +65533,0.0375,1.35782,1.75206,1.54522,1.55955 +131069,0.586,2.33267,2.4617,2.31629,2.82317 +262141,1.1762,4.38477,4.3049,4.24653,4.56294 +524285,2.342,7.71277,7.7015,8.04352,8.65798 +1048573,4.7634,15.1286,15.4286,15.3293,15.4675 +2097149,9.2314,29.5854,28.8338,28.2102,27.648 +4194301,18.2937,58.4294,54.996,54.1635,54.6345 +8388605,37.583,112.961,108.977,105.805,105.007 +16777213,72.0561,228.607,218.427,209.746,210.969 +33554429,147.515,461.649,440.497,423.689,420.205 +67108861,295.954,930.312,878.673,849.373,840.478 +13,0.0001,0.500736,0.845824,0.687104,0.848896 +29,0.0002,0.754688,0.84992,0.837632,0.830464 +61,0.0002,0.68096,0.80384,0.7424,0.70656 +125,0.0002,0.512,0.75264,0.78336,0.779264 +253,0.0003,0.690176,0.77312,0.663552,0.657408 +509,0.0007,0.590848,0.702464,0.80896,0.736256 +1021,0.0005,0.598016,0.785408,0.777216,0.787456 +2045,0.0016,0.540672,0.780288,0.786432,0.82944 +4093,0.0018,0.607232,0.98304,0.784384,1.03219 +8189,0.0039,0.631808,0.974848,0.879616,0.955392 +16381,0.0078,0.801792,1.17555,0.948224,1.05062 +32765,0.0166,1.01786,1.16941,1.15814,1.36602 +65533,0.0375,1.9712,1.71418,1.58413,1.50221 +131069,0.5832,2.24973,2.54362,2.61837,3.67002 +262141,1.2027,4.30899,4.87936,4.20762,4.86605 +524285,2.3403,8.21555,7.50899,7.96058,9.07469 +1048573,4.6836,15.1122,14.9647,14.5541,14.9156 +2097149,9.4513,29.527,28.0678,27.4452,27.6603 +4194301,18.3713,58.2083,57.3215,53.5316,53.929 +8388605,36.1971,114.038,110.579,105.32,104.173 +16777213,76.6897,227.988,221.608,212.323,209.303 +33554429,149.805,460.709,432.503,425.467,420.543 +67108861,297.699,928.109,892.002,853.147,843.342 +13,0.0001,0.759808,0.987136,0.91648,0.8704 +29,0.0002,0.504832,0.723968,0.759808,0.678912 +61,0.0003,0.647168,0.622592,0.683008,0.690176 +125,0.0004,0.623616,0.801792,0.770048,0.73728 +253,0.0005,0.498688,0.765952,0.90624,0.733184 +509,0.0005,0.503808,0.765952,1.04448,0.784384 +1021,0.0004,0.615424,0.78336,0.954368,0.766976 +2045,0.0008,0.692224,0.840704,0.754688,0.74752 +4093,0.0017,0.777216,0.891904,0.802816,0.76592 +8189,0.0038,0.62464,0.934912,1.1776,0.923648 +16381,0.0073,0.746496,1.06803,1.53498,1.15814 +32765,0.0445,1.0025,1.24723,1.22368,1.12026 +65533,0.0397,1.44384,1.81555,1.57696,1.51245 +131069,0.5827,2.40742,2.48218,3.48467,3.09453 +262141,1.2018,4.864,4.14413,4.37965,5.17939 +524285,2.3403,7.76397,7.7015,8.04762,8.64563 +1048573,4.9726,14.7302,14.9248,14.3596,14.3391 +2097149,8.9976,29.3755,28.6003,28.1344,28.1948 +4194301,18.2608,57.4935,55.0175,54.0416,53.9761 +8388605,41.5901,113.554,109.484,106.286,105.854 +16777213,72.528,228.616,217.215,209.58,212.022 +33554429,144.022,460.989,442.763,423.597,419.199 +67108861,296.16,928.011,876.416,850.169,844.932 +13,0.0132,0.518144,1.36704,0.878592,0.786432 +29,0.0002,0.52224,0.835584,0.764928,1.21242 +61,0.0002,0.509952,0.81408,1.03322,1.67731 +125,0.0002,0.689152,0.80384,1.01274,0.572416 +253,0.0003,0.606208,0.566272,0.611328,0.570368 +509,0.0006,0.729088,0.791552,1.21446,0.755712 +1021,0.0009,0.556032,0.791552,0.7936,0.71168 +2045,0.0019,0.582656,0.929792,0.731136,0.661504 +4093,0.004,0.58368,0.964608,0.914432,0.776192 +8189,0.0034,0.617472,1.33734,0.862208,0.830464 +16381,0.008,0.874496,1.00864,1.01376,0.9472 +32765,0.0524,1.37523,1.25747,1.0711,1.06906 +65533,0.0339,1.48582,1.79507,1.61382,1.46944 +131069,0.6,2.23949,2.9737,2.46886,3.95776 +262141,1.3445,4.18816,4.33459,4.62131,6.12045 +524285,2.3416,7.8592,7.39942,7.87866,8.03021 +1048573,6.8432,15.1788,14.6954,14.1373,14.7016 +2097149,9.5276,28.887,29.2628,27.3275,27.5333 +4194301,17.8875,59.6163,56.1981,54.7604,53.4528 +8388605,36.1516,114.151,109.914,105.345,105.197 +16777213,73.4677,229.037,220.292,210.225,210.511 +33554429,147.49,461.521,432.941,425.942,420.308 +67108861,292.795,930.938,892.295,847.635,843.719 +13,0.0001,0.627712,0.893952,0.902144,1.45408 +29,0.0004,0.6656,0.800768,0.872448,1.23802 +61,0.0001,0.492544,0.766976,0.790528,0.723968 +125,0.0003,0.52224,0.65536,0.769024,0.726016 +253,0.0003,0.53248,0.587776,0.772096,0.744448 +509,0.0004,0.672768,0.681984,0.741376,0.94208 +1021,0.0008,0.80384,0.813056,0.7936,0.840704 +2045,0.0008,0.550912,0.902144,1.03219,0.775168 +4093,0.0017,0.66048,1.07315,0.789504,0.703488 +8189,0.0033,0.723968,0.964608,0.792576,0.73728 +16381,0.0074,0.78336,2.33882,0.970752,0.840704 +32765,0.0169,1.1049,1.19194,1.14995,1.67526 +65533,0.0382,1.60768,1.67014,1.53907,1.5104 +131069,0.5874,2.5641,2.42381,2.47706,3.01466 +262141,1.1691,4.65306,3.97312,4.5271,4.95002 +524285,2.3416,7.72096,7.95034,7.74451,8.56269 +1048573,4.4382,14.978,14.4824,15.4061,14.4916 +2097149,9.6912,29.2024,29.3437,27.8815,27.5292 +4194301,17.921,57.4515,56.6497,54.3775,53.9279 +8388605,35.8822,113.975,110.286,105.946,105.14 +16777213,72.4114,229.367,217.266,210.547,210.183 +33554429,148.137,460.875,438.343,424.159,421.56 +67108861,291.7,931.082,877.398,848.086,843.759 +13,0.0001,0.613376,0.781312,0.88576,0.741376 +29,0.0001,0.50688,0.837632,0.843776,0.797696 +61,0.0001,0.661504,0.888832,0.703488,0.730112 +125,0.0003,0.559104,0.748544,1.39264,0.78336 +253,0.0004,0.745472,1.10592,0.765952,0.748544 +509,0.0006,0.535552,0.802816,0.748544,0.694272 +1021,0.001,0.620544,0.818176,0.704512,1.00966 +2045,0.0009,0.86016,0.838656,0.771072,0.744448 +4093,0.0041,0.809984,0.881664,0.787456,0.888832 +8189,0.0036,0.801792,0.826368,0.826368,0.751616 +16381,0.008,0.881664,0.999424,0.87552,0.850944 +32765,0.0179,1.08851,1.25133,1.22778,1.13766 +65533,0.0348,1.38138,1.68346,1.52781,1.48582 +131069,1.7187,2.48422,2.66957,3.06074,3.02592 +262141,1.2024,4.91827,4.05606,4.21274,4.98176 +524285,2.3409,8.14387,8.02304,8.27187,8.75315 +1048573,5.2341,15.1951,14.9596,14.2428,14.6237 +2097149,9.1932,29.6438,29.1103,26.9957,27.1329 +4194301,20.164,58.0526,56.7327,53.1876,53.1497 +8388605,38.1095,113.556,110.836,105.841,106.358 +16777213,76.4485,228.272,219.876,210.309,210.353 +33554429,152.496,460.312,434.692,424.836,423.052 +67108861,300.266,932.609,891.481,847.375,844.332 +13,0.0001,0.54272,0.760832,0.715776,0.994304 +29,0.0002,0.536576,0.636928,0.730112,0.751616 +61,0.0001,1.1479,0.7168,0.873472,0.961536 +125,0.0001,0.760832,0.546816,0.55296,0.590848 +253,0.0006,0.969728,0.601088,0.556032,0.519168 +509,0.0007,0.963584,0.789504,1.1305,0.7424 +1021,0.0012,0.560128,0.816128,0.791552,0.672768 +2045,0.0021,0.553984,0.86016,0.770048,0.685056 +4093,0.0229,0.822272,0.858112,0.7424,0.910336 +8189,0.0044,0.707584,0.949248,0.86528,0.854016 +16381,0.0072,1.10285,1.03219,1.1223,0.949248 +32765,0.0164,0.997376,1.26464,1.13254,1.12128 +65533,0.0355,1.39162,1.71008,1.4807,1.62611 +131069,0.5849,2.31731,2.46784,2.5897,3.12013 +262141,1.207,4.8937,3.99565,4.52608,5.18758 +524285,3.3617,7.88685,8.03123,8.27597,8.76237 +1048573,4.8628,14.9975,14.6391,15.0323,14.3145 +2097149,9.3575,29.5608,28.887,27.1176,28.0095 +4194301,17.9388,57.3194,55.3175,53.7395,53.547 +8388605,37.4201,113.753,110.031,105.643,105.495 +16777213,75.2566,228.549,217.351,210.035,210.942 +33554429,143.717,461.901,439.19,423.111,421.042 +67108861,298.814,927.171,878.406,850.228,845.292 +13,0,0.574464,0.759808,0.756736,0.664576 +29,0.0001,0.473088,0.616448,0.77312,0.774144 +61,0.0001,0.505856,0.830464,0.73216,0.932864 +125,0.0004,0.55808,0.687104,0.909312,0.792576 +253,0.0003,0.698368,0.758784,1.02298,0.881664 +509,0.0007,0.838656,0.842752,0.823296,0.76288 +1021,0.0008,0.602112,0.77824,0.745472,0.9472 +2045,0.0009,0.561152,0.905216,0.77312,0.81408 +4093,0.0016,1.46637,0.879616,0.761856,0.671744 +8189,0.0033,0.835584,0.900096,0.882688,0.867328 +16381,0.0078,0.903168,1.04448,0.91648,0.90112 +32765,0.0448,0.949248,1.23392,1.1735,1.11309 +65533,0.0351,1.97635,1.72442,1.55443,1.56262 +131069,0.5999,2.41459,2.45658,2.47398,3.21229 +262141,1.1692,4.31923,4.65408,4.3561,4.90189 +524285,2.4022,7.72096,7.82541,8.90368,8.09779 +1048573,4.9946,14.7661,15.5873,15.3764,14.6729 +2097149,8.9575,29.7339,28.6484,28.1938,28.0883 +4194301,18.3103,56.9682,56.6231,53.0616,53.8593 +8388605,40.6614,114.009,109.667,106.206,105.035 +16777213,76.3057,230.093,221.769,211.431,212.137 +33554429,146.123,461.882,434.911,423.156,424.744 +67108861,294.109,929.348,887.752,851.596,842.355 +13,0,0.429056,0.648192,0.659456,0.621568 +29,0.0001,0.510976,0.620544,0.955392,0.674816 +61,0.0003,0.669696,0.612352,1.12538,0.832512 +125,0.0002,0.488448,0.75776,0.75776,0.753664 +253,0.0004,0.591872,0.720896,0.72704,0.698368 +509,0.0006,0.649216,0.723968,0.615424,0.883712 +1021,0.0011,0.59392,0.754688,0.796672,1.3353 +2045,0.0009,0.543744,0.922624,0.755712,0.812032 +4093,0.0018,0.561152,1.07008,0.8448,0.780288 +8189,0.0034,0.62976,0.945152,0.822272,0.851968 +16381,0.0074,0.754688,1.06086,1.00147,0.948224 +32765,0.0527,1.00659,1.1735,1.15917,1.13869 +65533,0.0391,1.51859,1.68038,1.40186,2.048 +131069,0.5996,2.31526,2.42893,2.61325,3.10784 +262141,1.1702,4.224,4.02739,4.44621,5.43232 +524285,2.4096,7.95853,7.81824,9.39418,8.7552 +1048573,4.9595,15.0333,14.3278,14.5091,14.463 +2097149,9.0567,29.1082,30.0216,27.0408,27.3428 +4194301,18.9029,57.2815,55.7322,53.3893,53.7743 +8388605,38.9073,115.484,109.208,104.9,105.957 +16777213,75.9085,227.932,216.625,207.073,211.515 +33554429,147.059,460.066,442.244,424.031,423.047 +67108861,297.634,928.621,877.697,851.811,845.05 +13,0.0001,0.586752,0.689152,0.705536,0.683008 +29,0.0001,0.488448,0.666624,0.72192,0.676864 +61,0.0002,0.561152,0.833536,0.684032,0.823296 +125,0.0002,0.565248,0.65024,0.78848,0.70656 +253,0.0003,0.536576,0.789504,0.939008,0.713728 +509,0.0006,0.528384,0.787456,0.784384,0.678912 +1021,0.0012,0.630784,0.63488,0.78848,0.940032 +2045,0.0022,0.77312,0.86016,0.791552,0.771072 +4093,0.004,1.51859,0.905216,0.813056,0.73728 +8189,0.0035,0.941056,0.963584,0.836608,0.738304 +16381,0.0085,1.23392,1.07418,0.944128,0.968704 +32765,0.0161,1.35168,1.25645,1.10074,1.0793 +65533,0.0359,1.41414,1.78483,2.09818,1.62406 +131069,0.7079,2.2528,2.80883,2.58867,3.18566 +262141,1.2044,4.1472,3.99667,5.05446,4.73293 +524285,2.6895,7.98208,7.5305,8.58317,8.60672 +1048573,4.762,14.634,14.5019,14.8214,15.1081 +2097149,9.596,28.7478,27.9163,27.4627,27.4248 +4194301,20.3405,56.8412,56.575,55.2038,54.0047 +8388605,38.5513,111.683,109.996,104.917,106.125 +16777213,80.2481,227.572,221.993,211.142,210.925 +33554429,149.143,458.504,433.64,424.274,423.054 +67108861,294.915,929.711,890.615,848.538,843.558 +13,0,0.724992,1.8944,1.69677,1.05984 +29,0.0002,0.464896,0.70656,0.736256,0.74752 +61,0.0001,0.77312,0.807936,0.733184,0.733184 +125,0.0002,0.58368,0.796672,0.807936,0.763904 +253,0.0005,0.492544,0.780288,0.80896,0.794624 +509,0.0007,0.510976,0.832512,0.76288,0.73728 +1021,0.0011,0.60928,0.8448,1.08544,0.787456 +2045,0.0019,0.64512,0.841728,0.748544,0.7168 +4093,0.0018,1.14688,0.868352,0.684032,0.709632 +8189,0.0083,1.23392,0.9472,0.837632,0.816128 +16381,0.0076,0.932864,1.024,0.876544,0.95744 +32765,0.0159,1.08544,1.35987,1.20525,1.09875 +65533,0.0421,1.44896,1.86163,1.54214,1.55034 +131069,0.5849,2.40845,2.44326,3.21126,3.10886 +262141,1.2029,4.864,4.30592,4.35302,5.13536 +524285,2.3769,7.80083,8.15206,8.12954,8.54118 +1048573,4.8448,15.6805,14.6084,14.5142,14.5715 +2097149,9.2726,29.4441,29.3704,27.5692,27.9306 +4194301,17.8762,57.1689,55.3902,53.4436,53.5255 +8388605,36.9311,114.345,109.833,106.078,104.701 +16777213,72.2402,227.702,215.968,211.188,208.45 +33554429,146.561,461.031,440.491,423.497,418.217 +67108861,300.01,929.705,879.372,845.658,848.204 +13,0.0001,0.750592,0.796672,0.781312,0.654336 +29,0.0003,0.65024,0.740352,0.891904,0.832512 +61,0.0001,0.529408,0.779264,0.775168,0.75776 +125,0.0002,0.633856,0.705536,0.741376,1.03219 +253,0.0003,0.533504,0.596992,0.666624,0.88064 +509,0.0007,0.533504,0.92672,0.8192,1.08851 +1021,0.0008,0.585728,0.72704,0.761856,0.736256 +2045,0.0015,0.720896,1.1049,0.781312,0.671744 +4093,0.0017,0.572416,1.02093,0.786432,0.837632 +8189,0.0035,0.796672,0.96256,0.827392,0.818176 +16381,0.0089,0.87552,1.05984,0.876544,0.9216 +32765,0.0341,1.07315,1.17862,1.11821,1.10797 +65533,0.0358,1.46022,2.2825,1.53088,1.95994 +131069,0.5828,2.35725,2.43098,3.24506,3.14061 +262141,1.1684,4.8425,4.02432,4.55885,5.33606 +524285,2.3422,8.02202,7.78342,8.22579,8.56064 +1048573,4.7211,14.9637,14.8726,14.7937,14.5562 +2097149,11.9635,29.5158,29.0355,28.1958,28.2286 +4194301,18.1677,57.0214,57.4628,53.3228,54.6099 +8388605,35.7856,112.495,110.463,107.045,105.07 +16777213,76.4332,228.104,222.542,211.457,209.307 +33554429,149.752,461.342,435.053,423.574,420.878 +67108861,295.479,932.817,891.619,850.251,843.575 +13,0.0001,0.422912,0.823296,0.641024,0.743424 +29,0.0001,0.524288,0.64,0.724992,0.662528 +61,0.0004,0.46592,0.7936,0.564224,0.858112 +125,0.0002,0.55296,0.635904,0.592896,0.565248 +253,0.0004,0.484352,0.722944,0.960512,0.700416 +509,0.0004,0.535552,0.595968,0.633856,0.580608 +1021,0.0004,0.590848,0.689152,0.595968,0.576512 +2045,0.0008,0.717824,0.8704,0.756736,0.960512 +4093,0.0019,0.784384,0.825344,0.79872,0.739328 +8189,0.0037,0.72704,0.959488,0.850944,0.78336 +16381,0.0095,0.88576,1.0537,0.922624,0.86528 +32765,0.0521,1.38035,1.4121,1.0967,1.07315 +65533,0.0372,1.51962,2.04902,1.57798,1.54214 +131069,0.5992,2.48627,2.51904,3.21843,3.02285 +262141,1.2024,4.39501,4.11546,4.49331,5.15891 +524285,2.4856,7.87046,8.07424,7.82541,7.8807 +1048573,4.4362,15.2095,14.0595,14.209,14.9821 +2097149,9.997,29.4861,28.5041,28.0207,28.0289 +4194301,20.733,57.5007,56.6364,53.2736,53.6259 +8388605,38.485,113.163,110.532,106,104.283 +16777213,77.4149,227.765,217.503,211.415,211.189 +33554429,150.601,460.204,441.811,424.803,421.276 +67108861,294.926,929.246,878.042,852.718,845.259 +13,0.0001,0.48128,0.929792,0.751616,0.741376 +29,0.0002,0.503808,0.796672,0.88064,0.7168 +61,0.0001,0.507904,0.661504,0.782336,0.786432 +125,0.0004,0.508928,0.759808,0.7936,0.76288 +253,0.0002,0.510976,0.73728,0.777216,1.01171 +509,0.0004,1.00045,0.804864,0.7936,0.70144 +1021,0.0012,0.909312,0.801792,0.772096,0.775168 +2045,0.001,0.67584,0.86016,0.795648,0.779264 +4093,0.0041,0.841728,0.86016,0.789504,0.772096 +8189,0.0036,0.65024,1.08851,0.836608,0.7424 +16381,0.0075,0.792576,1.10285,0.98304,1.15098 +32765,0.0304,0.997376,1.25952,1.11411,1.21446 +65533,0.0378,1.8985,1.66912,1.48992,1.51142 +131069,0.6025,2.21696,2.47501,2.5047,3.06995 +262141,1.175,4.18099,4.22502,4.47078,4.75341 +524285,2.2668,7.78445,7.57658,7.77626,8.80026 +1048573,4.6851,14.9852,14.5316,14.8562,14.7569 +2097149,9.8448,29.6837,28.076,28.0443,27.7596 +4194301,18.8568,57.7894,57.0921,54.2935,53.9699 +8388605,36.4429,113.271,110.179,105.432,105.459 +16777213,74.7375,227.784,219.723,210.864,209.972 +33554429,148.029,460.858,433.669,422.716,420.49 +67108861,304.44,931.002,893.635,853.171,840.242 +13,0.0001,0.416768,0.625664,0.708608,0.596992 +29,0.0001,0.479232,0.644096,0.719872,0.86528 +61,0.0002,0.508928,0.776192,0.882688,0.753664 +125,0.0001,0.515072,0.642048,0.775168,0.730112 +253,0.0002,0.683008,0.7936,0.785408,0.751616 +509,0.0007,0.571392,0.607232,0.787456,0.77312 +1021,0.0012,0.787456,0.857088,0.770048,0.761856 +2045,0.0021,0.585728,0.806912,0.77824,1.0281 +4093,0.0041,0.615424,0.899072,0.746496,0.789504 +8189,0.0037,0.66048,1.27078,0.871424,0.847872 +16381,0.0079,0.80384,1.21037,0.966656,0.969728 +32765,0.0175,1.01376,1.07418,1.11206,1.3056 +65533,0.039,1.82579,1.73056,1.52269,1.44282 +131069,0.5856,2.34394,2.68493,2.66342,3.35258 +262141,1.1742,4.20352,4.4585,4.31411,4.77184 +524285,2.3433,7.68,7.36666,7.5776,8.03635 +1048573,5.149,15.2248,14.337,14.4671,14.7118 +2097149,8.9899,29.4748,29.4502,28.7386,27.1688 +4194301,19.7528,57.5652,55.3759,54.2546,53.588 +8388605,35.8569,112.044,109.389,106.328,106.105 +16777213,77.3527,228.946,216.859,211.874,210.037 +33554429,153.28,462.716,442.027,425.52,421.584 +67108861,296.451,926.534,880.438,850.521,840.562 +13,0.0003,0.970752,0.868352,1.0793,0.896 +29,0.0002,0.499712,0.720896,2.36442,0.82944 +61,0.0002,0.52736,0.817152,0.608256,0.5632 +125,0.0001,0.565248,0.55808,0.564224,0.584704 +253,0.0003,1.32198,0.815104,0.897024,0.724992 +509,0.0003,0.647168,0.733184,0.722944,0.664576 +1021,0.0009,0.919552,0.9216,0.761856,0.67072 +2045,0.0009,0.581632,0.897024,0.78848,0.761856 +4093,0.0018,0.821248,0.728064,0.766976,0.771072 +8189,0.0039,0.684032,1.09773,0.843776,0.813056 +16381,0.0081,1.12742,1.0752,0.990208,0.845824 +32765,0.0321,1.24723,1.25338,1.25338,1.06291 +65533,0.0381,1.54931,1.6937,1.64659,1.70701 +131069,0.587,2.3767,2.45248,2.70438,3.16928 +262141,1.168,4.20147,4.12672,4.55168,4.9623 +524285,2.3415,8.01792,7.42502,7.80186,7.96365 +1048573,4.8588,14.9903,14.4404,14.7476,15.6488 +2097149,9.3665,28.8737,28.5932,27.3152,28.2296 +4194301,18.9379,58.3537,56.3743,53.6812,53.6453 +8388605,37.6053,112.908,109.767,104.921,105.236 +16777213,73.521,228.864,222.449,211.703,209.012 +33554429,148.1,460.441,434.683,424.612,420.485 +67108861,299.478,929.739,888.011,848.711,846.217 +13,0,0.662528,0.838656,0.929792,0.835584 +29,0.0002,0.512,0.744448,0.8704,1.19603 +61,0.0002,0.627712,0.805888,0.929792,0.748544 +125,0.0001,0.74752,0.873472,0.8704,0.722944 +253,0.0001,0.575488,0.959488,0.867328,0.751616 +509,0.0007,0.600064,0.805888,0.779264,0.657408 +1021,0.0008,0.730112,0.796672,0.792576,0.714752 +2045,0.0009,0.6656,0.823296,0.772096,0.714752 +4093,0.0017,0.96768,0.862208,0.825344,0.756736 +8189,0.0038,0.8448,0.96256,0.820224,0.749568 +16381,0.0078,0.821248,1.11821,1.65171,0.912384 +32765,0.0164,1.06086,1.24621,1.16941,1.14586 +65533,0.0386,1.74797,1.64659,1.4121,1.58925 +131069,0.5831,2.5303,2.77914,2.67469,2.92557 +262141,1.2621,4.32333,4.03251,4.37555,4.93466 +524285,2.3561,7.99334,7.42605,7.66976,8.22477 +1048573,4.6854,15.5075,14.5582,14.2572,14.548 +2097149,10.1327,29.2618,28.9352,27.5067,27.7473 +4194301,19.5183,57.3133,56.5197,55.0502,53.5808 +8388605,35.8021,112.696,111.837,106.3,106.071 +16777213,74.5105,228.523,217.982,210.322,209.33 +33554429,148.856,461.272,444.281,424.529,420.71 +67108861,294.438,928.098,877.177,852.505,843.458 +13,0.0001,0.553984,1.23802,0.781312,0.73728 +29,0.0001,0.492544,0.820224,0.765952,0.826368 +61,0.0001,0.470016,0.671744,0.789504,0.7936 +125,0.0002,0.508928,0.756736,0.750592,0.731136 +253,0.0003,0.49152,0.842752,0.754688,0.712704 +509,0.0005,0.728064,0.726016,0.756736,1.0711 +1021,0.0006,0.698368,0.863232,0.769024,0.738304 +2045,0.0009,0.54784,0.8448,0.787456,0.847872 +4093,0.0041,0.868352,0.87552,0.830464,0.766976 +8189,0.0036,0.65024,0.949248,0.88064,0.791552 +16381,0.0086,0.88576,1.06803,0.953344,0.950272 +32765,0.0365,1.23802,1.26669,1.12128,1.07827 +65533,0.0361,1.63738,1.6937,1.5319,1.49914 +131069,0.5825,2.27635,2.5303,2.59994,3.14266 +262141,1.2041,4.29363,3.98746,4.4585,5.47328 +524285,2.6873,7.5479,7.78445,8.2985,8.50534 +1048573,4.9092,14.6401,14.634,15.0395,14.7937 +2097149,9.9636,28.7805,28.9331,27.3562,27.3859 +4194301,18.7156,58.368,56.2422,54.0836,53.0084 +8388605,35.9285,113.721,111.055,105.644,104.855 +16777213,74.5769,227.909,220.583,209.893,210.225 +33554429,148.487,461.355,433.33,424.211,419.526 +67108861,292.872,928.008,888.768,851.008,844.634 +13,0.0001,0.574464,0.70144,0.836608,0.772096 +29,0.0001,0.524288,0.613376,0.982016,0.781312 +61,0.0001,0.70656,0.768,0.876544,0.842752 +125,0.0004,0.712704,0.724992,0.775168,0.703488 +253,0.0004,0.514048,0.766976,0.663552,0.657408 +509,0.0003,0.556032,0.695296,0.796672,0.749568 +1021,0.0004,0.65536,0.9216,0.78848,0.720896 +2045,0.0013,0.566272,0.883712,0.750592,0.715776 +4093,0.0018,0.77312,0.902144,0.759808,0.713728 +8189,0.0037,0.631808,0.934912,1.08851,0.80896 +16381,0.0072,0.918528,1.0455,0.903168,0.893952 +32765,0.0331,1.20525,1.54317,1.08954,1.07827 +65533,0.0345,1.6087,1.63021,1.72339,1.51552 +131069,0.5829,2.29478,2.48627,2.60506,3.05971 +262141,1.2014,4.5271,4.58854,4.25882,4.9367 +524285,2.4118,7.65747,7.60934,7.82643,8.53504 +1048573,4.9786,15.3262,13.9704,14.6872,14.6319 +2097149,9.4096,29.5127,28.8133,27.0838,27.5896 +4194301,17.9836,58.1161,55.7722,54.2269,53.7938 +8388605,45.4544,114.446,109.778,106.651,105.553 +16777213,71.9013,229.362,217.097,210.739,209.531 +33554429,147.207,461.299,441.205,422.981,424.162 +67108861,293.031,929.321,879.488,851.055,840.391 +13,0.0001,0.672768,0.813056,0.831488,0.813056 +29,0.0001,0.482304,0.793536,0.770048,0.543744 +61,0.0001,0.521216,0.7168,0.8192,0.777216 +125,0.0003,0.500736,1.20525,0.77824,0.717824 +253,0.0003,0.466944,0.759808,0.756736,0.879616 +509,0.0002,0.577536,0.734208,0.666624,0.62976 +1021,0.001,0.631808,0.76288,0.715776,0.739328 +2045,0.0009,0.5888,0.858112,0.989184,0.780288 +4093,0.0041,0.739328,0.861184,0.730112,0.743424 +8189,0.0035,0.669696,0.922624,0.97792,0.75264 +16381,0.007,0.822272,1.13766,0.859136,0.776192 +32765,0.0308,1.0199,1.28,1.13254,1.10694 +65533,0.0387,1.52064,1.57082,1.69062,1.70701 +131069,0.5994,2.28966,2.52109,2.66752,3.41504 +262141,1.2042,4.13082,4.07654,4.70016,4.93261 +524285,2.3526,7.59501,7.3984,7.66259,8.38246 +1048573,4.8711,14.6678,15.0979,15.0927,14.7333 +2097149,11.2988,28.6751,28.2819,27.903,27.7944 +4194301,19.353,57.8806,56.8965,53.6934,54.1614 +8388605,38.883,113.068,112.231,105.936,105.718 +16777213,73.1177,227.07,220.75,210.097,209.42 +33554429,155.843,461.244,434.822,421.152,421.756 +67108861,297.766,927.624,893.461,849.76,842.727 +13,0.0001,0.490496,0.8448,0.85504,0.72192 +29,0.0001,0.495616,0.628736,0.749568,0.755712 +61,0.0001,0.759808,0.785408,1.05472,0.667648 +125,0.0004,0.518144,0.768,1.66298,0.772096 +253,0.0004,0.525312,0.769024,0.910336,0.758784 +509,0.0007,0.641024,0.812032,1.54624,0.683008 +1021,0.0004,0.585728,0.801792,0.894976,0.782336 +2045,0.0008,0.60416,0.6656,0.743424,0.760832 +4093,0.0225,0.674816,1.23597,0.989184,0.777216 +8189,0.0035,0.82432,1.03629,0.905216,1.30048 +16381,0.0075,0.771072,2.33574,1.01478,1.31584 +32765,0.0307,1.04346,1.18682,1.19603,1.54829 +65533,0.0378,1.6128,1.72237,1.59027,1.54726 +131069,0.7038,2.29478,2.60403,2.54157,2.93069 +262141,1.3488,4.14413,4.15334,4.8343,4.95821 +524285,2.3404,8.18278,7.68717,8.17459,8.59443 +1048573,4.6319,15.2566,15.2279,14.8972,14.6606 +2097149,9.4654,29.3704,28.7867,28.672,27.4821 +4194301,18.263,57.5017,54.7942,53.4907,54.2003 +8388605,36.4912,113.608,109.915,105.005,105.198 +16777213,71.8479,228.371,218.102,210.188,208.965 +33554429,144.836,460.825,441.733,422.601,422.46 +67108861,297.368,926.053,878.595,845.405,845.135 +13,0.0001,0.521216,0.83968,0.914432,0.904192 +29,0.0001,0.494592,0.718848,0.832512,0.77824 +61,0.0002,0.65536,0.761856,0.774144,0.756736 +125,0.0002,0.669696,0.75776,1.0793,0.75264 +253,0.0002,0.530432,0.776192,0.712704,0.735232 +509,0.0004,0.594944,0.730112,0.777216,0.765952 +1021,0.0005,0.566272,0.79872,0.795648,0.802816 +2045,0.0017,0.776192,0.80384,0.904192,0.980992 +4093,0.002,0.888832,0.889856,0.831488,0.827392 +8189,0.0036,0.922624,0.915456,0.771072,0.792576 +16381,0.0074,0.805888,1.07008,0.946176,0.939008 +32765,0.0577,1.14995,1.42541,1.07418,1.12026 +65533,0.0355,1.65888,1.80838,1.49402,1.54214 +131069,0.5858,2.77402,2.87334,2.48627,3.15699 +262141,1.1737,4.22605,4.06221,4.84864,4.79744 +524285,3.1982,7.92371,7.7312,8.36915,8.59034 +1048573,4.4377,15.3897,14.9545,14.5254,14.6729 +2097149,10.297,29.2895,28.7252,28.0945,27.9388 +4194301,18.1015,57.4771,57.7618,53.247,52.6254 +8388605,36.0656,112.937,111.463,105.936,105.99 +16777213,74.0706,228.902,223.71,210.283,209.179 +33554429,152.923,459.568,435.72,427.079,421.455 +67108861,290.872,928.792,890.922,848.975,841.313 +13,0.0001,0.473088,0.699392,0.72704,0.730112 +29,0.0001,0.49152,1.02912,0.695296,0.710656 +61,0.0001,0.497664,0.900096,0.748544,0.759808 +125,0.0003,0.516096,0.75264,0.768,0.80896 +253,0.0003,0.530432,0.744448,0.813056,1.01786 +509,0.0006,0.559104,0.792576,0.791552,0.919552 +1021,0.0005,0.572416,0.743424,0.837632,0.763904 +2045,0.0008,0.846848,0.82944,0.740352,1.33837 +4093,0.0018,0.567296,0.858112,0.73216,0.818176 +8189,0.0061,0.864256,0.973824,0.809984,0.751616 +16381,0.0078,0.753664,1.05574,0.9472,0.846848 +32765,0.0163,1.04243,1.27898,1.19706,1.31379 +65533,0.0369,1.41517,1.73466,1.64762,1.5616 +131069,0.7336,2.32755,2.79347,2.70029,3.0505 +262141,1.2814,4.09907,4.37965,4.53734,4.81485 +524285,2.4098,8.57293,7.53562,8.2135,8.2647 +1048573,4.4777,15.0682,15.2484,14.3401,14.7466 +2097149,9.1994,29.5363,28.4754,27.7125,27.9552 +4194301,19.0994,56.5484,55.0799,53.7661,53.9689 +8388605,38.0154,114.189,110.33,106.444,105.072 +16777213,74.4147,228.902,217.127,210.313,209.857 +33554429,148.147,459.252,440.382,424.251,421.275 +67108861,297.661,929.821,880.796,853.402,845.295 +13,0,0.562176,0.910336,0.91648,0.83456 +29,0.0001,0.497664,0.746496,0.811008,0.848896 +61,0.0001,0.504832,0.927744,0.869376,0.823296 +125,0.0003,0.61952,0.779264,0.794624,0.754688 +253,0.0002,0.62976,0.756736,0.791552,0.744448 +509,0.0004,0.539648,0.76288,0.859136,0.758784 +1021,0.0004,0.553984,0.782336,0.75264,0.771072 +2045,0.0013,0.569344,0.851968,0.765952,0.813056 +4093,0.0018,0.576512,0.933888,1.24621,0.825344 +8189,0.0035,0.77824,0.996352,0.863232,0.859136 +16381,0.007,0.88576,1.63328,0.943104,0.894976 +32765,0.0328,0.964608,1.29331,1.41005,1.31072 +65533,0.0386,1.41005,1.67424,1.50835,1.54931 +131069,0.5831,2.36134,2.41869,2.59277,3.10272 +262141,1.1711,4.39091,3.93523,4.88038,4.91418 +524285,2.3664,8.38451,8.3456,8.01178,8.06195 +1048573,4.9297,15.4235,14.5172,14.0544,15.1194 +2097149,10.5581,28.8471,28.1641,27.6777,27.9347 +4194301,19.0602,57.2273,57.0501,53.9156,53.7549 +8388605,38.3323,111.399,109.652,105.388,104.104 +16777213,76.0072,223.374,220.984,211.057,211.709 +33554429,148.1,460.08,435.92,424.715,421.171 +67108861,290.815,925.006,892.226,848.261,844.15 +13,0.0001,0.669696,0.676864,0.775168,0.693248 +29,0.0001,0.575488,0.80384,0.806912,0.782336 +61,0.0002,0.503808,0.785408,0.828416,0.605184 +125,0.0004,0.524288,0.772096,0.78848,0.760832 +253,0.0004,0.52736,0.760832,0.864256,0.791552 +509,0.0004,0.484352,0.900096,0.77312,0.718848 +1021,0.0005,0.656384,0.81408,0.77824,1.20422 +2045,0.0017,0.720896,0.835584,0.739328,0.816128 +4093,0.0018,0.616448,0.898048,0.81408,0.687104 +8189,0.007,0.823296,0.883712,1.15098,1.25952 +16381,0.0233,0.780288,1.15405,0.975872,0.898048 +32765,0.0301,0.991232,1.68653,1.15507,1.10899 +65533,0.0379,1.51859,1.70086,1.52064,1.56058 +131069,0.6867,2.24973,3.32902,2.58765,3.32083 +262141,1.3709,4.33971,4.01408,4.49946,4.71859 +524285,2.5058,8.10803,7.72608,7.54483,7.88992 +1048573,4.7661,15.0886,14.8552,15.2924,15.5791 +2097149,9.6145,28.8748,29.5752,27.6552,27.5958 +4194301,18.3093,57.5089,55.0963,54.3427,54.0672 +8388605,37.7051,114.219,110.212,105.466,105.433 +16777213,73.3006,228.22,216.413,210.477,212.129 +33554429,146.297,462.467,441.838,423.71,420.172 +67108861,296.199,931.041,878.647,851.516,841.16 +13,0.0001,0.643072,0.889856,0.909312,0.6912 +29,0.0002,0.47616,0.628736,0.774144,0.74752 +61,0.0002,0.72192,0.813056,0.772096,0.67584 +125,0.0003,0.601088,0.832512,0.780288,0.760832 +253,0.0002,0.520192,0.772096,0.719872,2.16371 +509,0.0005,0.544768,0.772096,0.731136,0.688128 +1021,0.001,0.715776,0.857088,0.800768,0.7168 +2045,0.0021,0.633856,0.872448,0.756736,0.770048 +4093,0.0041,0.611328,0.905216,1.01069,0.761856 +8189,0.0036,0.677888,0.937984,1.02195,0.786432 +16381,0.0078,0.869376,1.12947,0.963584,0.960512 +32765,0.0502,0.980992,1.11104,1.12845,1.16736 +65533,0.0392,1.60154,1.6425,1.45203,1.47558 +131069,0.5828,2.34189,2.49344,2.62451,3.02182 +262141,1.2034,4.25165,4.03251,4.38272,5.04109 +524285,2.3415,7.78854,7.66566,8.36813,8.46029 +1048573,4.7973,14.5848,14.8275,14.2633,14.2643 +2097149,10.418,29.226,28.3658,27.2159,28.0033 +4194301,18.0624,59.3398,57.7331,52.9889,53.2797 +8388605,36.3561,114.51,110.692,105.769,103.675 +16777213,72.0733,228.201,220.567,212.002,210.119 +33554429,149.127,459.207,434.712,425.215,421.178 +67108861,294.844,927.745,893.064,849.571,837.052 +13,0.0001,0.467968,0.909312,0.910336,0.883712 +29,0.0001,0.484352,0.751616,0.930816,0.888832 +61,0.0001,0.754688,0.669696,0.7424,0.774144 +125,0.0002,0.62464,0.743424,0.769024,1.13152 +253,0.0004,0.63488,0.712704,0.666624,0.668672 +509,0.0004,0.72192,0.86528,0.765952,0.7424 +1021,0.0005,0.65024,0.73728,0.73216,0.677888 +2045,0.0008,0.78336,0.866304,0.714752,0.6656 +4093,0.0019,0.693248,0.868352,0.823296,0.726016 +8189,0.0039,0.631808,0.927744,1.01274,0.79872 +16381,0.0094,0.933888,1.06906,0.914432,0.907264 +32765,0.0307,1.11206,1.24621,1.17658,1.09158 +65533,0.0554,1.45818,1.59744,1.9968,1.61894 +131069,0.7159,2.3593,2.3849,2.55386,3.10067 +262141,1.1996,4.18918,4.24755,4.31616,4.71142 +524285,2.3405,7.73734,7.44448,7.52026,8.43981 +1048573,4.7957,15.0886,14.4937,14.7896,14.1885 +2097149,9.0823,28.4129,29.226,27.3961,27.5313 +4194301,18.7215,57.9133,55.1649,53.334,53.3934 +8388605,39.3219,112.947,110.446,106.878,105.035 +16777213,74.9666,229.579,218.949,211.91,210.557 +33554429,147.107,461.264,440.336,424.136,421.291 +67108861,295.912,925.491,877.567,851.686,840.086 +13,0.0001,0.52736,0.653312,0.734208,0.734208 +29,0.0001,0.512,0.612352,0.613376,0.594944 +61,0.0002,0.49664,0.649216,0.684032,0.520192 +125,0.0002,0.516096,0.837632,1.09568,0.805888 +253,0.0002,0.528384,0.7936,0.75776,0.718848 +509,0.0004,0.55296,0.775168,0.664576,0.70656 +1021,0.0005,0.549888,0.854016,0.764928,0.951296 +2045,0.0009,0.54272,0.915456,0.74752,0.723968 +4093,0.0048,0.543744,0.869376,0.87552,0.801792 +8189,0.0038,0.62464,0.864256,0.843776,0.832512 +16381,0.0099,0.905216,1.16122,0.945152,0.893952 +32765,0.0174,0.991232,1.26464,1.12845,1.54829 +65533,0.0395,1.37523,1.71418,1.60563,2.08691 +131069,0.6056,2.44122,2.65626,2.43814,3.07507 +262141,1.1689,4.47898,4.10829,4.37965,5.4528 +524285,2.3423,8.27085,7.85203,7.89606,9.2201 +1048573,4.7564,15.0077,14.4148,15.0938,14.5674 +2097149,9.1466,29.4646,28.9516,27.0131,27.4995 +4194301,20.4086,57.0716,55.8868,54.6161,53.844 +8388605,36.4423,115.125,110.047,105.526,106.445 +16777213,75.3013,228.189,221.497,211.371,211.192 +33554429,146.533,462.913,434.192,423.865,420.586 +67108861,295.724,930.746,892.583,850.693,842.278 +13,0.0001,0.553984,0.70144,0.88064,0.832512 +29,0.0003,0.594944,0.756736,0.882688,0.82944 +61,0.0002,0.518144,0.705536,0.790528,0.749568 +125,0.0004,0.572416,0.805888,1.35578,0.774144 +253,0.0005,0.57344,0.751616,0.796672,0.715776 +509,0.0193,0.570368,0.754688,0.78336,0.658432 +1021,0.0011,0.559104,0.822272,0.738304,0.672768 +2045,0.0007,0.586752,0.866304,0.789504,0.83456 +4093,0.004,0.615424,0.874496,0.781312,1.1561 +8189,0.0039,0.796672,0.882688,0.77824,0.775168 +16381,0.0072,0.892928,1.04243,0.859136,0.887808 +32765,0.0173,0.995328,1.44384,1.18067,1.14893 +65533,0.037,1.39776,1.78278,1.46227,1.53088 +131069,0.5857,2.16678,3.22765,2.46579,3.19795 +262141,1.1687,4.59878,4.0745,4.48614,4.95616 +524285,2.2188,7.63187,7.36659,7.83155,8.50944 +1048573,4.4388,15.3344,15.0313,15.2074,14.3872 +2097149,8.897,29.4277,29.2127,27.6142,27.5005 +4194301,18.346,59.222,56.6774,53.7846,53.5265 +8388605,36.0781,113.182,110.33,104.878,105.638 +16777213,80.0456,228.451,218.571,211.838,210.126 +33554429,150.892,461.245,440.9,423.38,421.164 +67108861,301.535,924.488,873.145,847.087,843.517 +13,0.0001,0.528384,0.54784,1.3527,0.843776 +29,0.0001,0.536576,0.612352,0.896,0.523264 +61,0.0002,0.49664,0.72192,0.590848,0.485376 +125,0.0002,1.08032,0.505856,0.556032,0.559104 +253,0.0004,0.521216,0.755712,0.745472,0.657408 +509,0.0006,0.684032,0.77824,0.9728,0.602112 +1021,0.0007,0.622592,0.693248,0.832512,0.684032 +2045,0.0015,0.689152,1.88621,0.8448,0.787456 +4093,0.0022,0.580608,0.743424,0.591872,0.804864 +8189,0.0036,0.62464,0.84992,1.24928,0.7168 +16381,0.009,0.861184,1.09363,0.94208,0.705536 +32765,0.0248,1.28512,1.19398,0.924672,0.939008 +65533,0.0388,1.32813,2.00909,1.34349,2.31117 +131069,0.8289,2.25178,3.23072,2.8887,3.0976 +262141,1.2802,4.01818,3.93523,4.74726,4.19123 +524285,2.4898,8.70912,7.86637,7.95341,8.7552 +1048573,4.8901,16.1444,15.2146,15.0374,15.2443 +2097149,9.37,28.9864,28.5481,27.733,27.5313 +4194301,21.5251,57.4116,57.0327,53.9924,54.0887 +8388605,37.8376,113.447,110.838,106.159,106.052 +16777213,84.7573,228.467,221.033,211.486,208.078 +33554429,154.143,457.909,430.697,424.99,419.835 +67108861,311.957,931.874,890.771,848.082,837.751 +13,0.0001,0.572416,0.754688,0.521216,1.14074 +29,0.0001,0.635904,0.8448,0.92672,0.841728 +61,0.0002,0.463872,0.794624,0.676864,0.699392 +125,0.0003,0.464896,0.740352,0.715776,0.664576 +253,0.0001,0.740352,1.06291,0.77824,0.749568 +509,0.0003,0.64,0.628736,0.78848,0.65024 +1021,0.0004,0.804864,0.765952,0.821248,1.24211 +2045,0.0009,0.973824,0.78848,0.774144,0.759808 +4093,0.0204,0.80384,0.815104,0.79872,0.809984 +8189,0.0034,0.821248,0.95744,0.771072,0.777216 +16381,0.0076,0.914432,2.20979,0.95744,0.909312 +32765,0.0174,1.3056,1.28307,1.20115,1.05574 +65533,0.0405,1.51347,1.68755,1.57389,1.51245 +131069,0.6228,2.40026,2.51597,2.92557,3.26042 +262141,1.2813,4.28134,5.27872,4.39706,4.52403 +524285,2.4096,7.47213,7.49773,7.55814,7.81312 +1048573,4.6849,15.3385,15.2279,14.0247,15.8925 +2097149,10.1468,29.738,29.3335,27.3132,28.329 +4194301,20.6963,57.9144,55.5274,55.1168,53.3883 +8388605,37.9062,113.121,109.733,105.334,105.402 +16777213,76.1149,227.892,216.879,209.164,209.643 +33554429,149.233,460.671,441.178,427.569,421.378 +67108861,298.179,924.84,879.86,847.834,843.463 +13,0.0001,0.43008,0.509952,0.551936,0.749568 +29,0.0001,0.428032,0.627712,1.1735,0.649216 +61,0.0002,0.500736,0.5376,0.608256,0.567296 +125,0.0004,0.512,0.603136,0.760832,0.768 +253,0.0002,0.556032,0.775168,1.01274,0.82432 +509,0.0006,0.64,0.904192,0.794624,0.77312 +1021,0.0004,0.533504,0.820224,0.809984,0.744448 +2045,0.0008,0.567296,0.871424,0.8448,0.830464 +4093,0.0022,0.570368,0.882688,1.64147,0.804864 +8189,0.0036,0.677888,0.932864,1.06803,0.801792 +16381,0.0081,0.784384,1.03834,0.867328,1.03731 +32765,0.0324,1.00352,1.7879,1.31482,1.61894 +65533,0.0399,1.86778,1.7408,1.54419,1.69062 +131069,0.5827,2.33984,2.53133,2.68698,3.74989 +262141,1.1677,4.33562,5.10874,4.46566,4.88141 +524285,2.691,8.1449,7.36358,7.9913,8.03021 +1048573,4.9443,15.4829,14.7497,14.1855,15.5054 +2097149,9.3046,29.0734,29.183,27.518,28.1979 +4194301,18.9029,58.623,55.765,53.6433,54.7891 +8388605,39.4498,113.893,110.099,105.973,105.456 +16777213,78.5617,227.481,220.646,212.244,208.509 +33554429,148.979,460.5,435.75,425.264,422.284 +67108861,294.084,927.253,889.191,850.51,844.26 +13,0.0001,0.63488,0.688128,1.41414,0.818176 +29,0.0001,0.57856,0.866304,0.889856,0.859136 +61,0.0002,0.448512,0.73216,0.781312,0.80384 +125,0.0003,0.507904,0.838656,0.86528,0.731136 +253,0.0001,0.618496,0.709632,0.877568,0.722944 +509,0.0002,0.70144,0.713728,0.910336,0.813056 +1021,0.0004,0.557056,0.796672,0.787456,0.755712 +2045,0.001,0.640992,0.863232,0.713728,0.731136 +4093,0.0017,1.04448,0.674816,0.575488,1.00762 +8189,0.0034,0.66048,0.990208,0.857088,0.909312 +16381,0.0073,0.913408,0.990208,0.881664,0.956416 +32765,0.0369,1.16429,1.28205,1.09158,1.08749 +65533,0.0389,1.44998,1.63635,1.72544,1.42438 +131069,0.6128,2.2487,2.92864,2.89587,2.9655 +262141,1.3163,4.0919,4.11341,4.65203,4.69914 +524285,2.3411,7.85306,7.424,7.64826,8.04045 +1048573,4.6834,15.4532,15.0856,14.7016,14.8603 +2097149,8.875,29.2116,28.3525,27.7699,27.4924 +4194301,18.3728,57.6307,55.0175,53.6515,54.5597 +8388605,40.053,113.1,109.578,106.481,105.683 +16777213,74.3454,228.487,218.286,209.831,210.849 +33554429,149.968,462.244,440.487,422.657,425.206 +67108861,299.877,927.236,885.102,852.3,842.412 +13,0,0.748544,0.913408,0.909312,0.828416 +29,0.0001,0.569344,0.750592,1.01069,0.833536 +61,0.0002,0.736256,0.878592,0.786432,0.73216 +125,0.0001,0.71168,0.796672,0.77312,0.735232 +253,0.0002,0.516096,0.768,0.7936,1.4295 +509,0.0003,0.544768,0.784384,0.776192,0.8192 +1021,0.0004,0.663552,0.766976,0.789504,0.734208 +2045,0.0009,0.770048,0.775168,0.751616,0.663552 +4093,0.0016,1.21856,0.904192,0.858112,0.723968 +8189,0.003,0.6912,1.09978,0.874496,0.828416 +16381,0.007,0.800768,1.55853,0.969728,0.905216 +32765,0.0157,1.1479,1.52576,1.34451,1.03424 +65533,0.0369,1.41517,1.66195,1.53293,1.52474 +131069,0.5858,2.27328,2.46989,2.53235,2.99418 +262141,1.172,4.31104,4.16461,4.49536,5.3289 +524285,2.3415,8.10189,7.7271,8.07117,8.74496 +1048573,4.6855,15.4972,14.7036,15.4819,14.7425 +2097149,11.7864,29.3048,28.5676,27.7187,27.4043 +4194301,19.637,57.5365,56.3855,55.6308,54.2474 +8388605,36.0818,113.118,111.807,105.954,105.538 +16777213,72.5164,228.363,220.854,212.462,212.137 +33554429,148.596,464.397,430.95,425.028,420.545 +67108861,296.975,933.069,890.207,851.296,843.51 +13,0.0001,0.724992,0.887808,0.910336,1.36602 +29,0.0001,0.661504,0.86528,0.927744,0.84992 +61,0.0001,0.479232,0.785408,0.761856,0.65024 +125,0.0001,0.500736,0.800768,0.833536,0.759808 +253,0.0002,0.551936,0.80384,0.758784,0.651264 +509,0.0002,0.523264,0.782336,0.705536,0.700416 +1021,0.0004,0.618496,0.73728,0.753664,0.726016 +2045,0.0008,0.913408,0.858112,0.899072,0.668672 +4093,0.0019,0.592896,0.891904,1.17555,0.794624 +8189,0.0031,0.6144,1.00454,1.0199,0.867328 +16381,0.0065,0.93696,0.980992,0.872448,0.91648 +32765,0.0164,1.04858,1.25645,1.14074,1.05882 +65533,0.038,1.51654,1.62918,2.37875,1.55136 +131069,0.7855,2.3081,2.59482,2.52109,3.0167 +262141,1.3487,4.26598,4.06528,4.89882,4.96742 +524285,2.3422,7.68512,8.81357,7.57862,7.9831 +1048573,4.7174,14.592,14.8244,14.1138,15.0784 +2097149,9.0674,29.7841,29.5506,27.479,27.9224 +4194301,18.9104,57.5826,55.4783,55.2847,53.9771 +8388605,36.6148,113.509,110.221,106.199,105.351 +16777213,76.2768,229.236,217.523,211.465,208.944 +33554429,149.027,463.402,443.219,423.423,420.749 +67108861,297.659,931.504,875.979,852.551,837.507 +13,0.0001,0.697344,0.850944,0.84992,0.934912 +29,0.0003,0.590848,0.681984,0.87552,0.856064 +61,0.0002,0.704512,0.642048,0.90624,1.05472 +125,0.0001,0.602112,0.79872,0.871424,0.826368 +253,0.0001,0.520192,0.622592,0.607232,0.559104 +509,0.0003,0.5376,0.65024,1.02912,0.520192 +1021,0.0004,0.62464,0.610304,0.611328,0.76288 +2045,0.0008,0.613376,0.812032,0.772096,0.759808 +4093,0.0016,0.589824,0.925696,0.800768,0.772096 +8189,0.0032,0.618496,0.973824,0.904192,1.024 +16381,0.0063,0.75264,1.14483,0.969728,0.969728 +32765,0.0153,0.963584,1.31584,1.14176,1.4295 +65533,0.0335,1.67014,1.67219,1.49914,1.57082 +131069,0.6453,2.29171,2.5856,2.62451,3.5328 +262141,1.2087,4.25574,4.48205,4.52403,4.92851 +524285,2.4065,7.85101,8.85453,8.37325,8.97331 +1048573,4.9552,15.0845,15.6129,14.4466,14.6217 +2097149,9.4064,29.2977,28.0003,28.4058,28.116 +4194301,23.6748,58.2646,57.131,54.4051,54.0334 +8388605,39.1522,112.825,110.527,105.67,105.427 +16777213,75.7682,228.394,221.447,210.637,211.549 +33554429,148.881,460.204,435.445,423.493,419.017 +67108861,291.446,931.621,892.278,853.4,845.511 +13,0.0001,0.72704,0.845824,0.904192,0.887808 +29,0.0002,1.08442,0.741376,0.785408,0.67584 +61,0.0001,0.546816,0.766976,0.802816,0.781312 +125,0.0001,0.658432,0.76288,0.884736,0.77824 +253,0.0001,0.524288,0.782336,1.64557,0.749568 +509,0.0002,0.524288,0.861184,0.751616,0.720896 +1021,0.0004,0.55296,0.806912,0.790528,0.766976 +2045,0.0008,0.57856,0.877568,0.7936,0.768 +4093,0.0016,0.617472,0.886784,0.817152,0.796672 +8189,0.0033,0.64512,1.07418,0.872448,0.87552 +16381,0.0201,0.89088,1.07418,1.18886,0.95744 +32765,0.0155,1.11104,1.61792,1.11002,1.152 +65533,0.0362,1.52883,1.70496,1.75309,1.54829 +131069,0.6521,2.39411,3.16314,2.64704,3.41914 +262141,1.1728,4.12262,4.07962,4.44211,5.00019 +524285,2.3535,7.74554,7.41581,7.82746,8.0855 +1048573,5.5475,14.3596,14.2612,15.1593,15.1204 +2097149,8.8726,29.4216,29.353,28.0463,27.4135 +4194301,17.9365,57.898,55.4988,54.8782,53.9535 +8388605,38.8484,114.062,111.614,104.812,105.599 +16777213,71.9145,228.25,217.807,210.727,210.017 +33554429,150.072,461.54,443.538,424.472,419.944 +67108861,296.218,927.727,880.821,847.562,842.065 +13,0,0.749568,0.761856,0.80384,0.777216 +29,0.0001,0.484352,0.714752,0.877568,0.827392 +61,0.0003,0.888832,0.743424,0.806912,0.753664 +125,0.0001,0.560128,0.770048,0.781312,0.950272 +253,0.0002,0.740352,0.780288,0.775168,0.708608 +509,0.0002,0.56832,0.816128,0.784384,0.791552 +1021,0.0004,0.55296,0.820224,1.00557,0.750592 +2045,0.0008,0.72192,0.83456,0.65536,0.944128 +4093,0.0016,0.60928,0.976896,0.852992,1.09978 +8189,0.0032,0.766976,0.971776,0.87552,0.86016 +16381,0.02,0.893952,1.10797,1.00045,1.11002 +32765,0.0155,1.79814,1.27795,1.1305,1.47354 +65533,0.0369,1.59027,1.70906,1.50938,1.5401 +131069,0.5831,2.27738,2.88973,2.83341,3.61165 +262141,1.1945,4.24448,4.09088,4.75443,4.91213 +524285,2.3547,7.71379,7.60525,7.45779,7.92166 +1048573,4.9282,14.8101,15.5003,13.8455,14.7343 +2097149,9.3668,29.1779,27.9368,28.4129,27.7883 +4194301,20.9209,57.4679,56.917,52.9265,55.167 +8388605,35.9234,115.072,110.526,106.379,107.418 +16777213,75.8582,227.812,221.332,212.22,210.399 +33554429,147.612,461.926,434.32,422.05,421.254 +67108861,298.292,932.765,885.975,849.745,845.573 +13,0.0001,0.49152,0.776192,0.859136,0.960512 +29,0.0001,0.546816,0.565248,0.723968,0.743424 +61,0.0002,0.586752,0.82432,0.861184,0.835584 +125,0.0004,0.507904,1.1305,0.841728,0.836608 +253,0.0002,0.493568,0.627712,0.692224,0.571392 +509,0.0003,0.495616,0.64512,0.62464,0.886784 +1021,0.0004,0.84992,0.799744,0.816128,0.908288 +2045,0.0009,0.59904,0.871424,0.787456,1.56877 +4093,0.0016,0.610304,0.910336,0.805888,0.812032 +8189,0.0031,0.816128,1.03014,0.842752,0.847872 +16381,0.0066,0.817152,1.4377,1.00966,0.932864 +32765,0.0153,1.03219,1.31584,1.15302,1.13254 +65533,0.0379,1.38035,1.87085,1.49709,1.57594 +131069,0.585,2.25178,2.5047,2.45862,3.00237 +262141,1.1742,4.18099,4.03149,4.29568,5.09645 +524285,2.3563,7.92883,7.78752,7.75782,8.36198 +1048573,5.1062,15.2054,15.0518,13.8977,14.6002 +2097149,11.4257,29.0202,28.7939,28.0965,27.3818 +4194301,19.3992,58.668,56.1152,53.9873,53.9177 +8388605,35.9072,113.866,110.65,106.493,105.77 +16777213,77.1401,228.991,217.261,211.189,210.322 +33554429,148.632,460.278,439.962,423.127,420.028 +67108861,303.606,929.366,880.861,848.665,840.905 +13,0.0001,0.618496,0.91136,1.30765,0.897024 +29,0.0001,0.489472,0.883712,0.927744,0.888832 +61,0.0001,0.503808,0.780288,0.777216,0.748544 +125,0.0001,0.633856,0.736256,0.735232,0.649216 +253,0.0002,0.526336,0.833536,0.795648,0.843776 +509,0.0005,0.60416,0.812032,0.6912,0.657408 +1021,0.0004,0.54784,0.77824,0.795648,0.718848 +2045,0.0009,0.891904,0.861184,0.797696,0.817152 +4093,0.0015,0.56832,0.951296,0.83968,0.830464 +8189,0.0032,0.617472,0.992256,0.884736,0.840704 +16381,0.0066,0.772096,1.17658,0.884736,0.923648 +32765,0.0178,1.12845,1.24314,1.10592,1.1305 +65533,0.0385,1.4807,2.048,1.59027,1.51142 +131069,0.5826,2.30496,2.92557,3.03514,3.26861 +262141,1.1765,4.23424,4.03558,5.42106,4.91315 +524285,2.9831,8.18893,7.89606,7.66157,7.90016 +1048573,4.8757,15.1398,14.5848,14.4415,15.8423 +2097149,10.2129,30.6678,28.0218,27.7821,27.5855 +4194301,18.413,58.8749,55.8111,53.802,55.0738 +8388605,37.6049,113.481,109.989,105.62,107.672 +16777213,71.7638,228.425,221.847,213.186,208.085 +33554429,147.259,462.82,434.949,423.151,422.446 +67108861,294.05,927.218,892.56,850.085,844.892 +13,0.0001,0.569344,0.831488,0.817152,0.815104 +29,0.0001,0.598016,0.9728,0.698368,0.641024 +61,0.0002,0.516096,0.804864,0.754688,0.74752 +125,0.0001,0.603136,0.753664,0.6912,0.712704 +253,0.0002,0.525312,0.780288,0.825344,1.04653 +509,0.0002,0.5376,0.792576,0.89088,0.75264 +1021,0.0004,0.52224,1.32915,0.822272,0.796672 +2045,0.0009,0.643072,0.932864,0.817152,0.78848 +4093,0.003,0.658432,0.954368,0.812032,0.82944 +8189,0.0036,0.622592,1.33939,0.846848,0.656384 +16381,0.0067,0.812032,1.11206,0.904192,0.973824 +32765,0.016,0.954368,1.5616,1.13869,1.11411 +65533,0.0349,1.45203,1.69779,1.52474,1.47661 +131069,0.5828,2.57946,2.49037,3.05869,3.14061 +262141,1.1685,4.6592,4.10624,4.54349,5.2777 +524285,2.3418,8.08038,7.61446,8.06912,8.14285 +1048573,4.4649,15.1265,14.1332,14.6278,15.6232 +2097149,9.3728,29.9715,29.7882,28.5962,27.561 +4194301,18.0806,57.2303,55.3544,54.9222,53.0616 +8388605,36.3844,114.55,110.213,105.43,105.295 +16777213,74.7758,226.729,216.432,211.912,210.385 +33554429,150.42,462.283,443.094,423.929,422.527 +67108861,296.454,929.295,875.18,849.746,840.763 +13,0.0001,0.52736,0.900096,1.73568,0.886784 +29,0.0001,0.488448,0.871424,0.842752,0.82432 +61,0.0002,0.468992,0.586752,0.600064,0.562176 +125,0.0001,0.516096,0.603136,0.872448,0.571392 +253,0.0001,0.802816,0.61952,0.75264,0.57856 +509,0.0003,0.502784,0.637952,0.7424,1.05574 +1021,0.0005,0.530432,0.678912,0.792576,0.766976 +2045,0.0008,0.550912,0.859136,0.822272,0.735232 +4093,0.0016,0.786432,0.873472,0.805888,0.831488 +8189,0.0031,0.616448,1.00352,1.05574,0.883712 +16381,0.0065,0.91136,1.05779,0.877568,0.94208 +32765,0.0202,1.03117,1.84627,1.12333,1.11002 +65533,0.0364,1.40902,1.7111,1.54624,1.55034 +131069,0.5827,2.42995,2.5385,2.89178,4.01203 +262141,1.1755,4.73498,4.16256,4.41651,5.13126 +524285,2.4086,8.38349,7.98925,7.77114,8.61389 +1048573,6.0706,14.6688,15.3528,14.6371,15.2156 +2097149,8.955,30.0739,28.4836,28.1119,28.0003 +4194301,17.9014,57.8755,55.6227,54.3334,53.8819 +8388605,37.4805,114.115,110.67,106.27,105.486 +16777213,73.5183,228.94,221.346,209.037,209.325 +33554429,147.04,461.422,434.368,425.072,421.074 +67108861,294.087,931.345,893.389,847.868,846.013 +13,0.0001,0.751616,0.795648,0.917504,0.886784 +29,0.0002,0.43008,0.740352,1.22778,0.769024 +61,0.0001,0.539648,0.610304,0.777216,0.630784 +125,0.0002,0.513024,0.779264,0.759808,0.75264 +253,0.0001,0.684032,0.674816,0.772096,0.902144 +509,0.0003,0.569344,0.630784,0.488448,0.708608 +1021,0.0004,0.6912,0.913408,0.823296,0.76288 +2045,0.0009,0.540672,0.89088,0.8192,0.79872 +4093,0.0017,0.569344,0.948224,0.82944,0.838656 +8189,0.0035,0.841728,0.934912,0.73728,0.70144 +16381,0.0069,0.72192,1.0496,0.991232,1.00045 +32765,0.0154,1.18374,1.3783,1.11206,1.11002 +65533,0.0364,1.4592,1.93434,1.45306,1.51757 +131069,0.5855,2.49139,2.49446,3.10374,3.14163 +262141,1.1743,4.38989,4.51584,4.21581,5.33299 +524285,2.4222,7.87149,7.57862,7.94931,8.2985 +1048573,4.9768,14.7538,14.4374,14.7876,15.1316 +2097149,8.9551,29.0417,28.7877,28.4252,27.0766 +4194301,19.3084,58.7203,55.3288,53.0022,54.657 +8388605,41.0595,113.532,109.674,106.462,104.89 +16777213,77.2634,227.973,216.997,209.434,209.914 +33554429,145.985,460.808,440.049,423.541,420.883 +67108861,293.492,929.49,877.888,852.864,844.07 +13,0,0.699392,0.775168,0.914432,1.24006 +29,0.0001,0.49152,0.774144,0.758784,0.75264 +61,0.0001,0.694272,0.710656,0.764928,0.768 +125,0.0001,0.498688,0.769024,0.833536,0.766976 +253,0.0002,0.78336,0.86528,0.795648,0.823296 +509,0.0002,0.67072,0.871424,0.710656,0.758784 +1021,0.0008,0.68608,0.818176,0.858112,0.792576 +2045,0.0008,0.694272,0.963584,0.77824,0.718848 +4093,0.0017,0.643072,0.937984,0.831488,0.833536 +8189,0.003,1.03424,0.954368,0.88064,0.879616 +16381,0.0065,0.91648,1.10694,0.9984,0.986112 +32765,0.0151,0.949248,1.26362,1.2841,1.16736 +65533,0.0384,1.50528,1.73466,1.52678,1.54931 +131069,0.5841,2.36544,2.43917,3.06074,3.05459 +262141,1.2114,4.2967,4.13184,4.86912,4.76774 +524285,2.3896,8.69376,7.59194,7.90426,8.70912 +1048573,5.7609,14.9565,14.6473,14.5551,14.9494 +2097149,9.1526,29.5721,28.63,27.605,28.5286 +4194301,20.5879,58.1089,56.834,53.076,54.0498 +8388605,37.2052,114.801,109.651,105.907,106.785 +16777213,76.4326,226.686,220.072,211.723,211.202 +33554429,151.869,460.491,433.81,424.157,419.525 +67108861,296.938,930.984,890.211,854.324,841.826 +13,0,0.653312,0.833536,0.779264,0.755712 +29,0.0001,0.685056,0.812032,0.776192,0.83968 +61,0.0002,0.551936,0.81408,0.692224,0.649216 +125,0.0001,0.792576,0.766976,0.730112,0.871424 +253,0.0002,0.676864,0.771072,0.907264,0.730112 +509,0.0003,0.531456,0.792576,0.764928,0.712704 +1021,0.0004,0.543744,0.815104,0.8192,0.763904 +2045,0.0009,0.5376,0.904192,0.822272,0.790528 +4093,0.0016,0.56832,0.871424,0.800768,0.806912 +8189,0.003,0.971776,1.07622,0.910336,0.950272 +16381,0.014,0.940032,1.11718,1.0025,0.968704 +32765,0.0152,1.11923,1.25747,1.11309,1.13357 +65533,0.0358,1.34861,1.69062,1.96608,1.51142 +131069,0.6336,2.28454,3.00339,2.69005,3.56045 +262141,2.1274,4.33459,4.04378,5.10874,4.96947 +524285,2.4086,7.77011,7.53664,8.26266,8.06502 +1048573,4.4342,14.7834,14.6688,15.1316,15.1767 +2097149,10.0017,29.0898,28.7468,28.5911,28.3156 +4194301,18.1063,58.453,55.253,53.5378,53.0432 +8388605,37.7393,113.434,109.784,105.497,103.871 +16777213,72.0313,229.883,217.574,210.73,209.86 +33554429,149.236,461.593,442.998,421.631,420.618 +67108861,291.754,928.529,879.638,853.861,840.729 +13,0.0001,0.759808,0.869376,0.913408,0.887808 +29,0.0001,0.490496,0.9728,0.941056,0.868352 +61,0.0001,0.50176,0.781312,0.55296,0.766976 +125,0.0001,0.503808,0.621568,0.606208,0.592896 +253,0.0001,0.55296,1.53805,0.804864,0.735232 +509,0.0003,0.526336,0.864256,0.789504,0.768 +1021,0.0005,0.55808,1.29434,0.800768,0.781312 +2045,0.0009,0.579584,0.876544,0.807936,1.64659 +4093,0.0015,0.83456,1.40493,0.79872,0.9984 +8189,0.0032,0.795648,1.08032,0.833536,0.832512 +16381,0.0068,0.785408,1.0793,0.94208,0.950272 +32765,0.0163,1.04038,1.21242,1.1561,1.46842 +65533,0.0382,2.31117,1.70496,1.44794,1.51757 +131069,0.6076,2.40845,2.65011,2.69722,4.3991 +262141,1.4863,4.38374,4.64896,4.3776,5.02272 +524285,2.3433,7.67898,8.96614,7.49363,8.4009 +1048573,4.4488,15.0651,15.5535,14.1056,14.7354 +2097149,10.682,29.3898,28.4058,28.8246,28.2255 +4194301,17.9576,58.6025,56.0466,53.9546,53.7774 +8388605,39.551,114.227,108.193,105.818,105.915 +16777213,74.1022,228.031,221.565,210.546,210.361 +33554429,145.083,462.332,433.627,424.119,423.246 +67108861,292.268,928.171,893.919,850.029,840.258 +13,0.0001,0.765952,0.871424,0.955392,0.85504 +29,0.0001,0.468992,0.818176,0.905216,1.2759 +61,0.0001,0.502784,0.836608,0.776192,0.741376 +125,0.0001,0.674816,0.864256,0.76288,0.736256 +253,0.0001,1.26874,0.73728,0.75776,0.728064 +509,0.0003,0.502784,0.83456,0.777216,0.81408 +1021,0.0005,0.731136,0.760832,0.821248,0.806912 +2045,0.0009,0.688128,0.892928,0.786432,2.11558 +4093,0.0017,0.567296,0.927744,0.833536,0.877568 +8189,0.0031,0.805888,1.50835,0.884736,0.88064 +16381,0.0285,0.896,1.08134,0.908288,0.927744 +32765,0.0162,1.08032,1.18989,1.09773,1.36192 +65533,0.0374,1.36806,1.69472,1.50426,1.52064 +131069,0.6024,2.34086,2.54771,2.52416,3.06381 +262141,1.1694,4.23424,4.00486,4.72166,4.95923 +524285,2.4355,7.51309,7.47315,7.60525,8.21862 +1048573,4.7188,15.2648,14.4251,14.6616,14.9955 +2097149,9.2914,29.4881,28.9034,27.2916,27.8876 +4194301,20.8158,56.8556,55.4004,53.7774,54.017 +8388605,40.5205,113.402,110.047,105.868,106.061 +16777213,77.97,228.608,217.192,211.915,210.685 +33554429,148.139,463.451,442.158,423.128,420.303 +67108861,297.447,928.133,879.18,849.39,841.351 +13,0.0001,0.69632,0.961536,0.935936,0.8704 +29,0,0.70656,1.11514,1.06803,0.882688 +61,0.0001,0.513024,0.894976,0.89088,0.7168 +125,0.0002,0.499712,0.816128,0.743424,0.794624 +253,0.0002,0.577536,0.780288,0.75776,0.714752 +509,0.0003,0.538624,0.800768,0.754688,0.72192 +1021,0.0004,0.523264,0.6912,0.891904,0.879616 +2045,0.0008,0.749568,0.9216,1.23494,0.76288 +4093,0.0016,0.73728,0.935936,1.26464,0.806912 +8189,0.0033,0.674816,1.27283,0.847872,0.811008 +16381,0.0064,0.779264,1.08442,0.945152,0.892928 +32765,0.0155,1.30867,1.27898,1.15302,1.15814 +65533,0.0379,1.90362,1.60666,1.48173,1.4377 +131069,0.5856,2.24768,2.79654,2.48934,4.18611 +262141,1.1732,4.26496,4.22707,4.45542,5.27565 +524285,2.2316,7.93395,7.7609,8.03123,8.59546 +1048573,5.161,14.9473,15.2054,14.5121,14.9535 +2097149,10.2822,29.9704,28.3689,28.1088,27.6756 +4194301,19.0671,56.9836,56.0271,53.8061,52.4861 +8388605,36.2371,113.179,111.054,105.869,104.661 +16777213,73.5004,228.613,221.42,210.52,210.464 +33554429,147.422,461.392,434.051,420.702,418.691 +67108861,297.479,929.435,892.785,850.727,846.219 +13,0.0001,0.627712,0.898048,0.909312,0.866304 +29,0.0001,0.959488,0.702464,0.873472,0.902144 +61,0.0001,0.72192,1.08339,0.678912,0.873472 +125,0.0001,0.590848,0.715776,0.775168,0.662528 +253,0.0002,0.524288,0.75776,0.937984,0.687072 +509,0.0003,0.64512,0.748544,0.765952,0.741376 +1021,0.0004,0.62464,0.663552,0.765952,0.79872 +2045,0.0008,0.713728,0.896,0.811008,0.801792 +4093,0.0016,0.741376,1.19808,0.800768,0.779264 +8189,0.0031,0.65024,0.826368,0.898048,1.00454 +16381,0.0067,0.749568,1.75206,0.830464,0.935936 +32765,0.016,1.12435,1.26464,1.11616,1.28205 +65533,0.0375,1.6128,1.72544,1.5319,1.55443 +131069,0.5853,2.40538,2.56717,2.6921,3.11296 +262141,2.1083,4.28954,4.11034,4.98893,4.66739 +524285,2.3417,7.66157,7.6544,8.03942,8.00051 +1048573,4.5224,14.8572,14.4241,15.2474,15.1695 +2097149,8.9966,29.8701,29.2485,27.8405,28.4109 +4194301,18.1473,58.0977,55.339,53.9976,53.8573 +8388605,39.1526,114.253,110.482,107.149,105.735 +16777213,72.8389,229.012,217.37,213.016,210.917 +33554429,153.168,460.017,443.329,423.164,422.288 +67108861,301.462,931.065,878.429,851.662,842.564 +13,0.0001,0.5888,0.766976,0.96768,0.77312 +29,0.0002,0.750592,0.884736,0.908288,0.883712 +61,0.0001,0.627712,0.799744,0.90112,0.755712 +125,0.0001,0.518144,0.723968,0.736256,0.708608 +253,0.0002,0.674816,0.954368,0.790528,0.734208 +509,0.0002,0.657408,0.807936,0.760832,0.768 +1021,0.0004,0.526336,0.850944,1.08646,0.795648 +2045,0.0009,0.785408,0.914432,0.763904,0.980992 +4093,0.0016,0.84992,0.939008,0.841728,0.764928 +8189,0.0031,1.46432,0.950272,0.835584,1.00352 +16381,0.0064,0.90624,1.05677,1.01376,0.950272 +32765,0.0154,0.954368,1.28307,1.17453,1.16941 +65533,0.0381,1.57901,1.87597,1.66093,1.52371 +131069,0.5847,2.36749,2.57638,2.65011,3.07712 +262141,1.1751,4.34688,4.45542,4.56192,5.0729 +524285,2.3429,7.65747,7.52435,7.63392,8.45722 +1048573,4.6835,14.8091,14.4845,15.0446,15.66 +2097149,9.0455,29.5772,28.5768,27.7371,27.5026 +4194301,17.9116,57.9441,56.4818,53.5501,53.5921 +8388605,35.9844,113.549,110.186,106.899,107.296 +16777213,72.1011,229.464,221.373,211.923,209.711 +33554429,148.519,461.668,432.344,424.321,420.933 +67108861,290.084,932.681,890.471,853.352,844.678 +13,0,0.620544,0.702464,0.840704,0.813056 +29,0,1.536,0.859136,0.832512,0.705536 +61,0.0001,0.67584,0.820224,0.73216,0.953344 +125,0.0002,0.652288,0.741376,0.731136,0.726016 +253,0.0002,0.649216,0.760832,0.746496,0.77312 +509,0.0002,0.5632,0.750592,0.68096,0.759808 +1021,0.0004,0.524288,0.856064,0.837632,0.75776 +2045,0.0008,0.7424,0.726016,0.766976,0.985088 +4093,0.0038,0.781312,0.919552,0.802816,0.812032 +8189,0.003,0.656384,1.0752,0.830464,0.77312 +16381,0.0064,1.08749,1.0711,1.05267,1.0025 +32765,0.0148,1.03322,1.31277,1.40493,1.29638 +65533,0.0538,1.89747,1.8473,1.52166,1.46227 +131069,0.5858,2.70234,2.42381,2.78118,3.00237 +262141,1.1735,4.5312,4.18816,4.44723,4.8128 +524285,2.341,7.89606,7.69946,7.96058,8.6825 +1048573,4.5781,15.0221,14.0687,14.5234,14.9699 +2097149,8.9992,29.0847,29.4922,27.2108,28.2696 +4194301,19.8852,57.3481,55.1782,54.9437,53.2367 +8388605,36.3374,115.212,110.107,105.657,106.777 +16777213,75.3591,229.339,215.78,210.878,209.505 +33554429,149.317,461.227,442.198,423.879,421.308 +67108861,296.37,928.124,881.337,851.592,841.389 +13,0,0.601056,0.723968,0.920576,0.787456 +29,0.0001,0.495616,0.72704,0.726016,1.46432 +61,0.0001,0.582656,0.712704,0.786432,0.730112 +125,0.0001,0.545792,0.763904,0.766976,1.47354 +253,0.0002,0.562176,0.809984,0.914432,0.801792 +509,0.0002,0.657408,0.67072,0.78336,0.70144 +1021,0.0004,0.616448,0.699392,0.82432,0.807936 +2045,0.0009,0.536576,0.894976,0.854016,0.806912 +4093,0.0016,0.58368,0.93696,0.848896,0.831488 +8189,0.0032,0.662528,0.933888,0.864256,0.784384 +16381,0.0067,0.746496,1.04858,1.16326,0.954368 +32765,0.0171,1.16838,1.46534,1.11411,1.05267 +65533,0.0362,1.57286,1.68141,1.73978,1.61997 +131069,0.5859,2.34496,2.46682,3.04435,2.76992 +262141,1.2788,4.19226,4.20352,4.49024,5.06982 +524285,2.343,7.54995,7.9913,8.02918,8.25446 +1048573,4.7954,14.5551,15.0405,14.5111,14.4486 +2097149,9.7326,28.887,29.0642,27.5948,27.35 +4194301,19.1181,56.4449,56.961,53.502,54.3171 +8388605,39.5526,113.699,110.626,106.63,106.171 +16777213,81.5076,228.503,221.406,211.15,210.016 +33554429,144.856,461.795,434.377,422.618,421.1 +67108861,294.702,927.491,892.793,841.29,844.946 +13,0,0.5376,0.863232,0.772096,0.806912 +29,0.0001,0.612352,0.743424,0.801792,0.771072 +61,0.0001,0.495616,0.703488,0.93696,0.579584 +125,0.0002,0.556032,1.0025,0.768,0.745472 +253,0.0001,0.776192,1.59232,0.92672,0.823296 +509,0.0005,0.526336,0.724992,0.776192,1.06394 +1021,0.0005,0.555008,0.759808,0.72704,0.690176 +2045,0.0015,0.57744,0.848896,0.8192,0.81408 +4093,0.0017,0.570368,0.94208,0.796672,0.996352 +8189,0.004,0.611328,1.06598,0.817152,0.811008 +16381,0.0072,0.744448,1.1008,1.10182,0.978944 +32765,0.0167,1.2073,1.42029,1.17248,1.13459 +65533,0.038,1.58208,1.664,1.60973,1.62509 +131069,0.585,2.29274,2.7433,2.60198,3.40275 +262141,1.1742,4.24755,4.9193,4.18509,4.92954 +524285,2.3428,7.73939,7.40861,7.60627,8.42138 +1048573,4.683,15.1316,14.5388,14.9996,14.5162 +2097149,9.7541,29.782,28.7345,28.6106,27.8958 +4194301,19.8491,57.346,55.7599,53.5071,54.6519 +8388605,39.2976,114.382,109.596,107.076,105.141 +16777213,74.0813,227.707,218.213,210.762,210.025 +33554429,144.474,460.469,441.823,423.779,421.966 +67108861,293.093,933.366,879.23,853.139,842.764 +13,0.0001,0.608256,0.712704,0.759808,0.949248 +29,0,0.600064,0.67072,0.77312,0.82432 +61,0.0001,0.661504,0.807936,0.733184,0.666624 +125,0.0001,0.509952,0.91648,0.744448,0.730112 +253,0.0134,0.605184,1.72749,0.75264,0.73728 +509,0.0002,0.52736,0.832512,0.751616,0.7424 +1021,0.0004,0.567296,0.823296,0.820224,0.708608 +2045,0.0008,0.530432,0.825344,0.760832,0.806912 +4093,0.0017,0.571392,0.903168,0.809984,0.832512 +8189,0.0031,0.618496,0.992256,1.01478,0.821248 +16381,0.0064,0.944128,1.07008,0.93696,0.877568 +32765,0.0152,1.15814,1.26566,1.04858,1.02502 +65533,0.0371,1.61075,1.72954,1.51347,1.46739 +131069,0.5853,2.44224,2.97779,2.47808,3.712 +262141,1.3689,4.10522,4.22707,4.41549,4.84352 +524285,3.3248,7.7824,7.57862,7.70458,8.44698 +1048573,5.7154,15.7215,14.6483,14.3913,14.4261 +2097149,9.6264,29.8639,28.5635,27.5261,27.5272 +4194301,20.7656,57.9994,56.4326,53.931,53.5398 +8388605,35.8346,115.77,109.693,106.702,106.671 +16777213,76.4517,227.845,220.661,212.43,210.254 +33554429,156.82,460.719,434.512,423.589,420.636 +67108861,295.967,928.693,893.033,850.981,844.804 +13,0.0001,0.4608,0.8192,0.714752,0.67072 +29,0.0001,0.559104,0.615424,0.690176,0.666624 +61,0.0001,0.528384,0.796672,0.749568,0.676864 +125,0.0001,0.749568,0.820224,0.774144,0.763904 +253,0.0002,0.60416,0.6912,0.744448,0.692224 +509,0.0003,0.579584,0.751616,0.776192,0.763904 +1021,0.0005,0.705536,0.818176,0.836608,0.746496 +2045,0.0008,0.545792,0.90624,0.77312,1.36806 +4093,0.0016,0.763904,0.934912,0.823296,0.904192 +8189,0.0031,0.61952,1.11104,0.950272,1.04141 +16381,0.0066,0.751616,1.07622,1.1264,0.951296 +32765,0.0152,1.45818,1.34861,1.3353,1.21037 +65533,0.0357,1.42131,1.73158,1.59027,1.54522 +131069,0.5866,2.32141,2.54874,2.65523,3.08736 +262141,1.3177,4.26701,4.05606,4.31514,4.83328 +524285,2.3803,7.71072,8.11725,8.26573,8.49818 +1048573,4.7578,15.5064,14.8234,14.6319,14.3708 +2097149,9.3227,29.738,29.5752,27.7955,27.903 +4194301,17.9135,58.0577,56.5709,53.2777,53.2521 +8388605,35.8754,113.788,110.323,104.891,104.8 +16777213,79.9902,227.26,217.662,212.389,210.491 +33554429,149.628,462.174,441.535,423.357,421.385 +67108861,295.898,929.168,879.397,848.54,847.14 +13,0.0001,0.5888,0.699392,0.692224,0.715776 +29,0.0001,0.519168,0.744448,0.771072,0.669696 +61,0.0002,0.52736,0.5888,0.654336,0.562176 +125,0.0001,0.55808,0.768,0.570368,0.613376 +253,0.0001,0.523264,0.626688,0.560128,0.5376 +509,0.0003,0.525312,0.598016,0.565248,0.529408 +1021,0.0004,0.564224,0.923648,0.8704,0.688128 +2045,0.0008,0.605184,0.900096,0.790528,0.669696 +4093,0.0016,1.09978,1.23904,0.841728,0.794624 +8189,0.003,0.618496,1.02605,0.8448,0.871424 +16381,0.0064,0.945152,1.2247,0.918528,0.994304 +32765,0.0151,1.10182,1.27386,1.14893,1.21242 +65533,0.0365,1.54931,1.73158,1.52474,1.62406 +131069,0.6044,2.29171,2.5303,2.64806,3.16928 +262141,1.234,4.49434,4.04787,4.73498,5.3289 +524285,2.8015,8.00768,7.95238,7.97901,8.57395 +1048573,4.5889,15.1972,14.678,14.3503,15.2259 +2097149,9.5066,29.2024,28.5686,27.137,28.6812 +4194301,19.6677,57.5631,56.2555,54.2095,53.3053 +8388605,39.9189,114.145,109.257,105.918,104.878 +16777213,74.0299,228.308,221.842,210.223,210.339 +33554429,147.629,460.887,435.652,424.081,420.457 +67108861,290.719,933.396,892.83,851.127,843.655 +13,0,0.638976,0.754688,0.766976,0.787456 +29,0.0001,0.68096,0.838656,0.828416,0.671744 +61,0.0001,0.73216,0.80384,0.792576,0.801792 +125,0.0003,0.500736,0.817152,0.739328,0.685056 +253,0.0001,0.528384,0.780288,0.708608,0.672768 +509,0.0003,1.06701,0.722944,0.6912,0.65536 +1021,0.0004,0.55296,1.01069,0.823296,0.805888 +2045,0.0008,0.779264,0.83968,0.761856,0.70144 +4093,0.002,0.74752,0.879616,0.979968,0.835584 +8189,0.0034,0.618496,0.9728,0.884736,0.82944 +16381,0.0067,0.749568,1.10592,1.11923,0.976896 +32765,0.0159,0.954368,1.25747,1.21037,1.152 +65533,0.0379,1.35782,1.72442,1.65376,1.50835 +131069,0.6554,2.3337,2.9737,2.95834,3.34131 +262141,1.2969,4.36122,4.36019,4.69504,4.76467 +524285,2.3554,7.7609,7.48544,7.04922,8.0128 +1048573,4.685,14.8296,14.9391,14.1629,14.6719 +2097149,10.4502,29.4052,28.9004,27.008,27.2138 +4194301,17.9514,57.3911,55.3103,53.9228,54.2136 +8388605,36.5196,113.168,110.201,106.865,105.036 +16777213,71.8953,226.294,216.78,211.523,212.424 +33554429,148.084,460.091,442.08,423.313,421.217 +67108861,297.5,921.294,877.513,841.837,845.645 +13,0.0001,0.530432,0.850944,0.774144,0.681984 +29,0.0001,0.482304,0.801792,0.689152,0.695296 +61,0.0002,0.580608,0.771072,0.787456,0.744448 +125,0.0001,0.596992,0.856064,0.846848,0.753664 +253,0.0001,0.474112,0.804864,0.817152,0.780288 +509,0.0004,0.615424,0.816128,0.753664,0.743424 +1021,0.0004,0.627712,1.11514,0.847872,0.796672 +2045,0.0009,0.6912,0.873472,0.78848,0.724992 +4093,0.0016,0.559104,0.933888,0.83456,0.761856 +8189,0.0032,0.636928,0.976896,0.841728,0.83968 +16381,0.0067,0.758784,1.09056,0.963584,1.03834 +32765,0.0171,1.15507,1.24518,1.18272,1.11309 +65533,0.0371,1.35066,1.75104,1.59642,1.61075 +131069,0.5854,2.37158,2.78016,2.72691,3.39046 +262141,1.201,4.28646,4.25677,4.3991,4.89165 +524285,2.3541,7.74451,7.51411,7.89504,8.56166 +1048573,4.4371,14.8961,15.0313,14.4916,14.6596 +2097149,9.3386,29.4717,28.5696,27.862,27.8559 +4194301,18.5089,57.598,56.8156,53.6146,53.6627 +8388605,39.6058,113.566,109.519,106.017,106.406 +16777213,72.1384,230.657,221.729,211.458,208.952 +33554429,148.544,461.841,433.121,425.287,421.319 +67108861,308.089,930.211,893.339,851.273,843.586 +13,0.0001,0.72704,0.887808,0.868352,0.946176 +29,0.0003,0.493568,0.876544,0.889856,0.854016 +61,0.0001,0.717824,0.78336,0.7424,0.806912 +125,0.0002,0.5376,0.786432,0.812032,1.08339 +253,0.0002,0.513024,0.77312,0.786432,0.709632 +509,0.0002,0.666624,0.746496,0.720896,0.760832 +1021,0.0004,0.550912,1.05165,0.800768,0.772096 +2045,0.0009,0.58368,0.859136,0.764928,0.769024 +4093,0.0157,0.590848,0.864256,0.802816,0.801792 +8189,0.0031,0.657408,0.970752,0.845824,0.82944 +16381,0.0066,0.91648,1.0281,1.19603,0.933888 +32765,0.0159,1.06803,1.20832,1.08646,1.10899 +65533,0.0944,1.44486,1.72339,1.53395,1.55238 +131069,0.5863,2.39104,2.47501,2.67469,3.1959 +262141,1.1987,4.26291,4.096,4.70733,4.92851 +524285,2.3418,7.90323,7.41376,7.66464,8.07936 +1048573,4.7747,15.2136,14.3247,14.8859,14.8767 +2097149,9.7421,28.9751,28.7386,27.0664,27.3316 +4194301,18.0347,57.2303,55.8182,53.1937,53.7917 +8388605,36.2298,113.199,110.291,106.318,105.069 +16777213,71.5764,224.713,218.029,212.228,209.653 +33554429,148.534,460.772,443.327,423.589,420.413 +67108861,291.081,931.974,878.444,849.323,843.08 +13,0.0001,0.546816,0.905216,1.38138,0.898048 +29,0.0001,0.590848,0.728064,0.78848,0.830464 +61,0.0135,0.502784,0.812032,0.714752,0.656384 +125,0.0001,0.626688,0.71168,0.710656,0.656384 +253,0.0001,0.509952,0.784384,1.00966,0.755712 +509,0.0003,0.541696,0.813056,0.753664,0.731136 +1021,0.0004,0.567296,0.797696,1.19398,0.771072 +2045,0.0012,0.581632,0.918528,0.800768,0.831488 +4093,0.0016,0.78336,0.912384,1.01786,0.65024 +8189,0.0033,0.61952,0.950272,0.8704,0.796672 +16381,0.0067,0.75264,1.08032,1.32403,0.927744 +32765,0.0154,0.975872,1.30765,1.34861,1.14483 +65533,0.0372,1.45203,1.73466,1.8985,1.68653 +131069,0.729,2.26202,2.83546,2.59174,3.16723 +262141,1.236,4.59571,4.25472,4.61517,4.94899 +524285,2.3541,7.71584,7.49363,7.89197,8.19507 +1048573,4.6844,14.6749,14.7784,14.6207,14.6258 +2097149,9.7215,29.0488,28.4549,28.0166,28.544 +4194301,19.2908,57.5867,56.2575,53.6054,54.0754 +8388605,38.558,113.486,110.504,107.556,105.26 +16777213,80.2491,230.087,222.63,210.9,209.385 +33554429,144.782,461.591,431.764,423.64,424.816 +67108861,293.889,931.851,886.898,852.086,840.676 +13,0.0001,0.605184,0.720896,0.784384,0.713728 +29,0.0001,0.497664,0.770048,0.65024,0.648192 +61,0.0001,0.57856,0.613376,0.60416,0.559104 +125,0.0001,0.48128,0.75776,0.918528,0.565248 +253,0.0002,0.490496,0.731136,0.95232,0.702464 +509,0.0002,0.525312,0.90624,0.857088,0.736256 +1021,0.0004,0.681984,0.891904,0.70144,0.843776 +2045,0.0018,0.694272,0.84992,0.750592,0.724992 +4093,0.0017,0.843776,0.884736,0.930816,0.881664 +8189,0.0032,0.611328,0.990208,0.961536,0.861184 +16381,0.0065,0.753664,1.07213,0.98304,0.932864 +32765,0.0151,1.03117,1.5063,1.408,1.14995 +65533,0.0363,1.46125,2.05517,1.49914,1.73568 +131069,0.5844,2.23437,2.48832,3.24198,3.13242 +262141,1.1694,4.66227,4.28032,4.49126,5.38624 +524285,2.3527,8.01075,7.64621,8.3712,8.98765 +1048573,4.4724,16.4076,14.6156,14.9473,14.7855 +2097149,9.3486,29.1635,29.5608,27.2599,27.5855 +4194301,20.3463,57.9318,55.3769,54.2341,55.2366 +8388605,36.1112,115.506,110.538,105.839,107.171 +16777213,75.1612,228.209,214.648,210.527,210.387 +33554429,147.738,461.287,441.921,423.676,419.732 +67108861,298.65,930.514,880.889,849.331,842.035 +13,0.0001,0.492544,0.7936,0.832512,0.795648 +29,0.0001,0.484352,1.07315,0.8448,0.765952 +61,0.0001,0.565248,0.843776,0.754688,0.763904 +125,0.0001,0.529408,0.695296,0.780288,0.736256 +253,0.0001,0.47104,0.785408,0.774144,0.67584 +509,0.0005,0.618496,0.826368,0.785408,0.677888 +1021,0.0004,0.559104,0.797696,0.784384,1.14688 +2045,0.0008,0.671744,0.836608,0.805888,0.779264 +4093,0.0016,0.594944,0.755712,0.817152,0.913408 +8189,0.0033,0.707584,1.04755,0.857088,0.84992 +16381,0.0066,0.774144,1.45408,0.955392,1.05165 +32765,0.0157,0.976896,1.18067,1.13152,1.51654 +65533,0.0383,1.44794,1.66502,1.4633,1.42541 +131069,0.5828,2.79654,2.43917,2.91123,3.01261 +262141,1.1842,4.46566,4.02842,4.56294,4.92134 +524285,2.4861,8.31283,7.50285,7.60422,9.01427 +1048573,4.7651,15.1409,14.9002,14.4855,15.2955 +2097149,10.1952,29.0662,28.3126,27.3111,28.3525 +4194301,18.3179,57.8621,56.3487,54.5618,52.8978 +8388605,35.8175,113.9,110.595,105.701,105.79 +16777213,72.336,227.205,222.494,210.235,209.588 +33554429,155.647,461.251,433.995,423.246,420.374 +67108861,290.303,925.665,889.311,846.935,844.282 +13,0.0001,0.613376,0.78848,0.709632,0.67584 +29,0.0001,0.603136,0.741376,0.832512,0.613376 +61,0.0001,0.580608,0.584704,0.746496,0.567296 +125,0.0001,0.499712,0.782336,0.792576,0.771072 +253,0.0002,0.51712,0.786432,0.804864,0.746496 +509,0.0002,0.548864,0.822272,0.75776,0.671744 +1021,0.0005,0.606208,0.755712,0.777216,0.76288 +2045,0.0008,0.618496,0.899072,0.990208,0.804864 +4093,0.0016,1.02195,0.830464,0.785408,0.779264 +8189,0.0031,0.944128,0.960512,0.910336,0.882688 +16381,0.0064,0.939008,1.0455,1.00147,1.08134 +32765,0.0154,1.04346,1.21242,1.17555,1.50221 +65533,0.0371,1.53395,1.60358,1.52269,1.92102 +131069,0.5831,2.40538,2.70541,2.67674,3.20307 +262141,1.7021,4.44314,4.02022,4.44723,5.25824 +524285,2.9607,7.92474,7.58272,7.73018,9.38598 +1048573,4.8531,15.3754,15.0897,14.5961,14.3677 +2097149,9.6309,30.337,28.7242,27.6623,27.6234 +4194301,18.8584,56.5361,55.6421,54.2597,53.9146 +8388605,36.4887,113.781,110.431,105.217,106.473 +16777213,78.4624,228.768,215.533,211.797,212.723 +33554429,149.304,462.147,442.348,424.373,420.846 +67108861,302.975,926.898,880.501,847.683,845.991 +13,0.0001,0.75776,0.858112,1.16838,0.694272 +29,0.0001,0.480256,0.86016,0.703488,0.663552 +61,0.0001,0.526336,0.63488,0.758784,0.775168 +125,0.0001,0.75264,0.817152,0.817152,0.760832 +253,0.0001,0.62976,0.81408,0.74752,0.970752 +509,0.0003,0.672768,0.871424,0.746496,0.726016 +1021,0.0005,0.648192,0.796672,1.17965,0.678912 +2045,0.0009,0.804864,0.896,0.781312,0.811008 +4093,0.0016,0.9472,0.887808,0.836608,0.918528 +8189,0.0031,0.621568,1.07008,0.887808,0.884736 +16381,0.0068,0.769024,2.14221,1.00557,0.976896 +32765,0.0156,0.989184,1.29536,1.15405,1.12742 +65533,0.0357,1.45818,2.01318,1.52064,1.68243 +131069,0.5993,2.54669,3.30342,2.6583,3.13651 +262141,1.1747,4.28032,4.87117,4.68787,4.91418 +524285,2.3524,8.0384,7.44243,7.88787,8.00051 +1048573,4.6837,15.0518,14.9985,14.4691,15.3139 +2097149,9.4821,29.1932,28.6904,27.2394,29.0591 +4194301,20.8261,56.7542,56.7316,54.654,53.4508 +8388605,41.1921,114.476,110.552,105.175,105.836 +16777213,74.7777,230.715,220.395,210.221,210.614 +33554429,147.754,460.151,432.185,424.374,421.189 +67108861,295.741,929.467,889.246,850.18,846.448 +13,0,0.617472,0.813056,0.781312,1.14586 +29,0.0001,0.48128,1.6087,0.78336,0.77824 +61,0.0001,0.489472,0.997376,0.790528,0.71168 +125,0.0001,0.51712,0.8448,0.70656,0.69632 +253,0.0001,0.4864,0.820224,0.787456,0.751616 +509,0.0003,0.497664,0.761856,0.823296,0.683008 +1021,0.0004,0.515072,0.710656,0.792576,0.66048 +2045,0.0009,0.82432,0.8704,0.782336,0.909312 +4093,0.0016,0.702464,0.871424,0.861184,0.79872 +8189,0.0033,0.618496,0.941056,0.835584,0.872448 +16381,0.0065,0.751616,1.08851,1.45408,0.974848 +32765,0.0159,1.04858,1.2503,1.44896,1.10694 +65533,0.0376,1.41619,1.7408,1.49709,1.51757 +131069,0.5838,2.4791,2.41869,2.83546,3.10989 +262141,1.287,4.44518,4.0233,4.45331,4.87014 +524285,2.3411,7.76499,7.63699,7.91962,8.3159 +1048573,5.45,14.8675,14.7067,14.3503,15.3375 +2097149,10.0695,28.0392,28.4948,27.4278,29.0355 +4194301,20.9508,57.2611,56.2381,54.7686,54.4942 +8388605,36.2498,113.502,109.942,105.105,105.635 +16777213,71.7629,227.753,216.605,212.103,209.91 +33554429,147.93,463.653,439.56,424.476,421.23 +67108861,298.341,931.74,875.72,851.184,842.541 +13,0.0001,0.786432,0.854016,0.739328,0.836608 +29,0.0001,0.556032,0.687104,0.717824,0.80384 +61,0.0001,0.55296,0.678912,0.754688,0.750592 +125,0.0001,0.521216,0.75776,0.697344,0.643072 +253,0.0002,0.52224,0.786432,2.39411,0.804864 +509,0.0003,0.489472,0.771072,0.714752,0.827392 +1021,0.0004,0.695296,0.789504,0.831488,0.7424 +2045,0.0008,0.60416,0.864256,0.72704,0.8192 +4093,0.0017,0.765952,0.862208,0.794624,0.811008 +8189,0.0032,0.772096,0.966656,0.847872,0.7936 +16381,0.0066,0.956416,1.00966,0.879616,0.914432 +32765,0.0157,1.0711,1.24314,1.3568,1.07315 +65533,0.0381,1.58925,1.66912,1.536,1.49504 +131069,0.6014,2.28864,3.00544,2.59072,3.34643 +262141,1.1683,4.28134,4.41549,4.48717,4.84762 +524285,2.3418,7.7353,7.82029,8.05786,8.13875 +1048573,4.9364,14.6606,14.7569,14.4783,14.2469 +2097149,9.445,30.1732,29.2669,26.7305,27.862 +4194301,18.1255,57.7987,56.6743,52.951,53.5429 +8388605,35.9297,112.744,110.682,105.742,106.124 +16777213,81.5121,228.995,220.972,210.861,209.392 +33554429,149.616,462.95,434.005,422.829,420.48 +67108861,300.974,928.804,892.998,851.679,841.922 +13,0.0001,0.724992,0.858112,0.93184,0.902144 +29,0.0003,0.657408,0.846848,0.877568,0.958464 +61,0.0004,0.50688,0.809984,0.771072,0.7424 +125,0.0001,0.715776,0.719872,0.736256,0.70144 +253,0.0001,0.677888,0.768,0.69632,1.01581 +509,0.0004,0.654336,0.76288,0.804864,0.756736 +1021,0.0004,0.618496,0.787456,0.703488,0.724992 +2045,0.0008,0.543744,0.910336,0.77312,0.80896 +4093,0.0016,0.560128,0.940032,0.799744,0.755712 +8189,0.0056,0.612352,0.91136,0.994304,0.813056 +16381,0.0283,0.746496,1.08134,1.00147,0.979968 +32765,0.0151,1.0281,1.42336,1.12845,1.1479 +65533,0.0529,1.4633,2.2231,1.33837,1.29024 +131069,0.5842,2.29888,2.53542,2.70541,3.13446 +262141,1.1742,4.25677,4.46874,4.61722,4.92134 +524285,2.3562,7.68102,7.41581,7.74554,7.99539 +1048573,4.6428,15.23,14.292,14.4241,15.4122 +2097149,9.6454,29.822,29.2465,27.8917,28.1149 +4194301,20.2356,57.3972,56.1879,53.675,53.3391 +8388605,37.2712,113.195,109.654,106.362,106.385 +16777213,79.8008,229.775,219.009,210.235,212.245 +33554429,146.262,461.073,440.389,423.256,420.022 +67108861,295.211,927.636,878.867,851.744,841.994 +13,0.0002,0.555008,0.744448,0.743424,0.764928 +29,0.0001,0.550912,0.641024,0.722944,0.748544 +61,0.0003,0.505856,0.8704,0.690176,0.713728 +125,0.0001,0.504832,0.611328,0.6144,0.564224 +253,0.0002,0.507904,0.635904,0.7936,0.833536 +509,0.0007,0.56832,0.806912,0.707584,0.658432 +1021,0.0004,0.941056,0.755712,0.766976,0.76288 +2045,0.0008,0.688128,0.809984,0.75264,0.733184 +4093,0.0016,0.669696,1.39469,0.809984,0.823296 +8189,0.0031,0.6144,0.997376,0.866304,0.873472 +16381,0.0066,0.800768,1.34861,1.00352,0.969728 +32765,0.0156,1.03424,1.46432,1.17862,1.14381 +65533,0.0371,1.49094,1.90771,1.52576,1.65478 +131069,0.5852,2.30502,2.44838,2.77606,3.14368 +262141,1.176,4.63667,4.49126,4.67968,4.87834 +524285,2.3529,7.95341,7.41478,7.63085,8.09062 +1048573,4.4345,15.5576,14.805,13.9971,14.9647 +2097149,9.6957,29.7216,28.7918,27.351,29.2526 +4194301,21.7059,57.2713,57.8273,53.932,53.4149 +8388605,36.5182,113.667,111.084,104.837,105.715 +16777213,74.5887,228.229,219.927,211.734,209.811 +33554429,154.622,459.409,435.006,427.95,420.452 +67108861,299.172,927.395,891.772,851.699,841.786 +13,0.0001,0.42496,0.771072,0.892928,1.13869 +29,0.0001,0.805888,0.881664,0.934912,0.919552 +61,0.0001,0.499712,0.941056,0.782336,0.86016 +125,0.0002,0.498688,0.764928,0.78336,0.722944 +253,0.0002,0.608256,1.06701,0.776192,0.739328 +509,0.0003,0.498688,0.888832,0.799744,0.754688 +1021,0.0005,0.530432,0.815104,0.795648,0.751616 +2045,0.0008,0.673792,0.893952,0.823296,1.05267 +4093,0.0017,0.574464,0.874496,0.693248,0.776192 +8189,0.0032,0.806912,0.954368,0.842752,0.813056 +16381,0.0062,0.760832,1.07725,1.02912,0.9728 +32765,0.0156,1.02707,1.31174,1.06906,1.1008 +65533,0.0366,1.44384,1.82784,1.55341,1.54419 +131069,0.5848,2.31322,2.52621,2.71872,3.1191 +262141,1.1886,4.99405,4.04378,4.77901,5.16198 +524285,2.3525,7.66259,7.57453,7.76909,8.95283 +1048573,4.6849,15.02,14.6094,14.0339,14.5019 +2097149,9.2048,29.3868,29.1,27.1647,28.417 +4194301,20.9803,58.709,54.7901,54.4123,54.6263 +8388605,42.2583,113.207,108.088,105.942,106.458 +16777213,76.1272,229.277,216.943,210.314,209.053 +33554429,144.053,457.677,441.392,424.439,421.613 +67108861,295.775,930.851,878.801,849.253,843.502 +13,0.0001,0.601088,0.88064,0.99328,0.867328 +29,0.0001,0.560128,0.743424,0.75776,0.859136 +61,0.0001,0.493568,0.730112,0.848896,0.825344 +125,0.0002,0.498688,1.13459,0.801792,0.756736 +253,0.0002,0.62976,0.75776,0.78848,0.738304 +509,0.0002,0.545792,0.784384,0.774144,0.679936 +1021,0.0004,0.613376,0.8448,0.791552,0.735232 +2045,0.0008,0.586752,1.13869,0.842752,0.781312 +4093,0.0016,0.590848,0.899072,0.774144,0.772096 +8189,0.0031,0.616448,0.9728,0.779264,0.754688 +16381,0.0069,0.937984,1.0496,1.44486,0.943104 +32765,0.0151,1.02605,1.24109,1.14381,1.11514 +65533,0.0367,1.55955,1.6855,2.13299,1.67629 +131069,0.583,2.34701,3.00339,2.816,3.34234 +262141,1.1745,4.28032,4.79539,4.4288,4.81997 +524285,2.3428,7.68717,7.66976,7.78957,8.13261 +1048573,4.9663,15.615,14.805,14.0851,15.5597 +2097149,9.9049,29.7697,28.8993,27.6419,28.4078 +4194301,19.7203,56.9016,55.7701,54.6755,53.718 +8388605,36.0055,114.891,110.413,106.143,105.683 +16777213,72.3237,228.617,221.733,210.118,210.773 +33554429,148.019,463.899,432.759,424.655,420.585 +67108861,295.033,931.351,885.642,850.609,844.644 +13,0.0002,0.70144,0.91136,0.912384,0.90112 +29,0.0001,0.688128,0.82944,0.799744,0.90624 +61,0.0001,0.519168,0.77312,0.9984,0.749568 +125,0.0001,0.550912,0.796672,0.79872,0.966656 +253,0.0002,0.510976,0.772096,0.637952,0.693248 +509,0.0002,0.7424,0.799744,0.815104,0.712704 +1021,0.0004,0.610304,0.804864,0.827392,1.01171 +2045,0.001,0.613376,1.27283,0.815104,0.80384 +4093,0.0016,0.745472,0.9472,0.835584,0.863232 +8189,0.0032,0.80384,0.994304,0.900096,0.864256 +16381,0.0065,0.924672,1.46944,0.96768,0.940032 +32765,0.0178,1.04755,1.38138,1.32403,1.13459 +65533,0.0348,1.45606,1.71008,2.05005,1.50835 +131069,0.6,2.38182,2.78118,2.73613,3.25222 +262141,1.1741,4.54144,4.15437,4.44723,5.59514 +524285,3.0471,8.0087,8.41421,7.84179,8.36301 +1048573,5.1038,14.7384,14.3053,14.0964,15.1818 +2097149,8.9553,29.3724,28.5819,27.3981,28.3064 +4194301,19.569,57.4044,55.6063,54.6191,54.3099 +8388605,35.9909,113.624,109.575,106.581,106.238 +16777213,72.0096,225.656,218.089,213.922,208.955 +33554429,148.923,460.535,442.174,422.466,422.028 +67108861,292.897,926.838,878.953,848.949,841.054 +13,0.0001,0.672768,0.705536,0.715776,0.68096 +29,0.0001,0.67072,0.925696,0.719872,0.709632 +61,0.0001,0.483328,0.900096,0.744448,0.884736 +125,0.0002,0.51712,0.780288,0.7168,0.692224 +253,0.0001,0.508928,0.59904,0.784384,1.3568 +509,0.0003,0.512,0.75776,0.76288,0.799744 +1021,0.0005,0.556032,0.80896,0.811008,0.744448 +2045,0.0009,0.56832,0.871424,0.774144,0.751616 +4093,0.0016,0.753664,0.836608,0.907264,0.587776 +8189,0.0039,0.601088,0.900096,0.886784,0.77824 +16381,0.0061,0.809984,1.08134,0.877568,0.900096 +32765,0.0191,0.95232,1.47968,1.26566,1.09773 +65533,0.0372,1.41722,1.69472,1.52883,1.51142 +131069,0.5868,2.30502,2.44429,2.59379,3.0679 +262141,1.1741,4.22912,4.07552,4.75341,4.95718 +524285,2.3543,7.82848,7.64826,7.66771,8.09984 +1048573,4.682,15.0968,14.7108,15.0651,14.6258 +2097149,9.3708,29.7738,28.0228,27.7484,28.1938 +4194301,17.892,57.258,55.8039,54.0324,54.0928 +8388605,35.8639,115.465,109.387,105.815,105.548 +16777213,71.7159,228.972,220.914,211.602,208.996 +33554429,152.033,459.55,433.237,422.659,420.261 +67108861,291.575,930.346,892.903,854.147,846.336 +13,0.0001,0.564224,0.792576,0.687104,0.581632 +29,0,0.637952,0.602112,0.626688,0.771072 +61,0.0002,0.443392,0.760832,0.613376,0.574464 +125,0.0001,0.513024,0.610304,0.612352,0.562176 +253,0.0002,0.48128,0.799744,1.48275,0.82944 +509,0.0003,0.497664,0.78336,0.672768,0.789504 +1021,0.0005,0.526336,0.843776,1.03629,0.782336 +2045,0.0008,0.53248,0.8704,0.759808,0.74752 +4093,0.0017,0.713728,0.989184,0.765952,0.76288 +8189,0.0032,0.843776,0.948224,0.833536,0.862208 +16381,0.0067,0.899072,1.03014,0.975872,0.908288 +32765,0.0154,1.14381,1.27488,1.12128,1.09978 +65533,0.0644,1.41312,1.70906,1.47251,1.51757 +131069,0.5854,2.60608,2.46989,2.63475,2.9655 +262141,1.1753,4.46157,4.04378,4.73702,4.91622 +524285,2.4972,7.88173,7.50899,7.85203,8.00051 +1048573,4.7122,15.2904,14.4845,14.4671,14.8204 +2097149,9.6629,28.9925,28.8809,27.5456,27.4166 +4194301,18.0158,57.94,56.2371,54.3785,53.4159 +8388605,40.3072,113.65,110.012,104.721,105.003 +16777213,79.4057,228.587,216.389,211.672,212.045 +33554429,152.74,462.304,440.913,423.921,420.503 +67108861,300.908,927.122,875.97,848.241,845.749 +13,0.0001,0.765952,0.731136,0.731136,0.723968 +29,0.0001,0.669696,0.764928,0.843776,0.791552 +61,0.0001,0.822272,0.912384,0.882688,0.735232 +125,0.0002,0.69632,0.811008,0.94208,0.749568 +253,0.0002,0.861184,0.694272,0.713728,0.746496 +509,0.0002,0.611328,0.88064,0.872448,0.661504 +1021,0.0004,0.75264,0.784384,0.764928,0.6656 +2045,0.0009,0.627712,0.836608,0.756736,1.15405 +4093,0.0015,0.564224,0.943104,0.845824,0.83968 +8189,0.0031,0.632832,1.1776,0.886784,0.8448 +16381,0.0065,0.892928,1.15814,0.987136,0.95232 +32765,0.016,1.15814,1.27795,1.41824,1.06189 +65533,0.0516,1.47046,1.66707,1.50528,1.61382 +131069,0.6022,2.2487,2.4832,2.75149,3.14163 +262141,1.1694,4.43699,4.12467,4.44006,5.30125 +524285,2.343,7.85613,7.72608,9.12486,8.00051 +1048573,5.0876,14.5224,15.0129,14.849,14.7425 +2097149,8.9557,30.5111,28.4764,28.46,27.8743 +4194301,18.1628,58.3199,56.2084,53.5839,53.3012 +8388605,38.9362,114.391,110.395,105.221,105.398 +16777213,75.3831,229.192,221.958,210.602,210.763 +33554429,147.818,460.341,435.63,424.199,421.115 +67108861,292.716,930.614,891.506,854.11,842.413 +13,0.0001,0.628736,0.90112,0.857088,1.27283 +29,0.0001,0.668672,0.85504,0.83456,0.689152 +61,0.0001,1.15507,0.811008,0.782336,0.715776 +125,0.0001,0.979968,0.697344,0.751616,1.02502 +253,0.0002,0.623616,0.73216,0.84992,0.758784 +509,0.0002,0.539648,0.772096,0.780288,0.70656 +1021,0.0004,0.649216,1.03014,0.780288,0.777216 +2045,0.0008,0.763904,0.89088,0.807936,0.658432 +4093,0.0016,0.570368,0.943104,1.00352,0.718848 +8189,0.0031,0.898048,0.918528,0.815104,0.904192 +16381,0.0066,0.748544,1.0496,0.948224,0.968704 +32765,0.0157,1.12742,1.24621,1.27898,1.14278 +65533,0.0382,1.61178,1.6128,1.52678,1.5104 +131069,0.5829,2.26202,2.49958,2.47501,3.08838 +262141,1.1696,4.55782,4.27827,4.61005,5.0135 +524285,2.3424,7.69946,7.6759,8.72243,8.7511 +1048573,4.835,15.1532,14.6074,15.532,15.0641 +2097149,9.3501,28.6618,29.4748,27.9163,27.7197 +4194301,17.8959,57.9205,56.0527,53.9085,54.1952 +8388605,38.3074,113.926,109.35,106.39,105.685 +16777213,72.5586,228.332,218.539,210.161,209.062 +33554429,145.46,461.926,440.6,425.966,420.251 +67108861,291.987,931.145,873.269,852.782,842.798 +13,0.0001,0.656384,0.787456,0.907264,0.872448 +29,0.0001,0.484352,0.731136,0.88064,0.88064 +61,0.0003,0.669696,0.903168,0.873472,0.772096 +125,0.0002,0.704512,0.857088,0.817152,0.707584 +253,0.0002,0.512,0.809984,0.79872,0.728064 +509,0.0002,0.782336,0.792576,0.790528,1.24621 +1021,0.0004,0.52224,0.784384,0.787456,0.771072 +2045,0.0008,0.73216,1.4377,0.744448,0.781312 +4093,0.0017,0.760832,1.13971,0.929792,0.832512 +8189,0.0033,0.617472,1.28512,0.830464,0.871424 +16381,0.0201,0.919552,1.1049,0.934912,0.946176 +32765,0.0157,0.95232,1.30048,1.10797,1.78176 +65533,0.0373,1.36499,1.73875,1.53088,1.53498 +131069,0.5831,2.27533,2.57434,2.5559,3.34848 +262141,1.2026,4.34074,4.02534,4.8087,4.92851 +524285,2.4427,8.07629,7.62675,7.64211,7.95238 +1048573,4.767,15.019,14.8429,14.6319,14.9955 +2097149,9.3683,29.9059,28.3535,27.6951,27.7535 +4194301,18.9176,56.7552,56.834,54.0447,53.3668 +8388605,39.0822,113.959,110.047,105.619,106.092 +16777213,78.4499,229.34,220.79,211.844,210.683 +33554429,146.784,460.049,433.093,423.98,422.165 +67108861,292.106,924.6,894.239,851.07,841.563 +13,0.0001,0.5632,0.728064,0.745472,0.72704 +29,0.0001,0.45568,1.21856,0.685056,0.697344 +61,0.0001,0.586752,0.74752,0.689152,0.704512 +125,0.0001,0.540672,0.598016,0.602112,0.800768 +253,0.0002,0.510976,0.622592,0.607232,0.740352 +509,0.0003,0.608256,0.797696,0.93184,0.779264 +1021,0.0004,0.883712,0.77824,0.772096,0.90112 +2045,0.0008,0.569344,0.878592,0.785408,0.750592 +4093,0.0017,0.667648,1.0455,0.792576,0.664576 +8189,0.0031,0.620544,1.71622,0.847872,0.835584 +16381,0.0065,0.797696,1.01581,0.9472,0.982016 +32765,0.0164,1.03117,1.32198,1.16941,1.43872 +65533,0.0376,1.53907,1.85242,1.57594,1.57184 +131069,0.6184,2.30605,2.54976,2.64397,3.45907 +262141,1.3537,4.16973,3.94035,4.88038,4.93773 +524285,2.433,7.83155,7.60525,7.69024,8.32614 +1048573,4.6835,14.6954,14.8378,13.8486,14.7087 +2097149,9.5278,29.4881,29.7011,27.3756,27.9562 +4194301,18.0112,58.7704,55.5182,53.5501,52.991 +8388605,35.972,114.465,111.568,106.157,104.81 +16777213,71.6321,229.041,217.151,210.591,207.868 +33554429,147.462,462.216,443.793,423.322,419.747 +67108861,300.464,930.091,877.828,848.388,844.251 +13,0.0001,0.567296,0.669696,0.657408,0.57344 +29,0.0001,0.479232,1.01274,0.684032,0.70144 +61,0.0001,0.518144,0.980992,0.854016,0.753664 +125,0.0002,0.514048,0.75264,0.674816,0.6656 +253,0.0001,0.520192,0.796672,0.856064,0.719872 +509,0.0002,0.495616,0.837632,0.786432,0.75776 +1021,0.0004,0.700416,0.813056,0.756736,0.719872 +2045,0.0008,0.85504,0.87552,0.815104,0.93184 +4093,0.0016,0.562176,0.908288,0.843776,0.833536 +8189,0.0031,0.618496,1.00762,0.856064,0.876544 +16381,0.0062,0.743424,1.13152,0.847872,0.86016 +32765,0.0174,0.95232,1.27488,1.17862,1.15098 +65533,0.0383,1.45408,1.67936,1.53395,1.86982 +131069,0.5858,2.31117,2.50266,2.9481,3.13446 +262141,1.1729,4.46874,3.98131,4.56397,5.15379 +524285,2.3424,8.22784,8.36813,8.07424,8.2432 +1048573,4.6555,15.019,14.7446,14.0032,14.7128 +2097149,9.4529,29.1932,28.5256,27.2353,28.032 +4194301,19.0063,56.2524,54.6048,53.5296,53.0278 +8388605,35.7569,114.059,110.512,106.559,105.301 +16777213,71.7388,227.717,222.738,211.201,209.906 +33554429,145.794,464.131,438.558,424.484,420.86 +67108861,296.511,928.91,891.864,848.873,842.013 +13,0,0.5376,0.846848,0.841728,0.973824 +29,0.0001,0.478208,1.02502,0.774144,0.744448 +61,0.0001,0.555008,0.55808,0.560128,0.723968 +125,0.0001,0.559104,0.713728,0.764928,0.718848 +253,0.0002,0.484352,0.722944,0.811008,0.750592 +509,0.0002,0.525312,0.782336,0.789504,0.750592 +1021,0.0005,0.548864,0.805888,0.7936,0.723968 +2045,0.0009,0.564224,0.886784,0.772096,0.743424 +4093,0.0016,0.872448,0.919552,0.785408,0.801792 +8189,0.0032,0.76288,0.899072,0.780288,0.749568 +16381,0.0063,0.82432,1.06291,0.994304,0.919552 +32765,0.0157,1.01683,1.31789,1.1776,1.14381 +65533,0.0383,1.50426,1.75104,1.51347,1.55955 +131069,0.6562,2.28147,2.57126,2.63987,3.13446 +262141,1.1727,4.22707,4.29875,4.99302,4.93261 +524285,2.752,7.86534,7.9913,7.94214,8.52685 +1048573,4.6055,14.6094,14.8163,14.8091,14.7323 +2097149,9.6145,29.0406,28.8952,27.7299,27.5528 +4194301,17.8576,56.9293,55.2765,53.1784,53.6003 +8388605,38.763,113.566,109.853,106.308,106.037 +16777213,72.0093,228.859,216.552,212.069,208.869 +33554429,149.601,459.049,440.624,423.855,419.957 +67108861,292.841,924.171,879.34,851.435,836.038 +13,0.0001,0.750592,1.04755,0.929792,0.902144 +29,0.0002,0.49664,0.83968,0.763904,1.10797 +61,0.0001,0.494592,0.894976,0.922624,0.789504 +125,0.0001,0.516096,1.02298,0.782336,0.75264 +253,0.0002,0.62976,0.768,0.755712,0.710656 +509,0.0003,0.493568,0.772096,0.749568,0.746496 +1021,0.0004,1.20525,0.841728,1.04346,0.760832 +2045,0.0008,0.751616,0.886784,0.840704,0.71168 +4093,0.0016,0.828416,0.903168,0.786432,0.86016 +8189,0.0033,0.615424,0.94208,0.882688,0.850944 +16381,0.0065,1.16736,1.13254,1.00762,0.946176 +32765,0.015,1.03629,1.2288,1.13869,1.10797 +65533,0.0372,1.90566,1.65069,1.536,1.55341 +131069,0.5856,2.29888,2.71872,2.61427,3.57786 +262141,1.2015,4.31923,4.12467,4.72166,4.90803 +524285,2.3547,7.85306,7.64006,7.64723,8.09677 +1048573,4.6831,14.8439,14.8357,14.6637,14.9473 +2097149,9.3354,29.1052,28.3228,27.9716,27.3152 +4194301,17.8686,56.9825,56.0036,53.417,54.1983 +8388605,41.9507,113.309,109.769,106.523,105.487 +16777213,75.0046,229.517,219.495,210.967,209.329 +33554429,147.143,461.15,436.27,422.735,421.026 +67108861,294.374,927.474,888.221,846.1,842.611 +13,0,0.582592,0.72192,0.823296,0.816128 +29,0.0001,0.553984,0.654336,0.688128,0.984064 +61,0.0001,0.57344,0.730112,0.712704,0.738304 +125,0.0002,0.503808,0.904192,0.770048,0.683008 +253,0.0002,0.52224,0.800768,0.827392,0.862208 +509,0.0004,0.536576,0.825344,0.794624,0.718848 +1021,0.0004,0.551936,0.805888,0.949248,0.71168 +2045,0.0009,0.787456,0.8448,0.775168,0.821248 +4093,0.0017,0.596992,0.874496,0.796672,0.769024 +8189,0.0031,0.663552,0.940032,0.868352,0.867328 +16381,0.0069,0.749568,1.10182,0.976896,0.975872 +32765,0.0158,1.02605,1.31072,1.13562,1.11718 +65533,0.0381,1.44998,1.72442,1.53907,1.5063 +131069,0.6011,2.41869,2.59174,2.61837,3.14061 +262141,1.1783,4.49024,4.07347,4.44621,5.83475 +524285,2.3424,7.83155,7.85613,8.00256,8.36301 +1048573,6.9542,14.7067,14.4794,14.0012,14.7036 +2097149,8.8742,29.0652,30.0483,27.2763,27.1524 +4194301,18.7709,56.9723,54.3601,54.359,53.3514 +8388605,36.7305,114.019,109.889,104.668,105.524 +16777213,71.7769,230.773,218.27,209.281,210.047 +33554429,144.757,462.273,440.773,420.729,420.048 +67108861,296.775,923.784,876.955,847.044,846.069 +13,0.0001,0.538624,0.770048,0.95744,0.892928 +29,0.0001,0.485376,0.959488,0.923648,0.876544 +61,0.0001,0.498688,1.05062,0.93696,0.847872 +125,0.0002,0.499712,0.771072,0.678912,0.672768 +253,0.0001,0.523264,0.77824,0.813056,0.738304 +509,0.0003,0.538624,0.809984,0.777216,0.693248 +1021,0.0004,0.544768,0.80384,0.828416,0.771072 +2045,0.0008,0.5632,0.914432,0.785408,0.776192 +4093,0.0016,0.595968,0.868352,0.804864,0.892928 +8189,0.0031,0.641024,1.08954,0.831488,0.800768 +16381,0.0066,0.774144,1.08339,0.956416,0.919552 +32765,0.0156,0.99328,1.57389,1.16326,1.10899 +65533,0.0383,1.5063,1.62202,1.4807,2.2016 +131069,0.5851,2.41152,2.44531,2.60915,3.00646 +262141,1.1732,4.36634,4.30797,4.23117,4.71859 +524285,2.3427,8.00768,7.72506,7.92678,8.11315 +1048573,4.4383,15.2924,14.2868,14.0493,15.8208 +2097149,9.2961,28.5788,29.0765,28.29,27.6101 +4194301,19.1996,56.9395,55.85,53.4026,53.7108 +8388605,35.7597,113.973,109.925,105.892,106.21 +16777213,72.8355,227.682,219.971,210.327,210.807 +33554429,149.365,464.673,432.675,423.982,418.245 +67108861,295.213,922.609,889.311,849.721,840.315 +13,0.0001,0.546816,0.81408,0.759808,0.717824 +29,0.0002,0.551936,0.852992,0.915456,1.11411 +61,0.0001,0.498688,0.815104,0.900096,0.782336 +125,0.0001,0.503808,0.764928,0.753664,0.755712 +253,0.0001,0.512,0.797696,0.766976,0.750592 +509,0.0002,0.7168,0.809984,0.827392,0.784384 +1021,0.0004,0.551936,1.14074,0.784384,0.775168 +2045,0.0009,0.562176,0.879616,0.772096,0.771072 +4093,0.0016,0.595968,0.902144,0.774144,0.804864 +8189,0.0031,0.659456,0.951296,0.93184,0.868352 +16381,0.0069,0.77312,1.08646,0.968704,0.96256 +32765,0.016,0.978944,1.28,1.34451,1.12128 +65533,0.0373,1.61792,1.69165,1.6896,1.50426 +131069,0.6006,2.25792,2.49238,2.66752,3.12832 +262141,1.1681,4.37453,4.00896,4.44416,4.95821 +524285,3.0818,8.12339,7.56429,7.85613,8.03533 +1048573,5.0062,14.9105,14.1496,14.4886,14.5357 +2097149,9.3224,29.5485,28.2972,27.1565,27.6193 +4194301,21.6342,57.0819,55.4568,53.8102,53.6689 +8388605,40.1061,113.433,110.425,105.595,105.845 +16777213,76.8315,228.898,215.845,211.492,211.982 +33554429,150.027,462.502,443.125,423.203,421.176 +67108861,294.224,930.447,879.439,847.636,839.058 +13,0.0001,0.717824,0.842752,0.913408,0.667648 +29,0.0001,0.560128,0.740352,0.918528,0.841728 +61,0.0002,0.495616,0.760832,0.927744,1.01683 +125,0.0001,0.516096,0.772096,0.784384,0.75776 +253,0.0002,0.516096,1.13254,0.790528,0.74752 +509,0.0003,0.535552,0.7936,0.648192,0.669696 +1021,0.0009,0.567296,0.827392,0.804864,0.719872 +2045,0.0009,0.561152,0.881664,0.797696,0.780288 +4093,0.0017,0.595968,0.887808,0.920576,0.575488 +8189,0.0033,0.714752,0.918528,0.88576,0.869376 +16381,0.0069,0.903168,1.05062,1.152,0.915456 +32765,0.0165,1.06906,1.28205,1.2073,1.16019 +65533,0.0366,1.4592,1.58208,1.62509,1.49606 +131069,0.7712,2.31731,2.50163,2.59482,3.16621 +262141,1.1692,4.35917,4.03456,4.68992,4.92339 +524285,2.4589,8.60262,7.72301,7.66566,8.0128 +1048573,5.0853,14.5295,14.4118,14.4292,15.1245 +2097149,9.3657,29.3806,28.2962,27.6173,27.4514 +4194301,20.024,57.5693,56.2688,53.3309,54.1921 +8388605,35.9177,112.738,109.663,103.924,105.885 +16777213,76.082,228.078,220.902,213.265,209.567 +33554429,155.475,459.389,434.857,420.377,423.262 +67108861,296.977,928.963,890.978,848.868,842.098 +13,0.0001,0.662528,0.754688,0.69632,0.720896 +29,0.0001,0.659456,0.809984,0.966656,0.89088 +61,0.0001,0.654336,0.816128,0.826368,0.825344 +125,0.0001,0.700416,0.802816,0.755712,0.693248 +253,0.0002,0.508928,0.882688,0.743424,1.23802 +509,0.0003,1.08032,0.796672,0.7424,0.720896 +1021,0.0004,0.55296,0.821248,0.756736,0.669696 +2045,0.0008,0.564224,1.15917,0.775168,0.715776 +4093,0.0016,0.61952,1.69472,0.796672,0.78848 +8189,0.0031,0.667648,0.945152,0.856064,0.795648 +16381,0.0066,0.805888,1.07315,0.891904,0.887808 +32765,0.0245,1.03424,1.36909,1.31789,1.10694 +65533,0.0365,1.44896,1.68653,1.48685,1.49914 +131069,0.5855,2.27123,2.48525,2.48934,3.07098 +262141,1.208,4.31206,4.02534,4.48717,4.9111 +524285,2.3439,7.76294,8.00154,8.00358,8.44698 +1048573,4.6657,15.2351,14.6125,14.4527,14.9012 +2097149,9.9691,28.4416,28.7099,27.5845,26.6629 +4194301,19.6457,57.8939,56.2309,53.761,53.5409 +8388605,35.8247,113.861,110.088,105.245,104.202 +16777213,75.463,227.913,217.835,211.984,211.9 +33554429,148.487,459.892,440.331,422.6,421.235 +67108861,304.314,930.102,871.669,849.093,847.488 +13,0.0001,0.60416,0.740352,0.606208,0.582656 +29,0.0001,0.483328,0.592896,0.615424,0.613376 +61,0.0001,0.436224,0.830464,0.845824,0.626688 +125,0.0002,0.475136,0.766976,0.745472,0.970752 +253,0.0001,0.519168,0.739328,0.759808,0.67072 +509,0.0004,0.524288,1.0752,0.759808,0.751616 +1021,0.0004,0.545792,0.850944,0.828416,0.766976 +2045,0.0008,0.528384,0.85504,0.77312,0.795648 +4093,0.0017,0.5632,1.18784,0.851968,0.789504 +8189,0.0031,0.662528,1.07213,0.823296,0.82944 +16381,0.0066,0.796672,1.1264,0.9984,0.968704 +32765,0.016,1.00659,1.24109,1.22675,1.08544 +65533,0.0674,1.44384,1.74899,1.57594,1.81043 +131069,0.6018,2.26714,2.59277,2.70131,3.12832 +262141,1.1745,4.47283,4.02227,4.30285,5.0473 +524285,2.3424,8.0425,7.94112,8.26163,8.24218 +1048573,4.7398,14.85,14.5592,14.5224,15.0262 +2097149,10.0513,29.1533,28.7119,27.0592,27.7565 +4194301,18.2727,57.0778,56.9733,53.0749,53.3975 +8388605,36.1028,113.866,109.796,103.881,105.297 +16777213,75.724,226.083,219.866,211.324,211.096 +33554429,150.185,455.686,433.165,425.198,423.172 +67108861,300.393,929.431,886.91,841.332,843.284 +13,0.0001,0.543744,0.954368,0.830464,0.806912 +29,0.0001,0.438272,0.76288,0.73728,0.807936 +61,0.0001,0.591872,0.636928,0.7424,0.723968 +125,0.0001,0.499712,0.815104,0.980992,0.75264 +253,0.0002,0.494592,0.78848,0.804864,0.739328 +509,0.0002,1.49709,0.816128,0.78336,0.72192 +1021,0.0005,0.641024,0.755712,0.75776,1.08544 +2045,0.0008,0.531456,0.912384,0.78848,0.774144 +4093,0.0017,0.56832,0.990208,0.804864,0.797696 +8189,0.0031,0.764928,0.975872,0.866304,0.813056 +16381,0.0071,0.823296,1.0967,0.953344,0.932864 +32765,0.0158,0.950272,1.25952,1.67834,1.14381 +65533,0.0372,1.52781,1.66298,1.68858,1.45715 +131069,0.8142,2.27123,2.48218,2.68902,3.14163 +262141,1.1691,4.60186,4.03456,4.44621,5.14048 +524285,2.3416,8.13158,7.93805,7.72813,8.50022 +1048573,4.9363,15.614,14.3657,13.9366,14.5244 +2097149,9.0348,28.9024,28.8901,27.3213,27.6367 +4194301,20.4035,57.1873,55.2827,53.9873,53.291 +8388605,39.8775,114.099,110.724,104.34,106.116 +16777213,75.8877,228.259,216.439,210.123,213.102 +33554429,145.362,461.668,440.673,423.751,419.288 +67108861,293.646,928.73,876.224,844.806,845.219 +13,0.0001,0.769024,0.854016,0.912384,0.879616 +29,0.0002,0.499712,0.864256,0.914432,0.903168 +61,0.0001,0.494592,0.848896,0.806912,0.733184 +125,0.0001,0.498688,0.772096,0.77312,0.723968 +253,0.0002,0.515072,0.779264,0.77824,0.7424 +509,0.0002,0.529408,0.794624,0.751616,0.894976 +1021,0.0005,0.632832,0.741376,0.688128,0.774144 +2045,0.0008,0.736256,0.851968,0.781312,0.736256 +4093,0.0017,0.576512,0.932864,0.830464,0.823296 +8189,0.0031,0.622592,1.11821,1.08442,0.877568 +16381,0.0066,0.869376,1.10387,0.975872,0.973824 +32765,0.0156,1.08954,1.26054,1.17453,1.07725 +65533,0.0412,1.52474,1.67629,1.55238,1.51757 +131069,0.5861,2.31117,2.49651,2.57741,3.11706 +262141,1.1679,4.14822,4.02534,4.80051,4.92134 +524285,2.4594,8.21965,7.63494,7.75168,8.05171 +1048573,4.6849,14.8367,14.5183,14.5172,14.5306 +2097149,9.6838,28.6362,28.0013,27.2108,27.6767 +4194301,19.48,57.4034,56.32,53.3606,53.9126 +8388605,36.0887,113.715,110.535,105.07,104.545 +16777213,74.9851,228.243,217.857,211.679,209.894 +33554429,149.447,460.949,431.219,422.904,420.513 +67108861,295.652,926.362,882.032,850.691,838.778 +13,0.0001,0.55808,0.713728,0.689152,0.68096 +29,0.0001,0.595968,0.722944,0.61952,0.641024 +61,0.0001,0.525312,0.62464,0.73216,0.708608 +125,0.0001,0.499712,0.804864,1.67117,0.768 +253,0.0002,0.513024,0.792576,0.830464,0.749568 +509,0.0002,0.526336,0.790528,1.16736,0.748544 +1021,0.0004,0.559104,0.820224,0.795648,0.72704 +2045,0.0008,0.846848,0.910336,0.818176,0.840704 +4093,0.0016,0.559104,0.929792,0.835584,0.780288 +8189,0.0031,0.615424,0.9984,0.88576,0.841728 +16381,0.0063,0.782336,1.47968,1.00557,0.97792 +32765,0.0165,1.06086,1.35885,1.26771,1.27283 +65533,0.0377,1.46534,1.77152,1.55955,1.53907 +131069,0.586,2.3255,2.44531,2.63475,3.12422 +262141,1.1723,4.23731,4.224,4.51174,4.90189 +524285,2.3442,7.85306,8.4265,7.99334,8.45517 +1048573,5.7244,15.6795,14.423,14.2653,14.7016 +2097149,10.205,28.5215,28.7713,27.988,26.7162 +4194301,18.8454,56.2913,55.2919,53.0657,52.7268 +8388605,35.9132,112.168,110.536,105.54,105.45 +16777213,72.9104,228.295,216.594,212.968,209.367 +33554429,147.836,458.75,440.729,426.078,419.561 +67108861,295.161,930.491,879.223,844.382,839.58 +13,0.0001,0.700416,0.918528,0.925696,0.894976 +29,0.0001,0.483328,0.88064,0.924672,0.899072 +61,0.0001,0.49664,0.863232,0.77312,0.7424 +125,0.0001,0.50176,0.815104,1.29946,0.896 +253,0.0002,0.712704,0.768,0.68608,0.636928 +509,0.0002,0.681984,0.712704,1.08134,0.746496 +1021,0.0005,0.556032,0.897024,0.821248,0.74752 +2045,0.0009,0.969728,0.86016,0.794624,0.776192 +4093,0.0016,0.575488,0.923648,0.836608,1.22573 +8189,0.0031,0.617472,1.13152,0.886784,0.874496 +16381,0.0065,0.738304,1.36499,1.02298,0.97792 +32765,0.0165,0.9472,1.40698,1.1735,1.08954 +65533,0.0375,1.36192,1.88109,1.48787,1.49094 +131069,0.5852,2.33882,2.48013,2.57331,3.05459 +262141,1.1675,4.30182,3.9424,4.52301,5.08109 +524285,2.3545,8.15718,8.50534,8.15923,7.93293 +1048573,4.7876,14.7876,14.9996,14.633,14.9207 +2097149,9.2913,29.0048,28.2388,27.7893,27.8467 +4194301,18.5087,57.47,56.2371,53.7303,53.7979 +8388605,40.913,112.164,110.237,105.726,105.906 +16777213,79.2341,227.198,221.283,211.697,210.554 +33554429,150.127,459.564,435.387,419.977,420.514 +67108861,294.688,929.581,890.877,848.116,845.132 +13,0.0001,0.67584,0.863232,0.90624,0.9216 +29,0.0001,1.09466,0.841728,0.93184,0.89088 +61,0.0001,0.698368,0.851968,0.77312,0.731136 +125,0.0001,0.674816,0.736256,0.80384,0.713728 +253,0.0003,0.528384,0.831488,0.934912,0.7936 +509,0.0003,0.521216,0.893952,0.780288,0.748544 +1021,0.0005,0.714752,0.755712,0.77312,0.688128 +2045,0.0009,0.561152,0.87552,0.687104,0.699392 +4093,0.0016,0.806912,0.845824,0.88064,0.785408 +8189,0.0033,0.643072,0.960512,0.750592,0.74752 +16381,0.0068,0.78336,1.05472,1.11411,0.932864 +32765,0.0162,0.9984,1.26874,1.11002,1.05984 +65533,0.0359,1.52371,2.58867,1.48275,1.52474 +131069,0.5856,2.97165,2.4832,2.89075,3.16621 +262141,1.1683,4.61414,4.02944,4.41958,5.04832 +524285,2.7929,8.11725,8.05274,8.10803,8.42752 +1048573,4.6792,14.9617,14.466,14.378,15.0385 +2097149,8.8763,28.6802,29.1379,27.4299,27.2005 +4194301,19.8036,56.3651,55.4107,53.7805,53.7569 +8388605,35.7747,112.793,109.367,105.971,105.981 +16777213,72.2718,227.483,216.517,210.971,210.058 +33554429,152.248,459.272,442.448,420.968,421.762 +67108861,291.68,927.021,875.182,850.762,840.707 +13,0.0001,0.738304,0.891904,0.91648,0.887808 +29,0.0001,0.72192,0.88064,0.912384,0.847872 +61,0.0002,0.603136,0.718848,0.755712,0.748544 +125,0.0002,0.674816,0.65024,0.765952,0.700416 +253,0.0001,0.652288,1.73568,0.815104,0.882688 +509,0.0002,0.523264,0.79872,0.800768,0.744448 +1021,0.0004,0.580608,0.796672,0.791552,0.751616 +2045,0.0008,0.561152,0.864256,0.763904,0.68608 +4093,0.0016,0.615424,0.889856,0.861184,1.03424 +8189,0.0031,0.651264,1.12435,1.03014,0.939008 +16381,0.0063,0.96768,1.03014,0.91648,0.932864 +32765,0.0152,1.0496,1.2503,1.16736,1.10797 +65533,0.037,1.39878,1.82272,1.52678,1.4889 +131069,0.5827,2.32243,2.49958,2.46067,3.12525 +262141,1.1682,4.24346,4.0151,5.12512,4.84864 +524285,2.3536,8.24218,7.63904,7.77011,7.94931 +1048573,4.6842,15.0006,14.5869,14.591,14.5633 +2097149,9.7851,29.0396,28.3935,27.7934,27.7637 +4194301,18.9037,57.0337,56.1674,52.9613,53.8604 +8388605,35.724,113.062,110.539,105.569,105.192 +16777213,71.7542,226.087,222.124,211.988,211.679 +33554429,148.052,461.9,434.85,423.679,420.301 +67108861,294.27,929.691,889.198,839.881,841.066 +13,0.0001,0.636928,0.894976,0.927744,0.88064 +29,0.0001,0.49152,0.892928,0.924672,0.87552 +61,0.0001,0.63488,0.821248,0.719872,0.791552 +125,0.0001,0.726016,0.697344,0.72704,1.01274 +253,0.0002,0.503808,0.77312,0.782336,0.6912 +509,0.0003,0.804864,0.784384,0.780288,0.741376 +1021,0.0004,0.545792,0.797696,0.774144,0.724992 +2045,0.0008,0.565248,0.904192,0.807936,0.758784 +4093,0.0016,0.589824,0.900096,0.786432,0.760832 +8189,0.003,0.64,0.96768,0.838656,0.820224 +16381,0.0065,0.763904,1.07315,1.05984,1.1305 +32765,0.0172,0.986112,1.4633,1.27078,1.13357 +65533,0.0372,1.43667,1.71418,1.49197,1.77869 +131069,0.5856,2.4064,2.51494,2.91942,3.12013 +262141,1.169,4.94694,4.11443,4.44621,5.06368 +524285,2.9117,8.0343,7.82131,8.07526,8.03123 +1048573,4.8416,14.9381,14.3247,14.5377,14.5295 +2097149,9.6762,29.2454,28.3945,27.9398,27.1022 +4194301,17.8646,57.1709,55.0636,53.8266,53.7385 +8388605,35.8044,113.724,111.043,106.067,105.781 +16777213,74.8745,226.33,218.179,212.69,208.817 +33554429,150.288,462.487,439.25,423.227,421.328 +67108861,291.246,925.042,869.888,851.047,844.543 +13,0.0001,0.462848,0.728064,0.710656,0.817152 +29,0.0003,0.667648,0.866304,0.841728,0.75776 +61,0.0001,0.792576,0.67584,0.765952,0.79872 +125,0.0001,0.510976,0.820224,0.807936,0.67584 +253,0.0002,0.777216,0.787456,0.771072,0.978944 +509,0.0002,0.495616,0.830464,0.790528,0.791552 +1021,0.0004,0.521216,0.951296,0.826368,0.73728 +2045,0.0015,0.54272,0.910336,0.820224,0.8192 +4093,0.0016,0.570368,0.944128,0.856064,0.823296 +8189,0.0031,0.92672,1.01478,1.1735,0.861184 +16381,0.0068,0.867328,1.06086,1.25952,0.92672 +32765,0.0161,1.11917,1.25235,1.25952,1.1479 +65533,0.0369,1.45818,1.66912,1.51245,1.51552 +131069,0.5831,2.26611,2.52723,2.62758,3.35258 +262141,1.1748,4.30694,4.46259,4.44826,4.8937 +524285,2.3429,7.71789,7.46701,7.66669,8.07526 +1048573,4.6842,15.3856,14.3872,14.6432,15.1962 +2097149,9.5734,29.0406,28.7283,27.3275,28.6423 +4194301,17.9865,57.4966,56.3753,53.2029,54.3273 +8388605,38.8986,112.862,112.398,106.056,105.593 +16777213,76.7937,228.196,221.485,211.185,207.844 +33554429,147.142,460.001,434.143,426.579,422.789 +67108861,292.198,927.625,889.511,847.178,837.455 +13,0.0001,0.813056,0.898048,0.908288,0.884736 +29,0.0001,1.29741,0.8704,0.914432,0.874496 +61,0.0003,0.64512,0.861184,0.904192,0.854016 +125,0.0003,0.789504,0.740352,0.774144,0.871424 +253,0.0001,0.508928,0.617472,0.598016,0.596992 +509,0.0003,0.754688,0.617472,0.57344,0.745472 +1021,0.0004,0.548864,0.765952,0.785408,0.72704 +2045,0.0008,0.572416,0.87552,0.787456,0.745472 +4093,0.0016,0.605184,0.88576,0.789504,0.700416 +8189,0.0031,0.658432,0.935936,1.06701,0.84992 +16381,0.0082,0.753664,1.1049,1.01376,0.978944 +32765,0.0171,1.03936,1.43872,1.12128,1.09363 +65533,0.0357,1.42643,1.69574,1.52371,1.47763 +131069,0.5853,2.44122,2.4873,3.01056,3.12934 +262141,1.1697,4.60083,4.06118,4.50765,4.97869 +524285,2.4112,8.01485,7.67386,8.02304,8.24013 +1048573,4.9955,14.8992,14.2909,14.295,14.8992 +2097149,9.8501,29.3724,28.4723,27.6541,28.2286 +4194301,18.8963,56.6303,54.8362,53.9187,53.8317 +8388605,36.1617,113.648,110.083,106.147,106.68 +16777213,72.0882,229.314,217.998,210.413,210.063 +33554429,145.475,460.971,435.555,422.122,420.277 +67108861,291.473,927.431,873.336,848.205,840.51 +13,0.0001,0.610304,0.70656,0.689152,0.657408 +29,0.0001,0.41472,0.622592,0.71168,0.683008 +61,0.0001,0.53248,0.710656,0.674816,0.72192 +125,0.0001,0.507904,0.794624,0.618496,0.572416 +253,0.0001,0.509952,0.613376,0.786432,0.760832 +509,0.0002,0.524288,0.801792,0.676864,0.656384 +1021,0.0004,0.571392,0.903168,0.905216,0.817152 +2045,0.0009,0.562176,0.90112,0.807936,0.817152 +4093,0.0149,1.04346,0.933888,0.843776,1.05574 +8189,0.0031,0.6144,1.0455,0.823296,0.8192 +16381,0.0065,0.779264,1.03424,0.996352,0.996352 +32765,0.0159,1.15405,1.58413,1.17453,1.14278 +65533,0.0383,1.47968,1.6896,1.51347,1.66093 +131069,0.5847,2.28352,2.40742,2.64294,3.10989 +262141,1.1736,4.32538,4.11034,4.49434,5.29306 +524285,2.4249,7.75782,7.80902,8.18074,8.4992 +1048573,4.5457,14.4251,14.6422,14.4794,15.2105 +2097149,10.3691,29.1308,27.8077,27.1544,28.8031 +4194301,18.4072,58.711,56.0026,54.101,54.4092 +8388605,35.7275,111.172,110.228,105.519,104.947 +16777213,71.7248,226.03,219.572,212.144,208.587 +33554429,150.702,461.055,436.785,423.674,420.973 +67108861,291.341,922.576,891.38,848.113,835.433 +13,0.0001,0.717824,0.858112,0.866304,0.87552 +29,0.0001,0.4864,0.871424,0.932864,0.893952 +61,0.0001,0.488448,0.813056,0.903168,0.799744 +125,0.0001,0.500736,0.774144,0.776192,0.77312 +253,0.0002,0.50688,0.719872,0.78848,0.760832 +509,0.0003,0.543744,0.794624,0.78336,0.750592 +1021,0.0005,0.54272,0.812032,0.78336,0.76288 +2045,0.0009,0.543744,0.848896,0.831488,0.815104 +4093,0.0016,0.812032,0.873472,0.83456,0.77312 +8189,0.0032,0.763904,1.19091,0.886784,0.95744 +16381,0.0067,1.01274,1.11821,0.9472,0.924672 +32765,0.0171,1.14074,1.30867,1.10694,1.15405 +65533,0.0351,1.49914,1.74592,1.7623,1.50733 +131069,0.585,2.34189,2.66957,2.68083,3.20205 +262141,1.1739,4.30797,4.41651,3.8615,4.4032 +524285,2.4171,7.64109,7.42605,7.49875,8.08141 +1048573,4.6835,14.7364,14.377,14.1097,14.976 +2097149,9.4666,28.6331,28.716,27.2466,27.7309 +4194301,20.0504,58.583,55.4967,53.2623,54.8096 +8388605,41.0484,113.296,109.472,106.6,104.346 +16777213,79.7509,228.207,217.837,211.303,209.825 +33554429,153.091,461.253,440.61,424.251,418.701 +67108861,291.133,926.602,880.093,836.092,839.899 +13,0.0001,0.707584,0.899072,0.914432,0.896 +29,0.0001,0.503808,0.868352,0.910336,0.871424 +61,0.0003,0.503808,0.89088,0.963584,0.758784 +125,0.0001,0.703488,0.753664,0.668672,0.73728 +253,0.0002,0.512,0.768,0.930816,0.76288 +509,0.0003,0.523264,0.79872,0.751616,0.7424 +1021,0.0004,0.49664,0.621568,0.579584,0.472064 +2045,0.0008,0.703488,0.886784,0.785408,0.816128 +4093,0.0016,0.708608,0.961536,0.857088,1.18067 +8189,0.0032,0.739328,0.974848,0.856064,0.818176 +16381,0.0066,0.830464,1.2073,0.958464,0.910336 +32765,0.0156,1.03936,1.29946,1.15712,1.10797 +65533,0.0375,1.536,1.68141,1.51654,2.06336 +131069,0.5852,2.3808,2.41357,2.62554,3.14368 +262141,1.1749,4.20147,4.05094,4.51277,5.5296 +524285,2.84,7.59808,7.56122,7.86739,8.41421 +1048573,4.6732,14.7804,14.4814,14.3821,14.9585 +2097149,9.3691,29.2936,28.3331,27.5661,27.8098 +4194301,19.1574,58.0588,55.6052,53.2357,53.6801 +8388605,35.806,114.304,109.705,105.656,104.907 +16777213,71.9495,228.348,221.098,210.851,210.274 +33554429,152.628,460.878,433.759,425.001,420.959 +67108861,291.938,926.248,893.013,850.449,842.977 +13,0.0001,0.607232,0.70144,0.739328,0.695296 +29,0.0001,0.477184,0.843776,0.794624,0.813056 +61,0.0001,0.488448,0.673792,0.756736,1.2329 +125,0.0001,0.49664,0.8192,0.792576,0.72192 +253,0.0002,0.515072,1.00147,0.780288,0.75776 +509,0.0002,0.523264,0.790528,0.786432,0.723968 +1021,0.0005,0.545792,0.823296,0.822272,0.769024 +2045,0.0008,0.59904,0.87552,1.12742,0.734208 +4093,0.0016,0.591872,0.893952,0.863232,0.831488 +8189,0.0031,0.646144,1.09363,1.13254,0.825344 +16381,0.0072,0.854016,1.00966,0.934912,0.93696 +32765,0.0162,1.03014,1.27283,1.152,1.152 +65533,0.0376,1.39674,1.67219,1.58618,1.52474 +131069,0.8219,2.26406,2.88256,2.58355,3.58093 +262141,1.1735,4.18509,3.97107,5.10054,4.68992 +524285,2.662,8.33331,7.6329,8.0169,8.14592 +1048573,4.437,14.9617,14.8019,14.4333,14.9043 +2097149,9.071,28.8215,29.3294,27.8241,27.2794 +4194301,17.906,57.6748,55.7865,53.674,53.7723 +8388605,37.9811,113.632,109.363,106.086,104.789 +16777213,71.6878,228.948,217.281,212.003,210.528 +33554429,150.548,459.429,442.529,422.77,419.842 +67108861,296.397,929.968,876.717,842.278,841.771 +13,0.0001,0.47104,0.569344,0.736256,0.7168 +29,0,0.586752,0.754688,0.724992,0.683008 +61,0.0001,0.570304,0.771072,0.75776,0.74752 +125,0.0002,0.473088,0.851968,0.820224,0.72704 +253,0.0001,0.480256,0.801792,0.774144,0.780288 +509,0.0002,0.493568,0.775168,0.918528,0.766976 +1021,0.0004,0.656384,0.80896,0.652288,0.699392 +2045,0.0008,0.548864,0.900096,0.770048,0.812032 +4093,0.0016,0.560128,0.940032,0.831488,0.830464 +8189,0.0033,0.661504,0.866304,0.817152,0.811008 +16381,0.0132,0.792576,0.978944,0.91136,0.927744 +32765,0.0151,1.13562,1.70394,1.11718,1.15814 +65533,0.0376,1.43872,1.69984,1.51859,1.47763 +131069,0.5849,2.3767,2.49242,2.93069,3.13958 +262141,1.1694,4.5056,4.03866,4.49024,5.48352 +524285,2.6578,8.0681,7.49773,7.88582,8.38349 +1048573,4.845,14.9033,14.7149,14.3841,15.0354 +2097149,9.3689,28.6403,28.1672,27.2947,27.3828 +4194301,19.5677,56.9897,55.5387,53.1753,53.3166 +8388605,39.1028,114.067,110.537,105.813,105.78 +16777213,71.5439,226.65,220.485,210.814,210.219 +33554429,147.277,459.501,434.65,422.916,422.525 +67108861,292.817,927.441,890.235,851.446,841.487 +13,0,0.733184,0.8448,0.914432,0.828416 +29,0.0002,0.601088,0.886784,0.924672,0.879616 +61,0.0003,0.712704,0.884736,0.928768,0.807936 +125,0.0001,0.497664,0.78848,0.76288,0.707584 +253,0.0002,0.512,0.78336,0.776192,0.687104 +509,0.0002,0.52736,0.743424,0.781312,0.70144 +1021,0.0004,0.55296,0.816128,0.78336,0.702464 +2045,0.0009,0.627712,0.879616,0.782336,0.723968 +4093,0.0016,0.591872,0.900096,0.7936,0.733184 +8189,0.0032,0.623616,0.96768,0.909312,0.854016 +16381,0.0067,1.03933,1.04858,1.15302,0.980992 +32765,0.0161,1.01888,1.24928,1.61997,1.1735 +65533,0.0375,1.45302,1.69165,1.58618,1.52064 +131069,0.5832,2.3081,2.45146,2.57638,3.10886 +262141,1.2315,4.21581,4.03046,4.77491,4.93466 +524285,2.4698,7.94624,7.6841,7.89197,8.03533 +1048573,4.4364,15.0354,14.5838,14.6033,14.7057 +2097149,10.3237,28.6894,28.6771,27.3121,28.5942 +4194301,18.049,57.129,56.3159,53.8429,54.0549 +8388605,35.7803,114.289,109.15,105.68,104.86 +16777213,72.8697,228.055,218.53,209.857,209.084 +33554429,151.38,453.101,440.539,423.943,419.023 +67108861,293.159,930.233,879.389,851.189,836.988 +13,0.0001,0.422912,0.766976,0.958464,0.792576 +29,0,0.550912,0.80384,0.761856,0.683008 +61,0.0002,0.442368,0.827392,0.838656,0.7936 +125,0.0001,0.500736,0.77312,0.899072,0.713728 +253,0.0002,0.514048,0.694272,0.772096,0.648192 +509,0.0003,0.529408,0.789504,0.684032,0.674816 +1021,0.0004,0.545792,0.80384,1.17453,0.756736 +2045,0.0008,0.565248,0.872448,0.748544,0.664576 +4093,0.0017,0.73216,0.867328,0.73216,0.72192 +8189,0.0031,0.644096,0.903168,0.802816,1.024 +16381,0.0065,0.769024,1.1776,1.13152,1.42746 +32765,0.0177,1.38547,1.27488,1.11309,1.04346 +65533,0.0379,1.42848,1.67526,2.47296,1.53088 +131069,0.9151,2.33267,2.93376,2.63066,3.33926 +262141,1.1749,4.24346,4.18714,4.46157,4.91827 +524285,2.3425,7.72096,7.43834,7.95341,7.97184 +1048573,4.6861,14.9176,14.6749,14.1558,15.3754 +2097149,9.778,29.1471,27.9276,26.8913,27.7402 +4194301,19.5964,56.2268,55.3206,53.0299,54.4481 +8388605,38.5424,114.591,110.761,105.576,105.313 +16777213,75.129,226.528,220.527,210.836,210.265 +33554429,146.694,459.714,430.95,424.062,419.711 +67108861,293.201,931.193,888.887,842.382,836.824 +13,0.0001,0.705536,0.637952,0.714752,0.68096 +29,0.0001,0.565248,0.882688,0.804864,0.739328 +61,0.0001,0.584704,0.641024,0.873472,0.787456 +125,0.0001,0.474112,0.827392,0.688128,0.644096 +253,0.0001,0.765952,0.787456,0.848896,0.831488 +509,0.0003,0.514048,0.736256,0.765952,0.800768 +1021,0.0004,0.766976,0.837632,0.8704,0.893952 +2045,0.0018,0.559104,0.905216,0.823296,0.812032 +4093,0.0017,0.571392,0.934912,1.27386,0.758784 +8189,0.0032,0.764928,1.01171,0.8448,0.792576 +16381,0.0066,0.789504,1.05882,1.00762,1.01888 +32765,0.0155,1.27386,1.37421,1.12128,1.44998 +65533,0.0368,1.34554,1.68653,1.60768,1.52883 +131069,0.7667,2.31629,2.56717,2.61018,3.24301 +262141,1.1736,4.3008,4.34483,4.48512,4.92442 +524285,2.3438,7.77728,7.40762,7.58579,8.13568 +1048573,4.6829,14.6514,14.466,14.3555,14.423 +2097149,10.7575,29.0048,28.6956,27.69,27.7381 +4194301,18.847,56.8607,54.7912,53.3146,53.8788 +8388605,36.2578,114.012,109.022,105.8,104.656 +16777213,76.5701,229.024,216.979,211.224,208.333 +33554429,147.126,460.846,450.109,421.934,413.945 +67108861,295.761,926.313,874.487,848.385,842.82 +13,0.0001,0.683008,0.863232,0.915456,0.892928 +29,0.0001,0.489472,0.872448,0.925696,0.75776 +61,0.0001,0.495616,0.830464,0.745472,0.744448 +125,0.0001,0.58368,0.766976,0.765952,0.85504 +253,0.0002,0.526336,0.763904,0.736256,0.644096 +509,0.0003,0.52736,0.791552,0.770048,0.657408 +1021,0.0004,0.549888,0.900096,0.797696,0.740352 +2045,0.0009,0.623616,0.869376,0.715776,0.704512 +4093,0.0016,0.651264,0.856064,0.8192,0.776192 +8189,0.0034,0.968704,0.948224,0.850944,0.821248 +16381,0.0065,0.781312,1.06189,0.971776,0.935936 +32765,0.0171,1.12026,1.29331,1.12026,1.09466 +65533,0.0373,1.44384,1.72851,1.53088,1.42131 +131069,0.5858,2.2999,2.72486,2.36851,3.01261 +262141,1.2024,4.2711,4.04275,5.0903,4.85478 +524285,2.3419,7.96262,7.93805,7.91757,8.3753 +1048573,4.8412,14.9228,14.5889,14.3892,15.1521 +2097149,8.8755,29.5557,28.2819,27.6797,28.0381 +4194301,17.9899,57.2867,55.7926,53.6535,52.5251 +8388605,37.0592,113.937,109.9,105.266,105.69 +16777213,77.5191,228.341,221.976,210.902,210.543 +33554429,154.296,460.792,437.357,419.465,421.574 +67108861,292.65,928.72,890.806,852.791,843.017 +13,0.0001,0.722944,0.84992,0.917504,1.25542 +29,0.0002,0.494592,0.763904,0.881664,0.821248 +61,0.0002,0.49664,0.856064,0.8704,1.35885 +125,0.0001,0.46592,0.826368,0.638976,0.488448 +253,0.0002,0.456704,0.775168,0.744448,0.70656 +509,0.0002,0.52736,0.77824,0.785376,0.72704 +1021,0.0004,0.559104,0.816128,0.77312,0.689152 +2045,0.0008,0.564224,0.884736,1.11104,0.764928 +4093,0.0016,0.601088,0.879616,0.93184,0.770048 +8189,0.0032,0.67072,0.950272,1.24928,0.791552 +16381,0.0068,0.776192,1.06394,0.941056,0.953344 +32765,0.0163,1.15098,1.21037,1.05779,1.06803 +65533,0.0366,1.47456,1.70906,2.12275,1.55853 +131069,0.583,2.3081,2.46682,2.53235,3.54714 +262141,1.8402,4.4288,4.03763,4.53734,5.0391 +524285,2.4069,7.9319,7.91654,8.18381,8.34662 +1048573,4.9144,14.9207,14.9463,14.3165,14.6381 +2097149,9.5516,29.1072,28.5071,27.5528,27.2292 +4194301,17.8932,57.4054,55.3861,53.5204,53.9382 +8388605,36.8863,114.287,110.211,105.071,105.814 +16777213,79.3128,228.497,216.634,209.277,210.171 +33554429,146.647,459.996,438.343,422.381,419.549 +67108861,293.059,928.093,877.777,846.65,843.122 +13,0.0001,0.616448,0.602112,0.612352,0.587776 +29,0.0001,0.474112,0.607232,0.628736,0.77312 +61,0.0001,0.775168,0.822272,0.836608,0.75776 +125,0.0001,0.510976,0.818176,0.815104,0.99328 +253,0.0002,0.482304,0.776192,0.77824,0.751616 +509,0.0003,0.505856,0.82432,0.8192,0.789504 +1021,0.0004,0.509952,0.856064,0.842752,0.735232 +2045,0.0009,0.800768,0.841728,1.34656,0.812032 +4093,0.0016,0.754688,0.904192,0.917504,0.796672 +8189,0.0031,0.6912,0.996352,0.903168,0.872448 +16381,0.0064,1.21446,1.02502,0.9216,0.90624 +32765,0.0151,1.15814,1.29229,1.13459,1.07827 +65533,0.0369,1.51347,1.69472,1.61997,1.51347 +131069,0.5857,2.29069,2.96448,2.48627,3.46829 +262141,1.2045,4.27418,4.03149,4.44621,4.92339 +524285,2.3519,7.71174,7.48646,7.79162,8.00358 +1048573,4.6849,14.8132,14.635,14.7722,14.7456 +2097149,9.1005,28.6853,28.545,27.6685,27.8723 +4194301,17.85,57.1853,55.9903,53.7457,53.1395 +8388605,37.1874,114.708,110.36,105.495,105.419 +16777213,73.0974,227.478,219.828,209.878,209.772 +33554429,147.854,461.738,434.499,421.541,417.256 +67108861,302.546,923.004,894.084,848.086,843.189 +13,0.0001,0.464896,0.565248,0.610304,0.595968 +29,0.0001,0.48128,0.863232,0.759808,0.807936 +61,0.0001,0.65024,0.712704,0.75264,0.758784 +125,0.0001,0.70656,0.769024,0.811008,0.658432 +253,0.0002,0.64,0.789504,0.954368,0.930816 +509,0.0004,0.53248,0.801792,0.718848,0.780288 +1021,0.0004,0.521216,0.811008,0.792576,0.763904 +2045,0.0008,0.776192,0.873472,0.820224,0.905216 +4093,0.0016,0.565248,0.935936,0.755712,0.83456 +8189,0.0031,0.717824,1.0752,0.877568,0.87552 +16381,0.0061,0.743424,1.38035,0.995328,1.00147 +32765,0.0312,0.971776,1.3865,1.32198,1.08851 +65533,0.0379,1.54317,1.69062,1.51859,1.57184 +131069,0.6006,2.29888,2.50266,2.6112,3.14778 +262141,1.1724,4.30285,4.07552,4.51994,4.94182 +524285,2.342,7.84077,7.61446,8.19917,9.16378 +1048573,4.7492,14.5623,14.3514,14.379,15.1788 +2097149,8.8705,28.4754,28.2194,27.4903,27.5333 +4194301,17.915,57.6809,56.2278,53.7713,53.4047 +8388605,35.7968,114.032,110.542,105.364,105.524 +16777213,71.4278,228.018,218.227,211.703,208.867 +33554429,151.267,461.417,440.844,425.694,419.456 +67108861,290.357,920.728,876.077,845.9,840.687 +13,0,0.539648,0.776192,0.932864,0.881664 +29,0,0.42496,0.828416,1.58618,0.832512 +61,0.0001,0.489472,0.759808,0.743424,0.748544 +125,0.0001,0.49664,0.769024,0.832512,0.772096 +253,0.0001,0.516096,0.785408,0.78336,0.746496 +509,0.0002,0.529408,0.807936,0.882688,0.750592 +1021,0.0005,0.664576,0.801792,0.786432,0.69632 +2045,0.0009,0.564224,0.883712,1.10899,0.77824 +4093,0.0016,0.697344,0.86528,1.1223,0.832512 +8189,0.0031,0.7424,0.996352,0.821248,0.887808 +16381,0.0062,1.03424,1.11718,1.1479,0.914432 +32765,0.015,0.950272,1.3056,1.21856,1.14586 +65533,0.0353,1.65786,2.05824,1.52166,1.47763 +131069,0.5856,2.41869,2.47091,2.68288,3.12934 +262141,1.169,4.42163,4.09088,4.42778,5.21216 +524285,2.344,7.76192,7.40454,7.80493,8.01485 +1048573,4.6836,14.6954,14.7999,14.4415,14.8705 +2097149,9.4595,29.1615,28.7427,26.9312,27.5743 +4194301,19.3743,57.6174,55.7322,53.4764,53.7027 +8388605,39.4691,113.578,109.38,106.177,105.175 +16777213,73.2943,228.831,220.656,209.176,210.189 +33554429,145.39,458.603,433.133,421.374,420.331 +67108861,295.874,924.959,892.641,847.493,840.953 +13,0.0001,0.72192,0.915456,0.71168,0.718848 +29,0.0001,0.695296,0.748544,0.86016,0.83968 +61,0.0001,0.49664,1.22061,0.771072,0.74752 +125,0.0001,0.630784,0.63488,0.772096,0.731136 +253,0.0002,0.523232,0.820224,0.781312,1.01274 +509,0.0003,0.536576,0.780288,0.784384,0.7168 +1021,0.0004,0.571392,0.832512,0.794624,0.77312 +2045,0.0007,0.57856,0.868352,0.776192,1.33632 +4093,0.0016,0.564224,0.892928,0.842752,0.774144 +8189,0.003,0.87552,0.969728,0.884736,0.881664 +16381,0.0065,0.932864,1.04448,1.00045,0.949248 +32765,0.016,1.18784,1.29024,1.17248,1.14688 +65533,0.037,1.49606,1.69062,1.52781,1.51757 +131069,0.8305,2.33677,2.59072,2.59174,3.1017 +262141,1.1701,4.84147,4.09395,4.49741,5.14458 +524285,2.342,8.05069,7.77114,7.80288,8.68557 +1048573,6.1692,15.0784,14.6309,14.3196,14.5592 +2097149,9.0122,29.0857,28.2481,27.4463,27.7094 +4194301,20.5265,57.0368,54.9519,53.2654,54.3908 +8388605,35.7366,113.334,109.565,106.153,105.822 +16777213,74.9816,229.387,217.356,209.768,209.488 +33554429,147.569,462.149,438.997,424.928,419.176 +67108861,297.038,929.669,875.64,849.749,841.1 +13,0.0001,0.602112,0.896,0.929792,0.848896 +29,0.0001,0.480256,0.748544,0.868352,0.872448 +61,0.0003,0.555008,0.751616,0.804864,0.760832 +125,0.0001,0.512,0.800768,0.790528,0.744448 +253,0.0001,0.512,0.786432,0.779264,0.759808 +509,0.0002,0.841728,0.784384,0.80384,0.76288 +1021,0.0008,0.582656,0.802816,0.93184,0.673792 +2045,0.0022,0.559104,0.811008,0.77312,0.708608 +4093,0.0019,0.641024,0.867328,0.800768,0.782336 +8189,0.0031,0.668672,0.963584,0.868352,0.912384 +16381,0.0066,0.866304,1.10074,0.965632,1.2759 +32765,0.0161,1.21344,1.23392,1.13664,1.2841 +65533,0.0401,1.57798,1.78074,1.68858,1.54931 +131069,0.6019,2.5897,2.46989,3.67411,3.02797 +262141,1.174,4.24653,4.05402,4.41037,4.70938 +524285,2.284,7.96262,7.43117,7.8551,8.10496 +1048573,4.4371,14.9125,14.5797,14.3063,14.4108 +2097149,9.6494,28.7252,28.5245,27.3695,27.2968 +4194301,17.9126,57.6737,56.7439,53.6515,54.3058 +8388605,35.8104,113.744,112.713,106.621,105.571 +16777213,71.513,228.102,220.741,212.604,209.959 +33554429,148.421,461.525,433.989,422.483,421.289 +67108861,290.725,927.742,887.183,849.792,838.573 +13,0.0001,0.617472,0.817152,0.889856,0.881664 +29,0.0001,0.483328,0.820224,0.915456,0.850944 +61,0.0001,0.490496,0.75776,0.899072,1.1264 +125,0.0001,0.69632,0.735232,0.745472,0.657408 +253,0.0134,1.00147,0.761856,0.765952,0.656384 +509,0.0003,0.658432,0.786432,0.7936,0.723968 +1021,0.0005,0.538624,0.736256,0.75264,0.698368 +2045,0.0009,0.81408,0.836608,0.76288,0.7168 +4093,0.0017,0.589824,0.912384,0.806912,0.713728 +8189,0.0031,0.823296,0.935936,1.17453,0.818176 +16381,0.0066,0.764928,1.05984,0.9984,0.943104 +32765,0.0157,0.950272,1.27795,1.1776,1.1305 +65533,0.0369,1.58822,2.38592,1.54624,1.47763 +131069,0.5851,2.64294,2.49037,2.70746,3.25427 +262141,1.1675,4.50867,4.05811,4.54349,4.64077 +524285,2.3435,7.88378,7.6544,7.71686,8.19814 +1048573,4.4372,15.0057,14.2746,14.4108,14.5398 +2097149,9.5024,29.0847,28.6249,27.4196,27.4483 +4194301,17.9188,58.5032,55.8848,53.3484,55.4097 +8388605,38.2899,113.363,110.649,105.095,104.854 +16777213,73.5611,228.736,217.477,211.885,209.473 +33554429,148.439,459.58,441.765,422.898,419.764 +67108861,291.573,922.073,880.681,846.804,844.241 +13,0.0001,0.507904,0.882688,0.894976,0.903168 +29,0.0002,0.590848,1.00864,0.922624,0.868352 +61,0.0001,0.493568,0.886784,0.610304,0.600064 +125,0.0001,0.605184,0.759808,0.66048,0.575488 +253,0.0001,0.529408,0.621568,0.608256,0.61952 +509,0.0003,0.525312,0.800768,0.789504,0.765952 +1021,0.0004,0.545792,0.8192,0.779264,1.05984 +2045,0.0008,0.562176,0.86528,0.794624,0.769024 +4093,0.0016,0.596992,0.896,0.823296,0.827392 +8189,0.003,0.644096,0.966656,1.00147,0.84992 +16381,0.0068,0.78848,1.13152,0.959488,0.9216 +32765,0.0158,0.979968,1.29126,1.14074,1.1264 +65533,0.035,1.5913,2.1289,1.50938,1.51962 +131069,0.5851,2.39718,2.54157,3.07507,3.17338 +262141,1.1737,4.3735,4.1001,4.65818,4.98483 +524285,2.3423,7.70253,7.49875,7.64928,8.22784 +1048573,4.6835,15.0385,14.7743,14.293,14.3596 +2097149,9.0788,29.1318,28.6812,28.2419,27.4227 +4194301,19.0684,58.2001,56.278,53.0862,53.8194 +8388605,39.2019,114.311,109.301,104.978,105.791 +16777213,79.8585,227.699,220.452,210.384,210.829 +33554429,145.337,459.469,433.338,424.153,421.685 +67108861,295.109,925.516,889.916,848.186,844.734 +13,0,0.715776,0.896,0.877568,0.857088 +29,0.0002,0.641024,0.743424,0.922624,0.7936 +61,0.0002,0.45056,0.743424,0.89088,0.790528 +125,0.0003,0.53248,0.88064,0.923648,0.8448 +253,0.0002,0.866304,0.88064,0.866304,0.873472 +509,0.0002,0.797696,0.65024,0.602112,0.7168 +1021,0.0005,0.515072,0.667648,0.608256,0.592896 +2045,0.0009,0.692224,0.820224,0.697344,0.809984 +4093,0.0016,0.561152,0.937984,0.80384,0.825344 +8189,0.0032,0.796672,1.30253,0.864256,0.837632 +16381,0.0067,0.89088,1.10182,0.958464,0.954368 +32765,0.0163,1.17555,1.30662,1.17043,1.11411 +65533,0.0366,1.36192,1.71827,1.54624,1.54829 +131069,0.5852,2.40538,2.42995,2.62042,3.02592 +262141,1.1682,4.30592,4.24448,4.42368,4.96538 +524285,2.3546,7.88378,7.44346,7.61037,8.11008 +1048573,4.6842,15.616,14.6022,14.4517,14.463 +2097149,9.0196,29.1246,28.6515,27.1575,27.435 +4194301,20.6878,58.198,55.081,54.4328,53.5101 +8388605,40.7543,114.47,110.001,106.355,106.642 +16777213,76.0053,228.861,216.704,208.25,209.373 +33554429,147.5,461.814,442.775,424.623,420.329 +67108861,297.422,927.161,877.692,848.601,844.865 +13,0,0.63488,0.777216,0.79872,0.677888 +29,0,0.623616,0.801792,0.826368,0.813056 +61,0.0001,0.485376,0.800768,0.753664,0.748544 +125,0.0001,0.59392,0.812032,0.745472,0.642048 +253,0.0002,0.801792,0.781312,1.08544,0.739328 +509,0.0002,0.613376,0.792576,1.16531,0.749568 +1021,0.0004,0.549888,0.801792,0.795648,0.77824 +2045,0.0008,0.62464,0.857088,1.10592,0.776192 +4093,0.0017,0.595968,0.892928,0.807936,0.787456 +8189,0.0031,0.812032,1.04346,0.83456,0.835584 +16381,0.0065,0.891904,1.08134,0.939008,1.06701 +32765,0.0159,0.950272,1.26976,1.1305,1.14176 +65533,0.0345,1.54726,1.88723,1.53702,1.54522 +131069,0.5828,2.5303,2.47808,3.60243,3.11091 +262141,1.1748,4.6551,4.03251,4.54349,5.34426 +524285,2.2175,7.90323,8.33843,8.0937,8.27494 +1048573,4.8051,14.8623,14.6831,14.2848,14.8224 +2097149,10.7478,29.1461,28.4099,27.9276,28.0873 +4194301,17.8688,57.1658,55.1967,54.3416,54.0897 +8388605,37.3524,113.196,109.802,105.602,105.304 +16777213,71.6876,228.731,223.149,206.412,209.501 +33554429,148.09,460.43,432.338,422.697,422.501 +67108861,289.631,931.371,883.339,933.574,1285.29 +13,0.0001,0.472064,0.565248,0.565248,0.516096 +29,0.0002,0.781312,0.499712,0.534528,0.565248 +61,0.0002,0.55296,0.616448,0.586752,0.5376 +125,0.0003,0.457728,0.50688,0.52224,0.529408 +253,0.0003,0.519168,0.736256,0.592896,1.10387 +509,0.0007,0.561152,0.564224,2.8631,0.475136 +1021,0.0016,0.497664,0.58368,0.523264,0.55296 +2045,0.001,0.589824,0.673792,0.596992,0.551936 +4093,0.0017,0.598016,0.992256,1.19194,0.910336 +8189,0.0034,0.659456,1.09056,0.986112,0.896 +16381,0.0077,0.90624,1.17043,1.3015,1.01478 +32765,0.0171,0.98816,1.34758,1.28819,1.11309 +65533,0.0347,1.32813,1.48787,1.31789,1.29946 +131069,0.6193,2.18317,2.54464,2.68902,3.08224 +262141,1.1692,4.88243,4.13389,4.61824,5.47635 +524285,2.4091,7.92371,8.47462,8.38656,8.31795 +1048573,6.1628,14.8951,14.6698,14.5418,14.3636 +2097149,9.8537,28.8553,28.5952,27.265,27.1084 +4194301,18.9951,57.9604,55.8029,54.2454,54.2321 +8388605,43.4996,113.812,110.986,106.376,105.519 +16777213,72.8791,229.234,217.446,213.45,211.189 +33554429,147.307,461.339,446.061,424.862,420.134 +67108861,307.455,942.665,881.403,853.031,843.881 +13,0.0001,0.728064,0.850944,0.86016,0.97792 +29,0.0001,0.945152,0.884736,0.93696,0.89088 +61,0.0001,0.448512,1.0793,0.729088,0.866304 +125,0.0001,0.52736,0.858112,0.9216,0.80896 +253,0.0001,0.525312,0.759808,0.6912,0.674816 +509,0.0002,0.530432,0.795648,1.17555,0.764928 +1021,0.0004,0.65536,0.774144,0.649216,0.707584 +2045,0.0008,1.06803,0.856064,0.772096,0.715776 +4093,0.0016,0.59392,0.840704,0.817152,0.764928 +8189,0.0034,0.73216,1.12845,0.83968,0.743424 +16381,0.0065,0.941056,1.07725,0.93696,0.852992 +32765,0.016,0.97792,1.30458,1.1305,1.12026 +65533,0.0368,1.44077,1.76742,1.47866,2.16269 +131069,0.5861,2.34701,2.48115,2.80166,3.14266 +262141,1.1757,4.43085,4.06528,4.53632,5.51322 +524285,2.348,8.00154,7.7568,8.00461,8.46029 +1048573,4.4382,14.7999,14.6002,14.3176,15.145 +2097149,9.062,29.8588,28.3197,26.8687,29.2864 +4194301,21.4586,57.6963,56.9539,53.3586,53.4712 +8388605,39.4811,113.825,109.577,107.213,108.667 +16777213,75.9443,229.766,223.434,210.725,212.412 +33554429,160.284,462.002,433.927,423.113,423.509 +67108861,304.779,931.943,894.306,849.254,848.602 +13,0.0001,0.761856,0.887808,0.842752,0.882688 +29,0.0003,0.653312,0.934912,0.8704,0.841728 +61,0.0002,0.6912,0.904192,0.925696,0.893952 +125,0.0001,0.505856,0.57856,0.557056,0.56832 +253,0.0002,0.50688,0.64,0.610304,0.55808 +509,0.0003,0.717824,0.780288,1.61997,0.764928 +1021,0.0004,0.6656,0.7936,0.898048,0.761856 +2045,0.0009,0.755712,0.822272,0.811008,0.75264 +4093,0.0016,0.856064,0.856064,0.749568,0.96256 +8189,0.003,0.646144,0.958464,0.869376,0.83456 +16381,0.0064,0.785408,1.3271,1.04448,0.93184 +32765,0.0151,0.992256,1.29536,1.78995,1.10182 +65533,0.0358,1.4633,1.71725,1.64147,1.83706 +131069,0.6004,2.29069,2.67878,2.50061,3.00339 +262141,1.1713,4.61005,4.0233,4.33152,5.45997 +524285,2.3539,7.79162,7.84179,8.27392,8.73882 +1048573,4.7692,14.8367,14.508,14.846,14.9289 +2097149,8.875,29.4615,29.8004,27.8477,28.1139 +4194301,19.8345,58.497,55.7732,53.5634,52.9275 +8388605,41.987,112.062,111.204,105.08,106.961 +16777213,80.0573,228.746,219.277,211.736,211.198 +33554429,153.808,466.483,446.06,425.632,423.478 +67108861,302.836,936.323,883.714,851.393,842.249 +13,0.0001,0.626688,0.899072,0.643072,0.724992 +29,0.0003,0.603136,0.749568,0.671744,0.991232 +61,0.0001,0.697344,0.889856,0.877568,0.884736 +125,0.0001,0.679936,0.758784,0.607232,0.873472 +253,0.0002,0.507904,0.57344,0.627712,0.761856 +509,0.0003,0.61952,0.729088,0.695296,0.722944 +1021,0.0005,0.565248,0.673792,0.779264,0.759808 +2045,0.0008,0.571392,0.806912,0.776192,0.760832 +4093,0.0017,0.77312,1.28819,0.772096,0.713728 +8189,0.0045,0.724992,1.08851,1.06291,0.78848 +16381,0.0114,0.794624,1.29434,0.935936,0.978944 +32765,0.015,0.969728,1.44486,1.14278,1.17555 +65533,0.037,1.45203,1.66298,1.78074,1.66298 +131069,0.5828,2.31936,2.54259,2.63578,3.52666 +262141,1.1735,4.28749,4.33152,4.5056,5.08006 +524285,2.4096,7.82746,7.41274,7.77728,8.2903 +1048573,4.9298,14.6401,14.7958,14.2264,16.341 +2097149,10.0947,29.8363,27.7719,26.8698,27.7094 +4194301,20.711,56.6405,56.7828,53.6003,54.101 +8388605,41.9901,115.152,109.137,106.562,105.925 +16777213,78.7017,230.036,221.88,210.355,210.678 +33554429,149.64,463.304,435.279,427.601,423.485 +67108861,297.221,932.031,892.272,853.192,847.609 +13,0.0001,0.577536,0.858112,0.728064,0.842752 +29,0.0001,0.71168,0.745472,0.944128,0.892928 +61,0.0001,0.495616,0.771072,0.933888,0.610304 +125,0.0001,0.856064,0.620544,0.6144,0.943104 +253,0.0002,0.514048,0.74752,0.776192,0.78848 +509,0.0002,0.528384,0.955392,0.801792,0.73728 +1021,0.0004,0.60416,0.84992,0.797696,0.684032 +2045,0.0008,0.536576,0.910336,0.845824,0.811008 +4093,0.0017,0.738304,1.01581,0.782336,0.761856 +8189,0.0031,0.710656,0.96256,0.8192,0.816128 +16381,0.0064,0.755712,1.0711,1.10592,0.980992 +32765,0.0147,1.63738,1.31072,1.22266,1.11411 +65533,0.0349,1.54112,1.73261,1.53088,1.52166 +131069,0.5852,2.39309,2.44941,2.57741,2.96038 +262141,1.5558,4.31411,4.3305,4.49331,5.3545 +524285,2.3545,7.8848,7.77728,8.4265,8.27392 +1048573,4.8387,15.3385,15.5054,14.8132,14.3882 +2097149,9.2982,29.1963,29.4349,27.7545, diff --git a/Project2-Stream-Compaction/data/Scan_data/data_nonpow2_faster/cpu.csv b/Project2-Stream-Compaction/data/Scan_data/data_nonpow2_faster/cpu.csv new file mode 100644 index 0000000..efeeafd --- /dev/null +++ b/Project2-Stream-Compaction/data/Scan_data/data_nonpow2_faster/cpu.csv @@ -0,0 +1,895 @@ +13,0.0002 +29,0 +61,0.0001 +125,0.0001 +253,0.0002 +509,0.0006 +1021,0.0008 +2045,0.0024 +4093,0.0027 +8189,0.0042 +16381,0.0105 +32765,0.0207 +65533,0.0395 +131069,0.7155 +262141,1.3405 +524285,2.6065 +1048573,5.1172 +2097149,9.4513 +4194301,18.5157 +8388605,39.8544 +16777213,77.2047 +33554429,149.632 +67108861,286.12 +13,0.0001 +29,0.0001 +61,0.0002 +125,0.0002 +253,0.0004 +509,0.0006 +1021,0.0008 +2045,0.0197 +4093,0.0022 +8189,0.0037 +16381,0.0167 +32765,0.0523 +65533,0.0401 +131069,0.6029 +262141,1.216 +524285,2.3575 +1048573,4.6846 +2097149,11.1873 +4194301,18.7532 +8388605,37.6479 +16777213,77.5991 +33554429,144.806 +67108861,288.074 +13,0.0001 +29,0.0002 +61,0.0001 +125,0.0003 +253,0.0004 +509,0.0007 +1021,0.0006 +2045,0.0018 +4093,0.0041 +8189,0.0228 +16381,0.0082 +32765,0.018 +65533,0.0376 +131069,0.6 +262141,1.1754 +524285,2.3429 +1048573,4.9952 +2097149,9.7312 +4194301,20.5255 +8388605,36.7543 +16777213,77.2401 +33554429,148.738 +67108861,288.34 +13,0.0001 +29,0.0002 +61,0.0001 +125,0.0003 +253,0.0005 +509,0.0005 +1021,0.0008 +2045,0.0009 +4093,0.002 +8189,0.0036 +16381,0.0259 +32765,0.02 +65533,0.0407 +131069,0.6192 +262141,1.2133 +524285,2.3559 +1048573,4.4386 +2097149,9.6248 +4194301,18.9742 +8388605,39.026 +16777213,74.2964 +33554429,147.765 +67108861,288.013 +13,0.0001 +29,0.0001 +61,0.0002 +125,0.0001 +253,0.0002 +509,0.0007 +1021,0.0011 +2045,0.0022 +4093,0.0026 +8189,0.0041 +16381,0.0082 +32765,0.0407 +65533,0.0389 +131069,0.5861 +262141,1.1771 +524285,2.3564 +1048573,4.4401 +2097149,9.1967 +4194301,18.1289 +8388605,39.0477 +16777213,73.7846 +33554429,145.945 +67108861,295.301 +13,0.0001 +29,0.0001 +61,0.0003 +125,0.0002 +253,0.0005 +509,0.0005 +1021,0.001 +2045,0.0014 +4093,0.004 +8189,0.0039 +16381,0.0082 +32765,0.0203 +65533,0.039 +131069,0.9045 +262141,1.2119 +524285,2.3415 +1048573,4.4805 +2097149,11.0422 +4194301,17.9776 +8388605,39.1168 +16777213,75.6296 +33554429,143.249 +67108861,287.915 +13,0.0001 +29,0.0003 +61,0.0003 +125,0.0004 +253,0.0003 +509,0.0007 +1021,0.0005 +2045,0.0022 +4093,0.0041 +8189,0.0065 +16381,0.0277 +32765,0.0202 +65533,0.0363 +131069,0.5996 +262141,1.2095 +524285,2.3557 +1048573,4.7902 +2097149,9.1747 +4194301,19.2566 +8388605,36.3212 +16777213,78.8757 +33554429,147.071 +67108861,291.962 +13,0.0001 +29,0.0001 +61,0.0003 +125,0.0003 +253,0.0003 +509,0.0004 +1021,0.001 +2045,0.002 +4093,0.0028 +8189,0.0037 +16381,0.0093 +32765,0.0196 +65533,0.0562 +131069,0.5838 +262141,1.2042 +524285,2.3565 +1048573,4.4383 +2097149,9.2389 +4194301,18.0021 +8388605,37.4105 +16777213,74.9669 +33554429,149.511 +67108861,289.986 +13,0.0001 +29,0.0001 +61,0.0002 +125,0.0001 +253,0.0003 +509,0.0005 +1021,0.0013 +2045,0.0008 +4093,0.0041 +8189,0.0035 +16381,0.0166 +32765,0.0179 +65533,0.0425 +131069,0.5874 +262141,1.1768 +524285,2.2765 +1048573,4.5344 +2097149,9.5215 +4194301,19.2017 +8388605,39.4765 +16777213,73.7667 +33554429,147.964 +67108861,289.198 +13,0.0001 +29,0.0001 +61,0.0003 +125,0.0003 +253,0.0004 +509,0.0007 +1021,0.0007 +2045,0.0009 +4093,0.0021 +8189,0.0113 +16381,0.0083 +32765,0.0181 +65533,0.0399 +131069,0.5837 +262141,1.1707 +524285,2.3432 +1048573,4.5677 +2097149,9.5429 +4194301,19.0753 +8388605,38.4607 +16777213,72.4156 +33554429,149.891 +67108861,295.535 +13,0.0001 +29,0.0003 +61,0.0001 +125,0.0001 +253,0.0003 +509,0.0006 +1021,0.0005 +2045,0.0023 +4093,0.002 +8189,0.0042 +16381,0.0101 +32765,0.0205 +65533,0.0387 +131069,0.5835 +262141,1.1694 +524285,2.4088 +1048573,4.5664 +2097149,8.979 +4194301,18.0382 +8388605,41.8273 +16777213,74.036 +33554429,145.586 +67108861,293.193 +13,0.0003 +29,0.0003 +61,0.0002 +125,0.0003 +253,0.0003 +509,0.0007 +1021,0.0006 +2045,0.0009 +4093,0.002 +8189,0.0038 +16381,0.0077 +32765,0.019 +65533,0.0396 +131069,0.6013 +262141,1.2559 +524285,2.4264 +1048573,4.4386 +2097149,8.9873 +4194301,18.8244 +8388605,41.9394 +16777213,74.1476 +33554429,148.206 +67108861,295.783 +13,0.0001 +29,0.0002 +61,0.0001 +125,0.0002 +253,0.0003 +509,0.0005 +1021,0.0009 +2045,0.002 +4093,0.0039 +8189,0.0038 +16381,0.0078 +32765,0.02 +65533,0.0402 +131069,0.5905 +262141,1.177 +524285,2.3427 +1048573,4.6843 +2097149,9.4534 +4194301,18.0166 +8388605,40.1057 +16777213,73.6937 +33554429,150.986 +67108861,296.562 +13,0.0001 +29,0.0001 +61,0.0001 +125,0.0002 +253,0.0002 +509,0.0004 +1021,0.0006 +2045,0.0021 +4093,0.002 +8189,0.0036 +16381,0.0088 +32765,0.0191 +65533,0.0371 +131069,0.6032 +262141,1.3339 +524285,2.3411 +1048573,4.4394 +2097149,9.8516 +4194301,18.9733 +8388605,39.1131 +16777213,73.737 +33554429,149.902 +67108861,297.692 +13,0.0001 +29,0.0001 +61,0.0001 +125,0.0003 +253,0.0003 +509,0.0005 +1021,0.0011 +2045,0.0021 +4093,0.004 +8189,0.0054 +16381,0.0085 +32765,0.0175 +65533,0.041 +131069,0.6038 +262141,1.1759 +524285,2.344 +1048573,4.6835 +2097149,9.2438 +4194301,19.2676 +8388605,40.4245 +16777213,72.5093 +33554429,146.225 +67108861,296.254 +13,0.0001 +29,0.0001 +61,0.0001 +125,0.0003 +253,0.0003 +509,0.0006 +1021,0.0004 +2045,0.0009 +4093,0.0019 +8189,0.0042 +16381,0.015 +32765,0.0183 +65533,0.0358 +131069,0.5836 +262141,1.1774 +524285,2.3747 +1048573,4.4388 +2097149,10.1363 +4194301,18.3547 +8388605,35.9609 +16777213,72.0274 +33554429,146.136 +67108861,295.565 +13,0 +29,0.0001 +61,0.0001 +125,0.0002 +253,0.0004 +509,0.0005 +1021,0.001 +2045,0.0019 +4093,0.0041 +8189,0.0036 +16381,0.0101 +32765,0.0184 +65533,0.0406 +131069,0.5999 +262141,1.1704 +524285,2.344 +1048573,4.4391 +2097149,9.185 +4194301,18.0633 +8388605,39.46 +16777213,72.8385 +33554429,144.21 +67108861,291.162 +13,0.0001 +29,0.0001 +61,0.0002 +125,0.0003 +253,0.0004 +509,0.0007 +1021,0.0012 +2045,0.0018 +4093,0.002 +8189,0.0042 +16381,0.0347 +32765,0.0308 +65533,0.0415 +131069,0.6025 +262141,1.1715 +524285,2.3575 +1048573,4.4384 +2097149,10.0563 +4194301,18.5013 +8388605,36.5267 +16777213,73.8542 +33554429,147.252 +67108861,290.144 +13,0.0001 +29,0.0001 +61,0.0002 +125,0.0003 +253,0.0003 +509,0.0007 +1021,0.0012 +2045,0.0015 +4093,0.0041 +8189,0.0034 +16381,0.009 +32765,0.0198 +65533,0.0415 +131069,0.5861 +262141,1.1718 +524285,2.3548 +1048573,4.441 +2097149,9.8416 +4194301,18.8915 +8388605,36.5757 +16777213,75.6577 +33554429,149.245 +67108861,299.695 +13,0 +29,0.0001 +61,0.0001 +125,0.0002 +253,0.0003 +509,0.0006 +1021,0.0012 +2045,0.0021 +4093,0.002 +8189,0.0237 +16381,0.0085 +32765,0.0194 +65533,0.0383 +131069,0.5864 +262141,1.1701 +524285,2.4096 +1048573,4.9552 +2097149,8.875 +4194301,19.5579 +8388605,42.3665 +16777213,77.9639 +33554429,147.168 +67108861,294.146 +13,0 +29,0.0001 +61,0.0001 +125,0.0001 +253,0.0002 +509,0.0006 +1021,0.0012 +2045,0.0022 +4093,0.0043 +8189,0.0037 +16381,0.008 +32765,0.0182 +65533,0.0494 +131069,0.6014 +262141,1.1716 +524285,2.5048 +1048573,4.6846 +2097149,10.4857 +4194301,18.0219 +8388605,37.6827 +16777213,74.2777 +33554429,151.481 +67108861,294.536 +13,0.0001 +29,0.0001 +61,0.0002 +125,0.0004 +253,0.0002 +509,0.0004 +1021,0.0005 +2045,0.0008 +4093,0.0172 +8189,0.0037 +16381,0.0101 +32765,0.0704 +65533,0.0395 +131069,0.5848 +262141,1.1699 +524285,2.4247 +1048573,4.7106 +2097149,8.9276 +4194301,18.4238 +8388605,36.0786 +16777213,73.0519 +33554429,148.167 +67108861,290.132 +13,0.0001 +29,0.0001 +61,0.0001 +125,0.0001 +253,0.0004 +509,0.0006 +1021,0.0005 +2045,0.0021 +4093,0.0039 +8189,0.0224 +16381,0.0095 +32765,0.0268 +65533,0.0382 +131069,0.5843 +262141,1.2131 +524285,2.4084 +1048573,4.4411 +2097149,10.4417 +4194301,19.0591 +8388605,36.1955 +16777213,72.6195 +33554429,143.243 +67108861,293.861 +13,0.0001 +29,0.0001 +61,0.0002 +125,0.0002 +253,0.0003 +509,0.0004 +1021,0.0007 +2045,0.0017 +4093,0.0028 +8189,0.0038 +16381,0.0288 +32765,0.0194 +65533,0.0403 +131069,0.8013 +262141,1.1721 +524285,2.4107 +1048573,4.4379 +2097149,9.8797 +4194301,17.9694 +8388605,38.817 +16777213,72.0237 +33554429,145.302 +67108861,299.609 +13,0.0001 +29,0.0001 +61,0.0002 +125,0.0002 +253,0.0003 +509,0.0005 +1021,0.0006 +2045,0.0029 +4093,0.004 +8189,0.0038 +16381,0.0114 +32765,0.0207 +65533,0.0401 +131069,0.6001 +262141,1.2581 +524285,2.3416 +1048573,4.6841 +2097149,10.1255 +4194301,17.9687 +8388605,37.8592 +16777213,72.6711 +33554429,147.99 +67108861,289.667 +13,0.0001 +29,0.0001 +61,0.0002 +125,0.0002 +253,0.0003 +509,0.0004 +1021,0.0008 +2045,0.0019 +4093,0.0018 +8189,0.0036 +16381,0.0081 +32765,0.0396 +65533,0.0375 +131069,0.5832 +262141,1.2105 +524285,2.3278 +1048573,4.6838 +2097149,10.9269 +4194301,17.9404 +8388605,36.3477 +16777213,74.2341 +33554429,151.03 +67108861,291.741 +13,0.0001 +29,0.0002 +61,0.0002 +125,0.0002 +253,0.0003 +509,0.0007 +1021,0.0012 +2045,0.0021 +4093,0.0018 +8189,0.0227 +16381,0.0081 +32765,0.0218 +65533,0.0419 +131069,0.5831 +262141,1.2427 +524285,2.375 +1048573,6.285 +2097149,9.3482 +4194301,18.2841 +8388605,37.8824 +16777213,72.768 +33554429,142.901 +67108861,295.095 +13,0 +29,0.0001 +61,0.0002 +125,0.0002 +253,0.0003 +509,0.0004 +1021,0.0005 +2045,0.0009 +4093,0.0018 +8189,0.0272 +16381,0.0157 +32765,0.0263 +65533,0.0389 +131069,0.5835 +262141,1.211 +524285,2.3608 +1048573,4.4388 +2097149,9.1308 +4194301,18.3634 +8388605,36.6773 +16777213,72.5356 +33554429,145.569 +67108861,291.077 +13,0 +29,0.0001 +61,0.0001 +125,0.0002 +253,0.0003 +509,0.0005 +1021,0.0006 +2045,0.0017 +4093,0.0043 +8189,0.0082 +16381,0.0091 +32765,0.0185 +65533,0.0429 +131069,0.6182 +262141,1.2742 +524285,2.5457 +1048573,4.6836 +2097149,10.7828 +4194301,18.604 +8388605,36.45 +16777213,74.1804 +33554429,153.401 +67108861,295.771 +13,0 +29,0.0003 +61,0.0001 +125,0.0003 +253,0.0004 +509,0.0005 +1021,0.0005 +2045,0.0015 +4093,0.0019 +8189,0.004 +16381,0.0088 +32765,0.0179 +65533,0.0398 +131069,0.5862 +262141,1.2094 +524285,2.6612 +1048573,4.6617 +2097149,9.8657 +4194301,17.9185 +8388605,36.4491 +16777213,75.1842 +33554429,146.058 +67108861,291.519 +13,0 +29,0.0001 +61,0.0001 +125,0.0004 +253,0.0004 +509,0.0006 +1021,0.001 +2045,0.0009 +4093,0.0017 +8189,0.0036 +16381,0.0093 +32765,0.0489 +65533,0.0425 +131069,0.5999 +262141,1.1759 +524285,2.355 +1048573,4.6849 +2097149,10.9665 +4194301,18.2079 +8388605,36.1045 +16777213,75.8846 +33554429,150.392 +67108861,297.739 +13,0 +29,0.0001 +61,0.0003 +125,0.0003 +253,0.0002 +509,0.0006 +1021,0.0005 +2045,0.002 +4093,0.0017 +8189,0.0035 +16381,0.0195 +32765,0.0221 +65533,0.0528 +131069,0.6134 +262141,1.1708 +524285,2.3429 +1048573,4.6851 +2097149,10.2587 +4194301,18.9254 +8388605,35.87 +16777213,72.0266 +33554429,144.637 +67108861,299.955 +13,0.0001 +29,0.0003 +61,0.0002 +125,0.0001 +253,0.0004 +509,0.0007 +1021,0.0006 +2045,0.0022 +4093,0.0031 +8189,0.0054 +16381,0.0093 +32765,0.0729 +65533,0.0401 +131069,0.584 +262141,1.2059 +524285,2.3449 +1048573,4.6862 +2097149,10.7085 +4194301,17.8916 +8388605,39.114 +16777213,75.6986 +33554429,148.869 +67108861,292.921 +13,0 +29,0.0002 +61,0.0003 +125,0.0002 +253,0.0003 +509,0.0005 +1021,0.0008 +2045,0.0009 +4093,0.002 +8189,0.0036 +16381,0.0086 +32765,0.0247 +65533,0.0386 +131069,0.703 +262141,1.2113 +524285,2.6453 +1048573,4.4414 +2097149,10.1897 +4194301,18.364 +8388605,35.9893 +16777213,73.856 +33554429,145.351 +67108861,299.279 +13,0.0001 +29,0.0001 +61,0.0001 +125,0.0001 +253,0.0004 +509,0.0007 +1021,0.0006 +2045,0.002 +4093,0.0018 +8189,0.0036 +16381,0.011 +32765,0.0184 +65533,0.0418 +131069,0.745 +262141,1.2041 +524285,2.3448 +1048573,4.6831 +2097149,11.0187 +4194301,19.5649 +8388605,36.1377 +16777213,74.2854 +33554429,149.065 +67108861,290.403 +13,0.0001 +29,0.0002 +61,0.0002 +125,0.0001 +253,0.0001 +509,0.0006 +1021,0.0005 +2045,0.0017 +4093,0.0021 +8189,0.0041 +16381,0.0079 +32765,0.0235 +65533,0.0384 +131069,0.5855 +262141,1.2037 +524285,2.651 +1048573,4.657 +2097149,10.3594 +4194301,17.9728 +8388605,39.5997 +16777213,73.3796 +33554429,145.412 +67108861,295.047 +13,0.0001 +29,0.0002 +61,0.0002 +125,0.0002 +253,0.0003 +509,0.0007 +1021,0.0012 +2045,0.0009 +4093,0.0018 +8189,0.0036 +16381,0.0081 +32765,0.034 +65533,0.0511 +131069,0.6002 +262141,1.205 +524285,2.4083 +1048573,6.0893 +2097149,9.6079 +4194301,19.989 +8388605,36.051 +16777213,74.5524 +33554429,150.383 +67108861,292.676 +13,0.0001 +29,0.0001 +61,0.0001 +125,0.0002 +253,0.0004 +509,0.0004 +1021,0.0005 +2045,0.0009 +4093,0.004 +8189,0.0173 +16381,0.009 +32765,0.019 +65533,0.0373 +131069,0.6179 +262141,1.2072 +524285,2.3445 +1048573,4.7765 +2097149,10.2836 +4194301,18.3081 +8388605,35.8527 +16777213,72.3619 +33554429,149.23 +67108861,294.532 +13,0 +29,0.0001 +61,0.0001 +125,0.0004 +253,0.0002 +509,0.0005 +1021,0.0004 +2045,0.0009 +4093,0.0041 +8189,0.0038 +16381,0.0288 +32765,0.0261 +65533,0.04 +131069,0.6004 +262141,1.1862 +524285,2.9713 +1048573,4.7385 +2097149,9.7804 +4194301,17.9156 +8388605,39.3194 +16777213,72.4973 diff --git a/Project2-Stream-Compaction/data/Scan_data/data_nonpow2_faster/data.csv b/Project2-Stream-Compaction/data/Scan_data/data_nonpow2_faster/data.csv new file mode 100644 index 0000000..90268e1 --- /dev/null +++ b/Project2-Stream-Compaction/data/Scan_data/data_nonpow2_faster/data.csv @@ -0,0 +1,896 @@ +Array Size,CPU (s),Na‹ve(s),Efficient (s),Shared Memory (s),Thrust (s) +13,0.0002,0.172032,0.093184,0.146432,0.120832 +29,0,0.177152,0.125952,0.271392,0.119808 +61,0.0001,0.307232,0.13824,0.139264,0.132096 +125,0.0001,0.19456,0.151552,0.151552,0.465888 +253,0.0002,0.221184,0.179232,0.229376,0.12288 +509,0.0006,0.211968,0.185344,0.171008,0.139232 +1021,0.0008,0.234464,0.208864,0.1536,0.14336 +2045,0.0024,0.25088,0.226304,0.15664,0.1024 +4093,0.0027,0.267296,0.228384,0.190496,0.128 +8189,0.0042,0.287744,0.331776,0.18944,0.115712 +16381,0.0105,0.386048,0.28976,0.152416,0.128 +32765,0.0207,0.536576,0.31232,0.16224,0.224256 +65533,0.0395,0.65632,0.323584,0.178176,0.188416 +131069,0.7155,1.0537,0.370336,0.18944,0.376544 +262141,1.3405,2.25283,0.44032,0.2304,0.453632 +524285,2.6065,4.23936,0.729088,0.256992,0.318464 +1048573,5.1172,7.98003,1.10896,0.453248,0.52624 +2097149,9.4513,15.7261,2.74637,0.56528,0.8704 +4194301,18.5157,32.8335,3.29872,0.869184,0.729568 +8388605,39.8544,63.3057,6.31706,1.52157,0.745472 +16777213,77.2047,128.479,10.8278,2.81293,1.21651 +33554429,149.632,254.301,29.5578,5.42582,1.85139 +67108861,286.12,513.441,54.1204,10.7981,3.32787 +13,0.0001,0.162816,0.109568,0.201728,0.141312 +29,0.0001,0.310272,0.116736,0.190464,0.14336 +61,0.0002,0.1792,0.139264,0.186368,0.140288 +125,0.0002,0.190464,0.152576,0.188416,0.14848 +253,0.0004,0.18944,0.172032,0.186368,0.150528 +509,0.0006,0.19968,0.198656,0.206848,0.132096 +1021,0.0008,0.208896,0.21504,0.181248,0.212992 +2045,0.0197,0.221184,0.203776,0.200704,0.14336 +4093,0.0022,0.23552,0.22528,0.197632,0.145408 +8189,0.0037,0.268288,0.26624,0.203776,0.149504 +16381,0.0167,0.331776,0.28768,0.257024,0.140256 +32765,0.0523,0.423936,0.306176,0.166912,0.140288 +65533,0.0401,0.617472,0.321536,0.193536,0.149504 +131069,0.6029,1.024,0.463872,0.200704,0.459776 +262141,1.216,2.06848,0.384896,0.217088,0.669056 +524285,2.3575,4.63315,0.744832,0.274272,0.47104 +1048573,4.6846,8.47766,1.35066,0.36704,0.539168 +2097149,11.1873,15.5949,3.00954,0.525056,0.566816 +4194301,18.7532,31.4044,4.18509,0.920032,0.734624 +8388605,37.6479,61.8981,6.65702,1.51242,0.8448 +16777213,77.5991,123.857,15.0646,2.88973,1.19654 +33554429,144.806,257.691,21.2378,5.45654,1.8385 +67108861,288.074,515.017,65.6876,10.9711,3.31923 +13,0.0001,0.181248,0.1024,0.185344,0.131072 +29,0.0002,0.16384,0.136192,0.173056,0.155648 +61,0.0001,0.1792,0.132096,0.181248,0.144384 +125,0.0003,0.146432,0.154624,0.18432,0.14848 +253,0.0004,0.218112,0.177152,0.185344,0.140288 +509,0.0007,0.202752,0.193536,0.3584,0.146432 +1021,0.0006,0.280576,0.212992,0.173056,0.229376 +2045,0.0018,0.218112,0.232448,0.190464,0.13312 +4093,0.0041,0.503808,0.241664,0.156672,0.140288 +8189,0.0228,0.268288,0.403456,0.1536,0.155648 +16381,0.0082,0.330176,0.289792,0.181248,0.152928 +32765,0.018,0.48128,0.303104,0.191488,0.123392 +65533,0.0376,0.647168,0.309952,0.156672,0.139264 +131069,0.6,1.23187,0.357376,0.156192,0.497664 +262141,1.1754,2.28045,0.72192,0.182272,0.3328 +524285,2.3429,3.84717,0.700832,0.297984,0.471392 +1048573,4.9952,7.5505,1.06019,0.38912,0.5064 +2097149,9.7312,15.6122,2.71392,0.56496,0.590368 +4194301,20.5255,31.658,3.36486,0.856064,0.755136 +8388605,36.7543,64.4387,6.43328,1.64006,0.888384 +16777213,77.2401,125.498,10.8857,2.81885,1.23645 +33554429,148.738,255.076,29.399,5.44768,1.82144 +67108861,288.34,509.624,53.1692,10.9475,3.2768 +13,0.0001,0.159744,0.105472,0.187392,0.140288 +29,0.0002,0.173056,0.11776,0.185344,0.14336 +61,0.0001,0.178176,0.136192,0.192512,0.140288 +125,0.0003,0.233472,0.16384,0.186368,0.108544 +253,0.0005,0.191488,0.169984,0.186368,0.145408 +509,0.0005,0.202752,0.188416,0.187392,0.156672 +1021,0.0008,0.509952,0.21504,0.180224,0.151552 +2045,0.0009,0.221184,0.242688,0.197632,0.14336 +4093,0.002,0.239616,0.217088,0.139264,0.14848 +8189,0.0036,0.268288,0.270336,0.196608,0.144384 +16381,0.0259,0.3232,0.29184,0.18528,0.150848 +32765,0.02,0.47616,0.295936,0.198656,0.11776 +65533,0.0407,0.64,0.324608,0.120832,0.11776 +131069,0.6192,1.02912,0.35328,0.167936,0.320512 +262141,1.2133,2.22208,0.410624,0.217088,0.805216 +524285,2.3559,3.81645,0.711296,0.283072,0.487904 +1048573,4.4386,7.68205,1.32506,0.3632,0.582656 +2097149,9.6248,15.3055,2.04493,0.523584,0.514048 +4194301,18.9742,31.0414,4.08986,0.850752,0.657056 +8388605,39.026,63.1378,6.69139,1.50938,0.837632 +16777213,74.2964,125.872,15.0692,2.84518,1.21094 +33554429,147.765,255.306,21.1462,5.45587,1.93587 +67108861,288.013,510.592,66.0961,10.8513,3.3807 +13,0.0001,0.136192,0.10752,0.187392,0.156672 +29,0.0001,0.191488,0.135168,0.185344,0.136192 +61,0.0002,0.180224,0.128,0.176128,0.142336 +125,0.0001,0.22016,0.150528,0.180224,0.144384 +253,0.0002,0.187392,0.227328,0.191488,0.16384 +509,0.0007,0.197632,0.190464,0.18432,0.15872 +1021,0.0011,0.27648,0.223232,0.18432,0.242688 +2045,0.0022,0.217088,0.228352,0.19968,0.140288 +4093,0.0026,0.241664,0.223232,0.223232,0.126976 +8189,0.0041,0.270336,0.39424,0.150528,0.149504 +16381,0.0082,0.321024,0.292864,0.180064,0.140288 +32765,0.0407,0.420864,0.306176,0.195584,0.135104 +65533,0.0389,0.618496,0.319488,0.18944,0.145408 +131069,0.5861,1.04653,0.359424,0.193536,0.40448 +262141,1.1771,2.06848,0.436224,0.244736,0.442368 +524285,2.3564,3.83181,0.71216,0.299008,0.615424 +1048573,4.4401,8.33706,1.09056,0.461824,0.499712 +2097149,9.1967,15.8243,2.42586,0.64512,0.541696 +4194301,18.1289,32.6072,3.53434,0.837088,0.753664 +8388605,39.0477,63.6659,7.67898,1.7193,0.851968 +16777213,73.7846,125.981,10.8298,2.80986,1.19686 +33554429,145.945,253.542,29.7062,5.46778,1.92176 +67108861,295.301,514.055,52.0526,10.7079,3.34522 +13,0.0001,0.18944,0.108544,0.191488,0.1536 +29,0.0001,0.166912,0.120832,0.181248,0.159744 +61,0.0003,0.17408,0.145408,0.18432,0.151552 +125,0.0002,0.191488,0.14848,0.192512,0.131072 +253,0.0005,0.19456,0.173056,0.186368,0.149504 +509,0.0005,0.211968,0.197632,0.177152,0.139264 +1021,0.001,0.49664,0.208896,0.18432,0.140288 +2045,0.0014,0.219136,0.202752,0.207872,0.146432 +4093,0.004,0.672768,0.379904,0.146432,0.392192 +8189,0.0039,0.269312,0.26112,0.196608,0.154624 +16381,0.0082,0.324608,0.290816,0.19456,0.172032 +32765,0.0203,0.423936,0.30752,0.195584,0.14064 +65533,0.039,0.625664,0.326656,0.18432,0.167424 +131069,0.9045,1.02093,0.354304,0.201728,0.463872 +262141,1.2119,2.03571,0.425984,0.215392,0.5632 +524285,2.3415,3.8377,0.753664,0.303488,0.483328 +1048573,4.4805,7.61187,1.35168,0.376384,0.527904 +2097149,11.0422,15.5402,1.98554,0.548864,0.590848 +4194301,17.9776,30.7869,4.71907,0.833248,0.701952 +8388605,39.1168,62.4769,7.77274,1.59811,0.763904 +16777213,75.6296,126.079,15.4981,2.8184,1.37664 +33554429,143.249,253.889,21.1436,5.43485,1.96445 +67108861,287.915,512.935,67.2875,10.6634,3.23686 +13,0.0001,0.160768,0.105472,0.181248,0.144384 +29,0.0003,0.166912,0.128,0.183296,0.160768 +61,0.0003,0.178176,0.129024,0.18944,0.149504 +125,0.0004,0.183296,0.164864,0.183296,0.134144 +253,0.0003,0.190464,0.171008,0.191488,0.141312 +509,0.0007,0.208896,0.277504,0.144384,0.15872 +1021,0.0005,0.262144,0.217088,0.187392,0.16896 +2045,0.0022,0.221184,0.354304,0.206848,0.14848 +4093,0.0041,0.294912,0.284672,0.202752,0.152576 +8189,0.0065,0.268288,0.24064,0.19968,0.147456 +16381,0.0277,0.360448,0.290816,0.181216,0.15872 +32765,0.0202,0.816128,0.305152,0.187392,0.146432 +65533,0.0363,0.664352,0.328704,0.194496,0.191488 +131069,0.5996,1.02605,0.354208,0.211968,0.454048 +262141,1.2095,2.10637,0.408576,0.211968,0.536576 +524285,2.3557,3.82054,0.658848,0.284672,0.452064 +1048573,4.7902,7.56736,1.10694,0.37328,0.493568 +2097149,9.1747,16.439,2.38166,0.499584,0.609184 +4194301,19.2566,30.6903,3.63357,0.971456,0.6856 +8388605,36.3212,63.6481,6.4215,1.51952,3.09805 +16777213,78.8757,126.809,10.88,2.9552,1.21549 +33554429,147.071,254.475,29.5762,5.45245,1.8431 +67108861,291.962,510.529,53.0524,10.7407,3.38301 +13,0.0001,0.223232,0.110592,0.192512,0.14848 +29,0.0001,0.171008,0.14336,0.177152,0.140288 +61,0.0003,0.188416,0.14848,0.326656,0.135168 +125,0.0003,0.246784,0.1536,0.185344,0.161792 +253,0.0003,0.214016,0.178176,0.186368,0.140288 +509,0.0004,0.201728,0.195584,0.193536,0.142336 +1021,0.001,0.237568,0.212992,0.191488,0.144384 +2045,0.002,0.252928,0.203776,0.171008,0.190464 +4093,0.0028,0.233472,0.365568,0.202752,0.14336 +8189,0.0037,0.284672,0.273408,0.2048,0.146432 +16381,0.0093,0.324608,0.290528,0.185344,0.156544 +32765,0.0196,0.41984,0.295936,0.19456,0.135936 +65533,0.0562,0.654336,0.32768,0.197632,0.140224 +131069,0.5838,1.04755,0.3584,0.431104,0.433152 +262141,1.2042,2.07974,0.392192,0.222208,0.405504 +524285,2.3565,3.84698,0.74304,0.295936,0.443392 +1048573,4.4383,7.60192,1.4039,0.374784,0.451584 +2097149,9.2389,15.8607,1.95414,0.528,0.58 +4194301,18.0021,32.0266,4.16461,0.854912,0.602752 +8388605,37.4105,62.3984,6.65341,1.64614,0.821248 +16777213,74.9669,125.463,15.1613,2.89485,1.22029 +33554429,149.511,254.163,21.2683,5.45379,1.97779 +67108861,289.986,514.568,67.0095,10.6535,3.30627 +13,0.0001,0.201728,0.104448,0.190464,0.14848 +29,0.0001,0.152576,0.120832,0.548864,0.14336 +61,0.0002,0.200704,0.146432,0.19456,0.167936 +125,0.0001,0.387072,0.164864,0.18944,0.13312 +253,0.0003,0.191488,0.318464,0.200704,0.14336 +509,0.0005,0.257024,0.196608,0.186368,0.141312 +1021,0.0013,0.239616,0.217088,0.187392,0.152576 +2045,0.0008,0.221184,0.206848,0.197632,0.150528 +4093,0.0041,0.311296,0.264192,0.192512,0.147456 +8189,0.0035,0.277504,0.400384,0.200704,0.14848 +16381,0.0166,0.309248,0.299008,0.197632,0.427616 +32765,0.0179,0.42496,0.308224,0.187168,0.124928 +65533,0.0425,0.664576,0.319488,0.27504,0.132096 +131069,0.5874,1.02605,0.342464,0.200704,0.411392 +262141,1.1768,2.47398,0.439296,0.219776,0.482304 +524285,2.2765,3.82259,0.731136,0.273408,0.402432 +1048573,4.5344,7.56381,1.07562,0.478208,0.559104 +2097149,9.5215,15.6197,2.47152,0.531776,0.555008 +4194301,19.2017,31.2812,3.33926,0.848864,1.1473 +8388605,39.4765,63.0618,6.3737,1.52509,0.839392 +16777213,73.7667,127.059,10.8257,2.81059,1.24723 +33554429,147.964,254.077,29.8312,5.53626,1.92189 +67108861,289.198,510.028,50.8928,10.7448,3.36691 +13,0.0001,0.139264,0.111616,0.171008,0.14336 +29,0.0001,0.228352,0.120832,0.187392,0.135168 +61,0.0003,0.224256,0.13824,0.177152,0.16896 +125,0.0003,0.183296,0.15872,0.14336,0.113664 +253,0.0004,0.197632,0.161792,0.144384,0.114688 +509,0.0007,0.2048,0.195584,0.139264,0.116736 +1021,0.0007,0.555008,0.207872,0.144384,0.205824 +2045,0.0009,0.290816,0.236544,0.197632,0.125952 +4093,0.0021,0.27648,0.228352,0.1536,0.120832 +8189,0.0113,0.273408,0.268288,0.14336,0.103424 +16381,0.0083,0.413696,0.311296,0.143904,0.120832 +32765,0.0181,0.434912,0.29696,0.149504,0.421856 +65533,0.0399,0.623616,0.319488,0.157696,0.116736 +131069,0.5837,1.03936,0.349184,0.379904,0.461792 +262141,1.1707,2.55795,0.422912,0.231424,0.477152 +524285,2.3432,4.14413,0.722944,0.280992,0.453248 +1048573,4.5677,7.77011,1.32669,0.367616,0.495616 +2097149,9.5429,16.9481,1.97715,0.533248,0.598016 +4194301,19.0753,32.7535,4.57421,0.836416,0.592896 +8388605,38.4607,62.447,6.6775,1.5145,0.83392 +16777213,72.4156,126.82,15.5839,3.15581,1.62701 +33554429,149.891,250.888,21.0643,5.45178,1.92915 +67108861,295.535,513.397,67.0297,10.6527,3.30752 +13,0.0001,0.140288,0.10752,0.186368,0.14336 +29,0.0003,0.16384,0.126976,0.19968,0.139264 +61,0.0001,0.1792,0.131072,0.183296,0.146432 +125,0.0001,0.190464,0.151552,0.190464,0.155648 +253,0.0003,0.212992,0.176128,0.191488,0.193536 +509,0.0006,0.203776,0.187392,0.145408,0.114688 +1021,0.0005,0.246784,0.207872,0.149504,0.11264 +2045,0.0023,0.249856,0.203776,0.151552,0.106496 +4093,0.002,0.234496,0.375808,0.2048,0.23552 +8189,0.0042,0.269312,0.270336,0.15872,0.104448 +16381,0.0101,0.325632,0.279552,0.14336,0.117088 +32765,0.0205,0.458752,0.30864,0.150912,0.147456 +65533,0.0387,0.620544,0.313344,0.198432,0.115712 +131069,0.5835,1.03424,0.349184,0.169984,0.322176 +262141,1.1694,2.03469,0.386688,0.233472,0.894848 +524285,2.4088,3.82566,1.43661,0.289792,0.439232 +1048573,4.5664,7.57651,1.0711,0.369664,0.519168 +2097149,8.979,16.2956,2.5,0.501216,0.523264 +4194301,18.0382,30.5306,3.5159,0.85504,0.678208 +8388605,41.8273,62.8396,6.35328,1.51654,0.83488 +16777213,74.036,126.913,10.9189,2.8311,1.26874 +33554429,145.586,253.385,29.6008,5.4528,3.34131 +67108861,293.193,516.188,53.1882,10.8073,3.32934 +13,0.0003,0.166912,0.11264,0.164864,0.156672 +29,0.0003,0.171008,0.123904,0.18944,0.145408 +61,0.0002,0.191488,0.136192,0.18944,0.152576 +125,0.0003,0.191488,0.149504,0.570368,0.15872 +253,0.0003,0.154624,0.161792,0.355328,0.16384 +509,0.0007,0.19968,0.206848,0.197632,0.11264 +1021,0.0006,0.23552,0.19456,0.14848,0.162816 +2045,0.0009,0.22016,0.197632,0.152576,0.098304 +4093,0.002,0.259072,0.232448,0.155648,0.132096 +8189,0.0038,0.268288,0.27136,0.151552,0.141312 +16381,0.0077,0.335872,0.770048,0.196608,0.252608 +32765,0.019,0.421888,0.3072,0.152576,0.116736 +65533,0.0396,0.643072,0.328704,0.161792,0.131072 +131069,0.6013,1.01786,0.3584,0.183264,0.431104 +262141,1.2559,2.18419,0.432128,0.188416,0.335872 +524285,2.4264,3.83078,0.718656,0.270304,0.67072 +1048573,4.4386,7.55814,1.32352,0.367392,0.55296 +2097149,8.9873,15.7182,2.00547,0.538624,0.496512 +4194301,18.8244,35.8431,4.49843,0.851968,0.663136 +8388605,41.9394,61.4039,6.86179,1.51824,0.84224 +16777213,74.1476,126.335,15.0482,3.16493,1.18262 +33554429,148.206,255.629,22.5295,5.46918,1.90918 +67108861,295.783,512.748,67.4381,10.6625,3.31978 +13,0.0001,0.126976,0.100352,0.195584,0.146432 +29,0.0002,0.191488,0.123904,0.196608,0.150528 +61,0.0001,0.211968,0.146432,0.182272,0.151552 +125,0.0002,0.18432,0.152576,0.188416,0.137216 +253,0.0003,0.19456,0.176128,0.19456,0.136192 +509,0.0005,0.207872,0.196608,0.197632,0.1536 +1021,0.0009,0.208896,0.212992,0.196608,0.166912 +2045,0.002,0.239616,0.208896,0.195584,0.131072 +4093,0.0039,0.26624,0.234496,0.144384,0.152576 +8189,0.0038,0.275456,0.27648,0.212992,0.150528 +16381,0.0078,0.32768,0.290816,0.197376,0.164864 +32765,0.02,0.41984,0.305152,0.190368,0.23504 +65533,0.0402,0.636928,0.32768,0.19456,0.146432 +131069,0.5905,1.02912,0.355328,0.201728,0.444 +262141,1.177,2.1289,0.402432,0.229376,0.463872 +524285,2.3427,3.84032,0.704512,0.285696,0.717184 +1048573,4.6843,7.68819,1.09875,0.37376,0.515904 +2097149,9.4534,15.3149,2.31936,0.541312,0.389824 +4194301,18.0166,30.7586,3.31664,0.845824,0.679424 +8388605,40.1057,62.1967,6.45325,1.57629,1.0247 +16777213,73.6937,126.823,10.9163,2.82669,1.3056 +33554429,150.986,253.733,29.7636,5.47091,1.97696 +67108861,296.562,509.493,51.4953,10.6547,3.32941 +13,0.0001,0.214016,0.10752,0.18944,0.142336 +29,0.0001,0.493568,0.115712,0.19456,0.14848 +61,0.0001,0.190464,0.141312,0.186368,0.154624 +125,0.0002,0.183296,0.152576,0.321536,0.146432 +253,0.0002,0.16384,0.180224,0.178176,0.178176 +509,0.0004,0.201728,0.192512,0.188416,0.229376 +1021,0.0006,0.2304,0.2048,0.18944,0.157696 +2045,0.0021,0.219136,0.241664,0.152576,0.147456 +4093,0.002,0.265216,0.223232,0.205824,0.165888 +8189,0.0036,0.268288,0.397312,0.203776,0.166912 +16381,0.0088,0.338944,0.290784,0.182272,0.167936 +32765,0.0191,0.438272,0.298528,0.149504,0.11776 +65533,0.0371,0.615424,0.313344,0.145408,0.121856 +131069,0.6032,1.01786,0.355328,0.159744,0.410624 +262141,1.3339,2.05107,0.41984,0.178176,0.46592 +524285,2.3411,3.83962,0.715104,0.298464,0.462144 +1048573,4.4394,8.21853,1.25747,0.356352,0.51712 +2097149,9.8516,16.3748,2.0009,0.501056,0.575296 +4194301,18.9733,30.7948,4.1472,0.881152,0.676576 +8388605,39.1131,61.6878,6.64202,1.54931,0.840704 +16777213,73.737,125.953,16.5622,2.87904,1.17731 +33554429,149.902,254.109,21.0519,5.46154,1.90662 +67108861,297.692,511.745,66.2487,10.6864,3.31162 +13,0.0001,0.17408,0.100352,0.167936,0.141312 +29,0.0001,0.183296,0.129024,0.190464,0.151552 +61,0.0001,0.175104,0.135168,0.183296,0.139264 +125,0.0003,0.187392,0.157696,0.186368,0.141312 +253,0.0003,0.224256,0.176128,0.192512,0.139264 +509,0.0005,0.2048,0.191488,0.18432,0.146432 +1021,0.0011,0.232448,0.208896,0.18944,0.1536 +2045,0.0021,0.2304,0.206848,0.19968,0.131072 +4093,0.004,0.23552,0.224256,0.328704,0.144384 +8189,0.0054,0.270336,0.390144,0.205824,0.145408 +16381,0.0085,0.324608,0.290304,0.185728,0.265216 +32765,0.0175,0.459776,0.30208,0.192384,0.139264 +65533,0.041,0.616448,0.320512,0.151552,0.119808 +131069,0.6038,1.02912,0.370688,0.164192,0.45568 +262141,1.1759,2.0695,0.432128,0.183296,0.468992 +524285,2.344,3.75555,0.742016,0.293728,0.540672 +1048573,4.6835,8.73149,1.09261,0.360352,0.502784 +2097149,9.2438,15.8031,2.6592,0.521216,0.513024 +4194301,19.2676,32.4422,3.29523,0.863232,0.672768 +8388605,40.4245,62.3635,6.5065,1.51296,0.871424 +16777213,72.5093,123.856,10.8216,2.81645,1.13664 +33554429,146.225,253.632,29.4851,5.45056,1.94237 +67108861,296.254,513.167,51.3833,10.694,3.62282 +13,0.0001,0.205824,0.108544,0.198656,0.141312 +29,0.0001,0.166912,0.12288,0.192512,0.13824 +61,0.0001,0.178176,0.13824,0.197632,0.14336 +125,0.0003,0.187392,0.1536,0.8192,0.152576 +253,0.0003,0.205824,0.1792,0.176128,0.134144 +509,0.0006,0.2048,0.195584,0.18432,0.11776 +1021,0.0004,0.231424,0.202752,0.140288,0.11776 +2045,0.0009,0.233472,0.324608,0.16384,0.128 +4093,0.0019,0.234496,0.231424,0.152576,0.104448 +8189,0.0042,0.335872,0.273408,0.181248,0.110592 +16381,0.015,0.330752,0.29024,0.243712,0.12288 +32765,0.0183,0.433152,0.313088,0.192512,0.116736 +65533,0.0358,0.643072,0.329728,0.149504,0.116064 +131069,0.5836,1.05267,0.37376,0.161696,0.463872 +262141,1.1774,2.03981,0.388096,0.181152,0.472064 +524285,2.3747,3.8081,0.718208,0.251456,0.513024 +1048573,4.4388,7.83907,1.36022,0.37888,0.503808 +2097149,10.1363,15.4518,2.01114,0.50336,0.658912 +4194301,18.3547,30.7844,4.14045,0.916832,0.659232 +8388605,35.9609,62.338,6.67443,1.49274,0.839168 +16777213,72.0274,125.271,15.1423,2.82624,1.1159 +33554429,146.136,254.702,21.139,5.91098,1.93398 +67108861,295.565,512.52,66.0659,12.2854,3.24608 +13,0,0.18944,0.098304,0.16384,0.152576 +29,0.0001,0.453632,0.126976,0.185344,0.16384 +61,0.0001,0.234496,0.13312,0.203776,0.132096 +125,0.0002,0.187392,0.152576,0.186368,0.155648 +253,0.0004,0.192512,0.17408,0.183296,0.15872 +509,0.0005,0.249856,0.197632,0.191488,0.154624 +1021,0.001,0.206848,0.232448,0.202752,0.44544 +2045,0.0019,0.22528,0.357376,0.19968,0.14848 +4093,0.0041,0.236544,0.231424,0.191488,0.146432 +8189,0.0036,0.380928,0.390144,0.210944,0.19968 +16381,0.0101,0.403456,0.289792,0.186368,0.141312 +32765,0.0184,0.41984,0.55808,0.185344,0.165888 +65533,0.0406,0.668672,0.323584,0.199104,0.16384 +131069,0.5999,1.536,0.370688,0.371712,0.412352 +262141,1.1704,2.58662,0.425984,0.22016,0.654336 +524285,2.344,3.85814,0.690176,0.287744,0.49696 +1048573,4.4391,7.56669,1.17453,0.657408,0.490816 +2097149,9.185,15.5494,2.40589,0.536,0.553728 +4194301,18.0633,30.6606,3.31571,0.836544,0.67584 +8388605,39.46,62.5036,6.65805,1.52973,0.762752 +16777213,72.8385,125.441,12.0996,2.83398,1.26845 +33554429,144.21,254.222,29.4854,5.7169,1.92138 +67108861,291.162,514.954,53.144,10.6833,3.36794 +13,0.0001,0.13824,0.10752,0.18944,0.149504 +29,0.0001,0.211968,0.11264,0.180224,0.18432 +61,0.0002,0.292864,0.146432,0.188416,0.136192 +125,0.0003,0.169984,0.162816,0.198656,0.154624 +253,0.0004,0.187392,0.177152,0.187392,0.149504 +509,0.0007,0.19968,0.193536,0.145408,0.11776 +1021,0.0012,0.232448,0.2048,0.147456,0.114688 +2045,0.0018,0.22528,0.206848,0.156672,0.100352 +4093,0.002,0.23552,0.231424,0.162816,0.10752 +8189,0.0042,0.283648,0.292864,0.156672,0.226304 +16381,0.0347,0.328704,0.29184,0.20064,0.119744 +32765,0.0308,0.422912,0.304128,0.1536,0.151392 +65533,0.0415,0.664576,0.311296,0.14848,0.169984 +131069,0.6025,1.59539,0.352256,0.152576,0.336896 +262141,1.1715,2.9952,0.449536,0.214016,0.431104 +524285,2.3575,4.13782,0.738304,0.272832,0.413696 +1048573,4.4384,7.92368,1.28342,0.379904,0.517728 +2097149,10.0563,16.1925,1.99053,0.570368,0.493152 +4194301,18.5013,31.9905,4.14966,1.18739,0.636448 +8388605,36.5267,62.4568,6.61914,1.53946,0.970752 +16777213,73.8542,123.607,14.9719,2.81443,1.18547 +33554429,147.252,257.921,21.2178,5.46365,1.89837 +67108861,290.144,511.514,66.0168,10.9066,3.38842 +13,0.0001,0.177152,0.098304,0.19456,0.136192 +29,0.0001,0.1792,0.118784,0.248832,0.14336 +61,0.0002,0.221184,0.139264,0.18432,0.144384 +125,0.0003,0.195584,0.16384,0.191488,0.166912 +253,0.0003,0.228352,0.172032,0.17408,0.157696 +509,0.0007,0.224256,0.19456,0.19968,0.144384 +1021,0.0012,0.231424,0.20992,0.195584,0.130048 +2045,0.0015,0.339968,0.2304,0.244736,0.149504 +4093,0.0041,0.239616,0.226304,0.161792,0.151552 +8189,0.0034,0.270336,0.372736,0.203776,0.131072 +16381,0.009,0.356352,0.283552,0.185344,0.13824 +32765,0.0198,0.405504,0.299008,0.203776,0.166912 +65533,0.0415,0.62976,0.319488,0.149216,0.124928 +131069,0.5861,1.0752,0.34912,0.187392,0.325984 +262141,1.1718,2.03878,0.4096,0.218112,0.464896 +524285,2.3548,3.83683,0.979968,0.38496,0.442144 +1048573,4.441,7.56006,1.09261,0.364544,0.469536 +2097149,9.8416,15.3057,2.50266,0.498688,0.556032 +4194301,18.8915,31.0034,3.31414,0.84752,0.601056 +8388605,36.5757,63.3569,6.5024,1.51347,2.2103 +16777213,75.6577,126.289,12.2015,2.82624,2.53952 +33554429,149.245,257.183,29.4851,5.46144,1.82122 +67108861,299.695,524.993,51.1833,10.6854,3.29795 +13,0,0.178176,0.10752,0.169984,0.14336 +29,0.0001,0.190464,0.121856,0.190464,0.140288 +61,0.0001,0.172032,0.13312,0.244736,0.162816 +125,0.0002,0.182272,0.154624,0.177152,0.142336 +253,0.0003,0.16896,0.171008,0.190464,0.145408 +509,0.0006,0.195584,0.192512,0.169984,0.564224 +1021,0.0012,0.24576,0.214016,0.188416,0.136192 +2045,0.0021,0.221184,0.228352,0.190464,0.149504 +4093,0.002,0.234496,0.403456,0.200704,0.149504 +8189,0.0237,0.295936,0.272384,0.19456,0.159744 +16381,0.0085,0.324608,0.290816,0.182272,0.137024 +32765,0.0194,0.41472,0.30208,0.186368,0.1464 +65533,0.0383,0.886784,0.321536,0.207744,0.157696 +131069,0.5864,1.03117,0.3584,0.200704,0.454656 +262141,1.1701,2.09203,0.393216,0.217024,0.438272 +524285,2.4096,4.16326,0.729088,0.278528,0.463744 +1048573,4.9552,8.18147,1.2585,0.367264,0.544768 +2097149,8.875,15.703,1.9792,0.503808,0.56832 +4194301,19.5579,34.6804,4.14413,0.857472,0.587296 +8388605,42.3665,90.1407,9.5191,2.45626,0.815104 +16777213,77.9639,136.279,14.8859,2.82038,1.16326 +33554429,147.168,255.286,21.0964,5.44221,1.90541 +67108861,294.146,515.047,66.348,10.6772,3.3759 +13,0,0.169984,0.109568,0.226304,0.165888 +29,0.0001,0.1792,0.169984,0.186368,0.13824 +61,0.0001,0.180224,0.144384,0.19968,0.135168 +125,0.0001,0.247808,0.166912,0.203776,0.13312 +253,0.0002,0.190464,0.172032,0.19456,0.165888 +509,0.0006,0.198656,0.195584,0.183296,0.14848 +1021,0.0012,0.233472,0.216064,0.182272,0.155648 +2045,0.0022,0.24064,0.367616,0.196608,0.147456 +4093,0.0043,0.315392,0.244736,0.19456,0.120832 +8189,0.0037,0.319488,0.268288,0.195584,0.202752 +16381,0.008,0.323584,0.277504,0.200704,0.1536 +32765,0.0182,0.41984,0.306176,0.25088,0.13456 +65533,0.0494,0.67584,0.351232,0.20992,0.132096 +131069,0.6014,1.02195,0.3584,0.164864,0.366592 +262141,1.1716,2.03162,0.423936,0.178624,0.320512 +524285,2.5048,3.84614,0.702464,0.29376,0.481856 +1048573,4.6846,8.07293,1.10592,0.366912,0.543552 +2097149,10.4857,15.4614,2.44736,0.524288,0.482304 +4194301,18.0219,32.6123,3.29626,1.92464,0.721344 +8388605,37.6827,62.4448,6.50083,1.50998,0.935712 +16777213,74.2777,126.238,10.8093,2.8887,1.24314 +33554429,151.481,253.666,29.609,5.45261,1.92 +67108861,294.536,512.896,53.6508,10.6585,3.32736 +13,0.0001,0.201728,0.106496,0.216064,0.119808 +29,0.0001,0.181248,0.115712,0.186368,0.140288 +61,0.0002,0.177152,0.144384,0.191488,0.136192 +125,0.0004,0.196608,0.14848,0.187392,0.140288 +253,0.0002,0.203776,0.176128,0.147456,0.162816 +509,0.0004,0.267264,0.19456,0.150528,0.11776 +1021,0.0005,0.232448,0.210944,0.178176,0.114688 +2045,0.0008,0.228352,0.310272,0.157696,0.110592 +4093,0.0172,0.238592,0.336896,0.159744,0.099328 +8189,0.0037,0.275456,0.347136,0.159744,0.10752 +16381,0.0101,0.379904,0.291776,0.15872,0.125952 +32765,0.0704,0.434176,0.297984,0.191488,0.145408 +65533,0.0395,0.622592,0.314368,0.205664,0.206848 +131069,0.5848,1.17965,0.35328,0.155648,0.4608 +262141,1.1699,2.0265,0.453632,0.177152,0.474112 +524285,2.4247,3.83898,0.7424,0.303104,0.432704 +1048573,4.7106,7.87763,1.37062,0.366208,0.54784 +2097149,8.9276,15.9568,2.0224,0.516736,0.5312 +4194301,18.4238,30.9046,4.50253,0.816128,0.666464 +8388605,36.0786,62.2638,6.7369,1.51802,0.796352 +16777213,73.0519,126.015,15.0678,2.83702,1.17453 +33554429,148.167,253.71,21.1317,5.45888,1.91555 +67108861,290.132,514.523,64.7895,10.946,3.26451 +13,0.0001,0.140288,0.1024,0.197632,0.169984 +29,0.0001,0.165888,0.136192,0.186368,0.150528 +61,0.0001,0.173056,0.137216,0.188416,0.14848 +125,0.0001,0.182272,0.1536,0.191488,0.152576 +253,0.0004,0.190464,0.17408,0.182272,0.151552 +509,0.0006,0.20992,0.19456,0.192512,0.155648 +1021,0.0005,0.233472,0.217088,0.226304,0.1536 +2045,0.0021,0.2304,0.35328,0.198656,0.14848 +4093,0.0039,0.436224,0.24064,0.149504,0.151552 +8189,0.0224,0.370688,0.26624,0.195584,0.144384 +16381,0.0095,0.434176,0.294912,0.198656,0.165888 +32765,0.0268,0.45568,0.309248,0.154624,0.121856 +65533,0.0382,0.628736,0.365568,0.157696,0.11808 +131069,0.5843,1.02195,0.355328,0.156672,0.497664 +262141,1.2131,2.04698,0.416768,0.18368,0.605184 +524285,2.4084,3.8417,0.702464,0.298752,0.436992 +1048573,4.4411,8.10656,1.08544,0.36448,0.693088 +2097149,10.4417,16.6892,2.42928,0.544768,0.493472 +4194301,19.0591,32.1852,3.4048,0.869856,0.672768 +8388605,36.1955,62.464,6.37904,1.50275,0.93696 +16777213,72.6195,126.25,10.7678,2.82291,1.30202 +33554429,143.243,252.774,29.5455,5.4927,1.92486 +67108861,293.861,515.596,52.2803,10.6666,3.39808 +13,0.0001,0.181248,0.108544,0.180224,0.13312 +29,0.0001,0.180224,0.116736,0.187392,0.14848 +61,0.0002,0.17408,0.144384,0.190464,0.13824 +125,0.0002,0.185344,0.1536,0.193536,0.151552 +253,0.0003,0.190464,0.171008,0.18944,0.14336 +509,0.0004,0.202752,0.202752,0.176128,0.157696 +1021,0.0007,0.289792,0.218112,0.196608,0.140288 +2045,0.0017,0.2304,0.347136,0.23552,0.14336 +4093,0.0028,0.269312,0.334848,0.157696,0.1024 +8189,0.0038,0.27648,0.349184,0.152576,0.10752 +16381,0.0288,0.345088,0.28672,0.147456,0.114688 +32765,0.0194,0.519168,0.313344,0.152576,0.119808 +65533,0.0403,0.654336,0.31232,0.377856,0.120832 +131069,0.8013,1.0455,0.57856,0.19952,0.50176 +262141,1.1721,2.04288,0.425984,0.181248,0.478208 +524285,2.4107,3.82541,0.724288,0.260416,0.45568 +1048573,4.4379,8.21862,1.42848,0.350816,0.595968 +2097149,9.8797,15.4218,2.00909,0.647968,0.570048 +4194301,17.9694,30.7978,4.09741,1.07462,0.648 +8388605,38.817,62.3335,6.6263,1.52755,0.812032 +16777213,72.0237,125.728,15.0958,2.83517,1.14566 +33554429,145.302,253.513,21.2489,5.47782,1.97837 +67108861,299.609,514.77,67.6444,10.8777,3.39619 +13,0.0001,0.1792,0.115712,0.183296,0.162816 +29,0.0001,0.185344,0.22016,0.180224,0.135168 +61,0.0002,0.195584,0.137216,0.140288,0.11776 +125,0.0002,0.181248,0.14848,0.151552,0.114688 +253,0.0003,0.218112,0.169984,0.146432,0.113664 +509,0.0005,0.210944,0.187392,0.263168,0.118784 +1021,0.0006,0.227328,0.224256,0.145408,0.113664 +2045,0.0029,0.217088,0.308224,0.154624,0.195584 +4093,0.004,0.253952,0.330752,0.161792,0.136192 +8189,0.0038,0.26624,0.355328,0.159744,0.11776 +16381,0.0114,0.318464,0.301056,0.148224,0.165888 +32765,0.0207,0.4864,0.690176,0.167808,0.12288 +65533,0.0401,0.61952,0.32768,0.150304,0.11776 +131069,0.6001,1.02605,0.356352,0.144384,0.490368 +262141,1.2581,2.6321,0.429056,0.19968,0.48128 +524285,2.3416,3.83795,0.699392,0.289472,0.459776 +1048573,4.6841,7.73286,1.09568,0.422592,0.461792 +2097149,10.1255,15.6487,2.80986,0.527744,0.568192 +4194301,17.9687,31.4364,3.28806,0.86016,0.656 +8388605,37.8592,63.2779,6.34941,1.50003,0.840704 +16777213,72.6711,126.317,10.8909,2.79552,1.88083 +33554429,147.99,254.426,29.6298,5.4784,2.6368 +67108861,289.667,513.888,51.7478,10.7397,3.38989 +13,0.0001,0.186368,0.115712,0.191488,0.140288 +29,0.0001,0.126976,0.120832,0.177152,0.14336 +61,0.0002,0.206848,0.136192,0.185344,0.14848 +125,0.0002,0.188416,0.161792,0.183296,0.146432 +253,0.0003,0.500736,0.169984,0.187392,0.142336 +509,0.0004,0.283648,0.200704,0.193536,0.142336 +1021,0.0008,0.234496,0.203776,0.180224,0.137216 +2045,0.0019,0.219136,0.334848,0.205824,0.149504 +4093,0.0018,0.242688,0.372736,0.19968,0.132096 +8189,0.0036,0.267264,0.265216,0.210944,0.150528 +16381,0.0081,0.316416,0.287744,0.191392,0.139264 +32765,0.0396,0.436224,0.313344,0.196,0.151552 +65533,0.0375,0.667648,0.31744,0.186368,0.14336 +131069,0.5832,1.024,0.333824,0.19968,0.412672 +262141,1.2105,2.06029,0.421888,0.216064,0.417792 +524285,2.3278,3.83552,0.75776,0.362496,0.453504 +1048573,4.6838,8.1847,1.32301,0.363296,0.472064 +2097149,10.9269,15.4945,1.97222,0.540352,2.15302 +4194301,17.9404,31.3897,4.29773,0.848896,0.656128 +8388605,36.3477,62.4952,6.71296,1.55133,0.835584 +16777213,74.2341,125.728,14.9135,2.91978,1.20934 +33554429,151.03,253.997,21.1241,6.30374,1.92307 +67108861,291.741,511.337,66.3752,10.7034,3.35914 +13,0.0001,0.140288,0.104448,0.111616,0.147456 +29,0.0002,0.171008,0.132096,0.187392,0.166912 +61,0.0002,0.171008,0.136192,0.178176,0.176128 +125,0.0002,0.187392,0.156672,0.195584,0.198656 +253,0.0003,0.190464,0.177152,0.182272,0.118784 +509,0.0007,0.211968,0.197632,0.14848,0.257024 +1021,0.0012,0.231424,0.222208,0.144384,0.113664 +2045,0.0021,0.244736,0.274432,0.152576,0.132096 +4093,0.0018,0.329728,0.336896,0.150528,0.104448 +8189,0.0227,0.3328,0.280576,0.150528,0.106496 +16381,0.0081,0.320512,0.293888,0.14304,0.115712 +32765,0.0218,0.415744,0.416768,0.176128,0.120832 +65533,0.0419,0.637952,0.321536,0.159744,0.120832 +131069,0.5831,1.11821,0.350208,0.16384,0.459328 +262141,1.2427,2.16986,0.809984,0.210944,0.411648 +524285,2.375,3.82941,0.854016,0.280288,0.488992 +1048573,6.285,8.35994,1.21805,0.360864,0.507456 +2097149,9.3482,15.554,2.49958,0.539072,0.53008 +4194301,18.2841,31.5095,3.27373,0.86528,0.678912 +8388605,37.8824,62.6944,6.38874,1.45907,0.825344 +16777213,72.768,125.366,10.9046,2.81683,1.22966 +33554429,142.901,254.877,30.6483,6.15526,1.94867 +67108861,295.095,514.92,53.394,10.6632,3.3176 +13,0,0.132096,0.101376,0.182272,0.147456 +29,0.0001,0.141312,0.115712,0.190464,0.140288 +61,0.0002,0.200704,0.139264,0.186368,0.169984 +125,0.0002,0.182272,0.169984,0.185344,0.149504 +253,0.0003,0.185344,0.177152,0.193536,0.242688 +509,0.0004,0.20992,0.195584,0.195584,0.152576 +1021,0.0005,0.232448,0.224256,0.18944,0.137216 +2045,0.0009,0.221184,0.415744,0.206848,0.104448 +4093,0.0018,0.242688,0.3328,0.154624,0.10752 +8189,0.0272,0.270336,0.345088,0.162816,0.119808 +16381,0.0157,0.342016,0.29696,0.155648,0.118784 +32765,0.0263,0.425984,0.303104,0.165888,0.139264 +65533,0.0389,0.6656,0.524288,0.148832,0.120832 +131069,0.5835,1.88006,0.366592,0.21504,0.411296 +262141,1.211,2.2272,0.392192,0.22016,0.769024 +524285,2.3608,3.82771,0.714112,0.295936,0.403456 +1048573,4.4388,7.58246,1.35373,0.374592,0.554976 +2097149,9.1308,15.8705,1.96813,0.507488,0.4608 +4194301,18.3634,33.834,4.10112,0.860768,0.599936 +8388605,36.6773,61.3775,6.68262,1.50496,0.799488 +16777213,72.5356,126.871,14.9688,3.70176,1.20998 +33554429,145.569,254.273,21.2951,5.49142,1.90707 +67108861,291.077,511.242,67.1099,10.7273,3.32534 +13,0,0.173056,0.10752,0.196608,0.13312 +29,0.0001,0.192512,0.132096,0.173056,0.152576 +61,0.0001,0.186368,0.130048,0.162816,0.141312 +125,0.0002,0.19456,0.15872,0.186368,0.150528 +253,0.0003,0.19456,0.180224,0.192512,0.146432 +509,0.0005,0.202752,0.19968,0.187392,0.13824 +1021,0.0006,0.443392,0.2304,0.190464,0.164864 +2045,0.0017,0.221184,0.36352,0.152576,0.101376 +4093,0.0043,0.452608,0.328704,0.227328,0.145408 +8189,0.0082,0.297984,0.3584,0.152576,0.1024 +16381,0.0091,0.334848,0.290816,0.146432,0.13824 +32765,0.0185,0.467968,0.3072,0.150528,0.14848 +65533,0.0429,0.620544,0.329728,0.120832,0.11776 +131069,0.6182,1.04858,0.78336,0.162528,0.403456 +262141,1.2742,2.07258,0.391168,0.26112,0.335872 +524285,2.5457,3.76771,0.714592,0.284288,0.488128 +1048573,4.6836,8.54874,1.20003,0.343008,0.610304 +2097149,10.7828,15.2223,2.46477,0.525216,1.2631 +4194301,18.604,30.7552,3.40787,0.893792,0.75664 +8388605,36.45,65.6083,6.28122,1.52662,2.52198 +16777213,74.1804,128.468,10.7842,2.98851,1.26448 +33554429,153.401,255.688,29.9868,5.43642,1.9712 +67108861,295.771,512.4,52.4364,10.6926,3.30502 +13,0,0.177152,0.121856,0.1792,0.137216 +29,0.0003,0.171008,0.116736,0.188416,0.157696 +61,0.0001,0.176128,0.141312,0.193536,0.149504 +125,0.0003,0.181248,0.145408,0.18944,0.136192 +253,0.0004,0.570368,0.180224,0.241664,0.146432 +509,0.0005,0.214016,0.190464,0.195584,0.147456 +1021,0.0005,0.428032,0.227328,0.18432,0.13824 +2045,0.0015,0.232448,0.347136,0.19456,0.140288 +4093,0.0019,0.243712,0.346112,0.175104,0.154624 +8189,0.004,0.265216,0.354304,0.1536,0.1024 +16381,0.0088,0.380928,0.293888,0.144224,0.116736 +32765,0.0179,0.4352,0.293888,0.157696,0.123904 +65533,0.0398,0.618496,0.3328,0.155648,0.11776 +131069,0.5862,1.024,0.354304,0.15872,0.468992 +262141,1.2094,2.21389,0.436224,0.193536,0.499136 +524285,2.6612,3.75501,0.756736,0.292864,0.454656 +1048573,4.6617,8.06541,1.63021,0.509952,0.56832 +2097149,9.8657,15.6646,1.94454,0.555008,0.494976 +4194301,17.9185,31.4499,4.31821,0.888704,0.648192 +8388605,36.4491,64.3509,6.66829,1.54867,1.07622 +16777213,75.1842,129.86,15.1235,2.78486,1.23075 +33554429,146.058,252.355,21.204,5.42106,1.84506 +67108861,291.519,513.412,64.5192,11.3664,3.35462 +13,0,0.171008,0.11264,0.176128,0.150528 +29,0.0001,0.182272,0.132096,0.197632,0.139264 +61,0.0001,0.178176,0.136192,0.187392,0.142336 +125,0.0004,0.186368,0.151552,0.185344,0.152576 +253,0.0004,0.198656,0.178176,0.196608,0.172032 +509,0.0006,0.24064,0.190464,0.31232,0.119808 +1021,0.001,0.258048,0.20992,0.19456,0.140288 +2045,0.0009,0.267264,0.22016,0.159744,0.106496 +4093,0.0017,0.24064,0.329728,0.156672,0.11776 +8189,0.0036,0.268288,0.273408,0.159744,0.10752 +16381,0.0093,0.39936,0.284672,0.147456,0.116736 +32765,0.0489,0.483328,0.295936,0.156672,0.128 +65533,0.0425,0.794624,0.31744,0.154624,0.119808 +131069,0.5999,1.0281,0.340992,0.159744,0.33456 +262141,1.1759,2.0521,0.428032,0.177152,0.473088 +524285,2.355,3.76378,1.03219,0.65616,0.570368 +1048573,4.6849,7.63242,1.08576,0.355296,0.455456 +2097149,10.9665,15.4112,2.54566,0.507488,0.556928 +4194301,18.2079,31.1235,4.96435,0.841536,0.653856 +8388605,36.1045,62.8541,6.52186,1.51814,1.72826 +16777213,75.8846,127.224,11.0746,2.83814,1.13226 +33554429,150.392,253.813,29.5721,5.46048,1.92 +67108861,297.739,513.852,51.0546,10.714,3.32067 +13,0,0.17408,0.109568,0.176128,0.129024 +29,0.0001,0.214016,0.114688,0.188416,0.14336 +61,0.0003,0.22528,0.14336,0.219136,0.151552 +125,0.0003,0.18944,0.141312,0.19456,0.159744 +253,0.0002,0.444416,0.178176,0.173056,0.166912 +509,0.0006,0.293888,0.210944,0.17408,0.166912 +1021,0.0005,0.25088,0.21504,0.182272,0.152576 +2045,0.002,0.219136,0.357376,0.147456,0.123904 +4093,0.0017,0.284672,0.24576,0.201728,0.134144 +8189,0.0035,0.311296,0.26112,0.19456,0.120832 +16381,0.0195,0.345088,0.299008,0.195584,0.146432 +32765,0.0221,0.449536,0.297984,0.19456,0.11872 +65533,0.0528,0.616448,0.32256,0.149504,0.181248 +131069,0.6134,1.04653,0.351232,0.200704,0.32304 +262141,1.1708,2.35827,0.400928,0.1792,0.941056 +524285,2.3429,3.87891,0.708608,0.473088,0.499712 +1048573,4.6851,7.97216,1.61792,0.37376,0.46592 +2097149,10.2587,15.8915,1.96877,0.495616,0.62352 +4194301,18.9254,32.9157,4.1257,0.821216,0.883456 +8388605,35.87,62.2653,7.25504,1.50016,0.774624 +16777213,72.0266,125.583,15.1327,2.81165,1.11955 +33554429,144.637,253.707,21.163,5.47533,1.9359 +67108861,299.955,512.235,67.7222,10.6922,3.3104 +13,0.0001,0.162816,0.111616,0.140288,0.113664 +29,0.0003,0.172032,0.132096,0.144384,0.136192 +61,0.0002,0.238592,0.147456,0.188416,0.186368 +125,0.0001,0.190464,0.157696,0.140288,0.156672 +253,0.0004,0.402432,0.1792,0.151552,0.115712 +509,0.0007,0.26624,0.185344,0.151552,0.114688 +1021,0.0006,0.270336,0.211968,0.185344,0.114688 +2045,0.0022,0.2304,0.310272,0.12288,0.095232 +4093,0.0031,0.246784,0.331776,0.25088,0.137216 +8189,0.0054,0.273408,0.290816,0.152576,0.103424 +16381,0.0093,0.329728,0.282624,0.14592,0.116736 +32765,0.0729,0.447488,0.295936,0.154624,0.155648 +65533,0.0401,0.633856,0.311296,0.207872,0.176128 +131069,0.584,1.07418,0.360448,0.198656,0.494592 +262141,1.2059,2.38592,0.431104,0.22528,0.5208 +524285,2.3449,3.82666,0.695296,0.288576,0.49664 +1048573,4.6862,7.57629,1.09056,0.372192,0.4608 +2097149,10.7085,15.9565,2.45248,0.55552,0.611328 +4194301,17.8916,31.0942,3.33968,0.854016,0.661472 +8388605,39.114,63.503,6.41126,1.53805,0.775552 +16777213,75.6986,126.723,11.2219,2.83498,1.12835 +33554429,148.869,256.303,29.5414,5.45328,1.93424 +67108861,292.921,516.223,49.8962,10.6705,3.32346 +13,0,0.173056,0.110592,0.197632,0.144384 +29,0.0002,0.161792,0.118784,0.182272,0.132096 +61,0.0003,0.169984,0.144384,0.183296,0.159744 +125,0.0002,0.177152,0.159744,0.18432,0.150528 +253,0.0003,0.185344,0.183296,0.18432,0.1536 +509,0.0005,0.195584,0.183296,0.1792,0.162816 +1021,0.0008,0.49664,0.202752,0.178176,0.238592 +2045,0.0009,0.2304,0.277504,0.16896,0.390144 +4093,0.002,0.238592,0.370688,0.186368,0.142336 +8189,0.0036,0.269312,0.267264,0.159744,0.151552 +16381,0.0086,0.324608,0.27648,0.173056,0.154624 +32765,0.0247,0.415744,0.50688,0.185088,0.137216 +65533,0.0386,0.694272,0.320512,0.175104,0.140288 +131069,0.703,1.05882,0.366592,0.205824,0.416608 +262141,1.2113,2.3296,0.387072,0.208896,0.448512 +524285,2.6453,4.06112,1.44998,0.26624,0.431104 +1048573,4.4414,7.57555,1.32954,0.370464,0.46112 +2097149,10.1897,15.9844,1.96333,0.532,0.502784 +4194301,18.364,32.6549,4.15334,0.813504,0.700416 +8388605,35.9893,63.0508,7.55405,1.51142,0.8448 +16777213,73.856,128.581,14.8996,2.8143,1.21642 +33554429,145.351,253.974,21.3048,5.48454,1.94243 +67108861,299.279,511.016,65.6855,10.7002,3.29728 +13,0.0001,0.195584,0.10752,0.185344,0.086016 +29,0.0001,0.316416,0.131072,0.172032,0.141312 +61,0.0001,0.232448,0.134144,0.188416,0.13824 +125,0.0001,0.24064,0.191488,0.186368,0.14848 +253,0.0004,0.218112,0.171008,0.1792,0.146432 +509,0.0007,0.210944,0.193536,0.190464,0.162816 +1021,0.0006,0.24576,0.212992,0.183296,0.13824 +2045,0.002,0.241664,0.349184,0.19456,0.14336 +4093,0.0018,0.259072,0.36352,0.186368,0.15872 +8189,0.0036,0.2816,0.273408,0.195584,0.131072 +16381,0.011,0.371712,0.29184,0.173056,0.137216 +32765,0.0184,0.707584,0.318464,0.193536,0.142336 +65533,0.0418,0.857088,0.321536,0.185344,0.157696 +131069,0.745,1.024,0.362496,0.188416,0.444416 +262141,1.2041,2.12582,0.391168,0.218112,0.54784 +524285,2.3448,3.83488,0.726016,0.283648,0.433824 +1048573,4.6831,8.13251,1.12128,0.381952,0.531808 +2097149,11.0187,15.4577,2.99213,0.530432,0.577312 +4194301,19.5649,30.8091,4.5056,0.836,0.65808 +8388605,36.1377,62.4599,6.44403,1.49347,0.943488 +16777213,74.2854,125.965,10.8251,2.82931,1.21651 +33554429,149.065,255.068,29.5107,5.47098,1.92096 +67108861,290.403,514.096,51.4588,10.6619,3.20486 +13,0.0001,0.176128,0.106496,0.188416,0.131072 +29,0.0002,0.181248,0.119808,0.190464,0.135168 +61,0.0002,0.191488,0.142336,0.339968,0.137216 +125,0.0001,0.187392,0.159744,0.18944,0.140288 +253,0.0001,0.190464,0.181248,0.186368,0.15872 +509,0.0006,0.521216,0.193536,0.186368,0.155648 +1021,0.0005,0.229376,0.211968,0.18944,0.154624 +2045,0.0017,0.270336,0.34304,0.172032,0.14336 +4093,0.0021,0.41984,0.392192,0.340992,0.146432 +8189,0.0041,0.330752,0.262144,0.24576,0.144384 +16381,0.0079,0.349184,0.293888,0.172032,0.14512 +32765,0.0235,0.4352,0.293888,0.2048,0.15424 +65533,0.0384,0.653312,0.32256,0.198656,0.159744 +131069,0.5855,1.06086,0.352256,0.210944,0.618496 +262141,1.2037,2.08282,0.443392,0.21296,0.44544 +524285,2.651,4.40454,0.744448,0.278528,0.436224 +1048573,4.657,7.9713,1.30333,0.372736,0.611328 +2097149,10.3594,15.2064,1.96096,1.21242,0.533344 +4194301,17.9728,31.8904,4.1775,0.914432,0.727392 +8388605,39.5997,62.551,6.62733,1.50909,0.867744 +16777213,73.3796,127.305,15.2166,2.85382,1.28848 +33554429,145.412,255.51,21.0202,5.45578,1.9128 +67108861,295.047,514.15,65.9948,10.6998,3.38902 +13,0.0001,0.134144,0.096256,0.196608,0.13312 +29,0.0002,0.1792,0.128,0.181248,0.132096 +61,0.0002,0.256,0.134144,0.18432,0.140288 +125,0.0002,0.201728,0.154624,0.182272,0.139264 +253,0.0003,0.203776,0.182272,0.18432,0.147456 +509,0.0007,0.256,0.19456,0.186368,0.137216 +1021,0.0012,0.236544,0.214016,0.18944,0.140288 +2045,0.0009,0.268288,0.231424,0.19456,0.129024 +4093,0.0018,0.301056,0.362496,0.17408,0.139264 +8189,0.0036,0.321536,0.267264,0.169984,0.145408 +16381,0.0081,0.33792,0.293888,0.186368,0.14336 +32765,0.034,0.449536,0.321536,0.181152,0.139264 +65533,0.0511,0.647168,0.31744,0.315392,0.167936 +131069,0.6002,1.03834,0.381952,0.201472,0.377856 +262141,1.205,2.10739,0.388096,0.221184,0.482976 +524285,2.4083,4.24141,0.710656,0.292288,0.482752 +1048573,6.0893,7.9288,1.0736,0.376512,0.536576 +2097149,9.6079,16.2416,2.37978,0.547616,0.512512 +4194301,19.989,32.6817,4.06426,0.985088,0.792576 +8388605,36.051,63.0036,6.69542,1.51757,0.905216 +16777213,74.5524,127.968,10.8435,3.02282,1.21651 +33554429,150.383,254.771,29.4736,5.47533,1.89677 +67108861,292.676,515.048,52.6602,10.6925,3.31366 +13,0.0001,0.176128,0.104448,0.19456,0.136192 +29,0.0001,0.369664,0.118784,0.18432,0.13824 +61,0.0001,0.252928,0.140288,0.191488,0.147456 +125,0.0002,0.186368,0.161792,0.188416,0.156672 +253,0.0004,0.21504,0.166912,0.187392,0.14336 +509,0.0004,0.207872,0.195584,0.175104,0.149504 +1021,0.0005,0.226304,0.206848,0.188416,0.146432 +2045,0.0009,0.22528,0.34816,0.196608,0.140288 +4093,0.004,0.376832,0.260096,0.201728,0.14848 +8189,0.0173,0.391168,0.264192,0.193536,0.152576 +16381,0.009,0.62464,0.295936,0.185344,0.157696 +32765,0.019,0.418816,0.305152,0.379904,0.155648 +65533,0.0373,0.664576,0.31744,0.19968,0.14288 +131069,0.6179,1.02707,0.352256,0.195328,0.429056 +262141,1.2072,2.10842,0.388096,0.2304,0.904512 +524285,2.3445,4.06118,0.991232,0.35328,0.732512 +1048573,4.7765,7.62765,1.33837,0.420608,0.55472 +2097149,10.2836,17.0977,2.16115,0.498496,0.565248 +4194301,18.3081,31.0313,4.26394,0.84992,0.657408 +8388605,35.8527,63.7635,6.73075,1.52144,0.83456 +16777213,72.3619,127.515,15.0968,2.82198,1.18726 +33554429,149.23,255.455,21.1852,5.47123,1.89174 +67108861,294.532,513.406,65.748,10.8145,3.32877 +13,0,0.139264,0.096256,0.18432,0.136192 +29,0.0001,0.18944,0.129024,0.218112,0.183296 +61,0.0001,0.135168,0.137216,0.175104,0.330752 +125,0.0004,0.315392,0.155648,0.172032,0.1536 +253,0.0002,0.417792,0.171008,0.166912,0.166912 +509,0.0005,0.226304,0.197632,0.186368,0.14336 +1021,0.0004,0.2304,0.210944,0.191488,0.144384 +2045,0.0009,0.222208,0.338944,0.187392,0.147456 +4093,0.0041,0.2304,0.226304,0.200704,0.139264 +8189,0.0038,0.272384,0.270336,0.201728,0.139264 +16381,0.0288,0.362496,0.28672,0.173056,0.145408 +32765,0.0261,0.422912,0.306176,0.192512,0.173056 +65533,0.04,0.643072,0.321536,0.205824,0.14848 +131069,0.6004,1.04448,0.352256,0.193536,0.468992 +262141,1.1862,2.32858,0.412672,0.21504,0.459552 +524285,2.9713,4.04054,0.700416,0.285536,0.465536 +1048573,4.7385,8.26,1.12774,0.36864,0.598496 +2097149,9.7804,16.0707,2.45658,0.550624,0.577952 +4194301,17.9156,31.3682,3.32458,0.853632,0.755712 +8388605,39.3194,61.8578,6.37542,1.48038,0.842304 +16777213,72.4973,,,, diff --git a/Project2-Stream-Compaction/data/Scan_data/data_nonpow2_faster/eff.csv b/Project2-Stream-Compaction/data/Scan_data/data_nonpow2_faster/eff.csv new file mode 100644 index 0000000..dc091cd --- /dev/null +++ b/Project2-Stream-Compaction/data/Scan_data/data_nonpow2_faster/eff.csv @@ -0,0 +1,894 @@ +13,0.093184 +29,0.125952 +61,0.13824 +125,0.151552 +253,0.179232 +509,0.185344 +1021,0.208864 +2045,0.226304 +4093,0.228384 +8189,0.331776 +16381,0.28976 +32765,0.31232 +65533,0.323584 +131069,0.370336 +262141,0.44032 +524285,0.729088 +1048573,1.10896 +2097149,2.74637 +4194301,3.29872 +8388605,6.31706 +16777213,10.8278 +33554429,29.5578 +67108861,54.1204 +13,0.109568 +29,0.116736 +61,0.139264 +125,0.152576 +253,0.172032 +509,0.198656 +1021,0.21504 +2045,0.203776 +4093,0.22528 +8189,0.26624 +16381,0.28768 +32765,0.306176 +65533,0.321536 +131069,0.463872 +262141,0.384896 +524285,0.744832 +1048573,1.35066 +2097149,3.00954 +4194301,4.18509 +8388605,6.65702 +16777213,15.0646 +33554429,21.2378 +67108861,65.6876 +13,0.1024 +29,0.136192 +61,0.132096 +125,0.154624 +253,0.177152 +509,0.193536 +1021,0.212992 +2045,0.232448 +4093,0.241664 +8189,0.403456 +16381,0.289792 +32765,0.303104 +65533,0.309952 +131069,0.357376 +262141,0.72192 +524285,0.700832 +1048573,1.06019 +2097149,2.71392 +4194301,3.36486 +8388605,6.43328 +16777213,10.8857 +33554429,29.399 +67108861,53.1692 +13,0.105472 +29,0.11776 +61,0.136192 +125,0.16384 +253,0.169984 +509,0.188416 +1021,0.21504 +2045,0.242688 +4093,0.217088 +8189,0.270336 +16381,0.29184 +32765,0.295936 +65533,0.324608 +131069,0.35328 +262141,0.410624 +524285,0.711296 +1048573,1.32506 +2097149,2.04493 +4194301,4.08986 +8388605,6.69139 +16777213,15.0692 +33554429,21.1462 +67108861,66.0961 +13,0.10752 +29,0.135168 +61,0.128 +125,0.150528 +253,0.227328 +509,0.190464 +1021,0.223232 +2045,0.228352 +4093,0.223232 +8189,0.39424 +16381,0.292864 +32765,0.306176 +65533,0.319488 +131069,0.359424 +262141,0.436224 +524285,0.71216 +1048573,1.09056 +2097149,2.42586 +4194301,3.53434 +8388605,7.67898 +16777213,10.8298 +33554429,29.7062 +67108861,52.0526 +13,0.108544 +29,0.120832 +61,0.145408 +125,0.14848 +253,0.173056 +509,0.197632 +1021,0.208896 +2045,0.202752 +4093,0.379904 +8189,0.26112 +16381,0.290816 +32765,0.30752 +65533,0.326656 +131069,0.354304 +262141,0.425984 +524285,0.753664 +1048573,1.35168 +2097149,1.98554 +4194301,4.71907 +8388605,7.77274 +16777213,15.4981 +33554429,21.1436 +67108861,67.2875 +13,0.105472 +29,0.128 +61,0.129024 +125,0.164864 +253,0.171008 +509,0.277504 +1021,0.217088 +2045,0.354304 +4093,0.284672 +8189,0.24064 +16381,0.290816 +32765,0.305152 +65533,0.328704 +131069,0.354208 +262141,0.408576 +524285,0.658848 +1048573,1.10694 +2097149,2.38166 +4194301,3.63357 +8388605,6.4215 +16777213,10.88 +33554429,29.5762 +67108861,53.0524 +13,0.110592 +29,0.14336 +61,0.14848 +125,0.1536 +253,0.178176 +509,0.195584 +1021,0.212992 +2045,0.203776 +4093,0.365568 +8189,0.273408 +16381,0.290528 +32765,0.295936 +65533,0.32768 +131069,0.3584 +262141,0.392192 +524285,0.74304 +1048573,1.4039 +2097149,1.95414 +4194301,4.16461 +8388605,6.65341 +16777213,15.1613 +33554429,21.2683 +67108861,67.0095 +13,0.104448 +29,0.120832 +61,0.146432 +125,0.164864 +253,0.318464 +509,0.196608 +1021,0.217088 +2045,0.206848 +4093,0.264192 +8189,0.400384 +16381,0.299008 +32765,0.308224 +65533,0.319488 +131069,0.342464 +262141,0.439296 +524285,0.731136 +1048573,1.07562 +2097149,2.47152 +4194301,3.33926 +8388605,6.3737 +16777213,10.8257 +33554429,29.8312 +67108861,50.8928 +13,0.111616 +29,0.120832 +61,0.13824 +125,0.15872 +253,0.161792 +509,0.195584 +1021,0.207872 +2045,0.236544 +4093,0.228352 +8189,0.268288 +16381,0.311296 +32765,0.29696 +65533,0.319488 +131069,0.349184 +262141,0.422912 +524285,0.722944 +1048573,1.32669 +2097149,1.97715 +4194301,4.57421 +8388605,6.6775 +16777213,15.5839 +33554429,21.0643 +67108861,67.0297 +13,0.10752 +29,0.126976 +61,0.131072 +125,0.151552 +253,0.176128 +509,0.187392 +1021,0.207872 +2045,0.203776 +4093,0.375808 +8189,0.270336 +16381,0.279552 +32765,0.30864 +65533,0.313344 +131069,0.349184 +262141,0.386688 +524285,1.43661 +1048573,1.0711 +2097149,2.5 +4194301,3.5159 +8388605,6.35328 +16777213,10.9189 +33554429,29.6008 +67108861,53.1882 +13,0.11264 +29,0.123904 +61,0.136192 +125,0.149504 +253,0.161792 +509,0.206848 +1021,0.19456 +2045,0.197632 +4093,0.232448 +8189,0.27136 +16381,0.770048 +32765,0.3072 +65533,0.328704 +131069,0.3584 +262141,0.432128 +524285,0.718656 +1048573,1.32352 +2097149,2.00547 +4194301,4.49843 +8388605,6.86179 +16777213,15.0482 +33554429,22.5295 +67108861,67.4381 +13,0.100352 +29,0.123904 +61,0.146432 +125,0.152576 +253,0.176128 +509,0.196608 +1021,0.212992 +2045,0.208896 +4093,0.234496 +8189,0.27648 +16381,0.290816 +32765,0.305152 +65533,0.32768 +131069,0.355328 +262141,0.402432 +524285,0.704512 +1048573,1.09875 +2097149,2.31936 +4194301,3.31664 +8388605,6.45325 +16777213,10.9163 +33554429,29.7636 +67108861,51.4953 +13,0.10752 +29,0.115712 +61,0.141312 +125,0.152576 +253,0.180224 +509,0.192512 +1021,0.2048 +2045,0.241664 +4093,0.223232 +8189,0.397312 +16381,0.290784 +32765,0.298528 +65533,0.313344 +131069,0.355328 +262141,0.41984 +524285,0.715104 +1048573,1.25747 +2097149,2.0009 +4194301,4.1472 +8388605,6.64202 +16777213,16.5622 +33554429,21.0519 +67108861,66.2487 +13,0.100352 +29,0.129024 +61,0.135168 +125,0.157696 +253,0.176128 +509,0.191488 +1021,0.208896 +2045,0.206848 +4093,0.224256 +8189,0.390144 +16381,0.290304 +32765,0.30208 +65533,0.320512 +131069,0.370688 +262141,0.432128 +524285,0.742016 +1048573,1.09261 +2097149,2.6592 +4194301,3.29523 +8388605,6.5065 +16777213,10.8216 +33554429,29.4851 +67108861,51.3833 +13,0.108544 +29,0.12288 +61,0.13824 +125,0.1536 +253,0.1792 +509,0.195584 +1021,0.202752 +2045,0.324608 +4093,0.231424 +8189,0.273408 +16381,0.29024 +32765,0.313088 +65533,0.329728 +131069,0.37376 +262141,0.388096 +524285,0.718208 +1048573,1.36022 +2097149,2.01114 +4194301,4.14045 +8388605,6.67443 +16777213,15.1423 +33554429,21.139 +67108861,66.0659 +13,0.098304 +29,0.126976 +61,0.13312 +125,0.152576 +253,0.17408 +509,0.197632 +1021,0.232448 +2045,0.357376 +4093,0.231424 +8189,0.390144 +16381,0.289792 +32765,0.55808 +65533,0.323584 +131069,0.370688 +262141,0.425984 +524285,0.690176 +1048573,1.17453 +2097149,2.40589 +4194301,3.31571 +8388605,6.65805 +16777213,12.0996 +33554429,29.4854 +67108861,53.144 +13,0.10752 +29,0.11264 +61,0.146432 +125,0.162816 +253,0.177152 +509,0.193536 +1021,0.2048 +2045,0.206848 +4093,0.231424 +8189,0.292864 +16381,0.29184 +32765,0.304128 +65533,0.311296 +131069,0.352256 +262141,0.449536 +524285,0.738304 +1048573,1.28342 +2097149,1.99053 +4194301,4.14966 +8388605,6.61914 +16777213,14.9719 +33554429,21.2178 +67108861,66.0168 +13,0.098304 +29,0.118784 +61,0.139264 +125,0.16384 +253,0.172032 +509,0.19456 +1021,0.20992 +2045,0.2304 +4093,0.226304 +8189,0.372736 +16381,0.283552 +32765,0.299008 +65533,0.319488 +131069,0.34912 +262141,0.4096 +524285,0.979968 +1048573,1.09261 +2097149,2.50266 +4194301,3.31414 +8388605,6.5024 +16777213,12.2015 +33554429,29.4851 +67108861,51.1833 +13,0.10752 +29,0.121856 +61,0.13312 +125,0.154624 +253,0.171008 +509,0.192512 +1021,0.214016 +2045,0.228352 +4093,0.403456 +8189,0.272384 +16381,0.290816 +32765,0.30208 +65533,0.321536 +131069,0.3584 +262141,0.393216 +524285,0.729088 +1048573,1.2585 +2097149,1.9792 +4194301,4.14413 +8388605,9.5191 +16777213,14.8859 +33554429,21.0964 +67108861,66.348 +13,0.109568 +29,0.169984 +61,0.144384 +125,0.166912 +253,0.172032 +509,0.195584 +1021,0.216064 +2045,0.367616 +4093,0.244736 +8189,0.268288 +16381,0.277504 +32765,0.306176 +65533,0.351232 +131069,0.3584 +262141,0.423936 +524285,0.702464 +1048573,1.10592 +2097149,2.44736 +4194301,3.29626 +8388605,6.50083 +16777213,10.8093 +33554429,29.609 +67108861,53.6508 +13,0.106496 +29,0.115712 +61,0.144384 +125,0.14848 +253,0.176128 +509,0.19456 +1021,0.210944 +2045,0.310272 +4093,0.336896 +8189,0.347136 +16381,0.291776 +32765,0.297984 +65533,0.314368 +131069,0.35328 +262141,0.453632 +524285,0.7424 +1048573,1.37062 +2097149,2.0224 +4194301,4.50253 +8388605,6.7369 +16777213,15.0678 +33554429,21.1317 +67108861,64.7895 +13,0.1024 +29,0.136192 +61,0.137216 +125,0.1536 +253,0.17408 +509,0.19456 +1021,0.217088 +2045,0.35328 +4093,0.24064 +8189,0.26624 +16381,0.294912 +32765,0.309248 +65533,0.365568 +131069,0.355328 +262141,0.416768 +524285,0.702464 +1048573,1.08544 +2097149,2.42928 +4194301,3.4048 +8388605,6.37904 +16777213,10.7678 +33554429,29.5455 +67108861,52.2803 +13,0.108544 +29,0.116736 +61,0.144384 +125,0.1536 +253,0.171008 +509,0.202752 +1021,0.218112 +2045,0.347136 +4093,0.334848 +8189,0.349184 +16381,0.28672 +32765,0.313344 +65533,0.31232 +131069,0.57856 +262141,0.425984 +524285,0.724288 +1048573,1.42848 +2097149,2.00909 +4194301,4.09741 +8388605,6.6263 +16777213,15.0958 +33554429,21.2489 +67108861,67.6444 +13,0.115712 +29,0.22016 +61,0.137216 +125,0.14848 +253,0.169984 +509,0.187392 +1021,0.224256 +2045,0.308224 +4093,0.330752 +8189,0.355328 +16381,0.301056 +32765,0.690176 +65533,0.32768 +131069,0.356352 +262141,0.429056 +524285,0.699392 +1048573,1.09568 +2097149,2.80986 +4194301,3.28806 +8388605,6.34941 +16777213,10.8909 +33554429,29.6298 +67108861,51.7478 +13,0.115712 +29,0.120832 +61,0.136192 +125,0.161792 +253,0.169984 +509,0.200704 +1021,0.203776 +2045,0.334848 +4093,0.372736 +8189,0.265216 +16381,0.287744 +32765,0.313344 +65533,0.31744 +131069,0.333824 +262141,0.421888 +524285,0.75776 +1048573,1.32301 +2097149,1.97222 +4194301,4.29773 +8388605,6.71296 +16777213,14.9135 +33554429,21.1241 +67108861,66.3752 +13,0.104448 +29,0.132096 +61,0.136192 +125,0.156672 +253,0.177152 +509,0.197632 +1021,0.222208 +2045,0.274432 +4093,0.336896 +8189,0.280576 +16381,0.293888 +32765,0.416768 +65533,0.321536 +131069,0.350208 +262141,0.809984 +524285,0.854016 +1048573,1.21805 +2097149,2.49958 +4194301,3.27373 +8388605,6.38874 +16777213,10.9046 +33554429,30.6483 +67108861,53.394 +13,0.101376 +29,0.115712 +61,0.139264 +125,0.169984 +253,0.177152 +509,0.195584 +1021,0.224256 +2045,0.415744 +4093,0.3328 +8189,0.345088 +16381,0.29696 +32765,0.303104 +65533,0.524288 +131069,0.366592 +262141,0.392192 +524285,0.714112 +1048573,1.35373 +2097149,1.96813 +4194301,4.10112 +8388605,6.68262 +16777213,14.9688 +33554429,21.2951 +67108861,67.1099 +13,0.10752 +29,0.132096 +61,0.130048 +125,0.15872 +253,0.180224 +509,0.19968 +1021,0.2304 +2045,0.36352 +4093,0.328704 +8189,0.3584 +16381,0.290816 +32765,0.3072 +65533,0.329728 +131069,0.78336 +262141,0.391168 +524285,0.714592 +1048573,1.20003 +2097149,2.46477 +4194301,3.40787 +8388605,6.28122 +16777213,10.7842 +33554429,29.9868 +67108861,52.4364 +13,0.121856 +29,0.116736 +61,0.141312 +125,0.145408 +253,0.180224 +509,0.190464 +1021,0.227328 +2045,0.347136 +4093,0.346112 +8189,0.354304 +16381,0.293888 +32765,0.293888 +65533,0.3328 +131069,0.354304 +262141,0.436224 +524285,0.756736 +1048573,1.63021 +2097149,1.94454 +4194301,4.31821 +8388605,6.66829 +16777213,15.1235 +33554429,21.204 +67108861,64.5192 +13,0.11264 +29,0.132096 +61,0.136192 +125,0.151552 +253,0.178176 +509,0.190464 +1021,0.20992 +2045,0.22016 +4093,0.329728 +8189,0.273408 +16381,0.284672 +32765,0.295936 +65533,0.31744 +131069,0.340992 +262141,0.428032 +524285,1.03219 +1048573,1.08576 +2097149,2.54566 +4194301,4.96435 +8388605,6.52186 +16777213,11.0746 +33554429,29.5721 +67108861,51.0546 +13,0.109568 +29,0.114688 +61,0.14336 +125,0.141312 +253,0.178176 +509,0.210944 +1021,0.21504 +2045,0.357376 +4093,0.24576 +8189,0.26112 +16381,0.299008 +32765,0.297984 +65533,0.32256 +131069,0.351232 +262141,0.400928 +524285,0.708608 +1048573,1.61792 +2097149,1.96877 +4194301,4.1257 +8388605,7.25504 +16777213,15.1327 +33554429,21.163 +67108861,67.7222 +13,0.111616 +29,0.132096 +61,0.147456 +125,0.157696 +253,0.1792 +509,0.185344 +1021,0.211968 +2045,0.310272 +4093,0.331776 +8189,0.290816 +16381,0.282624 +32765,0.295936 +65533,0.311296 +131069,0.360448 +262141,0.431104 +524285,0.695296 +1048573,1.09056 +2097149,2.45248 +4194301,3.33968 +8388605,6.41126 +16777213,11.2219 +33554429,29.5414 +67108861,49.8962 +13,0.110592 +29,0.118784 +61,0.144384 +125,0.159744 +253,0.183296 +509,0.183296 +1021,0.202752 +2045,0.277504 +4093,0.370688 +8189,0.267264 +16381,0.27648 +32765,0.50688 +65533,0.320512 +131069,0.366592 +262141,0.387072 +524285,1.44998 +1048573,1.32954 +2097149,1.96333 +4194301,4.15334 +8388605,7.55405 +16777213,14.8996 +33554429,21.3048 +67108861,65.6855 +13,0.10752 +29,0.131072 +61,0.134144 +125,0.191488 +253,0.171008 +509,0.193536 +1021,0.212992 +2045,0.349184 +4093,0.36352 +8189,0.273408 +16381,0.29184 +32765,0.318464 +65533,0.321536 +131069,0.362496 +262141,0.391168 +524285,0.726016 +1048573,1.12128 +2097149,2.99213 +4194301,4.5056 +8388605,6.44403 +16777213,10.8251 +33554429,29.5107 +67108861,51.4588 +13,0.106496 +29,0.119808 +61,0.142336 +125,0.159744 +253,0.181248 +509,0.193536 +1021,0.211968 +2045,0.34304 +4093,0.392192 +8189,0.262144 +16381,0.293888 +32765,0.293888 +65533,0.32256 +131069,0.352256 +262141,0.443392 +524285,0.744448 +1048573,1.30333 +2097149,1.96096 +4194301,4.1775 +8388605,6.62733 +16777213,15.2166 +33554429,21.0202 +67108861,65.9948 +13,0.096256 +29,0.128 +61,0.134144 +125,0.154624 +253,0.182272 +509,0.19456 +1021,0.214016 +2045,0.231424 +4093,0.362496 +8189,0.267264 +16381,0.293888 +32765,0.321536 +65533,0.31744 +131069,0.381952 +262141,0.388096 +524285,0.710656 +1048573,1.0736 +2097149,2.37978 +4194301,4.06426 +8388605,6.69542 +16777213,10.8435 +33554429,29.4736 +67108861,52.6602 +13,0.104448 +29,0.118784 +61,0.140288 +125,0.161792 +253,0.166912 +509,0.195584 +1021,0.206848 +2045,0.34816 +4093,0.260096 +8189,0.264192 +16381,0.295936 +32765,0.305152 +65533,0.31744 +131069,0.352256 +262141,0.388096 +524285,0.991232 +1048573,1.33837 +2097149,2.16115 +4194301,4.26394 +8388605,6.73075 +16777213,15.0968 +33554429,21.1852 +67108861,65.748 +13,0.096256 +29,0.129024 +61,0.137216 +125,0.155648 +253,0.171008 +509,0.197632 +1021,0.210944 +2045,0.338944 +4093,0.226304 +8189,0.270336 +16381,0.28672 +32765,0.306176 +65533,0.321536 +131069,0.352256 +262141,0.412672 +524285,0.700416 +1048573,1.12774 +2097149,2.45658 +4194301,3.32458 +8388605,6.37542 diff --git a/Project2-Stream-Compaction/data/Scan_data/data_nonpow2_faster/naive.csv b/Project2-Stream-Compaction/data/Scan_data/data_nonpow2_faster/naive.csv new file mode 100644 index 0000000..aaca977 --- /dev/null +++ b/Project2-Stream-Compaction/data/Scan_data/data_nonpow2_faster/naive.csv @@ -0,0 +1,894 @@ +13,0.172032 +29,0.177152 +61,0.307232 +125,0.19456 +253,0.221184 +509,0.211968 +1021,0.234464 +2045,0.25088 +4093,0.267296 +8189,0.287744 +16381,0.386048 +32765,0.536576 +65533,0.65632 +131069,1.0537 +262141,2.25283 +524285,4.23936 +1048573,7.98003 +2097149,15.7261 +4194301,32.8335 +8388605,63.3057 +16777213,128.479 +33554429,254.301 +67108861,513.441 +13,0.162816 +29,0.310272 +61,0.1792 +125,0.190464 +253,0.18944 +509,0.19968 +1021,0.208896 +2045,0.221184 +4093,0.23552 +8189,0.268288 +16381,0.331776 +32765,0.423936 +65533,0.617472 +131069,1.024 +262141,2.06848 +524285,4.63315 +1048573,8.47766 +2097149,15.5949 +4194301,31.4044 +8388605,61.8981 +16777213,123.857 +33554429,257.691 +67108861,515.017 +13,0.181248 +29,0.16384 +61,0.1792 +125,0.146432 +253,0.218112 +509,0.202752 +1021,0.280576 +2045,0.218112 +4093,0.503808 +8189,0.268288 +16381,0.330176 +32765,0.48128 +65533,0.647168 +131069,1.23187 +262141,2.28045 +524285,3.84717 +1048573,7.5505 +2097149,15.6122 +4194301,31.658 +8388605,64.4387 +16777213,125.498 +33554429,255.076 +67108861,509.624 +13,0.159744 +29,0.173056 +61,0.178176 +125,0.233472 +253,0.191488 +509,0.202752 +1021,0.509952 +2045,0.221184 +4093,0.239616 +8189,0.268288 +16381,0.3232 +32765,0.47616 +65533,0.64 +131069,1.02912 +262141,2.22208 +524285,3.81645 +1048573,7.68205 +2097149,15.3055 +4194301,31.0414 +8388605,63.1378 +16777213,125.872 +33554429,255.306 +67108861,510.592 +13,0.136192 +29,0.191488 +61,0.180224 +125,0.22016 +253,0.187392 +509,0.197632 +1021,0.27648 +2045,0.217088 +4093,0.241664 +8189,0.270336 +16381,0.321024 +32765,0.420864 +65533,0.618496 +131069,1.04653 +262141,2.06848 +524285,3.83181 +1048573,8.33706 +2097149,15.8243 +4194301,32.6072 +8388605,63.6659 +16777213,125.981 +33554429,253.542 +67108861,514.055 +13,0.18944 +29,0.166912 +61,0.17408 +125,0.191488 +253,0.19456 +509,0.211968 +1021,0.49664 +2045,0.219136 +4093,0.672768 +8189,0.269312 +16381,0.324608 +32765,0.423936 +65533,0.625664 +131069,1.02093 +262141,2.03571 +524285,3.8377 +1048573,7.61187 +2097149,15.5402 +4194301,30.7869 +8388605,62.4769 +16777213,126.079 +33554429,253.889 +67108861,512.935 +13,0.160768 +29,0.166912 +61,0.178176 +125,0.183296 +253,0.190464 +509,0.208896 +1021,0.262144 +2045,0.221184 +4093,0.294912 +8189,0.268288 +16381,0.360448 +32765,0.816128 +65533,0.664352 +131069,1.02605 +262141,2.10637 +524285,3.82054 +1048573,7.56736 +2097149,16.439 +4194301,30.6903 +8388605,63.6481 +16777213,126.809 +33554429,254.475 +67108861,510.529 +13,0.223232 +29,0.171008 +61,0.188416 +125,0.246784 +253,0.214016 +509,0.201728 +1021,0.237568 +2045,0.252928 +4093,0.233472 +8189,0.284672 +16381,0.324608 +32765,0.41984 +65533,0.654336 +131069,1.04755 +262141,2.07974 +524285,3.84698 +1048573,7.60192 +2097149,15.8607 +4194301,32.0266 +8388605,62.3984 +16777213,125.463 +33554429,254.163 +67108861,514.568 +13,0.201728 +29,0.152576 +61,0.200704 +125,0.387072 +253,0.191488 +509,0.257024 +1021,0.239616 +2045,0.221184 +4093,0.311296 +8189,0.277504 +16381,0.309248 +32765,0.42496 +65533,0.664576 +131069,1.02605 +262141,2.47398 +524285,3.82259 +1048573,7.56381 +2097149,15.6197 +4194301,31.2812 +8388605,63.0618 +16777213,127.059 +33554429,254.077 +67108861,510.028 +13,0.139264 +29,0.228352 +61,0.224256 +125,0.183296 +253,0.197632 +509,0.2048 +1021,0.555008 +2045,0.290816 +4093,0.27648 +8189,0.273408 +16381,0.413696 +32765,0.434912 +65533,0.623616 +131069,1.03936 +262141,2.55795 +524285,4.14413 +1048573,7.77011 +2097149,16.9481 +4194301,32.7535 +8388605,62.447 +16777213,126.82 +33554429,250.888 +67108861,513.397 +13,0.140288 +29,0.16384 +61,0.1792 +125,0.190464 +253,0.212992 +509,0.203776 +1021,0.246784 +2045,0.249856 +4093,0.234496 +8189,0.269312 +16381,0.325632 +32765,0.458752 +65533,0.620544 +131069,1.03424 +262141,2.03469 +524285,3.82566 +1048573,7.57651 +2097149,16.2956 +4194301,30.5306 +8388605,62.8396 +16777213,126.913 +33554429,253.385 +67108861,516.188 +13,0.166912 +29,0.171008 +61,0.191488 +125,0.191488 +253,0.154624 +509,0.19968 +1021,0.23552 +2045,0.22016 +4093,0.259072 +8189,0.268288 +16381,0.335872 +32765,0.421888 +65533,0.643072 +131069,1.01786 +262141,2.18419 +524285,3.83078 +1048573,7.55814 +2097149,15.7182 +4194301,35.8431 +8388605,61.4039 +16777213,126.335 +33554429,255.629 +67108861,512.748 +13,0.126976 +29,0.191488 +61,0.211968 +125,0.18432 +253,0.19456 +509,0.207872 +1021,0.208896 +2045,0.239616 +4093,0.26624 +8189,0.275456 +16381,0.32768 +32765,0.41984 +65533,0.636928 +131069,1.02912 +262141,2.1289 +524285,3.84032 +1048573,7.68819 +2097149,15.3149 +4194301,30.7586 +8388605,62.1967 +16777213,126.823 +33554429,253.733 +67108861,509.493 +13,0.214016 +29,0.493568 +61,0.190464 +125,0.183296 +253,0.16384 +509,0.201728 +1021,0.2304 +2045,0.219136 +4093,0.265216 +8189,0.268288 +16381,0.338944 +32765,0.438272 +65533,0.615424 +131069,1.01786 +262141,2.05107 +524285,3.83962 +1048573,8.21853 +2097149,16.3748 +4194301,30.7948 +8388605,61.6878 +16777213,125.953 +33554429,254.109 +67108861,511.745 +13,0.17408 +29,0.183296 +61,0.175104 +125,0.187392 +253,0.224256 +509,0.2048 +1021,0.232448 +2045,0.2304 +4093,0.23552 +8189,0.270336 +16381,0.324608 +32765,0.459776 +65533,0.616448 +131069,1.02912 +262141,2.0695 +524285,3.75555 +1048573,8.73149 +2097149,15.8031 +4194301,32.4422 +8388605,62.3635 +16777213,123.856 +33554429,253.632 +67108861,513.167 +13,0.205824 +29,0.166912 +61,0.178176 +125,0.187392 +253,0.205824 +509,0.2048 +1021,0.231424 +2045,0.233472 +4093,0.234496 +8189,0.335872 +16381,0.330752 +32765,0.433152 +65533,0.643072 +131069,1.05267 +262141,2.03981 +524285,3.8081 +1048573,7.83907 +2097149,15.4518 +4194301,30.7844 +8388605,62.338 +16777213,125.271 +33554429,254.702 +67108861,512.52 +13,0.18944 +29,0.453632 +61,0.234496 +125,0.187392 +253,0.192512 +509,0.249856 +1021,0.206848 +2045,0.22528 +4093,0.236544 +8189,0.380928 +16381,0.403456 +32765,0.41984 +65533,0.668672 +131069,1.536 +262141,2.58662 +524285,3.85814 +1048573,7.56669 +2097149,15.5494 +4194301,30.6606 +8388605,62.5036 +16777213,125.441 +33554429,254.222 +67108861,514.954 +13,0.13824 +29,0.211968 +61,0.292864 +125,0.169984 +253,0.187392 +509,0.19968 +1021,0.232448 +2045,0.22528 +4093,0.23552 +8189,0.283648 +16381,0.328704 +32765,0.422912 +65533,0.664576 +131069,1.59539 +262141,2.9952 +524285,4.13782 +1048573,7.92368 +2097149,16.1925 +4194301,31.9905 +8388605,62.4568 +16777213,123.607 +33554429,257.921 +67108861,511.514 +13,0.177152 +29,0.1792 +61,0.221184 +125,0.195584 +253,0.228352 +509,0.224256 +1021,0.231424 +2045,0.339968 +4093,0.239616 +8189,0.270336 +16381,0.356352 +32765,0.405504 +65533,0.62976 +131069,1.0752 +262141,2.03878 +524285,3.83683 +1048573,7.56006 +2097149,15.3057 +4194301,31.0034 +8388605,63.3569 +16777213,126.289 +33554429,257.183 +67108861,524.993 +13,0.178176 +29,0.190464 +61,0.172032 +125,0.182272 +253,0.16896 +509,0.195584 +1021,0.24576 +2045,0.221184 +4093,0.234496 +8189,0.295936 +16381,0.324608 +32765,0.41472 +65533,0.886784 +131069,1.03117 +262141,2.09203 +524285,4.16326 +1048573,8.18147 +2097149,15.703 +4194301,34.6804 +8388605,90.1407 +16777213,136.279 +33554429,255.286 +67108861,515.047 +13,0.169984 +29,0.1792 +61,0.180224 +125,0.247808 +253,0.190464 +509,0.198656 +1021,0.233472 +2045,0.24064 +4093,0.315392 +8189,0.319488 +16381,0.323584 +32765,0.41984 +65533,0.67584 +131069,1.02195 +262141,2.03162 +524285,3.84614 +1048573,8.07293 +2097149,15.4614 +4194301,32.6123 +8388605,62.4448 +16777213,126.238 +33554429,253.666 +67108861,512.896 +13,0.201728 +29,0.181248 +61,0.177152 +125,0.196608 +253,0.203776 +509,0.267264 +1021,0.232448 +2045,0.228352 +4093,0.238592 +8189,0.275456 +16381,0.379904 +32765,0.434176 +65533,0.622592 +131069,1.17965 +262141,2.0265 +524285,3.83898 +1048573,7.87763 +2097149,15.9568 +4194301,30.9046 +8388605,62.2638 +16777213,126.015 +33554429,253.71 +67108861,514.523 +13,0.140288 +29,0.165888 +61,0.173056 +125,0.182272 +253,0.190464 +509,0.20992 +1021,0.233472 +2045,0.2304 +4093,0.436224 +8189,0.370688 +16381,0.434176 +32765,0.45568 +65533,0.628736 +131069,1.02195 +262141,2.04698 +524285,3.8417 +1048573,8.10656 +2097149,16.6892 +4194301,32.1852 +8388605,62.464 +16777213,126.25 +33554429,252.774 +67108861,515.596 +13,0.181248 +29,0.180224 +61,0.17408 +125,0.185344 +253,0.190464 +509,0.202752 +1021,0.289792 +2045,0.2304 +4093,0.269312 +8189,0.27648 +16381,0.345088 +32765,0.519168 +65533,0.654336 +131069,1.0455 +262141,2.04288 +524285,3.82541 +1048573,8.21862 +2097149,15.4218 +4194301,30.7978 +8388605,62.3335 +16777213,125.728 +33554429,253.513 +67108861,514.77 +13,0.1792 +29,0.185344 +61,0.195584 +125,0.181248 +253,0.218112 +509,0.210944 +1021,0.227328 +2045,0.217088 +4093,0.253952 +8189,0.26624 +16381,0.318464 +32765,0.4864 +65533,0.61952 +131069,1.02605 +262141,2.6321 +524285,3.83795 +1048573,7.73286 +2097149,15.6487 +4194301,31.4364 +8388605,63.2779 +16777213,126.317 +33554429,254.426 +67108861,513.888 +13,0.186368 +29,0.126976 +61,0.206848 +125,0.188416 +253,0.500736 +509,0.283648 +1021,0.234496 +2045,0.219136 +4093,0.242688 +8189,0.267264 +16381,0.316416 +32765,0.436224 +65533,0.667648 +131069,1.024 +262141,2.06029 +524285,3.83552 +1048573,8.1847 +2097149,15.4945 +4194301,31.3897 +8388605,62.4952 +16777213,125.728 +33554429,253.997 +67108861,511.337 +13,0.140288 +29,0.171008 +61,0.171008 +125,0.187392 +253,0.190464 +509,0.211968 +1021,0.231424 +2045,0.244736 +4093,0.329728 +8189,0.3328 +16381,0.320512 +32765,0.415744 +65533,0.637952 +131069,1.11821 +262141,2.16986 +524285,3.82941 +1048573,8.35994 +2097149,15.554 +4194301,31.5095 +8388605,62.6944 +16777213,125.366 +33554429,254.877 +67108861,514.92 +13,0.132096 +29,0.141312 +61,0.200704 +125,0.182272 +253,0.185344 +509,0.20992 +1021,0.232448 +2045,0.221184 +4093,0.242688 +8189,0.270336 +16381,0.342016 +32765,0.425984 +65533,0.6656 +131069,1.88006 +262141,2.2272 +524285,3.82771 +1048573,7.58246 +2097149,15.8705 +4194301,33.834 +8388605,61.3775 +16777213,126.871 +33554429,254.273 +67108861,511.242 +13,0.173056 +29,0.192512 +61,0.186368 +125,0.19456 +253,0.19456 +509,0.202752 +1021,0.443392 +2045,0.221184 +4093,0.452608 +8189,0.297984 +16381,0.334848 +32765,0.467968 +65533,0.620544 +131069,1.04858 +262141,2.07258 +524285,3.76771 +1048573,8.54874 +2097149,15.2223 +4194301,30.7552 +8388605,65.6083 +16777213,128.468 +33554429,255.688 +67108861,512.4 +13,0.177152 +29,0.171008 +61,0.176128 +125,0.181248 +253,0.570368 +509,0.214016 +1021,0.428032 +2045,0.232448 +4093,0.243712 +8189,0.265216 +16381,0.380928 +32765,0.4352 +65533,0.618496 +131069,1.024 +262141,2.21389 +524285,3.75501 +1048573,8.06541 +2097149,15.6646 +4194301,31.4499 +8388605,64.3509 +16777213,129.86 +33554429,252.355 +67108861,513.412 +13,0.171008 +29,0.182272 +61,0.178176 +125,0.186368 +253,0.198656 +509,0.24064 +1021,0.258048 +2045,0.267264 +4093,0.24064 +8189,0.268288 +16381,0.39936 +32765,0.483328 +65533,0.794624 +131069,1.0281 +262141,2.0521 +524285,3.76378 +1048573,7.63242 +2097149,15.4112 +4194301,31.1235 +8388605,62.8541 +16777213,127.224 +33554429,253.813 +67108861,513.852 +13,0.17408 +29,0.214016 +61,0.22528 +125,0.18944 +253,0.444416 +509,0.293888 +1021,0.25088 +2045,0.219136 +4093,0.284672 +8189,0.311296 +16381,0.345088 +32765,0.449536 +65533,0.616448 +131069,1.04653 +262141,2.35827 +524285,3.87891 +1048573,7.97216 +2097149,15.8915 +4194301,32.9157 +8388605,62.2653 +16777213,125.583 +33554429,253.707 +67108861,512.235 +13,0.162816 +29,0.172032 +61,0.238592 +125,0.190464 +253,0.402432 +509,0.26624 +1021,0.270336 +2045,0.2304 +4093,0.246784 +8189,0.273408 +16381,0.329728 +32765,0.447488 +65533,0.633856 +131069,1.07418 +262141,2.38592 +524285,3.82666 +1048573,7.57629 +2097149,15.9565 +4194301,31.0942 +8388605,63.503 +16777213,126.723 +33554429,256.303 +67108861,516.223 +13,0.173056 +29,0.161792 +61,0.169984 +125,0.177152 +253,0.185344 +509,0.195584 +1021,0.49664 +2045,0.2304 +4093,0.238592 +8189,0.269312 +16381,0.324608 +32765,0.415744 +65533,0.694272 +131069,1.05882 +262141,2.3296 +524285,4.06112 +1048573,7.57555 +2097149,15.9844 +4194301,32.6549 +8388605,63.0508 +16777213,128.581 +33554429,253.974 +67108861,511.016 +13,0.195584 +29,0.316416 +61,0.232448 +125,0.24064 +253,0.218112 +509,0.210944 +1021,0.24576 +2045,0.241664 +4093,0.259072 +8189,0.2816 +16381,0.371712 +32765,0.707584 +65533,0.857088 +131069,1.024 +262141,2.12582 +524285,3.83488 +1048573,8.13251 +2097149,15.4577 +4194301,30.8091 +8388605,62.4599 +16777213,125.965 +33554429,255.068 +67108861,514.096 +13,0.176128 +29,0.181248 +61,0.191488 +125,0.187392 +253,0.190464 +509,0.521216 +1021,0.229376 +2045,0.270336 +4093,0.41984 +8189,0.330752 +16381,0.349184 +32765,0.4352 +65533,0.653312 +131069,1.06086 +262141,2.08282 +524285,4.40454 +1048573,7.9713 +2097149,15.2064 +4194301,31.8904 +8388605,62.551 +16777213,127.305 +33554429,255.51 +67108861,514.15 +13,0.134144 +29,0.1792 +61,0.256 +125,0.201728 +253,0.203776 +509,0.256 +1021,0.236544 +2045,0.268288 +4093,0.301056 +8189,0.321536 +16381,0.33792 +32765,0.449536 +65533,0.647168 +131069,1.03834 +262141,2.10739 +524285,4.24141 +1048573,7.9288 +2097149,16.2416 +4194301,32.6817 +8388605,63.0036 +16777213,127.968 +33554429,254.771 +67108861,515.048 +13,0.176128 +29,0.369664 +61,0.252928 +125,0.186368 +253,0.21504 +509,0.207872 +1021,0.226304 +2045,0.22528 +4093,0.376832 +8189,0.391168 +16381,0.62464 +32765,0.418816 +65533,0.664576 +131069,1.02707 +262141,2.10842 +524285,4.06118 +1048573,7.62765 +2097149,17.0977 +4194301,31.0313 +8388605,63.7635 +16777213,127.515 +33554429,255.455 +67108861,513.406 +13,0.139264 +29,0.18944 +61,0.135168 +125,0.315392 +253,0.417792 +509,0.226304 +1021,0.2304 +2045,0.222208 +4093,0.2304 +8189,0.272384 +16381,0.362496 +32765,0.422912 +65533,0.643072 +131069,1.04448 +262141,2.32858 +524285,4.04054 +1048573,8.26 +2097149,16.0707 +4194301,31.3682 +8388605,61.8578 diff --git a/Project2-Stream-Compaction/data/Scan_data/data_nonpow2_faster/shared_mem.csv b/Project2-Stream-Compaction/data/Scan_data/data_nonpow2_faster/shared_mem.csv new file mode 100644 index 0000000..7b7e7e9 --- /dev/null +++ b/Project2-Stream-Compaction/data/Scan_data/data_nonpow2_faster/shared_mem.csv @@ -0,0 +1,894 @@ +13,0.146432 +29,0.271392 +61,0.139264 +125,0.151552 +253,0.229376 +509,0.171008 +1021,0.1536 +2045,0.15664 +4093,0.190496 +8189,0.18944 +16381,0.152416 +32765,0.16224 +65533,0.178176 +131069,0.18944 +262141,0.2304 +524285,0.256992 +1048573,0.453248 +2097149,0.56528 +4194301,0.869184 +8388605,1.52157 +16777213,2.81293 +33554429,5.42582 +67108861,10.7981 +13,0.201728 +29,0.190464 +61,0.186368 +125,0.188416 +253,0.186368 +509,0.206848 +1021,0.181248 +2045,0.200704 +4093,0.197632 +8189,0.203776 +16381,0.257024 +32765,0.166912 +65533,0.193536 +131069,0.200704 +262141,0.217088 +524285,0.274272 +1048573,0.36704 +2097149,0.525056 +4194301,0.920032 +8388605,1.51242 +16777213,2.88973 +33554429,5.45654 +67108861,10.9711 +13,0.185344 +29,0.173056 +61,0.181248 +125,0.18432 +253,0.185344 +509,0.3584 +1021,0.173056 +2045,0.190464 +4093,0.156672 +8189,0.1536 +16381,0.181248 +32765,0.191488 +65533,0.156672 +131069,0.156192 +262141,0.182272 +524285,0.297984 +1048573,0.38912 +2097149,0.56496 +4194301,0.856064 +8388605,1.64006 +16777213,2.81885 +33554429,5.44768 +67108861,10.9475 +13,0.187392 +29,0.185344 +61,0.192512 +125,0.186368 +253,0.186368 +509,0.187392 +1021,0.180224 +2045,0.197632 +4093,0.139264 +8189,0.196608 +16381,0.18528 +32765,0.198656 +65533,0.120832 +131069,0.167936 +262141,0.217088 +524285,0.283072 +1048573,0.3632 +2097149,0.523584 +4194301,0.850752 +8388605,1.50938 +16777213,2.84518 +33554429,5.45587 +67108861,10.8513 +13,0.187392 +29,0.185344 +61,0.176128 +125,0.180224 +253,0.191488 +509,0.18432 +1021,0.18432 +2045,0.19968 +4093,0.223232 +8189,0.150528 +16381,0.180064 +32765,0.195584 +65533,0.18944 +131069,0.193536 +262141,0.244736 +524285,0.299008 +1048573,0.461824 +2097149,0.64512 +4194301,0.837088 +8388605,1.7193 +16777213,2.80986 +33554429,5.46778 +67108861,10.7079 +13,0.191488 +29,0.181248 +61,0.18432 +125,0.192512 +253,0.186368 +509,0.177152 +1021,0.18432 +2045,0.207872 +4093,0.146432 +8189,0.196608 +16381,0.19456 +32765,0.195584 +65533,0.18432 +131069,0.201728 +262141,0.215392 +524285,0.303488 +1048573,0.376384 +2097149,0.548864 +4194301,0.833248 +8388605,1.59811 +16777213,2.8184 +33554429,5.43485 +67108861,10.6634 +13,0.181248 +29,0.183296 +61,0.18944 +125,0.183296 +253,0.191488 +509,0.144384 +1021,0.187392 +2045,0.206848 +4093,0.202752 +8189,0.19968 +16381,0.181216 +32765,0.187392 +65533,0.194496 +131069,0.211968 +262141,0.211968 +524285,0.284672 +1048573,0.37328 +2097149,0.499584 +4194301,0.971456 +8388605,1.51952 +16777213,2.9552 +33554429,5.45245 +67108861,10.7407 +13,0.192512 +29,0.177152 +61,0.326656 +125,0.185344 +253,0.186368 +509,0.193536 +1021,0.191488 +2045,0.171008 +4093,0.202752 +8189,0.2048 +16381,0.185344 +32765,0.19456 +65533,0.197632 +131069,0.431104 +262141,0.222208 +524285,0.295936 +1048573,0.374784 +2097149,0.528 +4194301,0.854912 +8388605,1.64614 +16777213,2.89485 +33554429,5.45379 +67108861,10.6535 +13,0.190464 +29,0.548864 +61,0.19456 +125,0.18944 +253,0.200704 +509,0.186368 +1021,0.187392 +2045,0.197632 +4093,0.192512 +8189,0.200704 +16381,0.197632 +32765,0.187168 +65533,0.27504 +131069,0.200704 +262141,0.219776 +524285,0.273408 +1048573,0.478208 +2097149,0.531776 +4194301,0.848864 +8388605,1.52509 +16777213,2.81059 +33554429,5.53626 +67108861,10.7448 +13,0.171008 +29,0.187392 +61,0.177152 +125,0.14336 +253,0.144384 +509,0.139264 +1021,0.144384 +2045,0.197632 +4093,0.1536 +8189,0.14336 +16381,0.143904 +32765,0.149504 +65533,0.157696 +131069,0.379904 +262141,0.231424 +524285,0.280992 +1048573,0.367616 +2097149,0.533248 +4194301,0.836416 +8388605,1.5145 +16777213,3.15581 +33554429,5.45178 +67108861,10.6527 +13,0.186368 +29,0.19968 +61,0.183296 +125,0.190464 +253,0.191488 +509,0.145408 +1021,0.149504 +2045,0.151552 +4093,0.2048 +8189,0.15872 +16381,0.14336 +32765,0.150912 +65533,0.198432 +131069,0.169984 +262141,0.233472 +524285,0.289792 +1048573,0.369664 +2097149,0.501216 +4194301,0.85504 +8388605,1.51654 +16777213,2.8311 +33554429,5.4528 +67108861,10.8073 +13,0.164864 +29,0.18944 +61,0.18944 +125,0.570368 +253,0.355328 +509,0.197632 +1021,0.14848 +2045,0.152576 +4093,0.155648 +8189,0.151552 +16381,0.196608 +32765,0.152576 +65533,0.161792 +131069,0.183264 +262141,0.188416 +524285,0.270304 +1048573,0.367392 +2097149,0.538624 +4194301,0.851968 +8388605,1.51824 +16777213,3.16493 +33554429,5.46918 +67108861,10.6625 +13,0.195584 +29,0.196608 +61,0.182272 +125,0.188416 +253,0.19456 +509,0.197632 +1021,0.196608 +2045,0.195584 +4093,0.144384 +8189,0.212992 +16381,0.197376 +32765,0.190368 +65533,0.19456 +131069,0.201728 +262141,0.229376 +524285,0.285696 +1048573,0.37376 +2097149,0.541312 +4194301,0.845824 +8388605,1.57629 +16777213,2.82669 +33554429,5.47091 +67108861,10.6547 +13,0.18944 +29,0.19456 +61,0.186368 +125,0.321536 +253,0.178176 +509,0.188416 +1021,0.18944 +2045,0.152576 +4093,0.205824 +8189,0.203776 +16381,0.182272 +32765,0.149504 +65533,0.145408 +131069,0.159744 +262141,0.178176 +524285,0.298464 +1048573,0.356352 +2097149,0.501056 +4194301,0.881152 +8388605,1.54931 +16777213,2.87904 +33554429,5.46154 +67108861,10.6864 +13,0.167936 +29,0.190464 +61,0.183296 +125,0.186368 +253,0.192512 +509,0.18432 +1021,0.18944 +2045,0.19968 +4093,0.328704 +8189,0.205824 +16381,0.185728 +32765,0.192384 +65533,0.151552 +131069,0.164192 +262141,0.183296 +524285,0.293728 +1048573,0.360352 +2097149,0.521216 +4194301,0.863232 +8388605,1.51296 +16777213,2.81645 +33554429,5.45056 +67108861,10.694 +13,0.198656 +29,0.192512 +61,0.197632 +125,0.8192 +253,0.176128 +509,0.18432 +1021,0.140288 +2045,0.16384 +4093,0.152576 +8189,0.181248 +16381,0.243712 +32765,0.192512 +65533,0.149504 +131069,0.161696 +262141,0.181152 +524285,0.251456 +1048573,0.37888 +2097149,0.50336 +4194301,0.916832 +8388605,1.49274 +16777213,2.82624 +33554429,5.91098 +67108861,12.2854 +13,0.16384 +29,0.185344 +61,0.203776 +125,0.186368 +253,0.183296 +509,0.191488 +1021,0.202752 +2045,0.19968 +4093,0.191488 +8189,0.210944 +16381,0.186368 +32765,0.185344 +65533,0.199104 +131069,0.371712 +262141,0.22016 +524285,0.287744 +1048573,0.657408 +2097149,0.536 +4194301,0.836544 +8388605,1.52973 +16777213,2.83398 +33554429,5.7169 +67108861,10.6833 +13,0.18944 +29,0.180224 +61,0.188416 +125,0.198656 +253,0.187392 +509,0.145408 +1021,0.147456 +2045,0.156672 +4093,0.162816 +8189,0.156672 +16381,0.20064 +32765,0.1536 +65533,0.14848 +131069,0.152576 +262141,0.214016 +524285,0.272832 +1048573,0.379904 +2097149,0.570368 +4194301,1.18739 +8388605,1.53946 +16777213,2.81443 +33554429,5.46365 +67108861,10.9066 +13,0.19456 +29,0.248832 +61,0.18432 +125,0.191488 +253,0.17408 +509,0.19968 +1021,0.195584 +2045,0.244736 +4093,0.161792 +8189,0.203776 +16381,0.185344 +32765,0.203776 +65533,0.149216 +131069,0.187392 +262141,0.218112 +524285,0.38496 +1048573,0.364544 +2097149,0.498688 +4194301,0.84752 +8388605,1.51347 +16777213,2.82624 +33554429,5.46144 +67108861,10.6854 +13,0.169984 +29,0.190464 +61,0.244736 +125,0.177152 +253,0.190464 +509,0.169984 +1021,0.188416 +2045,0.190464 +4093,0.200704 +8189,0.19456 +16381,0.182272 +32765,0.186368 +65533,0.207744 +131069,0.200704 +262141,0.217024 +524285,0.278528 +1048573,0.367264 +2097149,0.503808 +4194301,0.857472 +8388605,2.45626 +16777213,2.82038 +33554429,5.44221 +67108861,10.6772 +13,0.226304 +29,0.186368 +61,0.19968 +125,0.203776 +253,0.19456 +509,0.183296 +1021,0.182272 +2045,0.196608 +4093,0.19456 +8189,0.195584 +16381,0.200704 +32765,0.25088 +65533,0.20992 +131069,0.164864 +262141,0.178624 +524285,0.29376 +1048573,0.366912 +2097149,0.524288 +4194301,1.92464 +8388605,1.50998 +16777213,2.8887 +33554429,5.45261 +67108861,10.6585 +13,0.216064 +29,0.186368 +61,0.191488 +125,0.187392 +253,0.147456 +509,0.150528 +1021,0.178176 +2045,0.157696 +4093,0.159744 +8189,0.159744 +16381,0.15872 +32765,0.191488 +65533,0.205664 +131069,0.155648 +262141,0.177152 +524285,0.303104 +1048573,0.366208 +2097149,0.516736 +4194301,0.816128 +8388605,1.51802 +16777213,2.83702 +33554429,5.45888 +67108861,10.946 +13,0.197632 +29,0.186368 +61,0.188416 +125,0.191488 +253,0.182272 +509,0.192512 +1021,0.226304 +2045,0.198656 +4093,0.149504 +8189,0.195584 +16381,0.198656 +32765,0.154624 +65533,0.157696 +131069,0.156672 +262141,0.18368 +524285,0.298752 +1048573,0.36448 +2097149,0.544768 +4194301,0.869856 +8388605,1.50275 +16777213,2.82291 +33554429,5.4927 +67108861,10.6666 +13,0.180224 +29,0.187392 +61,0.190464 +125,0.193536 +253,0.18944 +509,0.176128 +1021,0.196608 +2045,0.23552 +4093,0.157696 +8189,0.152576 +16381,0.147456 +32765,0.152576 +65533,0.377856 +131069,0.19952 +262141,0.181248 +524285,0.260416 +1048573,0.350816 +2097149,0.647968 +4194301,1.07462 +8388605,1.52755 +16777213,2.83517 +33554429,5.47782 +67108861,10.8777 +13,0.183296 +29,0.180224 +61,0.140288 +125,0.151552 +253,0.146432 +509,0.263168 +1021,0.145408 +2045,0.154624 +4093,0.161792 +8189,0.159744 +16381,0.148224 +32765,0.167808 +65533,0.150304 +131069,0.144384 +262141,0.19968 +524285,0.289472 +1048573,0.422592 +2097149,0.527744 +4194301,0.86016 +8388605,1.50003 +16777213,2.79552 +33554429,5.4784 +67108861,10.7397 +13,0.191488 +29,0.177152 +61,0.185344 +125,0.183296 +253,0.187392 +509,0.193536 +1021,0.180224 +2045,0.205824 +4093,0.19968 +8189,0.210944 +16381,0.191392 +32765,0.196 +65533,0.186368 +131069,0.19968 +262141,0.216064 +524285,0.362496 +1048573,0.363296 +2097149,0.540352 +4194301,0.848896 +8388605,1.55133 +16777213,2.91978 +33554429,6.30374 +67108861,10.7034 +13,0.111616 +29,0.187392 +61,0.178176 +125,0.195584 +253,0.182272 +509,0.14848 +1021,0.144384 +2045,0.152576 +4093,0.150528 +8189,0.150528 +16381,0.14304 +32765,0.176128 +65533,0.159744 +131069,0.16384 +262141,0.210944 +524285,0.280288 +1048573,0.360864 +2097149,0.539072 +4194301,0.86528 +8388605,1.45907 +16777213,2.81683 +33554429,6.15526 +67108861,10.6632 +13,0.182272 +29,0.190464 +61,0.186368 +125,0.185344 +253,0.193536 +509,0.195584 +1021,0.18944 +2045,0.206848 +4093,0.154624 +8189,0.162816 +16381,0.155648 +32765,0.165888 +65533,0.148832 +131069,0.21504 +262141,0.22016 +524285,0.295936 +1048573,0.374592 +2097149,0.507488 +4194301,0.860768 +8388605,1.50496 +16777213,3.70176 +33554429,5.49142 +67108861,10.7273 +13,0.196608 +29,0.173056 +61,0.162816 +125,0.186368 +253,0.192512 +509,0.187392 +1021,0.190464 +2045,0.152576 +4093,0.227328 +8189,0.152576 +16381,0.146432 +32765,0.150528 +65533,0.120832 +131069,0.162528 +262141,0.26112 +524285,0.284288 +1048573,0.343008 +2097149,0.525216 +4194301,0.893792 +8388605,1.52662 +16777213,2.98851 +33554429,5.43642 +67108861,10.6926 +13,0.1792 +29,0.188416 +61,0.193536 +125,0.18944 +253,0.241664 +509,0.195584 +1021,0.18432 +2045,0.19456 +4093,0.175104 +8189,0.1536 +16381,0.144224 +32765,0.157696 +65533,0.155648 +131069,0.15872 +262141,0.193536 +524285,0.292864 +1048573,0.509952 +2097149,0.555008 +4194301,0.888704 +8388605,1.54867 +16777213,2.78486 +33554429,5.42106 +67108861,11.3664 +13,0.176128 +29,0.197632 +61,0.187392 +125,0.185344 +253,0.196608 +509,0.31232 +1021,0.19456 +2045,0.159744 +4093,0.156672 +8189,0.159744 +16381,0.147456 +32765,0.156672 +65533,0.154624 +131069,0.159744 +262141,0.177152 +524285,0.65616 +1048573,0.355296 +2097149,0.507488 +4194301,0.841536 +8388605,1.51814 +16777213,2.83814 +33554429,5.46048 +67108861,10.714 +13,0.176128 +29,0.188416 +61,0.219136 +125,0.19456 +253,0.173056 +509,0.17408 +1021,0.182272 +2045,0.147456 +4093,0.201728 +8189,0.19456 +16381,0.195584 +32765,0.19456 +65533,0.149504 +131069,0.200704 +262141,0.1792 +524285,0.473088 +1048573,0.37376 +2097149,0.495616 +4194301,0.821216 +8388605,1.50016 +16777213,2.81165 +33554429,5.47533 +67108861,10.6922 +13,0.140288 +29,0.144384 +61,0.188416 +125,0.140288 +253,0.151552 +509,0.151552 +1021,0.185344 +2045,0.12288 +4093,0.25088 +8189,0.152576 +16381,0.14592 +32765,0.154624 +65533,0.207872 +131069,0.198656 +262141,0.22528 +524285,0.288576 +1048573,0.372192 +2097149,0.55552 +4194301,0.854016 +8388605,1.53805 +16777213,2.83498 +33554429,5.45328 +67108861,10.6705 +13,0.197632 +29,0.182272 +61,0.183296 +125,0.18432 +253,0.18432 +509,0.1792 +1021,0.178176 +2045,0.16896 +4093,0.186368 +8189,0.159744 +16381,0.173056 +32765,0.185088 +65533,0.175104 +131069,0.205824 +262141,0.208896 +524285,0.26624 +1048573,0.370464 +2097149,0.532 +4194301,0.813504 +8388605,1.51142 +16777213,2.8143 +33554429,5.48454 +67108861,10.7002 +13,0.185344 +29,0.172032 +61,0.188416 +125,0.186368 +253,0.1792 +509,0.190464 +1021,0.183296 +2045,0.19456 +4093,0.186368 +8189,0.195584 +16381,0.173056 +32765,0.193536 +65533,0.185344 +131069,0.188416 +262141,0.218112 +524285,0.283648 +1048573,0.381952 +2097149,0.530432 +4194301,0.836 +8388605,1.49347 +16777213,2.82931 +33554429,5.47098 +67108861,10.6619 +13,0.188416 +29,0.190464 +61,0.339968 +125,0.18944 +253,0.186368 +509,0.186368 +1021,0.18944 +2045,0.172032 +4093,0.340992 +8189,0.24576 +16381,0.172032 +32765,0.2048 +65533,0.198656 +131069,0.210944 +262141,0.21296 +524285,0.278528 +1048573,0.372736 +2097149,1.21242 +4194301,0.914432 +8388605,1.50909 +16777213,2.85382 +33554429,5.45578 +67108861,10.6998 +13,0.196608 +29,0.181248 +61,0.18432 +125,0.182272 +253,0.18432 +509,0.186368 +1021,0.18944 +2045,0.19456 +4093,0.17408 +8189,0.169984 +16381,0.186368 +32765,0.181152 +65533,0.315392 +131069,0.201472 +262141,0.221184 +524285,0.292288 +1048573,0.376512 +2097149,0.547616 +4194301,0.985088 +8388605,1.51757 +16777213,3.02282 +33554429,5.47533 +67108861,10.6925 +13,0.19456 +29,0.18432 +61,0.191488 +125,0.188416 +253,0.187392 +509,0.175104 +1021,0.188416 +2045,0.196608 +4093,0.201728 +8189,0.193536 +16381,0.185344 +32765,0.379904 +65533,0.19968 +131069,0.195328 +262141,0.2304 +524285,0.35328 +1048573,0.420608 +2097149,0.498496 +4194301,0.84992 +8388605,1.52144 +16777213,2.82198 +33554429,5.47123 +67108861,10.8145 +13,0.18432 +29,0.218112 +61,0.175104 +125,0.172032 +253,0.166912 +509,0.186368 +1021,0.191488 +2045,0.187392 +4093,0.200704 +8189,0.201728 +16381,0.173056 +32765,0.192512 +65533,0.205824 +131069,0.193536 +262141,0.21504 +524285,0.285536 +1048573,0.36864 +2097149,0.550624 +4194301,0.853632 +8388605,1.48038 diff --git a/Project2-Stream-Compaction/data/Scan_data/data_nonpow2_faster/thrust.csv b/Project2-Stream-Compaction/data/Scan_data/data_nonpow2_faster/thrust.csv new file mode 100644 index 0000000..a942ac8 --- /dev/null +++ b/Project2-Stream-Compaction/data/Scan_data/data_nonpow2_faster/thrust.csv @@ -0,0 +1,894 @@ +13,0.120832 +29,0.119808 +61,0.132096 +125,0.465888 +253,0.12288 +509,0.139232 +1021,0.14336 +2045,0.1024 +4093,0.128 +8189,0.115712 +16381,0.128 +32765,0.224256 +65533,0.188416 +131069,0.376544 +262141,0.453632 +524285,0.318464 +1048573,0.52624 +2097149,0.8704 +4194301,0.729568 +8388605,0.745472 +16777213,1.21651 +33554429,1.85139 +67108861,3.32787 +13,0.141312 +29,0.14336 +61,0.140288 +125,0.14848 +253,0.150528 +509,0.132096 +1021,0.212992 +2045,0.14336 +4093,0.145408 +8189,0.149504 +16381,0.140256 +32765,0.140288 +65533,0.149504 +131069,0.459776 +262141,0.669056 +524285,0.47104 +1048573,0.539168 +2097149,0.566816 +4194301,0.734624 +8388605,0.8448 +16777213,1.19654 +33554429,1.8385 +67108861,3.31923 +13,0.131072 +29,0.155648 +61,0.144384 +125,0.14848 +253,0.140288 +509,0.146432 +1021,0.229376 +2045,0.13312 +4093,0.140288 +8189,0.155648 +16381,0.152928 +32765,0.123392 +65533,0.139264 +131069,0.497664 +262141,0.3328 +524285,0.471392 +1048573,0.5064 +2097149,0.590368 +4194301,0.755136 +8388605,0.888384 +16777213,1.23645 +33554429,1.82144 +67108861,3.2768 +13,0.140288 +29,0.14336 +61,0.140288 +125,0.108544 +253,0.145408 +509,0.156672 +1021,0.151552 +2045,0.14336 +4093,0.14848 +8189,0.144384 +16381,0.150848 +32765,0.11776 +65533,0.11776 +131069,0.320512 +262141,0.805216 +524285,0.487904 +1048573,0.582656 +2097149,0.514048 +4194301,0.657056 +8388605,0.837632 +16777213,1.21094 +33554429,1.93587 +67108861,3.3807 +13,0.156672 +29,0.136192 +61,0.142336 +125,0.144384 +253,0.16384 +509,0.15872 +1021,0.242688 +2045,0.140288 +4093,0.126976 +8189,0.149504 +16381,0.140288 +32765,0.135104 +65533,0.145408 +131069,0.40448 +262141,0.442368 +524285,0.615424 +1048573,0.499712 +2097149,0.541696 +4194301,0.753664 +8388605,0.851968 +16777213,1.19686 +33554429,1.92176 +67108861,3.34522 +13,0.1536 +29,0.159744 +61,0.151552 +125,0.131072 +253,0.149504 +509,0.139264 +1021,0.140288 +2045,0.146432 +4093,0.392192 +8189,0.154624 +16381,0.172032 +32765,0.14064 +65533,0.167424 +131069,0.463872 +262141,0.5632 +524285,0.483328 +1048573,0.527904 +2097149,0.590848 +4194301,0.701952 +8388605,0.763904 +16777213,1.37664 +33554429,1.96445 +67108861,3.23686 +13,0.144384 +29,0.160768 +61,0.149504 +125,0.134144 +253,0.141312 +509,0.15872 +1021,0.16896 +2045,0.14848 +4093,0.152576 +8189,0.147456 +16381,0.15872 +32765,0.146432 +65533,0.191488 +131069,0.454048 +262141,0.536576 +524285,0.452064 +1048573,0.493568 +2097149,0.609184 +4194301,0.6856 +8388605,3.09805 +16777213,1.21549 +33554429,1.8431 +67108861,3.38301 +13,0.14848 +29,0.140288 +61,0.135168 +125,0.161792 +253,0.140288 +509,0.142336 +1021,0.144384 +2045,0.190464 +4093,0.14336 +8189,0.146432 +16381,0.156544 +32765,0.135936 +65533,0.140224 +131069,0.433152 +262141,0.405504 +524285,0.443392 +1048573,0.451584 +2097149,0.58 +4194301,0.602752 +8388605,0.821248 +16777213,1.22029 +33554429,1.97779 +67108861,3.30627 +13,0.14848 +29,0.14336 +61,0.167936 +125,0.13312 +253,0.14336 +509,0.141312 +1021,0.152576 +2045,0.150528 +4093,0.147456 +8189,0.14848 +16381,0.427616 +32765,0.124928 +65533,0.132096 +131069,0.411392 +262141,0.482304 +524285,0.402432 +1048573,0.559104 +2097149,0.555008 +4194301,1.1473 +8388605,0.839392 +16777213,1.24723 +33554429,1.92189 +67108861,3.36691 +13,0.14336 +29,0.135168 +61,0.16896 +125,0.113664 +253,0.114688 +509,0.116736 +1021,0.205824 +2045,0.125952 +4093,0.120832 +8189,0.103424 +16381,0.120832 +32765,0.421856 +65533,0.116736 +131069,0.461792 +262141,0.477152 +524285,0.453248 +1048573,0.495616 +2097149,0.598016 +4194301,0.592896 +8388605,0.83392 +16777213,1.62701 +33554429,1.92915 +67108861,3.30752 +13,0.14336 +29,0.139264 +61,0.146432 +125,0.155648 +253,0.193536 +509,0.114688 +1021,0.11264 +2045,0.106496 +4093,0.23552 +8189,0.104448 +16381,0.117088 +32765,0.147456 +65533,0.115712 +131069,0.322176 +262141,0.894848 +524285,0.439232 +1048573,0.519168 +2097149,0.523264 +4194301,0.678208 +8388605,0.83488 +16777213,1.26874 +33554429,3.34131 +67108861,3.32934 +13,0.156672 +29,0.145408 +61,0.152576 +125,0.15872 +253,0.16384 +509,0.11264 +1021,0.162816 +2045,0.098304 +4093,0.132096 +8189,0.141312 +16381,0.252608 +32765,0.116736 +65533,0.131072 +131069,0.431104 +262141,0.335872 +524285,0.67072 +1048573,0.55296 +2097149,0.496512 +4194301,0.663136 +8388605,0.84224 +16777213,1.18262 +33554429,1.90918 +67108861,3.31978 +13,0.146432 +29,0.150528 +61,0.151552 +125,0.137216 +253,0.136192 +509,0.1536 +1021,0.166912 +2045,0.131072 +4093,0.152576 +8189,0.150528 +16381,0.164864 +32765,0.23504 +65533,0.146432 +131069,0.444 +262141,0.463872 +524285,0.717184 +1048573,0.515904 +2097149,0.389824 +4194301,0.679424 +8388605,1.0247 +16777213,1.3056 +33554429,1.97696 +67108861,3.32941 +13,0.142336 +29,0.14848 +61,0.154624 +125,0.146432 +253,0.178176 +509,0.229376 +1021,0.157696 +2045,0.147456 +4093,0.165888 +8189,0.166912 +16381,0.167936 +32765,0.11776 +65533,0.121856 +131069,0.410624 +262141,0.46592 +524285,0.462144 +1048573,0.51712 +2097149,0.575296 +4194301,0.676576 +8388605,0.840704 +16777213,1.17731 +33554429,1.90662 +67108861,3.31162 +13,0.141312 +29,0.151552 +61,0.139264 +125,0.141312 +253,0.139264 +509,0.146432 +1021,0.1536 +2045,0.131072 +4093,0.144384 +8189,0.145408 +16381,0.265216 +32765,0.139264 +65533,0.119808 +131069,0.45568 +262141,0.468992 +524285,0.540672 +1048573,0.502784 +2097149,0.513024 +4194301,0.672768 +8388605,0.871424 +16777213,1.13664 +33554429,1.94237 +67108861,3.62282 +13,0.141312 +29,0.13824 +61,0.14336 +125,0.152576 +253,0.134144 +509,0.11776 +1021,0.11776 +2045,0.128 +4093,0.104448 +8189,0.110592 +16381,0.12288 +32765,0.116736 +65533,0.116064 +131069,0.463872 +262141,0.472064 +524285,0.513024 +1048573,0.503808 +2097149,0.658912 +4194301,0.659232 +8388605,0.839168 +16777213,1.1159 +33554429,1.93398 +67108861,3.24608 +13,0.152576 +29,0.16384 +61,0.132096 +125,0.155648 +253,0.15872 +509,0.154624 +1021,0.44544 +2045,0.14848 +4093,0.146432 +8189,0.19968 +16381,0.141312 +32765,0.165888 +65533,0.16384 +131069,0.412352 +262141,0.654336 +524285,0.49696 +1048573,0.490816 +2097149,0.553728 +4194301,0.67584 +8388605,0.762752 +16777213,1.26845 +33554429,1.92138 +67108861,3.36794 +13,0.149504 +29,0.18432 +61,0.136192 +125,0.154624 +253,0.149504 +509,0.11776 +1021,0.114688 +2045,0.100352 +4093,0.10752 +8189,0.226304 +16381,0.119744 +32765,0.151392 +65533,0.169984 +131069,0.336896 +262141,0.431104 +524285,0.413696 +1048573,0.517728 +2097149,0.493152 +4194301,0.636448 +8388605,0.970752 +16777213,1.18547 +33554429,1.89837 +67108861,3.38842 +13,0.136192 +29,0.14336 +61,0.144384 +125,0.166912 +253,0.157696 +509,0.144384 +1021,0.130048 +2045,0.149504 +4093,0.151552 +8189,0.131072 +16381,0.13824 +32765,0.166912 +65533,0.124928 +131069,0.325984 +262141,0.464896 +524285,0.442144 +1048573,0.469536 +2097149,0.556032 +4194301,0.601056 +8388605,2.2103 +16777213,2.53952 +33554429,1.82122 +67108861,3.29795 +13,0.14336 +29,0.140288 +61,0.162816 +125,0.142336 +253,0.145408 +509,0.564224 +1021,0.136192 +2045,0.149504 +4093,0.149504 +8189,0.159744 +16381,0.137024 +32765,0.1464 +65533,0.157696 +131069,0.454656 +262141,0.438272 +524285,0.463744 +1048573,0.544768 +2097149,0.56832 +4194301,0.587296 +8388605,0.815104 +16777213,1.16326 +33554429,1.90541 +67108861,3.3759 +13,0.165888 +29,0.13824 +61,0.135168 +125,0.13312 +253,0.165888 +509,0.14848 +1021,0.155648 +2045,0.147456 +4093,0.120832 +8189,0.202752 +16381,0.1536 +32765,0.13456 +65533,0.132096 +131069,0.366592 +262141,0.320512 +524285,0.481856 +1048573,0.543552 +2097149,0.482304 +4194301,0.721344 +8388605,0.935712 +16777213,1.24314 +33554429,1.92 +67108861,3.32736 +13,0.119808 +29,0.140288 +61,0.136192 +125,0.140288 +253,0.162816 +509,0.11776 +1021,0.114688 +2045,0.110592 +4093,0.099328 +8189,0.10752 +16381,0.125952 +32765,0.145408 +65533,0.206848 +131069,0.4608 +262141,0.474112 +524285,0.432704 +1048573,0.54784 +2097149,0.5312 +4194301,0.666464 +8388605,0.796352 +16777213,1.17453 +33554429,1.91555 +67108861,3.26451 +13,0.169984 +29,0.150528 +61,0.14848 +125,0.152576 +253,0.151552 +509,0.155648 +1021,0.1536 +2045,0.14848 +4093,0.151552 +8189,0.144384 +16381,0.165888 +32765,0.121856 +65533,0.11808 +131069,0.497664 +262141,0.605184 +524285,0.436992 +1048573,0.693088 +2097149,0.493472 +4194301,0.672768 +8388605,0.93696 +16777213,1.30202 +33554429,1.92486 +67108861,3.39808 +13,0.13312 +29,0.14848 +61,0.13824 +125,0.151552 +253,0.14336 +509,0.157696 +1021,0.140288 +2045,0.14336 +4093,0.1024 +8189,0.10752 +16381,0.114688 +32765,0.119808 +65533,0.120832 +131069,0.50176 +262141,0.478208 +524285,0.45568 +1048573,0.595968 +2097149,0.570048 +4194301,0.648 +8388605,0.812032 +16777213,1.14566 +33554429,1.97837 +67108861,3.39619 +13,0.162816 +29,0.135168 +61,0.11776 +125,0.114688 +253,0.113664 +509,0.118784 +1021,0.113664 +2045,0.195584 +4093,0.136192 +8189,0.11776 +16381,0.165888 +32765,0.12288 +65533,0.11776 +131069,0.490368 +262141,0.48128 +524285,0.459776 +1048573,0.461792 +2097149,0.568192 +4194301,0.656 +8388605,0.840704 +16777213,1.88083 +33554429,2.6368 +67108861,3.38989 +13,0.140288 +29,0.14336 +61,0.14848 +125,0.146432 +253,0.142336 +509,0.142336 +1021,0.137216 +2045,0.149504 +4093,0.132096 +8189,0.150528 +16381,0.139264 +32765,0.151552 +65533,0.14336 +131069,0.412672 +262141,0.417792 +524285,0.453504 +1048573,0.472064 +2097149,2.15302 +4194301,0.656128 +8388605,0.835584 +16777213,1.20934 +33554429,1.92307 +67108861,3.35914 +13,0.147456 +29,0.166912 +61,0.176128 +125,0.198656 +253,0.118784 +509,0.257024 +1021,0.113664 +2045,0.132096 +4093,0.104448 +8189,0.106496 +16381,0.115712 +32765,0.120832 +65533,0.120832 +131069,0.459328 +262141,0.411648 +524285,0.488992 +1048573,0.507456 +2097149,0.53008 +4194301,0.678912 +8388605,0.825344 +16777213,1.22966 +33554429,1.94867 +67108861,3.3176 +13,0.147456 +29,0.140288 +61,0.169984 +125,0.149504 +253,0.242688 +509,0.152576 +1021,0.137216 +2045,0.104448 +4093,0.10752 +8189,0.119808 +16381,0.118784 +32765,0.139264 +65533,0.120832 +131069,0.411296 +262141,0.769024 +524285,0.403456 +1048573,0.554976 +2097149,0.4608 +4194301,0.599936 +8388605,0.799488 +16777213,1.20998 +33554429,1.90707 +67108861,3.32534 +13,0.13312 +29,0.152576 +61,0.141312 +125,0.150528 +253,0.146432 +509,0.13824 +1021,0.164864 +2045,0.101376 +4093,0.145408 +8189,0.1024 +16381,0.13824 +32765,0.14848 +65533,0.11776 +131069,0.403456 +262141,0.335872 +524285,0.488128 +1048573,0.610304 +2097149,1.2631 +4194301,0.75664 +8388605,2.52198 +16777213,1.26448 +33554429,1.9712 +67108861,3.30502 +13,0.137216 +29,0.157696 +61,0.149504 +125,0.136192 +253,0.146432 +509,0.147456 +1021,0.13824 +2045,0.140288 +4093,0.154624 +8189,0.1024 +16381,0.116736 +32765,0.123904 +65533,0.11776 +131069,0.468992 +262141,0.499136 +524285,0.454656 +1048573,0.56832 +2097149,0.494976 +4194301,0.648192 +8388605,1.07622 +16777213,1.23075 +33554429,1.84506 +67108861,3.35462 +13,0.150528 +29,0.139264 +61,0.142336 +125,0.152576 +253,0.172032 +509,0.119808 +1021,0.140288 +2045,0.106496 +4093,0.11776 +8189,0.10752 +16381,0.116736 +32765,0.128 +65533,0.119808 +131069,0.33456 +262141,0.473088 +524285,0.570368 +1048573,0.455456 +2097149,0.556928 +4194301,0.653856 +8388605,1.72826 +16777213,1.13226 +33554429,1.92 +67108861,3.32067 +13,0.129024 +29,0.14336 +61,0.151552 +125,0.159744 +253,0.166912 +509,0.166912 +1021,0.152576 +2045,0.123904 +4093,0.134144 +8189,0.120832 +16381,0.146432 +32765,0.11872 +65533,0.181248 +131069,0.32304 +262141,0.941056 +524285,0.499712 +1048573,0.46592 +2097149,0.62352 +4194301,0.883456 +8388605,0.774624 +16777213,1.11955 +33554429,1.9359 +67108861,3.3104 +13,0.113664 +29,0.136192 +61,0.186368 +125,0.156672 +253,0.115712 +509,0.114688 +1021,0.114688 +2045,0.095232 +4093,0.137216 +8189,0.103424 +16381,0.116736 +32765,0.155648 +65533,0.176128 +131069,0.494592 +262141,0.5208 +524285,0.49664 +1048573,0.4608 +2097149,0.611328 +4194301,0.661472 +8388605,0.775552 +16777213,1.12835 +33554429,1.93424 +67108861,3.32346 +13,0.144384 +29,0.132096 +61,0.159744 +125,0.150528 +253,0.1536 +509,0.162816 +1021,0.238592 +2045,0.390144 +4093,0.142336 +8189,0.151552 +16381,0.154624 +32765,0.137216 +65533,0.140288 +131069,0.416608 +262141,0.448512 +524285,0.431104 +1048573,0.46112 +2097149,0.502784 +4194301,0.700416 +8388605,0.8448 +16777213,1.21642 +33554429,1.94243 +67108861,3.29728 +13,0.086016 +29,0.141312 +61,0.13824 +125,0.14848 +253,0.146432 +509,0.162816 +1021,0.13824 +2045,0.14336 +4093,0.15872 +8189,0.131072 +16381,0.137216 +32765,0.142336 +65533,0.157696 +131069,0.444416 +262141,0.54784 +524285,0.433824 +1048573,0.531808 +2097149,0.577312 +4194301,0.65808 +8388605,0.943488 +16777213,1.21651 +33554429,1.92096 +67108861,3.20486 +13,0.131072 +29,0.135168 +61,0.137216 +125,0.140288 +253,0.15872 +509,0.155648 +1021,0.154624 +2045,0.14336 +4093,0.146432 +8189,0.144384 +16381,0.14512 +32765,0.15424 +65533,0.159744 +131069,0.618496 +262141,0.44544 +524285,0.436224 +1048573,0.611328 +2097149,0.533344 +4194301,0.727392 +8388605,0.867744 +16777213,1.28848 +33554429,1.9128 +67108861,3.38902 +13,0.13312 +29,0.132096 +61,0.140288 +125,0.139264 +253,0.147456 +509,0.137216 +1021,0.140288 +2045,0.129024 +4093,0.139264 +8189,0.145408 +16381,0.14336 +32765,0.139264 +65533,0.167936 +131069,0.377856 +262141,0.482976 +524285,0.482752 +1048573,0.536576 +2097149,0.512512 +4194301,0.792576 +8388605,0.905216 +16777213,1.21651 +33554429,1.89677 +67108861,3.31366 +13,0.136192 +29,0.13824 +61,0.147456 +125,0.156672 +253,0.14336 +509,0.149504 +1021,0.146432 +2045,0.140288 +4093,0.14848 +8189,0.152576 +16381,0.157696 +32765,0.155648 +65533,0.14288 +131069,0.429056 +262141,0.904512 +524285,0.732512 +1048573,0.55472 +2097149,0.565248 +4194301,0.657408 +8388605,0.83456 +16777213,1.18726 +33554429,1.89174 +67108861,3.32877 +13,0.136192 +29,0.183296 +61,0.330752 +125,0.1536 +253,0.166912 +509,0.14336 +1021,0.144384 +2045,0.147456 +4093,0.139264 +8189,0.139264 +16381,0.145408 +32765,0.173056 +65533,0.14848 +131069,0.468992 +262141,0.459552 +524285,0.465536 +1048573,0.598496 +2097149,0.577952 +4194301,0.755712 +8388605,0.842304 diff --git a/Project2-Stream-Compaction/data/Scan_data/data_pow2/data.csv b/Project2-Stream-Compaction/data/Scan_data/data_pow2/data.csv new file mode 100644 index 0000000..dca0cd9 --- /dev/null +++ b/Project2-Stream-Compaction/data/Scan_data/data_pow2/data.csv @@ -0,0 +1,4549 @@ +Array Size,CPU (s),Na‹ve (s),Work Efficient (s),Shared Memory (s),Thrust (s) +16,0.0002,0.627712,0.557024,0.727072,0.618464 +32,0.0002,0.48128,0.614368,0.636896,1.12845 +64,0.0002,0.508928,0.865312,0.692224,0.655392 +128,0.0001,0.717792,0.5376,0.506848,2.26714 +256,0.0002,0.538624,0.692224,0.647168,0.67072 +512,0.0004,0.551936,0.693248,0.728032,0.571392 +1024,0.0008,1.0537,0.75264,0.750592,0.622592 +2048,0.002,0.531456,0.751616,0.559104,0.848864 +4096,0.0029,0.733184,0.852992,0.807968,0.705568 +8192,0.0083,0.727072,0.922624,0.742432,0.78336 +16384,0.0137,0.996352,1.00762,0.864256,0.743424 +32768,0.0295,0.939008,1.09158,0.990208,1.09568 +65536,0.0414,1.44592,1.64454,1.50218,1.29946 +131072,0.6711,2.38182,2.62144,4.01101,2.81805 +262144,1.2246,4.28954,4.75034,4.69603,4.67146 +524288,2.5844,7.90118,8.80333,7.86739,8.94259 +1048576,4.8169,14.8235,15.0088,14.0308,15.5884 +2097152,10.2835,36.31,29.8496,30.1322,28.9464 +4194304,19.9311,58.5708,56.3794,54.7676,55.166 +8388608,39.4534,117.863,112.068,107.102,106.223 +16777216,86.4599,233.671,219.236,214.842,214.238 +33554432,146.658,465.16,448.326,426.174,420.749 +67108864,289.208,937.827,887.672,852.676,844.179 +16,0.0001,0.530432,0.515072,0.523264,0.472064 +32,0.0001,0.474112,0.495616,0.989184,0.475136 +64,0.0001,0.45056,0.538624,0.63488,0.598016 +128,0.0001,0.768,0.524288,0.592896,0.54784 +256,0.0004,0.570368,1.35987,0.918528,0.866304 +512,0.0006,0.731136,0.856064,0.758784,0.892928 +1024,0.0005,0.63488,0.831488,0.580608,0.652288 +2048,0.0025,0.653312,0.662528,0.594944,0.574464 +4096,0.0022,0.57344,0.7168,0.653312,0.659456 +8192,0.0036,0.666624,0.817152,0.678912,0.70144 +16384,0.0082,0.774144,0.923648,1.16429,0.801792 +32768,0.0894,0.973824,1.42541,1.29024,0.943104 +65536,0.035,1.83091,1.58106,1.46637,1.62816 +131072,0.6027,2.23846,2.45453,2.65421,2.95424 +262144,1.4756,4.68275,3.95366,4.31309,4.70323 +524288,2.3412,7.59501,7.7056,8.32102,7.8889 +1048576,4.4376,15.5761,14.5428,13.9991,14.9309 +2097152,8.8704,29.7062,28.9331,27.2712,27.3408 +4194304,22.23,60.0996,57.3563,53.9136,53.6566 +8388608,37.1867,115.229,110.331,105.826,105.668 +16777216,74.6926,229.801,224.396,211.525,211.056 +33554432,144.794,465.141,437.437,425.112,420.765 +67108864,293.571,940.084,902.723,853.533,845.424 +16,0.0001,0.48128,0.828416,0.8448,0.801792 +32,0.0001,0.745472,0.774144,0.856064,0.91648 +64,0.0001,0.6144,0.77824,0.794624,0.723968 +128,0.0002,0.4864,0.790528,0.580608,0.658432 +256,0.0003,0.72192,0.807936,0.697344,0.804864 +512,0.0005,0.54784,0.754688,0.70144,0.693248 +1024,0.0011,0.628736,0.786432,0.739328,0.57856 +2048,0.002,0.601088,0.746496,0.78848,0.771072 +4096,0.002,0.57856,0.949248,0.766976,0.796672 +8192,0.0036,0.840704,0.862208,0.859136,1.79712 +16384,0.0091,0.8704,1.02195,0.910336,0.888832 +32768,0.0177,0.939008,1.28922,1.1223,1.36704 +65536,0.0396,1.34042,1.68141,1.4295,1.47354 +131072,0.5993,2.23539,2.5856,2.85491,3.08838 +262144,1.2009,4.2537,4.09702,4.37862,5.85626 +524288,2.8533,8.02509,7.78035,7.7865,8.09779 +1048576,4.4369,15.6867,14.8644,15.1788,15.5556 +2097152,8.8769,29.0591,29.5352,27.3981,27.6398 +4194304,18.3903,58.0065,56.7818,53.5439,55.6974 +8388608,39.1622,114.598,111.139,105.797,105.352 +16777216,77.3177,231.28,218.581,212.636,211.365 +33554432,148.779,463.702,446.011,423.428,420.879 +67108864,288.71,939.568,884.522,852.127,846.399 +16,0.0001,0.494592,0.516096,0.641024,0.591872 +32,0.0001,0.482304,0.605184,0.5888,0.53248 +64,0.0002,0.681984,0.553984,0.571392,0.60416 +128,0.0001,0.557056,0.570368,0.577536,0.586752 +256,0.0004,0.738304,0.6144,0.585696,0.534528 +512,0.0002,0.509952,0.6144,0.584704,0.603136 +1024,0.0005,0.524288,0.72192,0.657408,0.600064 +2048,0.001,0.512,0.678912,0.693248,0.649216 +4096,0.0023,0.576512,0.748544,0.637952,0.641024 +8192,0.0039,0.653312,0.831488,0.749568,0.720896 +16384,0.0079,0.7424,0.954368,0.776192,0.748544 +32768,0.018,1.0905,1.17862,1.03629,1.00659 +65536,0.035,1.34144,1.74387,1.47149,2.02854 +131072,0.5994,2.68691,2.46886,2.73203,2.9481 +262144,1.169,4.22093,3.98746,4.34074,4.51072 +524288,2.4081,7.69331,7.48339,7.78854,9.32454 +1048576,4.4357,14.974,15.0548,15.4225,14.5633 +2097152,9.4816,30.166,28.1108,27.393,28.6925 +4194304,19.7495,57.6276,57.1382,54.4788,53.1599 +8388608,38.4657,117.001,111.152,106.334,104.752 +16777216,74.9305,231.218,225.71,213.78,212.605 +33554432,150.431,468.751,439.022,425.59,423.222 +67108864,297.901,938.879,902.526,853.183,846.072 +16,0,0.550912,0.479232,0.551936,0.510976 +32,0.0002,0.454656,0.861184,0.536576,0.484352 +64,0.0001,0.462848,0.546816,0.641024,0.591872 +128,0.0003,0.47104,0.592896,0.579584,0.603136 +256,0.0003,0.6144,0.612352,0.587776,0.535552 +512,0.0005,0.934912,0.61952,0.648192,0.59392 +1024,0.0004,0.574464,0.608256,0.587776,0.543744 +2048,0.0022,0.590848,0.704512,0.625664,0.606208 +4096,0.0022,0.592896,1.09466,0.692224,0.596992 +8192,0.0038,0.61952,0.7936,0.681984,0.637952 +16384,0.0084,0.779264,1.00864,0.841728,0.836608 +32768,0.0183,1.16326,1.17555,0.975872,1.09568 +65536,0.037,1.33632,1.64352,1.4295,1.54112 +131072,0.5859,2.71462,2.45862,2.51494,2.96243 +262144,1.168,4.5271,3.88813,4.46157,4.72678 +524288,2.4099,7.64928,7.95238,8.02202,8.74189 +1048576,4.7601,14.8582,15.4952,15.2207,14.6944 +2097152,11.2358,29.1564,29.6571,27.8456,28.5542 +4194304,19.0272,57.812,55.7128,53.5603,53.8911 +8388608,40.7059,115.611,109.79,106.649,104.33 +16777216,78.2271,230.357,218.044,212.328,211.608 +33554432,147.858,463.228,447.336,424.167,420.127 +67108864,290.926,948.669,888.753,854.156,842.171 +16,0.0001,0.611328,0.596992,0.64,1.18272 +32,0.0003,0.49664,0.584704,0.589824,0.530432 +64,0.0002,0.46592,0.631808,0.644096,0.626688 +128,0.0002,0.514048,0.52736,0.638976,0.591872 +256,0.0003,0.489472,0.672768,0.630784,0.594944 +512,0.0003,0.500736,0.606208,0.579584,0.720896 +1024,0.0014,0.72704,0.636928,0.57344,0.550912 +2048,0.0011,0.550912,0.673792,0.632832,0.621568 +4096,0.0023,0.589824,0.705536,0.649216,0.632832 +8192,0.0036,0.969728,0.789504,0.6912,0.644096 +16384,0.0345,0.731136,1.024,1.07725,0.797696 +32768,0.0315,0.973824,1.17555,0.980992,0.946176 +65536,0.0401,1.41517,1.64557,1.47046,1.46022 +131072,0.5855,2.24768,2.49958,2.95014,3.06995 +262144,1.1683,4.25779,4.05606,4.59162,4.91213 +524288,2.4722,8.47258,7.78547,7.76397,7.98106 +1048576,4.4368,15.5873,15.2474,14.0022,15.1757 +2097152,9.2444,29.5209,28.6106,27.7811,27.134 +4194304,18.1786,58.1868,56.9999,54.3314,54.1645 +8388608,38.9367,114.802,111.565,105.608,106.109 +16777216,73.1124,229.404,224.024,211.634,211.24 +33554432,148.591,466.807,435.956,423.438,420.684 +67108864,291.12,938.063,899.405,850.311,843.903 +16,0,0.51712,0.625664,0.763904,0.765952 +32,0.0003,0.463872,0.763904,0.813056,0.768 +64,0.0001,0.468992,0.820224,0.764928,0.736256 +128,0.0003,0.48128,0.801792,0.690176,0.755712 +256,0.0004,0.53248,0.693248,0.8192,1.0025 +512,0.0003,0.800768,0.6144,0.769024,0.68096 +1024,0.0012,0.644096,0.851968,0.733184,0.724992 +2048,0.0011,0.683008,0.90112,0.836608,0.68608 +4096,0.0039,0.569344,0.894976,0.799744,0.785408 +8192,0.0036,0.915456,0.900096,0.771072,0.841728 +16384,0.0098,0.739328,1.1049,1.22061,0.896 +32768,0.0178,0.94208,1.30765,1.12742,1.09773 +65536,0.04,1.54522,1.65786,1.50016,1.52474 +131072,0.7182,2.19136,2.48218,2.49446,3.08736 +262144,1.1691,4.58854,4.09088,4.55987,5.25722 +524288,2.2631,8.21555,7.9575,7.51718,8.0343 +1048576,4.683,15.3805,14.7405,15.0292,14.5224 +2097152,9.4421,30.9412,30.1681,27.7944,28.2112 +4194304,20.2012,57.943,55.254,54.1624,54.9632 +8388608,37.2257,116.359,110.085,106.31,107.319 +16777216,75.8632,231.536,220.304,209.192,210.239 +33554432,144.02,465.847,446.1,425.193,420.709 +67108864,293.347,938.596,887.123,849.304,848.756 +16,0.0001,0.45056,0.596992,0.65024,0.591872 +32,0.0002,0.461824,0.561152,0.591872,0.535552 +64,0.0003,0.585728,0.534528,0.576512,0.533504 +128,0.0002,0.478208,0.564224,0.661504,0.59904 +256,0.0003,0.489472,0.651264,0.64512,0.602112 +512,0.0006,0.52736,0.569344,0.570368,0.595968 +1024,0.0004,0.551936,0.618496,0.722944,0.550912 +2048,0.0011,0.545792,0.6912,0.703488,0.656384 +4096,0.002,0.59392,0.733184,0.646144,0.65024 +8192,0.0038,0.646144,0.84992,0.760832,0.64512 +16384,0.0089,0.786432,1.01786,0.785408,0.74752 +32768,0.0642,1.00147,1.16429,0.974848,1.01888 +65536,0.0365,1.37114,1.6384,1.42746,1.49299 +131072,0.5996,2.73408,2.4657,2.49856,3.26246 +262144,1.4698,4.1472,4.08166,4.27315,4.74624 +524288,2.353,7.7271,7.75578,7.95034,8.67738 +1048576,4.4385,15.1204,15.1214,14.294,14.4579 +2097152,9.2296,29.0652,29.5557,26.9578,27.5456 +4194304,18.1051,57.6225,57.2426,53.5747,53.1855 +8388608,39.2887,115.717,110.343,106.642,105.526 +16777216,76.2492,230.266,224.939,210.626,211.441 +33554432,145.501,465.664,437.006,425.702,422.427 +67108864,293.566,941.268,905.755,849.464,841.464 +16,0.0001,0.456704,0.4864,1.30253,0.509952 +32,0.0002,0.820224,0.494592,0.540672,0.524288 +64,0.0002,0.45568,0.528384,0.51712,0.489472 +128,0.0004,0.509952,0.576512,1.11821,0.5888 +256,0.0003,0.835584,0.60928,0.565248,0.717824 +512,0.0003,0.539648,0.67584,0.64512,0.538624 +1024,0.001,0.543744,0.70144,0.945152,0.60928 +2048,0.0009,0.569344,0.740352,0.628736,0.633856 +4096,0.0021,1.15712,0.791552,0.647168,0.60416 +8192,0.0046,0.608256,0.80896,0.690176,0.64512 +16384,0.008,0.780288,0.940032,0.796672,0.738304 +32768,0.0187,0.992256,1.15405,1.03526,1.38752 +65536,0.0372,1.47046,1.65274,1.44282,1.44691 +131072,0.5993,2.16986,2.3808,2.8672,2.92864 +262144,1.1689,4.60186,3.99258,4.68582,4.72883 +524288,2.7603,8.01075,7.44448,7.48954,8.0169 +1048576,4.4383,16.1157,14.3309,14.0636,14.9217 +2097152,8.9986,29.9428,29.057,26.7643,28.9567 +4194304,18.118,57.685,57.8683,54.4942,54.144 +8388608,37.4561,113.651,110.85,106.674,106.749 +16777216,80.23,230.844,220.259,213.922,211.358 +33554432,150.026,467.326,448.814,425.36,422.111 +67108864,291.399,943.157,889.918,852.755,843.144 +16,0.0001,0.493568,0.46592,0.540672,0.607232 +32,0.0002,0.498688,0.492544,0.574464,0.591872 +64,0.0002,0.499712,0.579584,0.571392,0.61952 +128,0.0002,0.548864,0.581632,0.577536,0.534528 +256,0.0005,0.530432,0.59904,0.621568,0.584704 +512,0.0007,0.774144,0.72192,0.595968,0.535552 +1024,0.0004,0.5376,0.648192,0.601088,1.2032 +2048,0.001,0.651264,0.68608,0.622592,0.617472 +4096,0.0022,1.09363,0.730112,0.644096,0.652288 +8192,0.0037,0.62464,0.81408,0.68608,0.64 +16384,0.0078,0.770048,0.9728,0.800768,0.755712 +32768,0.0199,0.966656,1.17965,1.04448,1.00762 +65536,0.0383,1.37011,2.03366,1.52678,1.33222 +131072,0.5856,2.2231,2.45658,2.52723,2.97984 +262144,1.1678,4.23117,3.92909,4.38682,5.22342 +524288,2.4077,7.76806,7.5049,7.97389,8.65382 +1048576,4.7058,15.3999,15.3846,14.6248,14.4507 +2097152,9.4731,30.4108,28.2061,27.903,27.095 +4194304,20.2805,59.477,57.0163,53.3064,54.017 +8388608,36.9878,114.986,110.588,105.964,104.894 +16777216,76.7461,230.269,223.134,209.862,210.713 +33554432,143.342,465.048,438.201,425.396,420.173 +67108864,296.679,940.78,902.959,852.37,844.612 +16,0.0001,0.626688,0.748544,0.631808,0.577536 +32,0.0002,0.459776,0.54784,0.63488,0.549888 +64,0.0002,0.60928,0.57344,0.649216,0.606208 +128,0.0002,0.50176,0.582656,0.569344,0.591872 +256,0.0004,0.466944,0.73728,0.635904,0.538624 +512,0.0007,0.497664,0.608256,0.57856,1.25133 +1024,0.0004,0.52736,1.07213,0.652288,0.62976 +2048,0.001,0.54784,0.694272,0.622592,0.56832 +4096,0.0021,0.567296,0.718848,0.707584,0.69632 +8192,0.0034,0.748544,0.805888,0.750592,1.03629 +16384,0.008,0.738304,1.01888,0.851968,0.812032 +32768,0.0177,0.991232,1.25747,1.03424,1.00352 +65536,0.0364,1.33939,1.64454,1.43053,1.65478 +131072,0.5996,2.1248,2.39309,2.5303,3.64032 +262144,1.9451,4.0704,3.92909,4.80563,4.71962 +524288,2.4701,7.94931,7.52845,7.60115,7.92474 +1048576,4.6823,15.445,14.7763,14.9412,14.2449 +2097152,10.7964,29.2106,28.884,27.006,27.4883 +4194304,19.4816,58.5032,56.3743,53.8911,53.7856 +8388608,42.4102,115.372,110.107,106.384,104.702 +16777216,80.3387,231.34,219.933,212.007,211.697 +33554432,147.967,467.243,446.595,422.46,419.766 +67108864,294.756,936.618,884.75,852.044,844.504 +16,0.0001,0.530432,0.766976,0.528384,0.530432 +32,0.0001,0.528384,0.567296,0.649216,0.613376 +64,0.0002,0.530432,1.17555,0.871424,0.88576 +128,0.0002,0.47616,0.5888,0.621568,0.551936 +256,0.0004,0.487424,0.591872,0.591872,0.618496 +512,0.0005,0.530432,0.628736,0.570368,0.55296 +1024,0.0005,0.52224,0.700416,0.659456,0.602112 +2048,0.0011,0.564192,0.736256,0.776192,0.67584 +4096,0.0022,0.608256,0.797696,0.709632,1.05574 +8192,0.0035,0.6144,0.800768,0.6912,0.6912 +16384,0.009,0.776192,0.944128,0.986112,0.743424 +32768,0.32,0.98304,1.22163,1.03629,0.963584 +65536,0.0376,1.39674,1.92614,1.4551,1.39264 +131072,0.586,2.23027,2.44429,2.69312,2.94195 +262144,1.2027,4.21478,4.02637,4.49946,5.0688 +524288,2.3423,7.70355,8.17562,7.50694,8.00768 +1048576,4.4363,15.2525,15.1173,14.1302,15.5525 +2097152,10.2931,29.481,28.3935,26.7377,28.7877 +4194304,19.4157,57.9584,57.0726,53.8358,54.1123 +8388608,36.7958,114.558,111.408,106.511,105.892 +16777216,73.5186,230.139,223.792,212.163,211.115 +33554432,147.671,468.652,440.414,424.622,422.027 +67108864,302.375,938.951,905.057,849.113,847.274 +16,0,0.477184,0.505856,0.549888,0.525312 +32,0.0001,0.47104,0.600064,0.62976,0.606208 +64,0.0001,0.869376,0.613376,0.637952,0.899072 +128,0.0002,0.704512,0.56832,0.577536,0.5376 +256,0.0005,0.560128,0.714752,0.859136,0.608256 +512,0.0007,0.50176,0.632832,0.652288,0.610304 +1024,0.0005,0.989184,0.6656,0.579584,1.15405 +2048,0.0009,0.661504,0.718848,0.684032,0.633856 +4096,0.0025,1.49914,1.29331,0.707584,0.646144 +8192,0.0033,0.743424,0.856064,0.76288,0.724992 +16384,0.0083,1.12333,1.00045,1.07725,1.03014 +32768,0.028,1.06598,1.16736,1.04243,1.0025 +65536,0.0366,2.23232,1.64147,1.43258,1.40698 +131072,0.5846,2.25382,2.44122,2.72384,2.98189 +262144,1.1736,4.06938,4.03456,4.3817,5.55725 +524288,2.3398,8.09984,8.13978,8.16435,7.59603 +1048576,4.6849,14.4108,14.2756,13.7359,16.5448 +2097152,9.3726,29.1133,29.1,27.2364,27.8446 +4194304,18.0549,57.8038,57.9758,53.2879,53.801 +8388608,42.3555,114.817,110.966,105.502,106.067 +16777216,78.4507,230.921,219.126,213.111,212.079 +33554432,146.89,465.727,445.118,424.372,420.29 +67108864,290.541,938.719,887.232,850.145,846.505 +16,0.0001,0.518144,0.688128,0.772096,0.753664 +32,0.0001,0.513024,0.820224,0.724992,0.720896 +64,0.0003,0.463872,0.790528,0.818176,0.791552 +128,0.0004,0.48128,0.792576,1.05574,0.714752 +256,0.0002,0.59392,0.606208,0.600064,0.560128 +512,0.0005,0.50176,0.651264,0.580608,0.546816 +1024,0.001,0.58368,0.685056,0.596992,0.551936 +2048,0.001,0.545792,0.698368,1.09568,0.586752 +4096,0.0022,0.569344,0.782336,0.69632,0.68096 +8192,0.0038,0.649216,0.899072,0.697344,0.659456 +16384,0.0082,0.745472,0.930816,0.872448,0.806912 +32768,0.0434,0.973824,1.22982,1.04038,1.024 +65536,0.0394,1.37114,1.63738,1.38957,1.33734 +131072,0.7429,2.18726,2.45453,2.52928,2.93683 +262144,1.2216,4.21376,3.97824,4.44211,4.9193 +524288,2.5869,7.62675,7.72506,8.00666,8.23398 +1048576,4.7946,14.5735,15.1634,14.3933,14.5449 +2097152,9.0147,29.1236,28.7416,27.1821,27.4913 +4194304,18.3886,58.5585,56.5402,53.8911,53.2009 +8388608,39.1411,115.548,111.08,106.14,106.698 +16777216,74.7091,230.774,224.574,211.371,208.768 +33554432,145.865,463.902,435.304,426.568,421.284 +67108864,293.248,940.152,903.378,851.804,839.242 +16,0,1.9927,0.712672,0.94208,0.531456 +32,0.0001,0.45056,0.544768,0.638976,0.881664 +64,0.0002,0.464896,0.564224,0.569344,0.848896 +128,0.0002,0.5632,0.74752,0.62464,0.548864 +256,0.0003,0.529408,0.59392,0.649216,0.607232 +512,0.0003,0.499712,0.60416,0.857088,0.81408 +1024,0.0005,0.526336,0.642048,0.584704,0.698368 +2048,0.0009,0.723968,0.754688,0.616448,0.571392 +4096,0.0021,0.579584,0.709632,1.14176,0.651264 +8192,0.0034,0.736256,0.796672,0.676864,0.9472 +16384,0.009,0.800768,0.991232,0.836608,0.807936 +32768,0.0195,0.950272,1.16326,1.06496,1.0199 +65536,0.0388,1.38957,1.89645,1.37523,1.3271 +131072,0.6028,2.2569,2.4023,2.82931,2.94298 +262144,1.1736,4.48307,3.99155,4.86093,4.84147 +524288,2.3398,8.08448,7.51104,7.7609,8.19302 +1048576,4.7958,15.3539,14.4282,15.0938,15.1316 +2097152,8.9272,29.6643,28.8573,27.4217,28.8778 +4194304,20.8182,57.4474,55.8459,54.1542,53.9402 +8388608,36.3988,114.161,109.743,105.731,106.385 +16777216,75.6793,231.057,221.208,208.822,212.101 +33554432,144.483,464.186,445.898,426.759,421.466 +67108864,293.098,937.216,884.581,850.114,846.651 +16,0.0001,0.492544,0.516096,0.567296,0.515072 +32,0.0003,0.509952,0.545792,0.580608,0.598016 +64,0.0003,0.461824,0.566272,1.27488,0.600064 +128,0.0004,0.505856,0.572416,0.571392,0.592896 +256,0.0003,0.508928,0.649216,0.630784,0.707584 +512,0.0006,1.44589,0.693248,0.654336,0.67584 +1024,0.0004,0.55296,0.704512,0.64512,0.541696 +2048,0.0023,0.541696,0.698368,0.610304,0.9216 +4096,0.0021,0.651264,0.649216,0.636928,0.620544 +8192,0.0034,0.622592,0.80384,0.697344,0.688128 +16384,0.0082,0.745472,1.60666,0.871424,0.812032 +32768,0.0247,1.02912,1.2841,1.03834,1.00045 +65536,0.0358,2.00294,2.0265,1.42746,1.40083 +131072,0.6001,2.26202,2.61837,2.38899,2.81702 +262144,1.2412,4.14717,4.01613,4.57216,5.87162 +524288,2.3419,7.85613,7.60627,7.53459,8.13466 +1048576,4.4364,16.297,15.3364,14.2193,14.9811 +2097152,9.4433,29.7728,27.9235,27.5354,27.6449 +4194304,18.0027,57.5099,57.1054,54.443,54.4389 +8388608,40.0993,114.75,111.107,106.947,105.094 +16777216,74.8599,231.304,224.843,211.361,210.31 +33554432,154.498,464.327,436.568,423.343,422.61 +67108864,290.222,937.515,902.91,853.775,843.302 +16,0,0.472064,0.490496,0.546816,0.514048 +32,0.0002,0.499712,0.520192,0.543744,0.605184 +64,0.0003,0.756736,0.603136,0.617472,0.587776 +128,0.0002,0.498688,0.577536,0.816128,0.745472 +256,0.0003,0.744448,0.687104,0.908288,0.54784 +512,0.0007,0.533504,0.607232,0.56832,0.523264 +1024,0.0005,0.90624,0.695296,0.651264,0.90624 +2048,0.0162,0.57856,0.723968,0.612352,0.575488 +4096,0.0023,0.57856,0.724992,0.65024,0.643072 +8192,0.0038,0.663552,0.78336,0.689152,0.744448 +16384,0.0079,0.718848,1.10387,0.83456,0.817152 +32768,0.0256,0.992256,1.14688,0.978944,1.01478 +65536,0.0411,1.37114,1.63942,1.4336,1.41312 +131072,0.585,2.13094,2.41152,2.51597,2.93274 +262144,1.2172,4.3008,4.02739,4.33459,5.23366 +524288,2.3418,8.52685,7.85818,8.02611,8.50739 +1048576,4.7202,15.3426,14.7948,14.5695,14.7046 +2097152,9.5472,29.5199,29.2239,27.2732,28.3628 +4194304,19.5396,57.7935,57.9277,53.9576,53.7876 +8388608,39.8298,115.233,114.873,107.086,105.547 +16777216,74.9795,231.21,220.13,213.707,211.706 +33554432,148.93,467.787,447.305,424.842,422.478 +67108864,292.637,937.76,886.61,850.411,848.844 +16,0.0001,0.475136,0.76288,0.758784,0.927744 +32,0.0001,0.553984,0.750592,0.769024,0.75776 +64,0.0003,0.52224,0.775168,0.73728,0.74752 +128,0.0003,0.590848,0.838656,0.72192,0.690176 +256,0.0003,0.484352,0.823296,0.703488,0.764928 +512,0.0005,0.561152,0.779264,0.75776,0.719872 +1024,0.0008,0.528384,0.809984,0.908288,0.77312 +2048,0.0024,0.637952,0.846848,0.770048,0.6656 +4096,0.0169,1.59539,0.814048,0.734208,0.864256 +8192,0.0034,0.616448,0.928768,0.82944,0.850944 +16384,0.0079,0.751616,1.11411,0.97792,0.898048 +32768,0.0256,0.9472,1.3312,1.11206,1.29024 +65536,0.0398,1.58618,1.66195,1.45613,1.47558 +131072,0.5993,2.18726,2.43814,2.88256,2.79654 +262144,1.1693,4.22195,3.96902,4.34074,4.97152 +524288,2.3397,8.03123,7.66259,7.69946,8.27699 +1048576,4.965,14.8429,14.6432,14.0974,15.5761 +2097152,9.4571,30.0134,28.3535,27.3818,27.1462 +4194304,22.4838,58.0516,57.2334,53.4518,53.7672 +8388608,36.0812,114.573,111.346,105.587,106.338 +16777216,77.3565,230.672,223.647,210.394,209.886 +33554432,146.795,464.937,435.531,424.426,421.684 +67108864,293.482,935.895,904.378,852.767,846.362 +16,0.0001,0.50176,0.690176,0.804864,0.749568 +32,0.0002,0.451584,0.608256,0.580608,0.607232 +64,0.0002,0.545792,0.734208,0.630784,0.591872 +128,0.0133,0.81408,0.67072,0.574464,0.615424 +256,0.0002,0.4864,0.596992,0.586752,0.556032 +512,0.0005,0.502784,0.620544,0.596992,0.556032 +1024,0.0009,0.736256,0.714752,0.638976,0.592896 +2048,0.001,0.543744,0.67584,0.648192,0.576512 +4096,0.0023,0.57856,0.717824,1.08646,0.64512 +8192,0.0038,0.693248,0.785408,0.774144,0.699392 +16384,0.0083,0.745472,1.00762,0.842752,0.837632 +32768,0.0211,1.49504,1.22982,1.04653,1.01683 +65536,0.0375,2.2825,1.65171,1.43974,1.54522 +131072,0.5995,2.4832,2.51085,2.53338,3.18054 +262144,1.201,4.20352,4.49843,4.32845,4.92749 +524288,2.2884,7.62573,7.65747,8.18381,8.92826 +1048576,5.4632,15.2719,14.2367,13.8803,14.4927 +2097152,10.2198,28.9761,30.0769,26.1663,28.543 +4194304,21.4403,58.7418,55.5018,53.4088,54.2075 +8388608,37.6876,116.295,109.571,106.162,105.753 +16777216,76.6264,230.463,219.07,212.558,210.028 +33554432,145.061,465.522,447.158,425.24,423.192 +67108864,292.212,935.852,884.712,854.284,844.048 +16,0.0001,0.446464,0.703488,0.636928,0.695296 +32,0.0003,0.500736,0.713728,0.622592,0.749568 +64,0.0003,0.483328,1.13152,0.78848,0.708608 +128,0.0003,0.600064,0.689152,0.702464,0.684032 +256,0.0004,0.519168,0.841728,0.787456,0.920576 +512,0.0004,0.540672,0.81408,1.22573,0.728064 +1024,0.0012,0.572416,0.785408,0.862208,0.679936 +2048,0.0023,0.559104,0.939008,0.874496,0.729088 +4096,0.0042,0.57344,1.01069,0.736256,0.797696 +8192,0.0036,0.944128,0.97792,0.817152,0.837632 +16384,0.0079,0.91648,1.04858,0.866304,1.27283 +32768,0.019,0.945152,1.25747,1.08544,1.29741 +65536,0.0369,1.85446,1.70394,1.44998,1.58618 +131072,0.7199,2.30605,2.75456,2.57741,3.68128 +262144,1.1678,4.18816,4.49843,4.97152,4.6592 +524288,2.3427,7.7568,8.07014,8.2135,8.45824 +1048576,4.5363,15.0405,14.8255,14.5899,15.0569 +2097152,8.8734,29.099,28.6546,26.8278,27.5364 +4194304,20.1842,58.1448,57.855,54.2065,53.503 +8388608,36.3016,114.524,111.445,106.353,106.465 +16777216,79.2694,229.671,222.787,212.133,211.665 +33554432,151.279,466.651,437.708,424.022,421.958 +67108864,293.435,940.405,905.912,850.464,844.72 +16,0.0001,0.481248,0.772096,0.77824,0.713728 +32,0.0002,0.54272,0.763904,0.753664,0.864256 +64,0.0002,0.539648,0.769024,0.878592,0.928768 +128,0.0002,0.48128,0.585728,0.63488,0.630784 +256,0.0003,0.499712,0.653312,0.638976,0.59392 +512,0.0004,0.499712,0.6144,0.800768,0.540672 +1024,0.0009,0.5632,0.637952,0.65536,0.616448 +2048,0.0011,0.710656,0.681984,0.62976,0.5888 +4096,0.0021,0.575488,0.723968,0.65536,0.601088 +8192,0.0039,0.770048,0.790528,0.75776,0.690176 +16384,0.0084,0.770048,0.93184,0.848896,0.821248 +32768,0.0194,1.16634,1.21958,1.04346,1.28 +65536,0.0407,1.94867,1.65478,2.15859,1.64454 +131072,0.5828,2.22515,3.14163,2.51802,3.53792 +262144,1.1679,4.21478,4.20045,4.30387,4.95309 +524288,2.3417,7.62982,7.78854,8.06912,8.73472 +1048576,4.7097,14.5142,14.6842,14.379,15.1276 +2097152,9.1236,28.8072,29.31,27.5599,28.0596 +4194304,20.6234,58.0239,55.6032,54.2024,54.0723 +8388608,38.6445,116.434,111.23,107.652,106.393 +16777216,77.8651,230.596,220.073,210.58,210.207 +33554432,145.094,464.725,446.487,427.713,421.915 +67108864,300.426,940.391,884.661,850.298,843.971 +16,0,0.479232,0.516096,0.553984,0.512 +32,0.0001,0.530432,0.502784,0.538624,0.5888 +64,0.0001,0.570368,0.570368,0.58368,1.28307 +128,0.0003,0.65536,0.801792,0.90624,0.82432 +256,0.0004,0.825344,0.787456,0.567296,0.598016 +512,0.0005,0.498688,0.621568,0.643072,0.603136 +1024,0.0004,0.5376,0.641024,0.603136,0.623616 +2048,0.0011,1.44589,0.774144,0.685056,0.627712 +4096,0.0023,0.571392,0.722944,0.799744,0.590848 +8192,0.004,0.652288,0.804864,0.756736,0.68608 +16384,0.0083,0.77312,1.01581,0.856064,0.816128 +32768,0.0266,0.996352,1.16019,1.03526,1.1561 +65536,0.039,1.39162,1.62611,1.4336,1.41005 +131072,0.5827,2.75354,2.4576,2.95834,3.1703 +262144,1.1688,4.21376,4.40218,4.36531,4.51789 +524288,2.3418,7.62266,7.5049,7.52538,8.31898 +1048576,4.4379,16.1106,15.3487,14.5644,14.8122 +2097152,9.4509,29.5516,28.542,27.5988,28.8195 +4194304,20.7965,58.7766,57.0358,53.3924,54.3406 +8388608,44.4546,114.338,111.123,107.431,105.241 +16777216,76.9285,228.565,225.028,210.359,212.393 +33554432,151.447,467.853,435.791,424.513,422.91 +67108864,294.586,939.542,902.285,851.101,845.038 +16,0.0001,0.477184,0.738304,0.87552,0.730112 +32,0.0003,0.710656,0.679936,0.667648,0.603136 +64,0.0001,0.462848,0.818176,0.820224,0.744448 +128,0.0003,0.516096,0.738304,0.700416,0.677888 +256,0.0003,0.494592,1.04755,0.705536,0.728064 +512,0.0007,0.697344,0.823296,0.791552,0.73216 +1024,0.0012,0.530432,0.889856,1.32506,0.709632 +2048,0.0024,0.557056,0.969728,0.796672,0.7168 +4096,0.002,0.572416,0.86528,0.823296,1.37318 +8192,0.0034,0.815104,0.9472,0.774112,0.73728 +16384,0.008,0.946176,1.04243,0.968704,0.935936 +32768,0.0221,1.59334,1.37421,1.30765,1.24928 +65536,0.0412,1.67731,1.72339,1.49402,1.46842 +131072,0.585,2.18726,2.47296,2.5385,3.2041 +262144,1.202,4.19635,4.2281,4.3305,4.93158 +524288,2.3412,7.72608,8.92109,7.87456,8.32717 +1048576,4.732,14.9463,15.6498,14.3452,15.6979 +2097152,9.1658,29.5096,28.6679,27.7248,27.6439 +4194304,18.3997,57.5468,56.1183,52.7063,53.7641 +8388608,36.8384,114.381,111.269,105.425,106.103 +16777216,77.0074,229.625,218.437,210.856,210.853 +33554432,147.147,466.641,445.952,423.633,421.877 +67108864,293.934,939.092,885.135,848.868,843.076 +16,0.0001,0.4608,0.992256,0.797696,0.748544 +32,0.0002,0.548864,0.815104,0.787456,0.763904 +64,0.0002,0.472064,0.760832,0.72192,0.71168 +128,0.0004,0.661504,0.744448,0.702464,0.71168 +256,0.0003,0.508928,0.78336,0.765952,0.749568 +512,0.0007,0.65024,1.28205,0.641024,0.59904 +1024,0.0005,0.523264,0.70144,0.672768,0.543744 +2048,0.0011,0.536576,0.688128,0.630784,0.630784 +4096,0.0021,0.816128,0.82432,0.705536,0.881664 +8192,0.0037,0.654336,0.820224,0.712704,0.709632 +16384,0.0082,0.7424,1.00966,0.837632,0.760832 +32768,0.0177,0.948224,1.24416,1.05062,0.997376 +65536,0.0351,1.3353,1.7111,1.45408,1.33632 +131072,0.5866,2.24973,2.66342,2.40026,2.96346 +262144,1.1737,5.16506,4.03456,4.9367,4.76365 +524288,2.9894,7.97491,7.48442,7.45062,8.0896 +1048576,4.6837,14.9821,15.5197,13.694,15.7972 +2097152,8.8771,29.6837,28.9587,28.0525,27.7668 +4194304,20.0033,58.0454,56.9262,53.122,53.6781 +8388608,38.3448,115.397,110.683,105.566,106.528 +16777216,74.6337,230.532,223.048,210.509,211.594 +33554432,148.423,467.752,438.573,423.759,422.254 +67108864,296.49,941.31,903.693,850.319,842.376 +16,0,0.523264,0.720896,0.78336,0.689152 +32,0.0003,0.46592,0.700416,0.722944,0.692224 +64,0.0002,1.15098,0.580608,0.58368,0.590848 +128,0.0003,0.50688,0.631808,0.63488,0.585728 +256,0.0006,0.58368,1.17965,0.572416,0.589824 +512,0.0005,0.544768,0.677888,0.974848,0.615424 +1024,0.0007,0.594944,0.726016,0.612352,0.528384 +2048,0.0009,0.920576,0.748544,0.638976,0.57856 +4096,0.0039,1.05574,0.730112,0.636928,0.657408 +8192,0.0036,0.635904,1.13254,0.765952,0.646144 +16384,0.0109,0.891904,0.950272,0.791552,0.816128 +32768,0.0187,0.96768,1.1561,1.01171,0.999424 +65536,0.0467,1.34349,1.56672,1.43667,1.38957 +131072,0.5837,2.22822,3.11808,2.38797,3.23379 +262144,1.3369,4.1984,3.9895,4.30592,4.72474 +524288,2.3839,7.64621,7.62573,7.90221,8.45107 +1048576,4.6833,15.5546,14.2305,14.3186,15.145 +2097152,8.8771,29.2157,29.399,27.5896,27.7115 +4194304,18.0994,58.9455,55.1885,53.7928,54.2556 +8388608,39.9552,114.563,110.105,106.545,105.754 +16777216,79.2876,230.131,220.406,211.342,215.097 +33554432,146.499,464.132,445.705,424.168,419.612 +67108864,293.626,945.135,885.137,853.772,855.337 +16,0,0.543744,0.676864,0.710656,0.694272 +32,0.0001,0.64512,0.699392,1.12538,0.720896 +64,0.0002,0.641024,0.765952,0.74752,1.00454 +128,0.0003,0.574464,0.765952,0.946176,0.782336 +256,0.0002,0.516096,0.910336,0.933888,0.724992 +512,0.0004,0.63488,0.669696,0.70656,0.723968 +1024,0.0008,0.70144,0.876544,0.899072,0.759808 +2048,0.001,0.598016,0.935936,0.7424,0.715776 +4096,0.0021,0.570368,1.024,1.14381,0.989184 +8192,0.0058,0.816128,0.876544,0.812032,0.862208 +16384,0.0088,0.90112,1.0455,1.00864,1.05574 +32768,0.0373,1.09568,1.55648,1.16326,1.23904 +65536,0.0493,1.53293,1.7961,2.31526,1.65376 +131072,0.8219,2.40845,2.59379,2.72896,3.06893 +262144,1.169,4.48819,4.22093,5.02579,4.83738 +524288,2.6156,7.75066,8.07731,8.23296,8.21965 +1048576,4.9826,14.9299,15.1736,14.4015,15.2166 +2097152,10.6454,29.6202,28.9638,27.819,27.8876 +4194304,18.4308,57.8642,59.0991,53.7539,53.4733 +8388608,37.3255,114.44,110.626,105.679,104.982 +16777216,78.5521,230.314,223.434,211.35,211.353 +33554432,149.493,464.259,437.065,426.576,422.279 +67108864,296.501,943.115,901.838,853.083,857.731 +16,0.0001,0.775168,0.626688,0.666624,0.91136 +32,0.0001,0.566272,0.564224,0.641024,0.878592 +64,0.0001,0.488448,0.748544,0.598016,0.551936 +128,0.0001,0.656384,0.562176,0.631808,0.603136 +256,0.0002,0.52224,0.654336,0.57344,0.544768 +512,0.0008,0.836608,0.631808,0.58368,0.60928 +1024,0.0005,0.513024,0.738304,0.654336,0.594944 +2048,0.001,0.544768,0.74752,0.674816,0.632832 +4096,0.0021,1.11923,0.900096,0.700416,0.657408 +8192,0.0034,0.841728,0.809984,0.677888,0.714752 +16384,0.008,1.02195,0.96256,0.774144,0.816128 +32768,0.0187,0.971776,1.17453,0.989184,1.00147 +65536,0.0387,1.34758,1.80736,1.41619,1.40288 +131072,0.5861,2.18624,2.38797,2.688,2.77299 +262144,1.2882,4.17997,4.40422,4.57626,4.75853 +524288,2.5164,7.7353,7.73837,7.48032,8.49408 +1048576,4.9688,15.4552,14.5623,15.191,15.0036 +2097152,9.6662,28.8215,30.1128,27.7821,28.1795 +4194304,19.0625,58.3803,55.1424,54.2044,54.015 +8388608,39.0755,113.853,110.998,106.881,105.424 +16777216,76.1309,231.175,220.884,211.9,210.791 +33554432,153.723,464.514,451.104,434.077,427.899 +67108864,298.72,936.616,884.615,854.821,844.623 +16,0.0001,0.693248,0.886784,1.01376,0.772096 +32,0.0003,0.453632,0.731136,1.14074,0.741376 +64,0.0002,0.720896,0.736256,0.69632,0.7936 +128,0.0002,0.902144,0.800768,0.736256,0.77312 +256,0.0006,1.59027,0.719872,0.726016,0.703488 +512,0.0002,0.49664,1.15405,0.836608,0.77824 +1024,0.0197,0.524288,1.21037,0.73216,0.726016 +2048,0.0022,0.572416,0.970752,0.733184,0.718848 +4096,0.0042,0.574464,0.878592,0.974848,0.770048 +8192,0.0037,0.616448,0.96768,0.850944,0.838656 +16384,0.0081,0.907264,1.04243,0.91648,0.930816 +32768,0.0189,0.974848,1.28614,1.3271,1.11002 +65536,0.0391,1.35373,1.73158,1.54829,1.48787 +131072,0.7449,2.20262,2.74842,2.8713,2.94298 +262144,1.2015,4.84352,4.10112,4.75136,4.7657 +524288,2.8255,8.27699,8.18688,7.8295,8.42752 +1048576,4.6837,15.445,14.8244,14.6412,14.9371 +2097152,8.8734,29.5793,28.6771,27.3428,27.6439 +4194304,19.9859,57.0798,56.6948,54.0785,53.418 +8388608,38.5532,114.815,111.043,105.525,106.757 +16777216,81.1802,230.529,224.799,211.018,211.015 +33554432,146.013,465.477,436.638,424.407,420.421 +67108864,294.938,942.428,902.924,852.225,843.037 +16,0.0001,0.557056,0.9216,0.62464,0.903168 +32,0.0001,0.457728,0.75776,0.736256,1.3865 +64,0.0001,0.495616,0.789504,0.741376,0.764928 +128,0.0002,0.620544,0.790528,0.77824,0.769024 +256,0.0002,0.514048,1.15098,0.70656,0.851968 +512,0.0005,0.493568,0.7936,0.745472,0.722944 +1024,0.0005,0.586752,0.81408,1.02605,1.04653 +2048,0.0012,0.543744,0.970752,0.765952,0.65024 +4096,0.0023,0.626688,0.7936,0.657408,0.768 +8192,0.0033,1.64659,0.958464,0.904192,0.801792 +16384,0.0078,0.770048,1.09466,0.987136,0.917504 +32768,0.0187,1.26157,1.29126,1.10694,1.03526 +65536,0.0378,1.7193,1.79917,1.46739,1.41824 +131072,0.5829,2.29478,2.46886,2.79552,3.50413 +262144,1.2016,4.28442,4.26291,4.38886,4.73702 +524288,2.3444,7.7783,7.49261,7.66874,8.19917 +1048576,4.9313,15.702,14.42,14.6196,14.6412 +2097152,9.1474,29.4052,29.5311,27.6408,27.3439 +4194304,17.9545,58.8483,56.4378,53.7221,54.2484 +8388608,37.6289,116.205,110.176,105.876,105.466 +16777216,75.4405,230.328,219.789,212.364,211.426 +33554432,149.194,466.985,445.274,427.136,421.508 +67108864,300.701,938.969,888.065,855.011,846.479 +16,0.0001,0.468992,0.704512,0.830464,0.82944 +32,0.0002,0.60416,0.768,0.730112,0.759808 +64,0.0001,0.482304,0.822272,0.799744,0.74752 +128,0.0004,0.477184,0.637952,0.635904,0.610304 +256,0.0003,0.488448,1.1264,0.580608,0.584704 +512,0.0005,0.500736,0.678912,0.644096,0.628736 +1024,0.0004,0.521216,0.70144,0.64512,0.622592 +2048,0.0011,0.833536,0.741376,0.67584,0.642048 +4096,0.0022,0.606208,0.73728,0.642048,0.657408 +8192,0.0037,0.659456,1.11923,0.72704,0.631808 +16384,0.0082,0.776192,1.12128,0.770048,0.75264 +32768,0.0326,0.9728,1.59232,1.03834,1.01274 +65536,0.0386,1.83091,1.61894,1.43258,1.6087 +131072,0.602,2.6368,2.39002,2.65933,2.816 +262144,1.1749,4.14515,4.01203,4.21581,4.97459 +524288,2.5165,8.30464,8.13261,7.72506,8.33741 +1048576,4.8133,15.3979,14.9064,14.5992,15.0723 +2097152,9.2803,30.0104,28.1702,27.3582,27.8252 +4194304,18.0787,58.1335,57.1955,53.8675,53.7272 +8388608,40.0773,113.001,111.487,107.185,105.508 +16777216,78.8491,229.25,225.206,211.918,212.012 +33554432,150.63,464.711,440.694,428.122,424.026 +67108864,194.475,937.397,903.644,853.199,843.797 +16,0.0001,0.656352,0.789504,0.777216,0.749568 +32,0.0001,0.973824,0.718848,0.718848,0.786432 +64,0.0002,0.480256,0.821248,0.80384,1.29024 +128,0.0002,0.538624,0.766976,0.830464,0.761856 +256,0.0004,0.60416,0.804864,0.68096,0.690176 +512,0.0007,0.497664,0.800768,0.675808,0.731136 +1024,0.0011,0.751616,0.796672,0.797696,0.756736 +2048,0.0022,0.539648,0.996352,0.758784,0.899072 +4096,0.0038,0.570368,0.847872,0.958464,0.786432 +8192,0.0039,0.7936,0.96768,0.832512,0.777216 +16384,0.008,0.905216,1.08544,0.897024,0.87552 +32768,0.0206,1.35168,1.29946,1.10387,0.951296 +65536,0.0378,1.93434,1.83603,1.81862,1.48275 +131072,0.7433,2.42381,2.99418,2.62144,3.43859 +262144,1.2031,4.24448,4.16563,4.47795,4.7616 +524288,2.3404,7.6759,7.5223,7.53562,8.05888 +1048576,4.6021,15.3539,14.6473,13.8711,15.1439 +2097152,9.1957,29.7861,29.5987,28.0914,28.4334 +4194304,19.4007,57.9092,56.5412,54.6314,53.5777 +8388608,37.0381,115.299,112.128,104.9,105.781 +16777216,78.1645,229.519,217.137,210.568,211.513 +33554432,145.118,464.777,442.477,425.104,421.107 +67108864,297.334,937.957,888.427,851.878,842.916 +16,0.0001,0.539648,0.695296,0.713728,0.705536 +32,0.0003,0.606208,0.717824,0.739328,0.77312 +64,0.0003,0.46592,0.825344,0.7936,0.774144 +128,0.0003,0.565248,0.784384,0.735232,0.6912 +256,0.0003,0.47616,0.780288,0.709632,0.81408 +512,0.0007,0.497664,0.567296,0.615424,0.792576 +1024,0.0013,0.524288,0.833536,1.21856,0.769024 +2048,0.0024,0.574464,0.695296,0.68608,0.635904 +4096,0.0021,0.846848,0.724992,0.63488,1.07008 +8192,0.0038,0.856064,0.812032,0.694272,0.674816 +16384,0.0081,0.836608,0.955392,0.781312,0.825344 +32768,0.0184,1.26362,1.15302,1.03731,1.0025 +65536,0.0363,2.03059,1.58618,1.65683,1.38957 +131072,0.5831,2.18829,2.45453,2.57536,2.7648 +262144,1.1898,4.19226,3.95366,5.04013,4.43904 +524288,2.3413,8.21965,7.86835,7.71686,8.6784 +1048576,5.0305,15.3692,15.1327,14.0339,14.8849 +2097152,9.0268,30.0063,29.2598,27.6091,28.2173 +4194304,18.2463,58.1089,56.9702,53.7508,55.7005 +8388608,38.8524,115.922,110.832,104.525,106.288 +16777216,74.2334,231.349,225.622,209.979,210.218 +33554432,149.299,467.756,434.736,426.277,422.509 +67108864,299.093,940.266,906.246,853.241,843.358 +16,0.0001,0.656384,0.825344,0.744448,0.6912 +32,0.0001,0.50176,0.812032,0.787456,0.748544 +64,0.0003,0.47104,0.823296,0.806912,0.80384 +128,0.0001,0.478208,0.800768,0.764928,0.68608 +256,0.0004,0.4864,0.598016,0.635904,0.598016 +512,0.0004,0.574464,0.662528,0.572416,0.540672 +1024,0.001,0.572416,0.638976,0.724992,1.01376 +2048,0.0015,0.589824,0.741376,0.740352,0.587776 +4096,0.0042,0.575488,0.781312,0.703488,0.647168 +8192,0.0037,0.60928,0.816128,0.777216,0.695296 +16384,0.0083,0.766976,0.9984,1.31072,0.807936 +32768,0.0199,0.974848,1.22573,1.04858,1.02195 +65536,0.0369,1.4807,2.24768,1.4377,1.41312 +131072,0.5993,2.65626,2.43814,2.7136,2.9143 +262144,1.2026,4.11853,4.02125,4.38886,5.50502 +524288,2.3166,7.87456,7.72506,7.74042,8.8535 +1048576,4.6847,15.0446,14.5142,15.1245,15.3569 +2097152,8.8731,30.4916,29.0591,27.4606,28.2143 +4194304,20.2255,57.7004,55.6524,54.9038,53.2419 +8388608,36.6941,117.496,111.448,106.616,106.205 +16777216,77.4098,231.195,219.618,211.676,211.383 +33554432,147.522,466.08,447.674,425.093,420.406 +67108864,290.745,938.511,886.917,846.952,843.824 +16,0.0001,0.643072,0.74752,0.710656,0.679936 +32,0.0003,0.4608,0.695296,0.78336,0.771072 +64,0.0002,0.475136,0.796672,0.795648,0.774144 +128,0.0004,0.482304,0.780288,0.740352,0.75776 +256,0.0005,0.488448,0.75264,0.731136,0.717824 +512,0.0004,0.550912,0.769024,0.770048,0.761856 +1024,0.0004,0.516096,1.01888,0.689152,0.724992 +2048,0.0022,0.545792,0.96256,0.760832,0.749568 +4096,0.0038,0.571392,0.722944,0.729088,0.653312 +8192,0.0038,0.9216,1.05984,0.756736,0.693248 +16384,0.0079,0.827392,1.32915,0.841728,0.812032 +32768,0.0333,0.950272,1.36192,0.980992,1.00352 +65536,0.0369,1.3824,1.7623,1.37933,1.4633 +131072,0.7319,2.15142,2.46886,2.51904,2.79245 +262144,1.1681,4.20966,4.18714,4.37245,4.97971 +524288,2.3549,7.64416,7.95034,7.89402,8.84429 +1048576,4.5431,15.2791,15.7112,14.1036,15.2115 +2097152,11.3201,29.0365,28.6024,27.3091,28.9812 +4194304,18.1981,58.1693,56.9262,53.8204,53.7027 +8388608,36.7454,114.666,111.688,106.002,106.227 +16777216,83.3876,230.137,223.597,212.354,211.148 +33554432,150.152,466.439,438.847,425.406,422.51 +67108864,295.078,938.264,899.435,851.993,842.709 +16,0,0.473088,0.78336,0.792576,0.744448 +32,0.0001,0.456704,0.746496,0.692224,0.704512 +64,0.0001,0.47104,0.842752,0.802816,0.733184 +128,0.0002,0.482304,0.815104,0.735232,0.761856 +256,0.0006,0.632832,0.827392,0.726016,0.585728 +512,0.0006,0.50176,0.903168,0.64,0.550912 +1024,0.0008,0.550912,0.869376,0.668672,1.19706 +2048,0.001,0.577536,0.739328,0.630784,0.97792 +4096,0.0021,0.60416,0.726016,0.71168,1.06291 +8192,0.0037,0.625664,0.799744,0.754688,0.687104 +16384,0.0083,0.766976,1.0199,0.83968,0.816128 +32768,0.0658,0.974848,1.15098,1.61485,0.956416 +65536,0.0402,1.46432,1.6599,1.47354,1.39776 +131072,0.5826,2.21082,3.08531,2.54771,3.25325 +262144,1.2011,4.77696,3.98541,4.43904,4.5527 +524288,2.3538,7.64928,7.3943,7.60422,8.71731 +1048576,4.6837,15.0671,14.2029,14.9187,14.8132 +2097152,9.1307,30.0442,29.015,27.394,28.1108 +4194304,18.9279,58.1847,56.2237,53.1866,53.8849 +8388608,35.9252,115.329,111.057,105.646,104.528 +16777216,78.3972,231.094,217.785,213.551,211.724 +33554432,149.81,465.576,446.619,424.034,421.192 +67108864,292.487,935.934,886.813,851.143,846.447 +16,0.0001,0.731136,0.758784,0.677888,0.730112 +32,0.0001,0.453632,0.710656,0.673792,0.760832 +64,0.0003,0.468992,0.833536,0.761856,0.774144 +128,0.0004,0.630784,0.861184,0.703424,0.735232 +256,0.0002,0.479232,0.795648,0.785408,0.710656 +512,0.0006,0.560128,0.755712,0.572416,0.540672 +1024,0.0004,0.549888,0.638976,0.8448,0.541696 +2048,0.0199,0.622592,0.726016,0.687104,0.64 +4096,0.0021,0.82944,0.809984,0.712704,0.656384 +8192,0.0035,1.17043,0.79872,0.705536,0.734208 +16384,0.0079,0.946176,0.941056,0.782336,1.15507 +32768,0.0204,0.950272,1.16122,0.982016,0.940032 +65536,0.2442,1.34554,1.64147,1.4336,1.49709 +131072,0.5858,2.26611,2.37363,2.41152,2.86106 +262144,1.1741,4.18406,4.06835,4.23117,5.22547 +524288,2.3419,7.77728,7.49875,7.62573,8.16128 +1048576,4.5357,15.2084,15.1982,14.3124,15.6744 +2097152,12.0112,29.099,28.2388,27.4084,27.7299 +4194304,18.0297,57.9133,56.6067,53.6637,53.932 +8388608,36.4436,113.742,112.382,106.581,105.244 +16777216,78.6329,229.629,223.491,212.94,211.54 +33554432,150.437,461.734,438.146,423.622,421.137 +67108864,293.879,936.541,904.424,850.625,845.739 +16,0.0001,0.641024,0.652288,0.72192,1.34144 +32,0.0001,0.477184,0.758784,0.806912,0.782336 +64,0.0004,0.468992,0.561152,0.57344,0.620544 +128,0.0002,0.515072,0.671744,0.663552,0.589824 +256,0.0003,0.512,0.598016,0.823296,0.7168 +512,0.0005,0.534528,0.756736,0.672768,0.603136 +1024,0.0004,0.596992,0.809984,0.643072,0.605184 +2048,0.0019,0.545792,0.695296,0.6912,0.66048 +4096,0.0021,0.566272,0.735232,0.72192,0.676864 +8192,0.004,0.815104,0.792576,0.75776,0.731136 +16384,0.0233,0.89088,1.15814,0.830464,0.806912 +32768,0.0191,1.05165,1.38854,1.0752,1.01171 +65536,0.0386,1.36704,1.63942,1.3865,1.34246 +131072,0.5857,2.24051,2.44634,2.44429,2.78426 +262144,1.2011,4.21888,4.02125,4.25165,5.98938 +524288,2.3411,7.67386,7.91757,7.46701,8.23501 +1048576,4.6813,15.8013,14.2612,14.6575,15.362 +2097152,9.5968,29.9397,28.1487,27.7289,27.9132 +4194304,18.7045,58.2902,56.9098,53.4948,53.8358 +8388608,37.2428,114.765,110.683,106.366,106.358 +16777216,78.1777,232.208,219.241,210.075,209.29 +33554432,159.379,465.816,447.832,426.235,422.978 +67108864,293.777,939.154,882.747,852.419,842.753 +16,0.0001,0.617472,0.627712,0.62976,0.543744 +32,0.0001,0.663552,0.586752,0.592896,0.540672 +64,0.0001,0.536576,0.734208,0.821248,0.664576 +128,0.0002,0.570368,0.581632,0.60928,0.6144 +256,0.0006,0.553984,0.659456,0.566272,0.544768 +512,0.0003,0.490496,0.676864,0.664576,0.544768 +1024,0.0004,0.632832,0.648192,0.586752,0.615424 +2048,0.0015,0.574464,0.937984,0.616448,0.697344 +4096,0.0021,0.708576,0.872448,0.971776,0.689152 +8192,0.0035,1.81555,0.866304,0.777216,0.683008 +16384,0.0081,0.730112,0.953344,0.857088,0.818176 +32768,0.0191,1.00454,1.13869,1.21958,1.00762 +65536,0.0393,1.42336,1.73875,1.42848,1.39059 +131072,0.583,2.18522,2.4361,2.39411,2.9399 +262144,1.1685,4.34074,3.97312,4.46771,4.69299 +524288,2.339,7.99642,7.42502,7.46496,8.04352 +1048576,5.2993,14.85,14.9688,14.5295,14.4855 +2097152,8.8725,30.2295,28.6505,27.1165,28.5 +4194304,19.6314,58.0065,56.9426,53.9884,52.9613 +8388608,40.7619,114.476,110.628,105.582,105.972 +16777216,76.1333,231.591,224.826,212.262,211.83 +33554432,147.104,468.5,435.882,426.346,422.215 +67108864,298.243,940.764,903.027,854.212,845.275 +16,0,0.847872,0.914432,0.772096,0.74752 +32,0.0001,0.533504,0.672768,0.695296,0.768 +64,0.0002,0.654336,0.722944,0.79872,0.738304 +128,0.0001,0.472064,0.843776,0.825344,1.05677 +256,0.0005,0.489472,0.536576,0.770048,0.748544 +512,0.0004,0.494592,0.816128,0.789504,0.746496 +1024,0.0004,0.524288,1.08442,0.790528,0.772096 +2048,0.0024,0.545792,0.847872,0.82432,0.786432 +4096,0.002,0.577536,1.05267,0.806912,0.7936 +8192,0.0038,0.623616,0.934912,0.831488,0.791552 +16384,0.008,0.746496,1.19091,0.908288,0.882688 +32768,0.0211,1.0967,1.35782,1.36704,1.29331 +65536,0.0406,2.03162,1.62714,1.46842,1.52986 +131072,0.5828,2.19136,2.5047,2.54362,3.10067 +262144,1.1685,4.608,4.08064,4.28032,5.10874 +524288,2.3433,8.58214,7.92371,8.0855,8.6825 +1048576,5.0411,14.9873,14.5797,14.7036,15.0559 +2097152,9.6396,28.8522,28.8666,28.4652,28.4856 +4194304,19.6922,57.2324,56.1285,53.8296,53.7723 +8388608,37.4624,114.996,109.897,105.244,104.925 +16777216,76.1774,229.773,219.464,212.645,211.06 +33554432,149.501,462.875,445.253,426.305,420.281 +67108864,296.833,939.1,889.948,855.587,847.564 +16,0.0002,0.62464,0.756736,0.55808,0.518144 +32,0.0004,0.510976,0.520192,0.635904,0.600064 +64,0.0001,0.467968,0.5632,0.572416,0.590848 +128,0.0004,0.500736,0.555008,0.57344,0.584704 +256,0.0003,0.585728,0.56832,0.702464,0.538624 +512,0.0005,0.535552,0.62976,0.570368,0.565248 +1024,0.0004,0.571392,0.700416,0.65024,0.606208 +2048,0.0009,0.559104,0.677888,0.676864,0.627712 +4096,0.002,0.591872,0.734208,0.724992,1.11514 +8192,0.0035,0.754688,0.88064,0.693248,0.790528 +16384,0.0088,0.7936,1.12538,0.8448,0.817152 +32768,0.0174,0.966656,1.23392,1.26054,1.00557 +65536,0.0393,1.40698,1.57286,1.42848,1.39366 +131072,0.5827,2.17702,2.43712,3.49082,2.94502 +262144,1.1755,4.32435,3.95878,4.69197,4.72371 +524288,2.9971,7.8336,7.53152,7.45472,7.80288 +1048576,4.6822,14.7425,15.4563,14.2234,15.7686 +2097152,9.4419,29.0734,27.734,27.4053,28.7314 +4194304,18.6181,57.9881,56.4204,53.6822,54.5577 +8388608,39.5772,115.299,109.557,105.628,107.211 +16777216,74.5116,229.896,223.099,213.479,211.147 +33554432,149.846,464.629,439.168,429.274,423.946 +67108864,296.55,938.563,902.554,853.959,844.214 +16,0.0001,0.585728,1.3783,0.934912,0.705536 +32,0.0002,0.512,0.744448,0.678912,0.661504 +64,0.0001,0.534528,0.709632,0.96256,0.80896 +128,0.0001,0.600064,0.851968,0.7936,0.667648 +256,0.0003,0.596992,0.785408,1.0711,0.729088 +512,0.0004,0.65536,0.755712,0.674816,0.750592 +1024,0.0005,0.621568,0.812032,0.792576,0.683008 +2048,0.0023,0.726016,0.789504,0.733184,0.723968 +4096,0.0021,0.57344,0.827392,1.00352,1.21037 +8192,0.0035,0.681984,0.987136,0.826368,1.10182 +16384,0.0083,0.776192,1.42438,0.973824,0.89088 +32768,0.0354,1.13152,1.28102,1.0281,1.78074 +65536,0.0371,1.35475,1.72646,1.57798,1.45408 +131072,0.5831,2.36544,2.4576,2.6112,3.00544 +262144,1.1686,5.18042,4.48,4.43494,4.96333 +524288,2.4195,8.26675,7.94829,8.19098,9.32557 +1048576,4.7465,15.2054,14.8972,14.6125,15.3436 +2097152,9.1145,29.1973,28.6976,27.1421,28.4979 +4194304,18.002,58.7571,55.9483,53.0821,54.0621 +8388608,36.7329,114.582,109.871,106.615,105.743 +16777216,82.3489,229.722,219.288,210.67,211.656 +33554432,147.804,466.059,445.961,421.195,421.774 +67108864,294.87,937.008,889.837,854.619,843.672 +16,0.0002,0.55296,0.816128,0.781312,0.7936 +32,0.0001,0.493568,0.80384,0.807936,0.719872 +64,0.0001,0.470016,0.57344,0.612352,0.795648 +128,0.0004,0.531456,0.726016,0.811008,0.705536 +256,0.0004,0.483328,0.78336,0.877568,0.674816 +512,0.0004,0.837632,0.848896,0.876544,0.745472 +1024,0.0005,0.661504,0.795648,0.738304,0.719872 +2048,0.0021,0.55296,0.996352,0.78848,0.776192 +4096,0.0172,0.6912,0.92672,0.837632,0.792576 +8192,0.0038,0.83968,0.937984,0.835584,0.812992 +16384,0.0077,0.960512,1.06496,0.924672,0.902144 +32768,0.0234,1.17043,1.7152,1.10694,1.05165 +65536,0.0381,1.46022,1.67526,1.51347,1.44896 +131072,0.6024,2.33062,2.46579,2.59789,3.05152 +262144,1.2057,4.13901,4.68787,4.30694,5.06061 +524288,2.4086,7.77523,7.95853,7.68512,8.12646 +1048576,4.4373,15.0026,15.2289,13.9172,15.4501 +2097152,9.4526,29.0304,28.3597,27.3183,28.1795 +4194304,19.3615,59.5384,58.2267,55.0482,54.6509 +8388608,37.4548,114.557,110.886,105.808,106.542 +16777216,76.7306,230.48,223.897,210.494,212.603 +33554432,152.951,468.098,438.629,426.979,423.033 +67108864,299.151,938.229,903.461,852.601,847.461 +16,0.0001,0.54272,0.82944,1.03322,0.7424 +32,0.0003,0.452608,0.715776,1.31174,0.768 +64,0.0001,0.470016,0.734208,0.859136,0.751616 +128,0.0002,0.47104,0.78848,0.718848,0.751616 +256,0.0004,0.493568,0.80384,0.760832,0.729088 +512,0.0007,0.502784,1.24006,0.811008,0.779264 +1024,0.001,0.663552,0.899072,0.744448,0.728064 +2048,0.0025,0.545792,1.28614,0.769024,0.937984 +4096,0.0041,0.627712,0.932864,0.823296,0.761856 +8192,0.0037,0.746496,0.894976,0.832512,0.850944 +16384,0.0623,0.740352,1.10797,0.966656,0.950272 +32768,0.0184,0.944128,1.30867,1.11718,1.07008 +65536,0.0377,1.33939,1.68243,1.47251,1.51757 +131072,0.6018,2.40435,2.83034,2.55078,3.05869 +262144,1.1678,4.92646,4.06938,4.38886,5.4487 +524288,2.6945,8.00256,8.05786,7.87354,8.39475 +1048576,4.6868,14.7528,15.1839,14.3053,15.1603 +2097152,8.874,29.055,29.4113,27.7064,28.7324 +4194304,18.12,57.9461,55.68,54.2894,53.5214 +8388608,36.1023,114.279,110.011,105.933,105.492 +16777216,74.6842,229.398,221.279,211.064,210.485 +33554432,147.59,466.033,447.97,426.309,423.212 +67108864,291.596,938.081,883.195,851.081,843.905 +16,0.0001,0.718848,0.738304,0.781312,0.76288 +32,0.0002,0.44544,0.693248,0.881664,0.729088 +64,0.0003,0.68608,0.804864,0.813056,0.785408 +128,0.0004,0.479232,0.789504,0.72704,0.772096 +256,0.0003,0.49152,1.35885,0.632832,0.620544 +512,0.0006,0.592896,0.852992,0.587776,0.59904 +1024,0.0005,0.627712,0.643072,0.815104,0.534528 +2048,0.0199,0.540672,0.695296,0.630784,0.647168 +4096,0.0021,0.746496,0.719872,0.637952,0.68096 +8192,0.0042,0.674816,0.789504,0.685056,0.744448 +16384,0.0083,0.75776,0.93696,0.782336,0.81408 +32768,0.0185,0.969728,1.1561,0.978944,1.01478 +65536,0.036,1.3824,2.16781,1.37114,1.8432 +131072,0.5826,2.44019,2.43507,3.01056,2.7863 +262144,1.1692,4.28851,3.97517,4.42368,5.19373 +524288,3.0459,8.09165,7.5776,7.46394,7.6329 +1048576,4.4373,16.5089,14.8644,14.7497,14.8808 +2097152,9.1971,28.8543,28.0883,27.8938,27.3162 +4194304,19.8675,58.7131,57.7188,53.3627,54.6417 +8388608,37.6496,113.7,111.117,105.767,106.25 +16777216,78.541,230.871,225.512,214.112,210.689 +33554432,153.367,466.665,438.816,424.103,422.9 +67108864,293.694,938.039,901.307,849.458,845.508 +16,0.0001,0.677888,0.794624,0.715776,0.68608 +32,0.0002,0.586752,0.661504,0.748544,0.761856 +64,0.0003,0.472064,0.816128,0.930816,0.734208 +128,0.0003,0.526336,0.607232,0.572416,0.59904 +256,0.0003,0.566272,0.621568,0.651264,0.869376 +512,0.0006,0.647168,0.630784,0.579584,0.602112 +1024,0.0005,0.580608,0.647168,0.594944,0.543744 +2048,0.0009,0.54272,0.684032,0.70656,0.61952 +4096,0.0021,0.571392,0.72704,0.666624,0.684032 +8192,0.0037,0.644096,0.76288,0.678912,0.646144 +16384,0.0112,0.750592,0.945152,0.928768,0.761856 +32768,0.0335,0.949248,1.13869,1.31891,1.01478 +65536,0.037,1.3568,1.57389,1.62304,1.34246 +131072,0.5858,2.1801,2.45146,2.54464,2.98598 +262144,1.2798,4.2199,4.0745,4.44518,4.95821 +524288,2.3421,7.8848,7.51309,7.61446,8.07834 +1048576,5.8968,15.8874,14.38,14.6852,14.72 +2097152,9.1105,29.1369,28.9229,28.1641,27.4586 +4194304,19.3819,58.1427,56.0609,53.3002,53.1712 +8388608,37.5773,115.378,110.605,106.94,105.42 +16777216,78.0202,231.331,223.123,211.929,212.876 +33554432,148.678,466.645,445.791,423.492,423.324 +67108864,298.257,941.853,887.939,850.899,842.926 +16,0.0001,0.618496,0.912384,0.930816,0.736256 +32,0.0001,0.468992,0.689152,0.77824,0.720896 +64,0.0003,0.466944,0.851968,0.539648,0.821248 +128,0.0002,0.510976,0.700416,0.78336,0.797696 +256,0.0003,0.58368,0.801792,0.713728,0.7424 +512,0.0006,0.714752,0.807936,0.64,0.601088 +1024,0.0004,0.822272,0.713728,0.652288,0.600064 +2048,0.0012,0.546784,0.7424,0.699392,0.616448 +4096,0.0021,0.569344,0.790528,0.707584,1.20422 +8192,0.005,0.661504,0.864256,0.695296,0.731136 +16384,0.0079,1.21344,0.929792,0.869376,1.00045 +32768,0.0179,1.00966,1.19194,0.987136,1.06598 +65536,0.038,1.42438,1.55955,1.48582,1.39878 +131072,0.5831,2.22618,2.45453,2.54054,2.94707 +262144,1.1974,4.12058,4.00384,4.12058,4.51277 +524288,2.8831,8.05376,8.20941,7.77728,8.22682 +1048576,4.9485,15.0876,14.8797,14.7425,14.9238 +2097152,9.5396,29.0836,28.884,27.0756,27.4678 +4194304,17.8976,58.4069,56.8842,53.5327,54.2321 +8388608,36.2493,114.436,110.638,105.798,105.667 +16777216,75.5289,230.587,224.686,212.092,208.905 +33554432,156.543,465.56,439.208,424.537,422.637 +67108864,305.373,938.007,904.225,852.177,841.772 +16,0.0001,0.67584,0.746496,0.729088,0.73216 +32,0.0002,0.487424,0.857088,0.684032,0.713728 +64,0.0001,0.881664,0.826368,0.734208,0.692224 +128,0.0001,0.601088,0.913408,0.81408,0.769024 +256,0.0004,0.876544,0.768,0.780288,0.780288 +512,0.0005,0.50176,1.2288,0.703488,0.733184 +1024,0.0005,0.521216,1.11002,0.69632,0.779264 +2048,0.0024,0.546816,0.98816,0.789504,0.796672 +4096,0.004,0.571392,1.09363,0.787456,0.823296 +8192,0.0036,0.625664,0.958464,0.724992,0.644096 +16384,0.0086,0.7424,1.00147,0.852992,0.813056 +32768,0.0179,0.955392,1.23085,1.0537,1.2288 +65536,0.037,1.43974,1.64557,1.43258,1.3865 +131072,0.5827,2.71565,2.4535,2.59379,3.30138 +262144,1.1691,4.21274,4.11853,4.1513,5.2695 +524288,2.4072,7.48237,7.68717,7.47725,8.43878 +1048576,4.5561,15.018,15.743,15.2545,14.935 +2097152,9.1277,29.3427,29.5414,26.7919,28.6106 +4194304,17.9118,58.9158,55.6749,53.4098,54.2249 +8388608,42.9538,114.948,109.929,108.959,107.05 +16777216,75.982,230.782,218.737,210.561,211.082 +33554432,149.63,463.791,445.29,426.149,420.779 +67108864,295.726,940.275,887.567,853.342,844.875 +16,0.0001,0.560128,0.904192,0.879616,0.841728 +32,0.0002,0.461824,0.811008,0.770048,0.73728 +64,0.0001,0.524288,0.758784,0.78848,0.766976 +128,0.0002,0.514048,0.761856,0.743424,0.79872 +256,0.0004,0.775168,0.897024,0.748544,0.724992 +512,0.0004,0.494592,0.815104,0.73728,0.992256 +1024,0.0013,0.518144,0.823296,0.779264,0.795648 +2048,0.0025,0.544768,0.907264,0.835584,0.813056 +4096,0.0047,0.851968,1.1264,0.754688,0.770048 +8192,0.0037,0.794624,1.03936,0.789504,0.946176 +16384,0.0082,0.884736,1.07213,0.956416,0.974848 +32768,0.0181,1.46637,1.31174,1.2032,1.11206 +65536,0.0392,1.43667,1.75718,1.46534,1.48582 +131072,0.5829,2.20877,2.51699,2.48525,3.05664 +262144,1.2064,4.27725,4.11136,4.29568,5.09952 +524288,2.3394,8.49306,8.12851,7.82643,8.38246 +1048576,4.7742,14.7968,14.462,14.7077,15.7102 +2097152,9.0019,29.0386,28.8911,27.4227,27.7002 +4194304,18.8786,57.7915,56.8381,54.1317,54.3928 +8388608,40.707,115.2,110.837,106.351,105.486 +16777216,74.549,230.114,225.981,211.192,209.921 +33554432,149.27,469.055,439.741,429.005,423.468 +67108864,295.857,996.828,901.037,851.367,838.663 +16,0.0001,0.519168,0.886784,0.836608,0.707584 +32,0.0001,0.449536,0.76288,0.724992,0.70144 +64,0.0003,0.608256,0.72192,0.73216,0.733184 +128,0.0002,0.925696,0.815104,0.764928,0.712704 +256,0.0004,0.544768,0.80384,0.761856,0.746496 +512,0.0006,0.697344,0.789504,0.761856,0.764928 +1024,0.0011,0.628736,0.69632,0.586752,0.608256 +2048,0.0011,0.550912,0.726016,0.662528,0.567296 +4096,0.0029,0.557056,0.797696,0.7168,0.649216 +8192,0.0034,0.65024,0.864256,0.744448,0.70144 +16384,0.0077,0.789504,0.934912,0.78336,0.80896 +32768,0.0676,0.986112,1.27386,1.16838,1.1049 +65536,0.0391,1.42131,1.72442,2.49344,1.53395 +131072,0.6003,2.2057,2.5385,2.70438,3.04538 +262144,1.1684,4.25882,4.11341,4.38477,4.76467 +524288,2.342,7.94522,8.0169,7.5561,8.13568 +1048576,4.9249,14.4896,14.9606,14.2725,14.5613 +2097152,9.3016,29.5086,28.7089,26.5882,27.5558 +4194304,19.8558,56.8883,55.1332,53.9392,53.1159 +8388608,43.1209,115.287,109.456,106.373,105.554 +16777216,79.9105,231.753,217.972,209.755,211.359 +33554432,145.107,464.672,445.14,423.515,421.866 +67108864,324.681,937.106,881.882,1007.71,843.979 +16,0.0002,0.498688,0.7424,0.81408,0.647168 +32,0.0003,0.488448,0.77824,0.758784,0.780288 +64,0.0003,0.475136,0.777216,0.648192,0.632832 +128,0.0004,0.520192,1.02298,0.673792,0.623616 +256,0.0003,0.53248,0.602112,0.66048,0.625664 +512,0.0005,0.538624,0.635904,0.65024,0.595968 +1024,0.0005,0.66048,0.6912,0.575488,0.57344 +2048,0.001,0.546816,0.770048,0.620544,0.64512 +4096,0.0023,0.57856,0.730112,0.651264,0.672768 +8192,0.0037,0.663552,0.76288,0.695296,1.12845 +16384,0.0078,1.11002,0.950272,0.768,0.828416 +32768,0.0406,1.07213,1.17043,0.978944,1.03014 +65536,0.0364,1.42029,1.55238,1.62202,1.4121 +131072,0.5852,2.82931,2.87539,2.54771,2.9655 +262144,1.1728,4.20557,4.78618,4.33357,4.51789 +524288,2.4633,7.80698,8.31898,7.4199,8.22067 +1048576,4.4388,14.7958,15.0682,14.764,15.445 +2097152,10.317,30.1906,28.1989,27.2364,28.8133 +4194304,18.8086,57.726,57.2385,53.7795,53.5511 +8388608,37.9598,114.45,111.378,104.693,104.954 +16777216,75.4927,229.887,225.017,212.53,211.301 +33554432,150.189,463.845,436.341,425.824,422.613 +67108864,301.598,947.16,890.599,848.938,843.281 +16,0.0001,0.463872,0.690176,0.733184,0.659456 +32,0.0001,0.539648,0.70144,0.894976,0.861184 +64,0.0002,0.648192,0.75776,0.930816,0.852992 +128,0.0001,0.633856,1.34963,0.739328,0.842752 +256,0.0003,0.62976,0.815104,0.863232,0.81408 +512,0.0006,0.55808,0.867328,0.705536,0.82944 +1024,0.0005,0.60416,0.854016,0.88064,0.838656 +2048,0.0009,0.690176,0.954368,0.88064,0.867328 +4096,0.0022,0.633856,0.90624,0.96768,0.75264 +8192,0.0215,0.744448,0.971776,0.991232,0.859136 +16384,0.0279,0.86016,1.16429,0.90112,1.0496 +32768,0.0176,1.06189,1.34042,1.29229,1.24314 +65536,0.04,1.49504,1.75206,1.67731,1.48685 +131072,0.5996,2.29683,2.60915,2.68083,3.11091 +262144,1.2012,4.2455,4.84557,4.40525,4.92339 +524288,2.4083,8.08448,8.0599,8.22579,8.78797 +1048576,4.7138,14.5981,14.6289,15.5689,15.2013 +2097152,9.365,29.1062,28.5327,26.9476,27.6603 +4194304,19.8958,58.6076,56.2391,53.2603,55.4783 +8388608,42.0111,115.852,109.74,106.458,105.198 +16777216,73.5197,230.553,220.53,210.046,211.148 +33554432,147.192,466.23,447.634,426.286,421.662 +67108864,296.699,940.224,886.928,851.122,844.828 +16,0.0001,0.484352,0.702464,0.8192,1.44077 +32,0.0001,0.575488,0.611328,0.592896,0.607232 +64,0.0002,0.499712,0.891904,0.65536,0.761856 +128,0.0002,0.480256,0.784384,0.782336,0.763904 +256,0.0004,0.494592,0.758784,0.71168,0.748544 +512,0.0008,0.497664,0.792576,0.75776,0.736256 +1024,0.0005,0.521216,0.785408,0.700416,0.78848 +2048,0.0024,0.541696,0.898048,0.797696,0.748544 +4096,0.0043,0.632832,0.876544,0.769024,1.05882 +8192,0.0034,0.626688,0.971776,0.838656,1.26259 +16384,0.0084,0.748544,1.11411,0.9984,0.960512 +32768,0.0173,1.18374,1.27693,1.14176,1.2247 +65536,0.0381,1.34758,1.71418,1.50016,1.49709 +131072,0.7621,2.26406,2.52826,3.26554,3.39251 +262144,1.2014,4.27622,4.5271,4.36122,4.89574 +524288,2.3419,7.64006,7.50797,7.81005,8.01792 +1048576,4.4374,15.4235,15.5412,14.3432,15.5924 +2097152,9.1167,30.0083,29.1471,27.1237,27.2701 +4194304,19.985,57.3757,56.8812,53.6044,53.4641 +8388608,37.8831,115.145,110.927,107.749,107.441 +16777216,81.4748,228.875,222.645,211.486,211.552 +33554432,148.06,465.866,437.498,424.715,425.001 +67108864,292.174,943.01,899.677,852.219,842.868 +16,0.0001,0.6144,0.809984,0.964608,0.862208 +32,0.0001,0.497664,0.695296,0.774144,0.755712 +64,0.0002,0.63488,0.669696,0.748544,0.710656 +128,0.0001,0.508928,0.785408,0.694272,0.720896 +256,0.0003,0.493568,0.789504,0.70656,0.78336 +512,0.0005,0.500736,0.679936,0.728064,0.805888 +1024,0.0007,0.519168,0.797696,0.801792,0.748544 +2048,0.0011,0.5376,0.934912,0.738304,0.715776 +4096,0.0041,0.60416,0.920576,0.790528,0.785408 +8192,0.004,0.704512,0.986112,0.946176,0.799744 +16384,0.0083,0.741376,1.08646,1.00454,0.932864 +32768,0.0422,0.95232,1.31482,0.989184,0.948224 +65536,0.0385,1.33837,1.57798,1.792,1.36698 +131072,0.8054,2.16064,2.7904,2.5385,3.1017 +262144,1.1685,4.64794,4.35814,4.20557,4.5527 +524288,2.4079,7.63085,7.39328,7.70458,9.01837 +1048576,5.1883,15.318,14.9606,14.849,16.0236 +2097152,10.0605,29.9622,29.1287,28.1201,28.3566 +4194304,20.854,58.6977,57.13,54.3724,54.0017 +8388608,37.1531,114.578,110.322,105.772,107.181 +16777216,76.1561,231.204,219.57,210.384,209.986 +33554432,150.594,463.968,449.053,424.301,422.034 +67108864,300.012,938.345,886.4,853.138,846.553 +16,0.0002,0.65024,0.83456,0.787456,0.746496 +32,0.0002,0.447488,0.70656,0.654336,0.697344 +64,0.0002,0.63488,0.756736,0.67072,0.777216 +128,0.0004,0.718848,0.791552,0.785408,0.748544 +256,0.0006,0.544768,0.73728,0.863232,0.723968 +512,0.0005,0.521216,1.19296,0.776192,0.799744 +1024,0.0147,0.530432,0.835584,0.750592,0.750592 +2048,0.0024,0.662528,0.961536,0.84992,0.724992 +4096,0.004,0.567296,0.720896,0.708608,0.684032 +8192,0.0034,0.745472,0.8192,0.700416,0.811008 +16384,0.0077,0.7424,0.961536,0.799744,0.831488 +32768,0.0171,0.991232,1.22778,0.98304,1.00864 +65536,0.0387,1.83091,1.63123,1.42848,1.50221 +131072,0.6017,3.18259,2.40435,2.67674,2.81702 +262144,1.2016,4.65613,3.9936,4.74931,4.97254 +524288,2.4059,7.94317,8.28211,7.43117,7.83462 +1048576,4.6836,15.9826,15.1081,14.5193,14.466 +2097152,8.8726,29.3089,28.4682,27.7504,28.8082 +4194304,18.1492,57.6819,56.7869,53.5388,54.2915 +8388608,39.5689,114.953,110.744,106.679,107.335 +16777216,74.5481,230.769,225.945,212.011,210.039 +33554432,148.36,463.925,436.177,426.064,421.414 +67108864,301.835,939.696,902.659,853.857,845.853 +16,0.0002,0.519168,0.835584,0.800768,1.04346 +32,0.0002,0.484352,0.777216,0.745472,0.83456 +64,0.0003,0.463872,0.674816,0.726016,0.658432 +128,0.0002,0.504832,0.78336,0.81408,0.754688 +256,0.0002,0.49152,0.807936,0.735232,0.723968 +512,0.0006,0.499712,0.821248,0.881664,0.765952 +1024,0.0004,0.596992,0.787456,0.750592,0.779264 +2048,0.0021,0.75776,0.984064,0.755712,0.758784 +4096,0.0039,0.857088,0.995328,0.784384,0.763904 +8192,0.0033,0.620544,1.12742,0.867328,0.86016 +16384,0.0086,0.74752,1.12947,0.924672,1.24518 +32768,0.0177,0.943104,1.25542,1.08851,1.0752 +65536,0.0377,1.81965,1.70189,1.47456,1.44896 +131072,0.5993,2.22003,2.47398,2.59891,3.04538 +262144,1.1741,4.15846,4.09805,4.29056,6.42048 +524288,2.3756,7.63494,7.80493,8.19712,8.31795 +1048576,5.3231,14.7825,15.2279,14.9955,14.6442 +2097152,9.4501,29.2342,29.3857,26.7479,27.7944 +4194304,18.6451,58.6609,55.5561,53.2552,55.4639 +8388608,42.2186,114.636,109.763,106.75,106.905 +16777216,79.1185,229.978,220.147,210.241,210.45 +33554432,147.984,465.231,445.804,423.779,418.435 +67108864,301.342,940.004,884.397,852.948,845.069 +16,0,0.6912,0.677888,0.79872,0.71168 +32,0.0002,0.671744,0.75264,0.766976,0.76288 +64,0.0001,0.47104,0.761856,0.719872,0.73728 +128,0.0002,0.480256,0.763904,0.69632,0.678912 +256,0.0004,0.484352,0.78848,0.751616,0.769024 +512,0.0005,0.630784,0.816128,0.815104,0.764928 +1024,0.0012,0.59392,0.786432,0.779264,0.739328 +2048,0.0009,0.662528,0.780288,0.723968,0.766976 +4096,0.0034,0.577536,0.9984,0.763904,0.75264 +8192,0.0039,0.623616,1.31891,0.872448,0.928768 +16384,0.008,0.743424,1.10694,1.02502,0.90112 +32768,0.0324,1.12845,1.25235,1.09363,1.03731 +65536,0.0379,1.42438,1.73466,1.44486,1.52576 +131072,0.5826,2.18112,2.4873,2.92864,3.50618 +262144,1.1698,4.27622,4.05914,4.58138,6.08563 +524288,2.3553,7.97594,7.60013,7.73018,8.09472 +1048576,4.4369,15.4614,15.2402,13.9295,15.0333 +2097152,9.5991,29.4523,28.6597,27.2835,27.8241 +4194304,21.0171,57.4413,56.8463,52.7503,53.5521 +8388608,39.5608,115.67,110.557,106.556,105.046 +16777216,77.4605,230.296,224.865,212.384,212.898 +33554432,152.724,466.552,437.74,424.877,419.618 +67108864,295.506,943.592,899.766,855.277,843.907 +16,0.0001,0.774144,0.913408,0.93696,0.98304 +32,0.0002,0.451584,0.807936,0.697344,0.755712 +64,0.0001,0.564224,0.728064,0.88064,0.741376 +128,0.0002,0.67584,0.764928,0.753664,0.541696 +256,0.0003,0.626688,0.695296,0.709632,0.72192 +512,0.0007,0.562176,0.765952,0.944128,0.731136 +1024,0.0012,0.606208,0.845824,0.769024,0.769024 +2048,0.0022,0.539648,0.8448,0.763904,0.769024 +4096,0.0021,0.574464,0.929792,0.784384,0.676864 +8192,0.0033,1.12742,0.9984,0.873472,0.847872 +16384,0.0094,0.869376,1.08954,1.00352,0.920576 +32768,0.0174,0.946176,1.28922,1.19091,1.09158 +65536,0.0377,1.41926,1.70598,1.49504,1.4807 +131072,0.5828,2.17702,2.48115,2.58253,3.06074 +262144,1.8687,4.44826,4.22707,4.57728,5.03398 +524288,2.3418,7.76602,8.08243,8.25037,8.00768 +1048576,4.6834,15.7563,14.3555,14.5449,14.9678 +2097152,10.5024,29.2649,29.1604,26.6619,28.6679 +4194304,19.6749,58.6086,55.7548,53.3832,53.8358 +8388608,38.5403,114.049,111.922,106.654,106.431 +16777216,80.4846,228.675,219.454,210.189,211.303 +33554432,149.945,465.764,445.181,425.284,421.429 +67108864,294.538,939.978,884.642,850.909,843.468 +16,0.0001,0.764928,0.723968,0.779264,1.44691 +32,0.0002,0.626688,0.943104,0.756736,0.781312 +64,0.0002,0.468992,0.743424,1.36704,0.7168 +128,0.0003,0.518144,0.581632,0.71168,0.703488 +256,0.0003,1.24109,0.541696,0.886784,0.987136 +512,0.0003,0.528384,0.646144,0.580608,0.607232 +1024,0.0004,0.559104,0.663552,0.637952,0.600064 +2048,0.0011,0.892928,0.886784,0.622592,0.627712 +4096,0.0022,0.618496,0.73216,0.648192,0.667648 +8192,0.0037,1.52678,0.801792,0.751616,0.805888 +16384,0.0077,0.766976,1.01786,0.835584,0.804864 +32768,0.019,1.56672,1.57594,0.979968,1.00966 +65536,0.0364,1.41517,2.1719,1.43872,1.40493 +131072,0.5858,2.19238,2.38592,2.39104,3.24096 +262144,1.1746,4.46054,3.9383,4.54451,4.7616 +524288,2.4764,7.80288,7.54176,7.53459,7.91347 +1048576,4.4495,15.2709,15.4163,14.6166,15.06 +2097152,9.2307,29.2065,28.9761,27.1411,27.8723 +4194304,19.298,57.4628,57.0747,54.1092,54.1112 +8388608,41.8463,114.347,110.752,107.39,105.013 +16777216,74.8993,230.299,225.63,212.967,211.9 +33554432,152.039,465.199,436.258,426.411,421.036 +67108864,296.206,939.714,901.416,850.762,846.861 +16,0.0001,0.756736,0.765952,0.751616,0.697344 +32,0.0003,0.453632,0.714752,0.766976,0.68608 +64,0.0002,0.668672,0.649216,0.794624,0.755712 +128,0.0002,0.489472,0.797696,0.694272,0.6912 +256,0.0005,0.4864,0.782336,0.723968,0.765952 +512,0.0003,0.781312,0.75776,0.820224,1.03117 +1024,0.0008,0.521216,0.820224,0.809984,0.78336 +2048,0.0022,0.541696,0.878592,0.758784,0.755712 +4096,0.004,0.580608,0.677888,1.20013,0.807936 +8192,0.0035,0.677888,0.930816,1.08339,0.771072 +16384,0.0081,0.969728,1.08954,1.01786,0.922624 +32768,0.0187,0.945152,1.24109,1.09158,1.51552 +65536,0.0412,1.64557,1.7193,1.46022,1.536 +131072,0.5851,2.26816,2.55283,2.56307,3.09555 +262144,1.1675,4.47488,4.05914,4.31616,5.62586 +524288,2.4225,7.65133,7.87046,7.73734,8.4777 +1048576,4.8077,15.0528,14.5111,15.3078,15.188 +2097152,9.2691,29.4871,28.9669,28.0535,27.7852 +4194304,19.3432,59.3213,56.0947,53.7364,53.9484 +8388608,38.2334,115.287,110.353,106.97,106.822 +16777216,77.5406,230.655,220.119,211.151,212.369 +33554432,149.705,465.208,445.532,425.001,420.715 +67108864,297.443,938.696,886.54,849.966,844.625 +16,0.0001,0.637952,0.659456,0.713728,0.692224 +32,0.0001,0.492544,0.761856,0.728064,0.538592 +64,0.0002,0.666624,0.514048,0.577536,0.540672 +128,0.0001,0.524288,0.621568,0.719872,0.735232 +256,0.0003,0.516096,0.601088,0.631808,0.80384 +512,0.0006,0.544768,0.607232,0.637952,0.602112 +1024,0.0005,0.551936,0.65536,0.592896,0.5376 +2048,0.001,0.538624,0.689152,0.632832,0.585728 +4096,0.0021,1.49811,0.7936,0.748544,0.80896 +8192,0.0035,0.642048,0.934912,0.859136,0.966656 +16384,0.0086,1.01581,1.0025,0.935936,0.886784 +32768,0.0178,1.12026,1.27386,1.11104,1.0281 +65536,0.0378,1.62304,1.68038,1.47354,1.47558 +131072,0.5827,2.24051,2.51494,2.52723,3.07405 +262144,1.1677,4.53734,4.07245,4.39808,5.14765 +524288,2.3416,7.76806,8.15821,7.82541,9.03782 +1048576,4.5098,14.9197,17.4725,14.677,14.6596 +2097152,10.142,29.7585,28.3904,26.8145,28.0054 +4194304,18.9341,58.5697,57.2703,52.7913,53.8542 +8388608,37.5746,114.353,111.764,106.332,104.898 +16777216,76.3817,230.523,225.221,211.789,211.558 +33554432,147.529,466.707,435.249,423.783,421.924 +67108864,292.667,941.041,901.976,853.333,844.874 +16,0.0001,0.523264,0.78336,0.862208,0.748544 +32,0.0001,0.57856,0.723968,0.712704,1.04141 +64,0.0001,0.487424,0.850944,0.816128,0.951296 +128,0.0003,0.478208,0.776192,0.70144,0.746496 +256,0.0003,0.64,0.772096,0.761856,0.677888 +512,0.0004,0.498688,0.785408,0.818176,0.764928 +1024,0.0012,0.526336,0.847872,0.909312,0.781312 +2048,0.0023,0.661504,0.955392,0.89088,0.770048 +4096,0.0038,0.579584,0.790528,0.802816,0.699392 +8192,0.0036,0.62464,1.43155,0.8704,0.806912 +16384,0.019,0.743424,1.1049,0.912384,0.852992 +32768,0.0297,1.0711,1.24416,1.1049,1.0496 +65536,0.037,1.40186,1.94355,1.52986,1.46944 +131072,0.5828,2.21286,2.53645,2.57434,3.05357 +262144,1.1747,4.28954,4.08064,4.66534,6.31194 +524288,2.5711,8.02099,7.87661,7.55302,7.97901 +1048576,4.4374,15.5085,15.2136,14.1015,14.7927 +2097152,9.5578,29.4021,29.2239,27.3388,28.5204 +4194304,19.0459,57.7034,55.7394,52.8568,53.8255 +8388608,38.18,114.931,109.705,104.478,106.444 +16777216,82.1088,231.519,218.612,212.706,211.334 +33554432,147.928,466.761,446.299,425.52,422.915 +67108864,293.423,938.625,884.732,848.197,844.124 +16,0.0002,0.5632,0.792576,0.801792,0.770048 +32,0.0002,0.492544,0.774144,0.908288,0.881664 +64,0.0003,0.57856,0.818176,0.801792,0.765952 +128,0.0003,0.838656,0.818176,0.710656,0.736256 +256,0.0003,1.36294,0.654336,0.753664,0.801792 +512,0.0002,0.503808,0.904192,0.766976,0.733184 +1024,0.0004,0.62976,0.775168,0.69216,0.780288 +2048,0.001,0.540672,0.6912,0.68608,0.664576 +4096,0.0021,1.00045,0.77824,0.70656,1.06701 +8192,0.0035,0.636928,0.868352,0.764928,1.18067 +16384,0.0097,0.908288,1.21651,0.748544,0.769024 +32768,0.0539,0.982016,1.21139,1.04448,1.01683 +65536,0.0436,1.37216,1.63123,1.44691,1.38957 +131072,0.5843,2.19024,2.66035,2.7863,3.1744 +262144,1.2031,4.19942,4.19226,4.40422,6.34061 +524288,2.9775,8.17357,7.41683,7.51104,7.96672 +1048576,5.635,14.7026,14.7784,14.5275,14.9412 +2097152,9.0447,29.2547,29.7964,27.2988,28.7252 +4194304,20.1964,57.5293,57.516,54.017,53.6433 +8388608,41.0299,115.372,111.265,106.065,106.435 +16777216,77.1316,230.311,224.872,211.029,211.564 +33554432,148.399,463.948,430.679,424.934,423.165 +67108864,298.39,942.48,903.962,853.192,846.491 +16,0.0001,0.477184,1.02707,0.799744,0.81408 +32,0.0002,0.452608,0.684032,0.850944,0.668672 +64,0.0002,0.464896,0.787456,1.29843,0.777216 +128,0.0001,0.671744,0.70144,0.72704,0.70656 +256,0.0004,0.482304,0.806912,0.763904,0.817152 +512,0.0006,1.58618,0.744448,0.760832,0.671744 +1024,0.0004,0.524288,1.1776,0.78336,0.777216 +2048,0.0024,0.540672,0.943104,0.930816,0.754688 +4096,0.0041,0.585728,1.02298,0.903168,0.694272 +8192,0.0035,0.656384,0.90624,0.874496,0.83456 +16384,0.023,1.03424,1.13357,0.949248,0.97792 +32768,0.0243,0.944128,1.24518,1.13357,1.25133 +65536,0.0383,1.3353,1.7193,1.47866,1.6384 +131072,0.5827,2.33677,2.5344,2.50163,3.56762 +262144,1.3413,4.48922,4.00589,4.27827,5.06573 +524288,2.3798,8.05171,8.064,8.09677,8.86989 +1048576,4.8855,14.8634,14.8726,14.1967,15.019 +2097152,9.431,28.5768,28.9413,27.2415,27.093 +4194304,21.2717,57.7987,56.3538,53.6136,53.1978 +8388608,39.2815,114.781,111.007,107.017,106.361 +16777216,78.1136,231.512,218.015,212.699,211.178 +33554432,150.568,467.154,446.86,426.553,422.759 +67108864,296.976,938.653,883.746,851.706,847.707 +16,0.0001,0.636928,0.809984,0.835584,0.797696 +32,0.0002,0.903168,0.822272,0.809984,0.789504 +64,0.0003,0.493568,0.86016,0.792576,0.748544 +128,0.0002,0.616448,0.654336,0.823296,0.828416 +256,0.0003,0.585728,1.1305,0.707584,0.749568 +512,0.0005,0.50688,0.884736,0.794624,0.817152 +1024,0.0008,0.540672,0.818176,0.884736,0.565248 +2048,0.0009,0.669696,0.913408,0.755712,0.746496 +4096,0.0043,0.584704,0.963584,0.811008,0.72704 +8192,0.0178,0.722944,0.939008,0.871424,0.934912 +16384,0.0085,0.80384,0.986112,0.979968,0.941056 +32768,0.0212,1.09466,1.29843,1.17146,1.03731 +65536,0.0367,1.6343,1.7111,1.72749,1.46534 +131072,0.6021,2.20979,2.52518,2.75456,3.08838 +262144,1.1676,4.29466,4.03866,4.60902,4.82304 +524288,2.5379,7.7783,7.52947,7.5305,7.84794 +1048576,4.4364,15.4245,15.1235,14.0114,14.5132 +2097152,9.6125,28.9044,27.9665,27.2824,27.6398 +4194304,18.4903,57.4444,56.5012,53.9034,54.1972 +8388608,36.9333,115.036,112.046,109.488,104.924 +16777216,80.4827,230.923,225.016,211.068,210.509 +33554432,148.519,467.679,436.367,424.374,423.629 +67108864,293.823,943.895,902.431,852.576,843.237 +16,0.0001,0.433152,0.772096,0.797696,0.800768 +32,0.0002,0.492544,0.776192,1.2841,0.729088 +64,0.0001,0.67072,0.734208,0.678912,0.681984 +128,0.0002,0.477184,0.724992,0.782336,0.749568 +256,0.0003,0.510976,1.11002,0.728064,0.754688 +512,0.0005,0.72192,0.777216,0.791552,0.754688 +1024,0.0005,0.534528,0.826368,0.734208,0.710656 +2048,0.0011,0.55296,0.954368,0.95744,0.741376 +4096,0.0041,1.28614,0.935936,0.781312,0.760832 +8192,0.0036,0.635904,0.97792,0.828416,0.82432 +16384,0.0075,1.07827,1.07725,0.997376,0.943104 +32768,0.0205,0.943104,1.28512,1.10899,1.05165 +65536,0.0383,1.65376,1.66912,1.55648,1.49299 +131072,0.6676,2.21491,3.17952,2.49344,3.16621 +262144,1.2064,4.28237,4.37965,4.81587,4.92544 +524288,2.342,7.65133,7.59296,7.82336,8.74291 +1048576,4.6223,15.2668,14.5459,14.9709,15.446 +2097152,11.2296,28.798,30.4568,27.3101,26.8861 +4194304,18.3982,57.8181,57.7096,53.3647,53.9167 +8388608,37.0481,115.154,111.926,107.158,104.592 +16777216,80.168,231.698,218.894,211.01,210.259 +33554432,147.878,466.472,446.047,425.835,420.304 +67108864,296.506,936.567,889.12,852.226,849.876 +16,0.0001,0.59392,0.689152,0.927744,0.582656 +32,0.0001,0.559104,0.556032,0.581632,0.595968 +64,0.0001,0.561152,0.57344,0.630784,0.587776 +128,0.0003,0.50784,0.56832,1.04755,0.589824 +256,0.0002,0.485376,0.668672,0.646144,0.679936 +512,0.0003,0.594944,0.630784,0.709632,0.723968 +1024,0.0011,0.637952,0.825344,0.930816,0.97792 +2048,0.001,0.59392,1.04346,0.850944,0.796672 +4096,0.0019,0.64,0.881664,0.785408,0.771072 +8192,0.003,0.695296,0.953344,0.922624,0.779264 +16384,0.007,0.795648,1.07315,1.58208,0.896 +32768,0.0174,1.02605,1.32915,1.4336,1.06496 +65536,0.0659,1.4592,1.79712,1.75002,1.55136 +131072,0.6328,2.5047,2.89382,3.00032,3.328 +262144,1.1734,4.52506,4.07552,4.24653,5.23878 +524288,2.6063,8.17562,7.67795,7.70355,8.74394 +1048576,4.7642,15.1122,14.8992,13.9674,15.2893 +2097152,9.7686,29.4943,27.8446,26.8902,28.1426 +4194304,19.2794,57.9625,56.3732,53.6187,53.8952 +8388608,37.9563,114.082,110.998,105.056,107.222 +16777216,78.2856,230.242,223.198,212.352,210.914 +33554432,149.053,465.878,437.028,424.9,422.653 +67108864,291.605,936.938,901.478,848.84,843.489 +16,0.0001,0.489472,0.62464,0.56832,0.67072 +32,0.0001,0.482304,0.759808,0.769024,0.772096 +64,0.0001,0.846848,0.833536,0.79872,0.700416 +128,0.0002,0.507904,0.817152,0.769024,0.832512 +256,0.0002,0.545792,0.73728,0.733184,0.735232 +512,0.0003,0.493568,0.766976,0.836608,0.772096 +1024,0.0004,0.523264,0.796672,0.794624,0.754688 +2048,0.0009,0.6144,0.8704,0.796672,0.815104 +4096,0.002,0.601088,0.70656,0.815104,0.833536 +8192,0.0031,0.657408,1.02298,0.856064,0.91136 +16384,0.0096,0.82432,1.22982,0.90624,1.00557 +32768,0.0169,0.919552,1.36704,1.0793,1.08749 +65536,0.0419,1.38342,1.72544,1.66605,1.50323 +131072,0.6715,2.28557,2.59379,2.74842,3.2768 +262144,1.1741,4.24755,4.03763,4.54554,4.7401 +524288,2.4102,7.81312,7.48544,7.71174,8.41626 +1048576,5.1171,15.0948,14.4261,14.0872,14.2879 +2097152,10.0457,30.0349,29.5967,27.5005,28.0351 +4194304,18.1646,58.1253,56.3978,53.9873,55.0298 +8388608,37.0732,115.015,110.642,108.399,105.691 +16777216,73.7685,230.461,220.123,210.899,212.27 +33554432,148.417,465.29,444.948,424.333,423.064 +67108864,297.061,940.206,884.609,852.938,845.173 +16,0.0001,0.669696,0.807936,0.754688,0.774144 +32,0.0001,0.48128,0.54272,0.753664,0.772096 +64,0.0001,0.518144,0.892928,0.736256,0.723968 +128,0.0001,0.510976,0.804864,0.73728,0.700416 +256,0.0002,0.502784,0.76288,1.47661,0.756736 +512,0.0002,0.5376,0.781312,0.760832,0.774144 +1024,0.0005,0.764928,0.813056,0.780288,0.750592 +2048,0.001,0.50176,0.790528,0.754688,0.838656 +4096,0.0019,0.533504,1.1264,0.755712,0.843776 +8192,0.0049,0.837632,0.932864,0.91648,0.825344 +16384,0.0109,0.733184,1.08442,1.00557,0.968704 +32768,0.0172,1.53907,1.35373,1.07827,1.11821 +65536,0.0398,1.43462,1.69882,1.70086,1.56774 +131072,0.6549,2.18829,2.49242,2.80371,3.07507 +262144,1.5943,4.2967,4.14618,4.92237,4.85888 +524288,2.6643,8.49613,7.64416,8.84941,8.23603 +1048576,4.4373,15.0682,15.0333,14.9647,15.1153 +2097152,9.3653,29.1287,29.1779,27.4452,28.3064 +4194304,18.4652,59.3449,56.6528,54.1983,53.8798 +8388608,41.0673,115.498,111.63,106.835,106.243 +16777216,79.7054,231.758,223.94,212.889,212.014 +33554432,149.751,467.662,436.765,424.33,421.149 +67108864,296.955,938.266,899.83,850.859,840.75 +16,0,0.601088,0.8704,0.943104,0.800768 +32,0.0001,0.515072,0.923648,0.934912,0.85504 +64,0.0001,0.585728,0.738304,0.884736,0.799744 +128,0.0002,0.468992,0.929792,0.733184,0.804864 +256,0.0002,0.516096,1.06291,0.812032,0.772096 +512,0.0007,0.49152,0.805888,0.770048,0.741376 +1024,0.0005,0.516096,0.828416,1.15507,0.800768 +2048,0.0009,0.631808,0.980992,0.892928,0.80384 +4096,0.002,0.569344,0.84992,0.763904,0.927744 +8192,0.0031,0.69632,0.984064,0.806912,0.831488 +16384,0.0071,0.77824,1.07418,0.979968,0.92672 +32768,0.0396,0.989184,1.3865,1.21344,1.24621 +65536,0.0393,1.38752,1.90976,1.4807,1.64045 +131072,0.5843,2.29069,2.55795,3.69152,3.30854 +262144,1.1701,4.19738,4.11024,4.8681,5.02989 +524288,2.7321,8.47462,7.49158,7.57248,8.04659 +1048576,4.4366,15.1972,14.2705,14.5029,15.3293 +2097152,9.3437,28.9935,29.0017,27.5794,28.7857 +4194304,19.8343,57.2129,56.2125,52.9777,54.6365 +8388608,38.4463,114.547,110.634,105.645,104.271 +16777216,78.2647,230.285,220.266,210.873,212.353 +33554432,148.969,466.108,446.79,423.282,420.857 +67108864,292.218,941.127,887.083,849.861,847.212 +16,0.0001,0.612352,0.785408,0.9472,0.96256 +32,0.0001,0.5632,0.811008,0.68608,0.821248 +64,0.0001,0.47104,0.816128,0.786432,0.748544 +128,0.0001,0.468992,0.800768,0.72192,0.708608 +256,0.0001,0.733184,0.80896,0.841728,0.763904 +512,0.0006,0.46592,0.897024,0.776192,0.659456 +1024,0.0004,0.77824,0.766976,0.838656,1.36397 +2048,0.001,0.64512,0.76288,0.755712,0.734208 +4096,0.002,0.586752,0.859136,1.18477,0.873472 +8192,0.0031,0.579584,1.01274,0.859136,0.902144 +16384,0.0117,0.886784,1.08134,1.00352,0.928768 +32768,0.0166,0.982016,1.28307,1.08442,1.07213 +65536,0.0381,1.31994,1.68448,1.51962,1.47661 +131072,0.6025,2.24256,2.48934,2.83955,3.02182 +262144,1.1694,4.22605,4.04685,4.32845,5.0432 +524288,2.546,8.27085,8.064,7.9401,8.56986 +1048576,4.438,14.9647,15.0446,14.807,15.4307 +2097152,9.1659,30.0605,29.2188,28.0812,28.0617 +4194304,18.6093,58.626,56.4388,54.1245,53.4948 +8388608,41.2207,114.961,111.4,106.607,105.547 +16777216,72.9407,229.65,224.965,211.014,210.54 +33554432,148.378,464.561,437.776,424.753,422.235 +67108864,295.554,940.171,903.778,852.748,842.945 +16,0.0001,0.446464,0.88576,1.03629,1.0711 +32,0.0003,0.53248,0.815104,0.672768,1.15814 +64,0.0001,0.601088,0.777216,0.852992,0.811008 +128,0.0001,0.493568,0.821248,0.813056,0.77312 +256,0.0001,0.512,0.755712,1.33222,0.712704 +512,0.0002,0.679936,0.78336,0.781312,1.3056 +1024,0.0004,0.485376,1.31584,0.780288,0.766976 +2048,0.001,0.548864,0.970752,0.797696,0.504832 +4096,0.003,0.768,0.847872,0.878592,0.776192 +8192,0.0033,0.616448,0.903168,1.01478,0.909312 +16384,0.0071,0.879616,1.07008,0.982016,1.05574 +32768,0.017,1.41926,1.26771,1.04755,1.96915 +65536,0.0398,1.42029,1.69882,1.50323,1.65376 +131072,0.5862,2.24461,2.51187,2.60608,3.06688 +262144,1.1885,4.36941,4.03149,4.4288,5.50707 +524288,2.4793,8.22989,7.74656,7.89709,8.09472 +1048576,4.4363,15.2975,14.6012,14.932,15.401 +2097152,10.0621,29.3417,28.9823,28.2604,27.2855 +4194304,18.5405,58.4581,56.0435,52.9316,54.0559 +8388608,39.4983,113.896,110.584,107.192,106.353 +16777216,74.1475,229.769,221.584,210.998,210.633 +33554432,158.19,465.352,447.854,430.177,424.513 +67108864,295.943,938.127,886.911,850.595,846.565 +16,0.0001,0.602112,1.23392,0.825344,0.85504 +32,0.0001,0.489472,0.78848,0.694272,0.672768 +64,0.0001,0.494592,0.791552,0.771072,0.730112 +128,0.0002,0.702464,0.730112,0.751616,0.692224 +256,0.0002,0.6144,0.823296,0.761856,0.817152 +512,0.0003,0.516096,0.759808,0.797696,0.740352 +1024,0.0004,0.600064,0.821248,0.982016,0.771072 +2048,0.001,0.753664,0.857088,0.708608,0.677888 +4096,0.0019,0.622592,0.871424,0.763904,0.786432 +8192,0.0031,0.674816,0.959488,0.850944,0.740352 +16384,0.0094,0.9472,1.16634,0.908288,0.9728 +32768,0.0162,1.19296,1.26669,1.08544,1.28922 +65536,0.0379,1.32096,1.73056,1.64147,1.51757 +131072,0.6013,2.33472,2.47603,2.83443,3.28806 +262144,1.2076,4.48512,4.05606,4.51174,4.736 +524288,2.8542,8.38963,8.23706,7.67078,8.20634 +1048576,4.4372,15.573,14.8244,15.2955,14.4589 +2097152,9.0995,29.9725,28.2122,26.7121,28.0955 +4194304,18.1453,57.9359,56.4756,53.7364,53.9126 +8388608,36.3008,113.907,113.686,105.76,106.527 +16777216,80.5818,230.284,224.504,211.074,212.746 +33554432,149.09,466.014,436.551,424.591,420.889 +67108864,302.32,937.05,899.554,850.876,845.948 +16,0.0001,0.534528,0.88576,0.88064,1.42643 +32,0.0001,1.21139,0.613376,0.784384,0.693248 +64,0.0001,0.489472,0.90112,0.851968,0.78848 +128,0.0002,0.65024,0.761856,0.693248,0.677888 +256,0.0002,0.545792,0.82944,2.02547,0.733184 +512,0.0003,0.698368,0.805888,0.584704,0.74752 +1024,0.0005,0.643072,0.821248,0.80896,1.152 +2048,0.001,0.871424,0.745472,0.78336,0.912384 +4096,0.002,0.644096,1.07213,0.770048,1.36704 +8192,0.0033,0.647168,0.932864,0.764928,0.915456 +16384,0.0071,0.774144,1.08032,0.955392,0.922624 +32768,0.0171,1.06701,1.2585,1.16429,1.2073 +65536,0.0399,1.54112,1.78995,1.50528,1.49504 +131072,0.5845,2.82931,2.50778,2.82112,3.19898 +262144,1.1694,4.49843,4.03763,4.37146,4.87731 +524288,3.0195,8.20838,8.00358,7.65645,9.6727 +1048576,4.6507,14.804,14.9422,15.317,15.486 +2097152,9.0758,29.7656,28.8891,27.3142,28.1446 +4194304,19.5385,57.1105,56.6641,53.1354,54.1266 +8388608,39.1712,113.699,111.472,105.574,104.891 +16777216,79.2736,231.2,219.638,211.338,212.551 +33554432,157.941,464.931,450.356,426.777,422.109 +67108864,295.956,940.006,888.464,853.17,848.738 +16,0.0001,0.695296,0.900096,0.817152,0.796672 +32,0.0001,0.48128,0.702464,0.76288,0.739328 +64,0.0001,0.531456,0.80896,0.805888,0.723968 +128,0.0002,0.760832,0.77312,0.719872,0.760832 +256,0.0002,0.859136,0.720896,0.694272,0.816128 +512,0.0002,0.487424,0.818176,0.718848,0.8192 +1024,0.0004,0.492544,0.90112,0.741376,0.791552 +2048,0.0009,0.544768,1.14278,0.733184,0.836608 +4096,0.002,0.647168,0.985088,1.1264,0.77312 +8192,0.0032,0.577536,0.914432,0.861184,0.899072 +16384,0.0075,0.913408,1.0967,1.16941,1.09261 +32768,0.0165,0.961536,1.26464,1.26054,1.1561 +65536,0.0375,1.664,1.69062,1.82886,1.59744 +131072,0.7379,2.24973,2.94195,2.4873,3.34438 +262144,1.2413,4.2281,4.43187,4.46669,4.77594 +524288,2.341,8.24422,7.53869,8.59034,8.23194 +1048576,4.7742,15.2146,14.5971,15.0999,14.1967 +2097152,10.302,29.4574,28.3597,27.2937,27.8886 +4194304,18.0399,58.0321,56.3046,53.3903,54.7717 +8388608,37.7121,113.857,110.998,106.443,105.772 +16777216,78.698,230.323,224.458,211.51,211.984 +33554432,148.453,466.492,435.137,423.814,422.741 +67108864,290.26,941.881,903.776,848.881,843.095 +16,0,0.579584,0.705536,0.769024,0.784384 +32,0.0001,0.81408,0.781312,0.925696,0.951296 +64,0.0001,0.616448,0.772096,0.873472,0.897024 +128,0.0001,0.73728,0.702464,0.741376,0.780288 +256,0.0002,0.53248,0.625664,0.743424,0.907264 +512,0.0003,0.52224,1.0967,0.782336,0.760832 +1024,0.0004,0.544768,0.827392,0.758784,0.769024 +2048,0.0011,0.777216,1.21446,1.03117,0.971776 +4096,0.0019,0.980992,0.874496,0.669696,0.883712 +8192,0.0054,0.584704,0.90624,0.789504,0.900096 +16384,0.0075,0.789504,0.941056,0.837632,0.892928 +32768,0.0167,1.21344,1.28922,1.39469,1.26054 +65536,0.0627,1.40083,1.69882,1.55443,1.52064 +131072,0.7461,2.71462,2.58458,2.76787,3.14266 +262144,1.1726,4.42778,4.07142,4.7831,4.69811 +524288,2.3538,7.80698,7.48339,7.57965,8.06502 +1048576,4.5378,15.361,14.4497,13.993,15.361 +2097152,8.877,29.1686,28.8461,27.646,27.8938 +4194304,20.1099,57.8273,55.5848,53.2541,53.3248 +8388608,41.2731,114.365,110.663,106.758,106.868 +16777216,80.126,232.1,218.976,212.236,210.917 +33554432,148.393,469.025,448.423,426.067,422.347 +67108864,292.169,948.478,884.088,848.843,843.664 +16,0.0001,0.65536,0.920576,0.856064,0.754688 +32,0.0001,0.550912,1.58106,0.781312,0.756736 +64,0.0001,0.459776,0.815104,0.823296,0.761856 +128,0.0001,0.520192,0.851968,1.0967,0.73728 +256,0.0002,0.507904,0.828416,0.6912,0.763904 +512,0.0003,0.530432,0.796672,0.759808,0.75776 +1024,0.0004,0.627712,0.859136,0.647168,1.40595 +2048,0.001,0.5376,0.990208,0.648192,0.62976 +4096,0.002,0.580608,0.796672,1.2247,1.01171 +8192,0.0033,0.641024,0.883712,0.743424,0.69632 +16384,0.0072,0.806912,1.15507,0.841728,0.805888 +32768,0.0177,1.00659,1.22573,1.03629,1.00864 +65536,0.0662,1.42643,2.01216,1.4295,1.39162 +131072,0.5851,2.54566,2.45043,2.80064,2.79654 +262144,1.4132,4.51174,4.06323,4.43392,5.2695 +524288,2.6569,8.26061,7.62163,7.91859,8.1623 +1048576,4.4373,15.5955,15.0876,14.3432,14.5725 +2097152,9.2857,29.823,28.6198,27.4371,27.9347 +4194304,19.3217,57.8693,57.0972,53.5296,54.6109 +8388608,39.7428,115.983,111.966,104.876,106.463 +16777216,78.1408,231.41,225.711,210.876,211.693 +33554432,148.739,465.335,435.449,424.751,422.422 +67108864,300.151,938.019,904.206,852.013,848.836 +16,0,0.671744,0.836608,0.7168,0.898048 +32,0.0002,0.571392,0.848896,0.787456,0.811008 +64,0.0001,0.500736,1.43053,0.753664,0.707584 +128,0.0001,0.495616,0.782336,0.750592,0.768 +256,0.0001,0.502784,0.830464,0.912384,0.729088 +512,0.0003,0.514048,0.79872,0.78848,0.790528 +1024,0.0005,0.559104,0.805888,0.766976,0.668672 +2048,0.001,1.152,0.862208,0.679936,0.579584 +4096,0.0025,0.600064,0.83456,0.7168,0.678912 +8192,0.0032,1.30662,0.862208,0.832512,0.689152 +16384,0.0069,0.750592,1.00659,0.838656,0.893952 +32768,0.0159,0.974848,1.22368,1.03936,1.25952 +65536,0.0378,1.41926,1.88416,1.44691,1.59437 +131072,0.6023,2.22003,2.42893,3.10067,2.80576 +262144,1.1702,4.17485,3.89837,4.8128,4.8937 +524288,2.353,7.72096,7.79674,8.12851,8.42854 +1048576,4.5661,15.0159,14.3811,15.0282,14.378 +2097152,9.1036,29.7943,29.3417,27.1493,28.0207 +4194304,18.9246,57.7075,56.1848,54.0324,54.6324 +8388608,39.6615,115.554,109.91,105.214,105.616 +16777216,73.1945,231.709,219.302,211.474,211.188 +33554432,147.49,466.05,448.623,428.278,422.11 +67108864,292.665,942.353,887.433,851.53,843.076 +16,0.0001,0.458752,0.724992,0.796672,0.743424 +32,0.0001,0.442368,0.723968,0.963584,0.746496 +64,0.0004,0.584704,0.73216,0.884736,0.790528 +128,0.0001,0.498688,0.618496,0.730112,0.591872 +256,0.0002,0.516096,0.65024,0.63488,1.1305 +512,0.0003,0.51712,0.616448,0.575488,0.707584 +1024,0.0007,0.539648,0.70144,0.641024,0.59904 +2048,0.0009,0.559104,0.877568,0.676864,0.617472 +4096,0.0231,0.59392,0.70144,0.866304,0.687104 +8192,0.0033,0.638976,0.872448,1.2585,0.722944 +16384,0.0087,0.825344,1.01888,0.98816,0.813056 +32768,0.0164,1.07008,1.15814,0.991232,1.00864 +65536,0.0383,1.41824,1.62304,1.43974,1.39162 +131072,0.5854,2.26509,2.43507,2.52109,2.94195 +262144,1.6547,4.19226,3.99258,4.57523,4.79846 +524288,2.3408,7.88378,7.52333,7.53357,8.09472 +1048576,4.4367,16.0154,14.977,14.3964,15.189 +2097152,9.0455,29.8619,28.073,28.4529,28.1088 +4194304,18.1364,59.1329,56.5207,53.6883,54.0047 +8388608,39.2407,115.3,112.511,106.417,106.044 +16777216,74.6502,231.922,223.292,210.53,211.991 +33554432,147.485,466.606,437.657,424.704,423.736 +67108864,301.349,938.637,903.848,849.633,844.102 +16,0.0001,0.7424,0.709632,0.881664,0.610304 +32,0.0001,0.64,0.807936,0.780288,0.784384 +64,0.0001,0.613376,0.799744,1.88211,0.780288 +128,0.0135,0.533504,0.792576,0.80384,0.730112 +256,0.0001,0.59392,0.657408,0.642048,0.60928 +512,0.0002,0.513024,0.669696,0.63488,0.610304 +1024,0.0005,0.488448,0.77824,0.591872,0.540672 +2048,0.001,0.526336,0.69632,0.68096,0.816128 +4096,0.0022,0.586752,0.715776,0.703488,0.667648 +8192,0.0035,1.14483,1.40493,0.688128,0.703488 +16384,0.007,0.801792,1.1776,0.840704,0.816128 +32768,0.0159,0.982016,1.22163,1.03731,1.14176 +65536,0.039,1.43155,1.8944,1.41107,1.4121 +131072,0.7079,2.25997,2.92762,2.55283,3.20512 +262144,1.2096,4.20352,4.89165,4.6551,4.73395 +524288,2.2193,7.69741,7.39123,7.66259,7.91347 +1048576,4.8828,15.2044,14.5336,14.6319,14.3165 +2097152,10.7993,30.3176,28.8143,27.564,27.7361 +4194304,18.6301,57.726,57.2457,54.7666,53.6074 +8388608,36.3873,115.035,110.638,105.416,104.203 +16777216,76.2573,230.307,219.74,211.235,212.104 +33554432,151.719,465.286,446.66,425.561,420.01 +67108864,297.734,938.825,889.677,851.957,846.675 +16,0.0002,0.570368,0.896,0.82944,0.910336 +32,0.0002,0.490496,0.861184,0.759808,0.826368 +64,0.0001,0.513024,0.822272,0.784384,0.766976 +128,0.0001,0.509952,0.792576,0.887808,0.77824 +256,0.0002,0.479232,0.647168,0.652288,0.598016 +512,0.0002,0.489472,0.673792,0.643072,0.606208 +1024,0.0005,0.549888,0.694272,0.642048,0.607232 +2048,0.0025,0.5632,0.750592,0.692224,0.628736 +4096,0.002,0.590848,0.720896,0.714752,0.648192 +8192,0.0037,0.697344,0.871424,0.751616,0.63488 +16384,0.0071,0.771072,1.21446,0.836608,0.806912 +32768,0.0174,1.02707,1.20934,1.04346,0.994304 +65536,0.0382,1.41312,1.7961,1.43872,1.90054 +131072,0.5852,2.17293,2.43917,3.36896,2.95834 +262144,1.1686,4.34688,4.04173,4.63667,4.71859 +524288,2.447,8.01075,7.73325,7.93395,8.17562 +1048576,4.6816,14.7876,14.935,15.9334,15.3876 +2097152,9.4977,28.8389,28.5798,28.3034,29.054 +4194304,18.5874,58.1038,57.1863,53.8419,53.7682 +8388608,37.2788,113.901,110.505,107.137,105.262 +16777216,76.4809,229.092,222.468,211.592,211.47 +33554432,149.63,464.385,439.313,424.328,421.039 +67108864,290.548,936.335,898.284,852.437,844.803 +16,0.0001,0.446464,0.710656,0.7936,0.770048 +32,0.0001,0.479232,0.749568,1.08237,0.753664 +64,0.0002,0.489472,0.745472,0.765952,0.74752 +128,0.0001,0.831488,0.775168,0.794624,0.961536 +256,0.0002,0.507904,0.662528,0.633856,0.5888 +512,0.0003,0.531456,0.95232,0.61952,0.638976 +1024,0.0004,0.549888,0.64,0.647168,0.612352 +2048,0.001,0.549888,0.739328,1.0752,0.626688 +4096,0.002,0.549888,0.720896,0.70144,0.654336 +8192,0.0031,0.709632,0.932864,0.749568,0.735232 +16384,0.0069,1.29741,1.03014,0.791552,0.817152 +32768,0.0169,1.03936,1.23392,1.03322,1.00659 +65536,0.0395,1.3783,1.55853,1.60563,1.35066 +131072,0.6026,2.21901,2.55181,2.56614,3.02694 +262144,1.4942,4.21171,4.75136,4.18918,4.73395 +524288,2.3546,7.61242,7.40557,8.73984,8.93338 +1048576,4.8937,14.551,15.2105,14.3841,14.7988 +2097152,9.0413,28.9802,28.5768,27.2517,27.9951 +4194304,20.947,57.9501,55.8531,53.7559,52.607 +8388608,41.9568,114.305,110.883,104.252,105.852 +16777216,78.8223,230.727,219.19,209.727,210.535 +33554432,145.64,464.083,433.614,425.512,422.178 +67108864,295.857,939.845,886.56,853.126,844.047 +16,0.0001,0.503808,0.86528,0.781312,0.774144 +32,0.0001,0.657408,0.77824,0.703488,0.729088 +64,0.0001,0.738304,0.759808,0.8704,0.832512 +128,0.0002,0.598016,0.888832,0.782336,0.856064 +256,0.0002,0.54272,0.748544,0.80384,0.929792 +512,0.0002,0.580608,0.80896,0.78336,0.754688 +1024,0.0005,0.546816,0.899072,0.815104,0.777216 +2048,0.001,0.653312,0.858112,0.799744,0.759808 +4096,0.0019,0.787456,0.905216,0.809984,0.800768 +8192,0.0032,0.666624,1.0711,0.83456,0.825344 +16384,0.0069,0.923648,1.12947,0.85504,0.809984 +32768,0.0171,1.02605,1.27078,1.06598,1.02707 +65536,0.0346,1.37216,1.62509,1.4336,1.39366 +131072,0.5852,2.21389,2.39309,2.51597,2.93376 +262144,1.7087,4.04173,4.64077,4.32538,4.79027 +524288,2.3414,7.64006,7.53766,7.53869,8.05683 +1048576,4.5183,15.4962,15.2013,14.6289,14.3596 +2097152,9.722,29.6571,29.7554,27.2968,28.8686 +4194304,18.9315,57.8591,56.66,54.0836,54.3355 +8388608,40.0802,114.726,111.878,106.127,104.955 +16777216,74.1246,230.937,224.771,211.33,211.78 +33554432,147.615,465.448,435.659,423.627,422.67 +67108864,292.751,936.715,903.088,850.366,844.574 +16,0.0001,0.457728,0.707584,0.923648,0.883712 +32,0,0.473088,0.796672,1.07315,0.745472 +64,0.0001,0.607232,0.799744,0.744448,0.75776 +128,0.0004,0.495616,0.77312,0.811008,0.618496 +256,0.0002,0.50176,0.69632,0.83456,0.673792 +512,0.0003,0.46592,0.820224,0.88064,0.797696 +1024,0.0005,0.54784,0.709632,0.687104,0.631808 +2048,0.001,0.564224,0.741376,0.683008,0.627712 +4096,0.002,0.581632,0.790528,0.70144,0.805888 +8192,0.006,0.856064,0.863232,1.0199,0.75264 +16384,0.0071,1.41722,1.04653,0.896,0.807936 +32768,0.0167,1.00352,1.21549,1.57286,1.26464 +65536,0.0469,1.33018,1.58106,1.43258,1.32915 +131072,0.601,2.2313,2.43302,2.53645,3.51846 +262144,1.1733,4.20454,4.0151,4.49024,4.81587 +524288,2.3533,7.61856,7.44653,7.84486,8.33434 +1048576,4.7569,14.9248,14.8081,14.4282,14.6166 +2097152,9.3417,29.143,29.2434,27.2312,27.5026 +4194304,18.1624,58.6527,56.0886,53.7416,54.5792 +8388608,39.3753,114.267,110.945,106.459,106.372 +16777216,75.1592,231.902,218.866,212.303,210.202 +33554432,155.298,466.764,442.234,423.91,421.524 +67108864,296.547,938.532,888.781,848.251,845.222 +16,0.0001,0.669696,0.80384,0.841728,0.817152 +32,0.0001,0.480256,0.768,0.781312,0.765952 +64,0.0001,0.499712,0.795648,0.733184,0.525312 +128,0.0001,0.869376,0.717824,0.8704,0.815104 +256,0.0001,0.683008,0.779264,0.900096,0.86016 +512,0.0003,0.56832,0.687104,0.633856,0.9728 +1024,0.0005,0.54784,1.15507,0.644096,0.596992 +2048,0.001,0.524288,0.753664,0.677888,0.617472 +4096,0.002,0.658432,0.796672,0.851968,0.679936 +8192,0.0032,0.636928,0.927744,0.754688,0.646144 +16384,0.0071,0.979968,0.937984,0.777216,0.822272 +32768,0.0163,1.03322,1.22266,1.03731,1.00557 +65536,0.0379,1.38854,1.54112,1.5657,1.39059 +131072,0.7053,2.26099,3.33414,2.53747,2.95219 +262144,1.1727,4.21069,3.97517,4.33869,5.14458 +524288,2.3419,7.98208,8.09782,7.60934,7.8295 +1048576,4.4364,15.1204,14.8756,13.8865,14.9873 +2097152,8.8725,29.5455,28.1969,27.2507,27.5067 +4194304,19.5239,57.814,56.3487,53.7498,53.2828 +8388608,36.3185,114.309,111.621,106.755,104.662 +16777216,79.0536,228.775,224.112,211.43,210.196 +33554432,147.499,465.623,435.397,426.142,421.318 +67108864,301.362,938.668,905.108,849.797,844.241 +16,0.0001,0.574464,0.8192,0.929792,0.93696 +32,0.0001,0.485376,0.73216,0.908288,0.828416 +64,0.0001,0.49152,0.781312,1.32915,0.8704 +128,0.0001,0.603136,0.8704,0.96256,0.733184 +256,0.0002,0.48128,0.801792,0.713728,0.754688 +512,0.0003,0.628736,0.746496,0.953344,0.75776 +1024,0.0004,0.862208,0.83456,0.758784,1.21965 +2048,0.001,0.723968,0.888832,0.775168,0.738304 +4096,0.002,1.40493,1.00659,0.77312,0.770048 +8192,0.0031,0.999424,0.909312,0.698368,0.709632 +16384,0.0071,0.84992,1.01171,0.843776,0.801792 +32768,0.0679,1.00352,1.2329,1.0455,1.00762 +65536,0.0387,1.41926,1.64454,1.43974,1.46125 +131072,0.5859,2.23949,2.44838,2.52314,2.9399 +262144,1.2017,4.05299,3.94752,4.52915,4.72883 +524288,2.3416,7.62163,7.3728,7.54176,8.92416 +1048576,4.4371,15.1245,14.6934,14.4323,14.7517 +2097152,9.8262,30.2049,29.271,27.7893,27.9224 +4194304,17.9776,58.3772,55.7619,54.0088,54.0774 +8388608,41.773,115.491,109.728,107.053,105.486 +16777216,73.3328,231.901,218.084,211.472,211.564 +33554432,150.768,465.484,447.015,425.922,423.649 +67108864,294.008,939.456,883.558,852.047,844.863 +16,0.0001,0.65024,0.77824,0.792576,0.801792 +32,0.0001,0.80384,0.735232,0.758784,0.760832 +64,0.0133,0.582656,0.786432,0.782336,0.760832 +128,0.0001,0.54272,0.64512,0.63488,0.602112 +256,0.0001,0.502784,0.652288,0.636928,1.84934 +512,0.0002,0.499712,0.811008,0.636928,0.905216 +1024,0.0005,0.545792,1.3783,0.644096,0.596992 +2048,0.0009,0.592896,0.753664,0.67584,0.616448 +4096,0.002,0.553984,0.792576,0.704512,0.694272 +8192,0.0031,0.643072,0.869376,0.774144,0.728064 +16384,0.0071,1.0281,1.00557,0.835584,1.12845 +32768,0.0169,0.974848,1.2247,1.0455,1.00045 +65536,0.0384,1.42336,1.61075,1.44998,1.39366 +131072,0.5857,2.20979,2.44736,2.54464,2.93683 +262144,1.1737,4.1984,4.06323,4.33664,5.22445 +524288,2.3551,7.9657,8.22067,8.13773,8.25446 +1048576,4.9732,15.444,14.8265,14.549,14.9658 +2097152,10.5699,29.5526,28.3331,27.0694,29.0273 +4194304,20.0532,57.3082,57.1136,53.1732,53.9269 +8388608,36.7292,115.062,111.664,105.915,104.746 +16777216,78.5239,230.185,224.878,210.37,210.039 +33554432,150.514,465.247,437.658,425.771,422.76 +67108864,294.324,943.087,902.677,850.886,843.743 +16,0.0001,0.828416,0.82944,0.78848,0.709632 +32,0.0001,0.688128,0.777216,0.702464,0.927744 +64,0.0001,0.494592,0.81408,0.790528,0.769024 +128,0.0002,0.704512,0.846848,0.705536,0.740352 +256,0.0001,0.48128,0.784384,0.70144,0.871424 +512,0.0003,0.487424,0.78848,0.898048,0.817152 +1024,0.0138,0.739328,0.644096,0.985088,0.835584 +2048,0.001,0.5888,0.746496,0.678912,0.633856 +4096,0.0019,0.582656,0.76288,0.709632,0.677888 +8192,0.0033,0.6656,1.00755,0.741376,0.710656 +16384,0.0069,0.764928,1.58822,0.845824,0.816128 +32768,0.0301,1.05574,1.43974,1.06086,1.0025 +65536,0.0396,1.41414,1.57389,1.43667,1.39878 +131072,0.5863,2.29683,2.43098,2.51802,2.94298 +262144,1.1734,4.18406,3.9977,4.31104,5.52755 +524288,2.3415,8.56883,8.15923,7.57965,8.13363 +1048576,5.0581,15.2863,14.591,14.6299,14.4701 +2097152,9.49,28.631,28.5573,27.8272,26.196 +4194304,19.1251,58.1499,55.6124,54.145,53.1886 +8388608,37.1389,115.805,110.832,106.008,105.683 +16777216,80.7955,232.514,220.195,212.591,211.672 +33554432,149.884,468.308,448.427,425.512,423.57 +67108864,294.925,942.82,888.236,850.848,843.431 +16,0.0001,0.692224,0.751616,0.862208,0.777216 +32,0.0001,0.472064,0.744448,0.759808,0.748544 +64,0.0001,0.4864,0.92672,1.13664,0.648192 +128,0.0135,0.534528,0.82432,0.817152,0.62464 +256,0.0003,0.654336,0.705536,0.6912,0.82944 +512,0.0003,0.510976,1.1008,0.869376,0.730112 +1024,0.0005,0.651264,0.889856,0.679936,0.82944 +2048,0.001,0.567296,0.751616,0.673792,0.632832 +4096,0.002,0.587776,0.789504,1.05062,0.636928 +8192,0.0031,0.797696,0.859136,0.678912,0.710656 +16384,0.0072,0.774144,1.09773,0.790496,0.73728 +32768,0.0164,0.937984,1.15405,1.44486,1.00147 +65536,0.0378,1.42438,1.62304,1.44589,1.39059 +131072,0.5853,2.22618,2.44531,2.52723,2.95014 +262144,1.1931,4.2711,3.98336,4.57216,4.89677 +524288,2.9547,7.64518,7.42707,7.97184,7.9575 +1048576,4.6841,15.3149,14.9309,14.5285,15.7532 +2097152,8.8745,29.5916,28.3423,27.2507,28.544 +4194304,18.8603,58.8052,56.4623,53.3883,54.1307 +8388608,37.4491,113.896,110.65,107.264,106.214 +16777216,79.1134,231.187,225.356,211.813,212.54 +33554432,147.226,464.271,435.775,424.453,425.023 +67108864,300.951,935.513,900.847,849.542,844.925 +16,0.0001,0.663552,0.809984,0.8448,0.821248 +32,0.0001,0.488448,0.995328,0.954368,0.72192 +64,0.0001,0.617472,0.760832,1.07315,0.899072 +128,0.0001,0.7424,0.769024,0.821248,0.719872 +256,0.0002,0.635904,0.898048,0.86528,0.964608 +512,0.0138,0.52736,0.93696,0.779264,0.764928 +1024,0.0004,0.571392,1.03117,0.779264,0.779264 +2048,0.001,0.556032,0.744448,0.684032,0.632832 +4096,0.0022,0.598016,0.796672,0.698368,0.68608 +8192,0.0032,0.643072,0.934912,0.688128,0.774144 +16384,0.008,0.881664,0.913408,0.780288,0.813056 +32768,0.0179,1.96915,1.17248,1.03834,1.23494 +65536,0.0388,1.50528,1.66502,1.43565,1.39571 +131072,0.5857,2.22106,2.44736,2.52928,2.94605 +262144,1.173,4.23318,4.11955,4.31923,5.08416 +524288,2.3438,7.70355,7.98106,8.07526,7.89914 +1048576,4.6838,14.592,14.334,14.5879,14.7292 +2097152,9.5411,28.7539,29.1246,26.7428,26.8698 +4194304,18.0263,57.8396,55.4916,53.6699,53.2029 +8388608,39.5634,114.873,110.879,106.819,104.855 +16777216,78.3876,229.697,219.453,212.209,214.054 +33554432,149.98,464.266,448.475,425.943,423.694 +67108864,298.994,941.756,886.752,852.795,842.147 +16,0.0001,0.507904,0.713728,0.820224,0.766976 +32,0.0002,0.477184,0.913408,0.795648,0.745472 +64,0.0001,0.603136,1.0752,1.06598,0.77312 +128,0.0001,0.64,0.69632,0.70656,0.596992 +256,0.0001,0.935936,0.647168,0.584704,0.730112 +512,0.0003,0.523264,0.60928,0.582656,0.536576 +1024,0.0004,0.54272,0.693248,0.683008,0.59392 +2048,0.0009,0.564224,0.741376,1.60256,0.662528 +4096,0.002,0.571392,0.749568,0.632832,0.692224 +8192,0.0032,0.864256,0.805888,0.694272,0.70144 +16384,0.0071,0.838656,1.01478,0.838656,0.915456 +32768,0.0167,1.11411,1.16326,0.982016,1.06701 +65536,0.0381,1.63328,1.59334,1.43155,1.54419 +131072,0.5854,2.24154,2.44122,2.97165,2.9399 +262144,1.1676,4.20966,4.02637,4.32742,5.13229 +524288,2.4966,8.23296,8.10906,8.12134,8.73472 +1048576,4.6383,15.8802,14.8511,14.4722,14.8562 +2097152,10.988,28.9126,28.7508,27.9644,27.9798 +4194304,20.2524,58.6516,57.8038,53.8276,53.4272 +8388608,38.2143,114.916,111.318,105.307,105.398 +16777216,79.4699,230.631,226.05,210.459,210.044 +33554432,146.984,464.713,438.439,426.285,422.25 +67108864,292.347,943.143,904.009,851.277,844.94 +16,0.0001,0.479232,0.509952,0.55808,0.529408 +32,0.0001,0.446464,0.817152,0.900096,1.23494 +64,0.0002,0.714752,1.21958,0.927744,0.790528 +128,0.0002,0.681984,0.789504,0.927744,0.859136 +256,0.0001,0.533504,0.772096,0.71168,0.735232 +512,0.0003,0.503808,0.8192,0.74752,0.75264 +1024,0.0005,0.689152,0.884736,0.731136,0.82432 +2048,0.0014,0.658432,0.980992,0.93184,0.828416 +4096,0.0019,0.709632,0.792576,0.67584,0.64512 +8192,0.0031,0.717824,0.863232,0.886784,0.709632 +16384,0.0068,1.18784,1.01069,0.841728,0.809984 +32768,0.0166,1.02502,1.21549,1.04858,0.954368 +65536,0.0397,1.52269,1.5575,1.44589,1.40083 +131072,0.601,2.23642,2.46886,2.5344,2.98496 +262144,1.173,4.20352,4.00077,4.83123,4.71859 +524288,2.3548,7.96467,7.60525,8.13261,8.86579 +1048576,4.437,14.7599,14.8009,15.1071,14.8029 +2097152,10.1256,29.097,29.3878,27.2005,27.4391 +4194304,18.7743,57.9615,56.4142,54.3191,53.502 +8388608,39.8065,115.154,111.66,105.56,105.712 +16777216,80.4707,230.64,217.947,213.064,212.045 +33554432,148.925,464.632,446.982,424.483,421.377 +67108864,296.724,935.198,885.642,847.78,843.56 +16,0,0.519168,0.714752,0.837632,0.99328 +32,0.0001,0.484352,0.927744,0.774144,0.75264 +64,0.0001,0.654336,0.733184,0.746496,0.949248 +128,0.0001,0.807936,0.789504,0.738304,0.841728 +256,0.0002,0.924672,0.917504,0.75776,0.760832 +512,0.0002,0.553984,0.79872,0.785408,0.723968 +1024,0.0005,0.515072,0.827392,0.801792,0.688128 +2048,0.0143,0.638976,0.858112,0.779264,0.782336 +4096,0.0019,0.666624,0.97792,0.837632,0.760832 +8192,0.0031,0.630784,0.9472,0.877568,0.866304 +16384,0.0069,0.96768,1.1479,0.973824,0.86016 +32768,0.0163,1.37523,1.3097,1.18886,1.1049 +65536,0.0388,1.4336,1.71725,1.5913,1.50938 +131072,1.0864,2.18931,2.75968,2.53133,3.11808 +262144,1.1694,4.46157,4.0192,4.56704,4.74931 +524288,2.4526,8.10086,7.40557,7.66362,8.05171 +1048576,4.4379,15.0067,15.0835,13.9817,14.8265 +2097152,9.0511,28.9167,29.0888,27.8436,27.7791 +4194304,18.1439,57.8796,57.343,54.1952,53.6545 +8388608,37.4342,116.527,111.564,105.902,105.612 +16777216,76.2038,229.638,222.561,210.937,211.217 +33554432,146.042,464.985,439.924,423.601,420.454 +67108864,303.242,939.848,903.014,854.486,847.253 +16,0.0001,0.66048,0.755712,1.21446,0.835584 +32,0.0002,0.503808,0.830464,0.712704,0.693248 +64,0.0002,0.703488,0.86528,1.06496,0.784384 +128,0.0001,0.68096,0.78848,0.736256,0.740352 +256,0.0002,0.521216,0.792576,0.912384,0.73728 +512,0.0003,0.49152,0.833536,0.768,0.744448 +1024,0.0004,0.574464,0.833536,0.728064,0.735232 +2048,0.0009,1.11514,0.888832,0.73216,0.868352 +4096,0.0041,0.600064,0.7936,1.05779,0.69632 +8192,0.0031,0.702464,0.868352,0.78848,0.690176 +16384,0.007,0.764928,1.00454,0.831488,0.817152 +32768,0.0159,0.973824,1.21139,1.04038,1.02298 +65536,0.0388,1.41312,1.64147,1.43155,1.33734 +131072,0.6345,2.20058,2.74842,2.49856,4.93773 +262144,1.1738,4.06835,3.97005,4.34176,4.91725 +524288,2.3419,7.60832,8.54426,7.65645,8.7337 +1048576,4.7672,14.892,14.8787,15.0057,14.3452 +2097152,9.123,28.9935,29.3509,29.2772,28.4088 +4194304,18.1265,57.7516,55.7128,54.6867,53.3627 +8388608,39.8873,114.96,111.241,108.324,105.409 +16777216,74.1988,234.398,218.185,212.043,210.289 +33554432,149.765,466.508,445.378,425.201,422.815 +67108864,297.464,941.678,887.925,852.544,844.362 +16,0.0001,0.611328,0.723968,0.933888,0.672768 +32,0.0001,0.45568,0.67072,1.06291,0.776192 +64,0.0001,0.514048,0.794624,0.744448,0.760832 +128,0.0001,0.523264,0.842752,1.28,0.826368 +256,0.0002,0.500736,0.795648,0.746496,0.718848 +512,0.0003,0.751616,0.781312,0.77312,0.868352 +1024,0.0004,0.576512,0.795648,0.765952,0.595968 +2048,0.001,0.566272,1.08954,0.715776,0.566272 +4096,0.0021,0.625664,0.776192,1.23597,0.649216 +8192,0.0031,0.637952,0.991232,0.690176,0.724992 +16384,0.0072,0.78336,1.02298,0.868352,0.802816 +32768,0.0163,0.98304,1.22368,1.04858,1.01683 +65536,0.0388,1.42643,1.64659,1.42848,1.40083 +131072,0.5874,2.22618,2.4535,2.53338,4.07654 +262144,1.2487,4.14106,4.61722,4.53734,4.93568 +524288,2.3418,7.57453,7.42605,7.76192,8.13978 +1048576,4.5348,15.06,15.4788,14.6401,14.72 +2097152,9.5047,29.6571,29.3407,27.946,27.2927 +4194304,18.1822,58.8186,56.363,53.6125,54.0406 +8388608,39.0919,115.373,110.967,106.406,106.374 +16777216,76.1235,230.075,223.27,208.712,211.586 +33554432,146.627,466.158,436.301,423.103,420.168 +67108864,296.079,940.852,902.843,855.57,845.623 +16,0.0001,0.6144,0.62464,0.789504,0.83456 +32,0.0001,0.493568,0.796672,0.786432,0.736256 +64,0.0001,0.513024,0.64,0.755712,0.754688 +128,0.0001,0.49664,0.800768,0.689152,0.739328 +256,0.0001,0.514048,0.965632,0.731136,0.761856 +512,0.0003,0.559104,0.669696,0.638976,0.59904 +1024,0.0004,0.565248,0.703488,0.91136,0.608256 +2048,0.001,0.531456,0.746496,0.68608,0.587776 +4096,0.0021,0.765952,0.8448,1.46125,0.884736 +8192,0.0031,0.598016,0.85504,0.748544,0.736256 +16384,0.0073,0.774144,1.00454,0.838656,0.815104 +32768,0.0175,1.08749,1.19091,1.0455,1.02912 +65536,0.0401,1.34656,1.62509,1.54112,1.48992 +131072,0.6962,2.29274,2.61632,2.70739,3.04026 +262144,1.2062,4.53632,4.42573,4.38682,4.71757 +524288,2.2204,7.63699,7.44141,7.81414,9.16582 +1048576,4.6828,15.1685,15.1931,15.8659,14.5664 +2097152,9.3648,29.1062,29.2311,27.7361,28.3361 +4194304,18.0121,58.0229,56.1285,54.8987,53.2695 +8388608,39.7672,115.471,110.648,107.188,105.801 +16777216,72.6283,231.41,218.408,212.617,210.7 +33554432,150.089,465.12,446.138,423.725,424.465 +67108864,298.948,937.887,884.813,849.79,842.339 +16,0.0001,0.7168,0.820224,1.1561,0.7936 +32,0.0001,0.463872,0.637952,0.82944,0.841728 +64,0.0001,0.515072,0.833536,0.89088,0.775168 +128,0.0001,0.666624,0.746496,0.779264,0.703488 +256,0.0002,0.482304,0.785408,0.754688,0.68608 +512,0.0003,0.54784,0.674816,0.632832,0.59392 +1024,0.0004,0.5376,1.152,1.31174,0.60416 +2048,0.001,0.585728,0.748544,0.66048,0.63488 +4096,0.0021,0.543744,0.724992,0.635904,0.641024 +8192,0.0031,0.644096,0.95744,0.794624,0.704512 +16384,0.0077,0.86016,0.997376,0.848896,0.832512 +32768,0.0162,0.971776,1.54522,1.04038,1.00966 +65536,0.0369,1.41722,1.64557,1.44077,1.44282 +131072,0.5858,2.19853,2.44326,3.05357,2.7904 +262144,1.1688,4.3479,4.04992,4.32128,5.2183 +524288,2.3418,8.15408,7.72608,8.88115,8.60365 +1048576,4.6658,15.1398,15.4255,14.5306,14.7087 +2097152,9.7289,29.4728,27.8671,27.3971,27.8876 +4194304,18.2558,57.5785,56.6231,53.8225,54.3406 +8388608,39.5971,115.139,111.047,107.087,106.123 +16777216,77.214,231.884,224.942,210.388,212.788 +33554432,150.016,466.914,439.465,424.758,420.026 +67108864,295.004,942.167,904.186,846.253,849.342 +16,0.0001,0.65536,0.724992,0.774144,0.75776 +32,0.0002,0.62464,0.764928,1.0455,0.700416 +64,0.0001,0.463872,0.745472,0.934912,0.708608 +128,0.0001,0.494592,0.631808,0.63488,0.591872 +256,0.0004,0.493568,0.659456,0.653312,0.610304 +512,0.0003,1.01069,0.697344,0.647168,1.0025 +1024,0.0004,0.534528,0.710656,0.648192,0.608256 +2048,0.001,0.5632,0.738304,0.82944,0.628736 +4096,0.0041,0.822272,0.800768,0.703488,0.690176 +8192,0.0032,0.633856,0.873472,0.755712,0.694272 +16384,0.0074,0.768,1.00659,1.36704,0.820224 +32768,0.0163,0.968704,1.22368,1.05062,1.02195 +65536,0.0387,1.61792,1.63635,1.42746,1.39366 +131072,0.5846,2.19853,2.85082,2.50573,3.59117 +262144,1.2071,4.48307,4.10726,4.64282,4.83738 +524288,2.3529,7.75987,7.48339,7.45779,7.88992 +1048576,4.4377,14.8838,15.1603,14.4323,14.5193 +2097152,9.3144,29.5035,29.0611,27.5302,28.6413 +4194304,18.2123,57.5498,55.6452,54.3754,53.5204 +8388608,39.6724,115.642,110.077,107.738,106.301 +16777216,74.8721,231.743,220.449,211.781,211.497 +33554432,152.521,465.933,447.13,426.625,421.861 +67108864,297.268,934.203,884.437,849.657,844.75 +16,0,0.555008,0.651264,0.667648,0.658432 +32,0.0001,0.618496,0.785408,0.77312,0.726016 +64,0.0001,0.557056,0.917504,0.882688,0.718848 +128,0.0001,0.72192,0.753664,0.70144,0.722944 +256,0.0001,0.477184,0.848896,0.641024,0.595968 +512,0.0002,0.555008,0.674816,0.633856,0.594944 +1024,0.0005,0.54784,0.689152,0.567296,0.60928 +2048,0.001,1.01888,0.743424,0.674816,0.80384 +4096,0.0152,0.553984,0.790528,0.70656,0.642048 +8192,0.0032,0.59392,0.854016,0.677888,0.702464 +16384,0.007,0.979968,1.024,1.61075,0.805888 +32768,0.017,0.973824,1.22266,1.03936,0.987136 +65536,0.0372,1.41926,1.61587,1.44179,1.40902 +131072,0.5868,2.27635,2.65011,2.54669,3.82566 +262144,1.1729,4.19942,3.99258,4.33459,4.82611 +524288,2.3435,7.75782,7.54381,7.86637,8.41318 +1048576,4.7931,14.7261,14.848,14.6084,14.4538 +2097152,9.8441,28.7375,28.3986,26.6342,27.1329 +4194304,18.3347,57.1443,56.5361,53.3135,53.3514 +8388608,36.4644,113.371,110.663,106.051,105.556 +16777216,80.5874,228.752,224.545,211.387,211.809 +33554432,149.629,462.38,436.181,423.478,421.981 +67108864,292.488,934.344,899.784,850.422,844.018 +16,0.0001,0.612352,0.85504,0.930816,0.73728 +32,0.0001,0.644096,0.785408,0.625664,0.695296 +64,0.0001,0.490496,0.72704,0.76288,0.770048 +128,0.0002,0.595968,0.789504,0.724992,0.749568 +256,0.0002,0.533504,0.786432,0.787456,0.72192 +512,0.0003,0.546816,0.787456,0.769024,0.739328 +1024,0.0006,0.6144,0.776192,0.708608,0.950272 +2048,0.001,0.53248,0.867328,0.687104,0.617472 +4096,0.0019,0.602112,0.735232,1.64352,0.677888 +8192,0.0031,0.882688,0.9728,0.750592,0.703488 +16384,0.0071,1.24109,1.00864,0.835584,0.817152 +32768,0.0161,1.26259,1.2073,1.03731,1.00352 +65536,0.0386,1.41722,1.64557,1.66502,1.33837 +131072,0.7599,2.18624,2.45043,2.53133,2.94605 +262144,1.1741,4.23219,4.2967,4.38682,4.76672 +524288,2.2327,7.68,7.51616,7.90528,8.30874 +1048576,4.7869,14.6125,14.8582,14.039,14.6452 +2097152,9.495,28.9649,28.6761,27.178,27.3408 +4194304,20.3041,57.5744,55.4854,54.0436,52.9971 +8388608,39.1292,114.866,109.704,105.678,105.699 +16777216,74.982,230.719,217.739,211.647,211.111 +33554432,146.918,462.758,444.603,423.976,420.505 +67108864,293.265,935.477,883.939,850.767,841.301 +16,0.0001,0.633856,0.651264,0.719872,0.693248 +32,0.0001,0.632832,0.765952,0.792576,0.758784 +64,0.0001,0.621568,0.759808,0.699392,0.8448 +128,0.0001,0.521216,0.763904,0.72704,0.744448 +256,0.0003,0.508928,0.81408,0.751616,0.726016 +512,0.0002,0.513024,0.79872,0.703488,0.709632 +1024,0.0005,0.90112,0.842752,0.744448,0.940032 +2048,0.001,0.689152,0.837632,0.731136,0.775168 +4096,0.0019,0.59392,1.38035,0.643072,0.596992 +8192,0.0031,0.868352,0.837632,0.790528,0.687104 +16384,0.0069,1.04141,0.978944,0.83456,1.01683 +32768,0.0161,0.973824,1.23392,1.04346,1.90054 +65536,0.0372,1.56672,1.64864,1.43872,1.39469 +131072,0.5847,2.23744,2.43814,2.52314,2.94195 +262144,1.1729,4.24448,4.31309,4.32947,5.02477 +524288,2.4067,7.59603,7.63187,7.64621,7.84794 +1048576,4.8316,14.9299,15.5464,14.4374,14.6883 +2097152,9.9782,29.0703,28.3156,26.7622,27.5487 +4194304,18.0681,57.5396,56.7665,53.1159,53.6218 +8388608,39.3769,113.869,110.887,105.747,105.582 +16777216,73.9444,230.552,223.172,212.981,210.444 +33554432,146.515,465.589,436.548,423.017,421.578 +67108864,292.351,934.824,902.18,850.478,843.26 +16,0.0001,0.71168,0.84992,0.750592,0.704512 +32,0.0001,0.653312,0.7936,0.717824,0.718848 +64,0.0001,0.467968,0.769024,0.719872,0.720896 +128,0.0001,0.497664,0.83968,0.760832,0.703488 +256,0.0001,0.626688,0.8704,0.745472,0.692224 +512,0.0006,0.493568,0.764928,0.920576,0.714752 +1024,0.0005,0.812032,0.804864,0.745472,0.709632 +2048,0.001,0.564224,0.836608,0.769024,0.73216 +4096,0.0019,0.607232,0.845824,0.83968,0.78336 +8192,0.0032,0.605184,1.30253,0.854016,0.802816 +16384,0.0076,0.920576,1.99987,0.934912,0.893952 +32768,0.0168,1.01786,1.28102,1.13766,1.53088 +65536,0.0394,1.39366,1.84832,1.46125,1.50528 +131072,0.5839,2.28352,2.54669,2.54771,3.02797 +262144,1.1684,4.61619,4.02125,4.72269,5.08109 +524288,2.4955,8.21862,8.03738,7.63699,8.04352 +1048576,4.4363,15.0948,14.805,14.6125,14.6289 +2097152,9.0939,29.7093,29.3345,26.41,27.1862 +4194304,20.6765,57.9041,55.509,53.076,53.3494 +8388608,37.549,114.212,110.303,105.41,106.166 +16777216,79.7074,229.771,218.841,210.587,209.262 +33554432,145.898,465.466,447.709,423.737,420.572 +67108864,296.535,936.003,884.796,846.666,843 +16,0.0001,0.51712,0.729088,0.7168,0.695296 +32,0.0002,0.553984,0.72192,0.804864,0.71168 +64,0.0001,0.464896,0.74752,0.678912,0.730112 +128,0.0001,0.681984,0.813056,0.731136,0.731136 +256,0.0002,0.503808,0.796672,0.730112,0.743424 +512,0.0002,0.519168,0.786432,0.745472,0.72192 +1024,0.0004,0.54784,1.11002,0.734208,0.726016 +2048,0.0009,0.661504,0.876544,0.812032,0.729088 +4096,0.0019,0.57856,1.00557,0.815104,0.77312 +8192,0.0031,0.979968,1.0711,0.802816,0.715776 +16384,0.0067,0.743424,1.54522,1.01683,0.97792 +32768,0.0167,1.02502,1.63635,1.11718,1.09978 +65536,0.0386,1.42541,1.70906,1.44589,1.54112 +131072,0.5846,2.39616,2.51597,2.59686,3.11398 +262144,1.1745,4.46874,4.04992,4.30899,5.72928 +524288,2.7065,8.12544,7.65747,7.59501,8.18688 +1048576,4.438,15.0794,14.5981,14.5828,14.9084 +2097152,8.8724,29.2721,27.9869,26.6179,27.776 +4194304,19.6576,57.7116,56.2248,53.5122,54.5157 +8388608,39.286,115.314,111.861,105.98,105.159 +16777216,80.4088,229.115,223.87,213.025,210.965 +33554432,147.678,463.244,436.496,422.466,420.833 +67108864,293.616,934.731,902.224,852.692,839.494 +16,0.0001,0.576512,0.787456,0.786432,0.76288 +32,0.0001,0.811008,0.777216,0.779264,0.795648 +64,0.0001,0.562176,0.774144,0.769024,1.11309 +128,0.0001,0.586752,0.888832,2.01728,0.75264 +256,0.0002,0.625664,0.78848,0.690176,0.763904 +512,0.0003,0.504832,0.610304,0.566272,0.992256 +1024,0.0004,0.541696,1.00659,0.649216,0.594944 +2048,0.0009,0.5632,0.738304,0.7168,0.632832 +4096,0.0021,0.600064,0.789504,0.70144,0.644096 +8192,0.0033,0.643072,0.89088,0.745472,1.02502 +16384,0.0072,0.777216,1.01171,0.832512,0.807936 +32768,0.0161,1.01376,1.34554,1.03322,0.9984 +65536,0.0393,1.3865,1.7408,1.44998,1.38957 +131072,0.5838,2.20672,2.45453,2.50368,2.98189 +262144,1.1737,4.48717,3.9721,4.34893,4.75034 +524288,2.4337,7.83565,7.33901,7.4496,7.86637 +1048576,4.9663,14.3903,14.6821,14.3872,15.2914 +2097152,8.8743,29.868,29.0796,27.0889,27.5569 +4194304,20.087,58.0588,56.4787,53.204,54.6171 +8388608,36.9702,114.65,109.909,105.317,105.823 +16777216,78.3315,229.823,219.152,211.231,210.406 +33554432,145.554,463.708,446.16,424.133,423.085 +67108864,292.261,933.9,884.856,849.384,838.569 +16,0.0001,0.618496,0.649216,0.7168,0.766976 +32,0.0001,0.62976,0.785408,0.740352,0.699392 +64,0.0001,0.525312,0.786432,0.707584,0.705536 +128,0.0001,0.526336,0.749568,0.715776,0.750592 +256,0.0002,0.53248,0.779264,0.75776,0.739328 +512,0.0003,0.523264,0.850944,0.692224,0.73728 +1024,0.0005,0.661504,0.781312,0.759808,0.72704 +2048,0.001,0.52736,1.11411,0.753664,0.744448 +4096,0.0032,0.557056,0.984064,1.03731,0.751616 +8192,0.0031,0.607232,1.04038,0.789504,0.821248 +16384,0.0067,0.88576,1.05984,0.877568,0.945152 +32768,0.0166,1.00762,1.30662,1.13459,1.08134 +65536,0.0386,1.49197,1.68141,1.5063,1.43155 +131072,0.5839,2.21696,3.71098,2.51597,2.93581 +262144,1.1727,4.26598,4.03558,4.32333,5.52038 +524288,2.3401,8.12032,7.7097,7.76704,8.23194 +1048576,4.6217,14.7599,15.0671,14.5684,14.4968 +2097152,9.9779,28.8266,27.9562,27.9276,27.5046 +4194304,18.6124,57.7536,57.3194,53.2541,53.1999 +8388608,37.597,115.151,109.592,105.384,105.804 +16777216,74.7071,230.075,223.934,210.121,211.719 +33554432,149.51,465.187,432.689,427.236,421.55 +67108864,301.498,936.199,900.691,851.991,841.652 +16,0.0001,0.57344,0.813056,0.775168,0.750592 +32,0.0001,0.479232,1.25542,0.795648,0.80896 +64,0.0002,0.489472,0.846848,0.749568,0.75776 +128,0.0001,0.512,0.813056,0.806912,0.891904 +256,0.0001,0.507904,0.821248,0.841728,0.735232 +512,0.0003,0.612352,0.822272,0.708608,0.735232 +1024,0.0005,0.545792,0.806912,0.739328,0.7424 +2048,0.001,0.577536,0.894976,0.745472,0.714752 +4096,0.0019,0.630784,0.872448,0.88576,0.713728 +8192,0.0031,0.87552,0.902144,0.804864,0.800768 +16384,0.0069,0.75264,1.13766,0.913408,0.922624 +32768,0.0166,0.96256,1.38035,1.13152,1.10285 +65536,0.0404,1.42438,1.70496,1.47866,1.84627 +131072,0.5853,2.2743,2.52621,2.61734,3.10886 +262144,1.172,4.82816,4.06528,4.41446,4.76877 +524288,2.516,7.6503,7.65747,7.55814,8.06707 +1048576,4.437,14.9944,14.3452,14.5377,14.5633 +2097152,9.0451,29.2751,28.7048,26.8954,27.9296 +4194304,18.869,58.3741,56.0794,53.1958,53.7508 +8388608,38.049,113.545,110.418,105.548,104.852 +16777216,79.9235,229.358,218.687,211.719,209.845 +33554432,153.085,464.219,446.453,424.868,422.035 +67108864,294.974,937.11,884.968,850.128,844.17 +16,0,0.697344,0.70656,0.79872,0.794624 +32,0.0001,0.713728,0.802816,0.831488,0.863232 +64,0.0001,0.579584,0.871424,0.900096,0.9072 +128,0.0002,0.658432,0.497664,0.695296,0.753664 +256,0.0004,0.579584,0.789504,0.753664,0.723968 +512,0.0007,0.610304,0.789504,1.02502,0.761856 +1024,0.0004,0.548864,0.7936,0.754688,0.755712 +2048,0.0009,0.52736,0.95744,0.77312,0.715776 +4096,0.0019,0.683008,0.980992,0.724992,0.763904 +8192,0.0031,0.644096,0.961536,0.80384,0.79872 +16384,0.0073,0.753664,1.16736,0.930816,0.9472 +32768,0.0325,0.966656,1.23802,1.11002,1.04038 +65536,0.3428,1.46125,1.70291,1.4889,1.48787 +131072,0.5845,2.19955,2.52109,2.5129,3.05254 +262144,1.168,4.21171,4.12467,4.7145,4.7575 +524288,2.2344,7.80288,7.55712,7.71379,8.25344 +1048576,4.4356,15.0456,14.7855,14.5388,15.1378 +2097152,10.2623,29.227,27.6449,26.8237,27.0172 +4194304,20.2405,57.1259,57.1023,53.7713,53.1425 +8388608,39.4347,113.764,110.298,106.555,106.256 +16777216,77.1125,229.845,222.812,211.519,209.888 +33554432,147.164,464.435,438.304,423.319,421.622 +67108864,295.013,936.076,900.568,850.246,840.67 +16,0.0001,0.596992,0.772096,0.909312,0.826368 +32,0.0001,0.472064,0.758784,0.960512,0.734208 +64,0.0001,0.47104,0.724992,0.999424,0.943104 +128,0.0001,0.483328,0.990208,0.684032,0.702464 +256,0.0002,0.600064,1.08749,0.715776,0.734208 +512,0.0002,0.49664,0.811008,0.74752,0.772096 +1024,0.0004,0.551936,0.831488,0.786432,0.740352 +2048,0.001,0.530432,0.995328,0.777216,0.729088 +4096,0.0019,0.582656,0.999424,0.90112,0.825344 +8192,0.0031,0.688128,1.05472,0.887808,0.840704 +16384,0.0074,0.774144,1.11411,0.999424,0.950272 +32768,0.017,1.11616,1.31072,1.09875,1.08442 +65536,0.0402,1.42643,1.73158,1.50528,1.44077 +131072,0.5828,2.37261,2.4576,2.52314,3.04128 +262144,1.1738,4.53632,4.05197,4.34176,5.0647 +524288,2.3408,7.88582,8.15309,7.83053,8.4183 +1048576,4.4379,14.9996,14.5009,14.2551,14.3657 +2097152,8.8708,28.4918,28.6167,26.6875,27.1278 +4194304,18.3452,57.6358,55.1117,53.0115,53.5245 +8388608,38.7453,113.691,111.107,105.737,105.259 +16777216,80.8386,228.479,219.171,211.429,210.311 +33554432,152.096,465.796,446.018,422.445,421.239 +67108864,294.997,935.741,882.976,850.895,841.577 +16,0.0001,0.664576,0.789504,0.789504,0.792576 +32,0.0001,0.475136,0.75776,0.72192,0.753664 +64,0.0002,0.49664,0.86528,0.928768,1.73568 +128,0.0001,0.492544,0.676864,1.08646,0.649216 +256,0.0002,0.498688,0.707584,0.765952,0.877568 +512,0.0004,0.589824,0.82944,0.674816,0.72192 +1024,0.0004,0.743424,0.705536,0.642048,0.600064 +2048,0.001,0.55808,0.862208,0.679936,0.61952 +4096,0.0019,0.590848,0.7936,0.726016,0.700416 +8192,0.0031,0.636928,0.862208,0.74752,0.683008 +16384,0.007,0.765952,1.01478,0.837632,0.811008 +32768,0.0171,1.0199,1.2073,1.0455,1.01069 +65536,0.0374,1.41926,1.61792,1.67629,1.33427 +131072,0.5849,2.18522,2.45453,2.54874,3.1529 +262144,1.107,4.21581,4.57626,4.13286,4.7657 +524288,2.3397,7.82438,8.1664,8.15821,8.37939 +1048576,5.7408,14.7026,14.9893,14.9729,14.2275 +2097152,9.0412,29.054,27.9695,26.8605,27.5364 +4194304,20.9916,58.2533,55.9094,53.2419,53.46 +8388608,38.4566,114.67,111.818,104.794,105.864 +16777216,72.9559,231.73,223.809,210.973,211.835 +33554432,143.576,464.67,435.175,424.663,421.336 +67108864,297.566,936.362,898.918,850.456,841.798 +16,0.0001,0.550912,0.776192,0.784384,0.815104 +32,0.0001,0.804864,0.72704,0.728064,0.999424 +64,0.0001,0.603136,0.8448,0.821248,0.735232 +128,0.0002,0.467968,0.7424,0.704512,0.717824 +256,0.0001,0.479232,0.843776,1.21651,0.776192 +512,0.0003,0.615424,0.688128,0.953344,0.622592 +1024,0.0005,0.73728,0.705536,0.63488,1.20934 +2048,0.001,0.512,0.678912,0.620544,0.61952 +4096,0.0021,0.584704,0.842752,0.649216,0.659456 +8192,0.0031,0.64,0.935936,0.764928,0.68096 +16384,0.0085,0.760832,1.00045,0.846848,0.816128 +32768,0.0168,0.969728,1.22368,1.14893,1.00352 +65536,0.038,1.35475,1.95277,1.43155,1.38957 +131072,0.586,2.24358,2.4617,2.53747,2.96653 +262144,1.1705,4.23936,3.97619,4.55373,4.75546 +524288,2.3536,7.64006,7.38509,7.47725,8.64051 +1048576,4.4347,15.3119,15.3876,14.8562,15.7297 +2097152,9.7942,29.5547,28.7058,27.8129,28.0924 +4194304,17.9749,58.5144,55.5991,53.121,53.932 +8388608,40.1584,114.501,110.242,106.281,106.252 +16777216,73.3278,233.199,219.633,209.672,209.96 +33554432,148.799,464.001,445.876,425.235,420.948 +67108864,294.423,938.807,882.541,849.598,839.413 +16,0.0001,0.644096,0.869376,0.827392,0.804864 +32,0.0001,0.697344,0.801792,0.72704,0.708608 +64,0.0002,0.512,0.730112,0.709632,0.714752 +128,0.0001,0.74752,0.768,0.794624,0.891904 +256,0.0002,0.54272,1.00352,0.739328,0.714752 +512,0.0003,0.541696,0.791552,0.738304,0.705536 +1024,0.0005,0.545792,0.8192,0.96768,0.765952 +2048,0.001,0.605184,0.741376,0.676864,0.637952 +4096,0.002,0.813056,0.787456,0.699392,0.750592 +8192,0.0032,0.684032,0.854016,0.748544,0.999424 +16384,0.0073,0.75776,1.5831,0.86528,0.746496 +32768,0.0167,0.984064,1.21344,1.06086,0.997376 +65536,0.0383,1.41312,1.61587,1.42848,1.39264 +131072,0.5833,2.22003,2.85491,2.24563,2.68186 +262144,1.1749,4.20454,4.33869,4.3264,4.73088 +524288,2.3431,7.94317,7.8377,7.7015,8.22579 +1048576,4.4364,15.0979,14.9586,14.3667,14.636 +2097152,9.2598,28.7672,29.1226,26.7192,27.2302 +4194304,18.9758,57.5795,56.4869,53.591,53.3268 +8388608,36.7641,112.585,111.251,106.534,105.679 +16777216,81.2548,229.529,223.958,211.985,210.301 +33554432,148.8,465.761,434.416,424.209,421.891 +67108864,293.866,933.793,900.831,846.685,844.567 +16,0.0001,0.52224,0.878592,0.754688,0.78848 +32,0.0002,0.630784,0.695296,0.946176,0.709632 +64,0.0001,0.612352,0.750592,0.93696,0.718848 +128,0.0001,0.519168,0.781312,0.698368,0.746496 +256,0.0001,0.69632,0.801792,0.722944,0.994304 +512,0.0003,0.495616,0.9216,0.800768,0.611328 +1024,0.0007,0.478208,0.70656,0.585728,0.608256 +2048,0.001,0.550912,0.744448,0.674816,0.623616 +4096,0.002,0.596992,0.786432,0.72704,0.70656 +8192,0.0032,0.672768,0.858112,1.08339,0.685056 +16384,0.007,0.764928,0.995328,0.832512,0.818176 +32768,0.016,0.969728,1.19706,1.03219,1.21856 +65536,0.0467,2.16166,1.61997,1.38035,1.39366 +131072,0.5827,2.22003,2.43814,2.49139,2.90714 +262144,1.1744,4.29875,3.98746,4.36736,5.56032 +524288,2.2188,7.87251,8.12749,7.96774,8.46131 +1048576,5.3278,14.3872,14.2111,14.5029,14.7169 +2097152,9.0139,29.2403,28.6362,26.9804,27.0602 +4194304,20.4905,56.9774,55.9278,54.2403,53.4057 +8388608,40.3759,114.459,111.215,105.218,105.062 +16777216,77.5772,230.042,219.131,210.351,211.867 +33554432,145.52,462.402,444.589,423.471,420.782 +67108864,302.875,936.174,882.304,852.758,843.255 +16,0,0.697344,0.896,0.910336,0.902144 +32,0.0001,0.603136,0.807936,0.653312,0.775168 +64,0.0001,0.492544,0.662528,0.726016,0.987136 +128,0.0002,0.470016,1.11923,0.812032,0.892928 +256,0.0001,0.73216,0.823296,0.894976,0.73216 +512,0.0137,0.515072,0.784384,0.70144,1.06598 +1024,0.0005,0.535552,0.78336,0.751616,0.756736 +2048,0.001,0.570368,0.744448,0.704512,0.658432 +4096,0.002,0.58368,0.780288,0.649216,0.683008 +8192,0.0032,1.48685,0.940032,0.749568,0.71168 +16384,0.0071,0.764928,1.44794,0.8448,0.805888 +32768,0.0165,1.05677,1.21037,1.0537,0.9984 +65536,0.0373,1.42643,1.88211,1.42541,1.39366 +131072,0.5862,2.21491,2.43405,2.50163,2.93274 +262144,1.1677,4.46669,4.07552,4.62029,4.73702 +524288,2.3417,7.74963,7.58374,7.79264,8.13261 +1048576,4.437,15.1706,15.0712,14.0698,14.7661 +2097152,8.8744,29.0806,28.034,27.3562,26.8012 +4194304,19.5002,57.5785,57.5365,53.0657,53.6177 +8388608,37.3748,113.923,110.531,105.613,105.522 +16777216,74.1998,229.407,224.048,210.997,211.056 +33554432,147.899,465.904,435.2,422.852,419.326 +67108864,291.094,940.836,897.944,851.348,845.247 +16,0.0001,0.632832,0.838656,0.823296,0.769024 +32,0.0001,1.51654,1.02605,0.72192,0.744448 +64,0.0001,0.512,0.873472,0.730112,0.594944 +128,0.0001,0.971776,0.60928,0.626688,0.60416 +256,0.0002,0.662528,0.654336,0.626688,0.594944 +512,0.0002,0.520192,0.68096,0.641024,0.611328 +1024,0.0005,0.63488,0.749568,0.644096,0.679936 +2048,0.0009,0.53248,0.746496,0.679936,1.00659 +4096,0.002,0.586752,0.774144,0.703488,0.648192 +8192,0.0031,1.36192,0.864256,0.74752,0.71168 +16384,0.0072,0.794624,1.00864,0.837632,0.818176 +32768,0.0168,0.975872,1.21242,1.05062,1.5657 +65536,0.0399,1.91181,1.77357,1.43974,1.3783 +131072,0.6024,2.54362,2.44122,2.51597,2.94912 +262144,1.1735,4.59974,3.98336,4.53427,4.73498 +524288,2.2769,8.07629,7.83258,8.39987,8.49203 +1048576,4.6836,14.7282,14.5736,14.4118,14.9494 +2097152,10.7717,28.5553,28.5297,27.7709,27.9183 +4194304,18.2062,57.729,55.4834,53.5357,54.017 +8388608,36.0965,114.255,111.513,107.251,105.843 +16777216,77.2274,230.873,217.175,211.409,210.937 +33554432,147.447,465.157,448.797,422.832,419.074 +67108864,294.097,937.383,884.005,849.648,835.933 +16,0.0001,0.62464,0.797696,0.77312,0.736256 +32,0.0001,0.555008,0.857088,0.854016,0.730112 +64,0.0001,0.48128,0.77824,0.78336,0.653312 +128,0.0001,0.555008,0.62976,0.633856,0.608256 +256,0.0001,0.474112,0.666624,0.66048,0.611328 +512,0.0002,0.502784,0.684032,0.64,0.59392 +1024,0.0004,0.539648,0.720896,0.647168,1.15098 +2048,0.001,0.642048,0.723968,0.662528,0.734208 +4096,0.0019,0.586752,0.7936,0.717824,0.672768 +8192,0.0031,0.68608,0.93696,0.723968,0.745472 +16384,0.0073,0.976896,1.01888,0.83456,0.805888 +32768,0.0169,1.00864,1.22675,1.04653,1.00454 +65536,0.0385,1.41312,1.64045,1.56774,1.39264 +131072,0.5855,2.26918,2.70029,2.40026,3.33926 +262144,1.1676,4.18304,3.99872,4.31821,5.04525 +524288,2.3426,7.67693,7.77728,8.21146,8.6272 +1048576,4.438,15.5515,15.1624,14.7046,14.5213 +2097152,10.6584,29.0243,28.7959,27.1872,28.3996 +4194304,19.3591,56.5821,57.2406,54.1573,53.8501 +8388608,38.1717,115.356,110.263,106.296,105.487 +16777216,78.6804,229.947,222.61,211.427,211.374 +33554432,154.564,463.906,435.901,423.644,420.334 +67108864,293.585,931.358,896.799,851.589,845.849 +16,0.0001,0.832512,0.86528,0.879616,0.845824 +32,0.0001,0.777216,0.812032,0.77824,0.77824 +64,0.0002,0.48128,0.769024,0.753664,0.75776 +128,0.0002,0.49664,0.681984,0.749568,0.978944 +256,0.0001,0.472064,0.796672,0.7168,0.75776 +512,0.0003,0.557056,0.786432,0.698368,0.733184 +1024,0.0005,0.54784,0.804864,0.74752,0.74752 +2048,0.001,0.57856,0.961536,0.776192,0.797696 +4096,0.0018,0.664576,0.996352,0.789504,0.758784 +8192,0.003,0.643072,1.06906,0.804864,1.08134 +16384,0.0105,0.820224,0.945152,0.836608,0.910336 +32768,0.0164,1.07725,1.2073,1.03526,1.00557 +65536,0.0393,1.45203,1.63533,1.53498,1.38547 +131072,0.5827,2.22208,2.44634,2.50675,2.98598 +262144,1.1705,4.24448,4.00589,5.1159,4.49331 +524288,2.3424,7.89094,7.96058,7.73018,8.22784 +1048576,4.9604,15.0508,14.8265,14.3657,14.6852 +2097152,9.4746,28.415,28.9178,27.4012,27.8313 +4194304,18.4516,58.113,55.9258,53.6463,53.8184 +8388608,38.5808,115.161,109.976,106.139,105.51 +16777216,78.7057,230.856,217.805,210.724,209.2 +33554432,152.126,464.841,444.04,424.106,420.82 +67108864,296.895,932.661,885.796,849.212,840.96 +16,0.0001,0.666624,0.741376,0.770048,0.771072 +32,0.0002,0.53248,0.704512,0.876544,0.822272 +64,0.0001,0.61952,0.743424,0.710656,0.825344 +128,0.0001,0.55296,0.574464,0.571392,0.594944 +256,0.0001,0.47616,0.662528,0.62976,0.59392 +512,0.0003,0.62464,0.61952,0.633856,0.59392 +1024,0.0004,0.536576,1.03629,0.647168,0.598016 +2048,0.001,0.55808,0.750592,0.693248,0.627712 +4096,0.002,0.590848,0.786432,0.705536,0.667648 +8192,0.0031,0.667648,1.07418,0.749568,0.69632 +16384,0.0069,0.768,0.997376,0.83968,0.806912 +32768,0.0165,0.991232,1.21242,1.03731,1.01478 +65536,0.0385,1.43565,1.60461,1.43258,1.62099 +131072,0.5851,2.2569,2.44122,2.50778,2.92659 +262144,1.1744,4.1984,4.56602,4.29158,5.1415 +524288,2.3419,7.74349,7.94419,7.78752,8.28826 +1048576,4.4373,15.1214,14.8572,14.3227,15.0098 +2097152,8.8747,29.0836,29.269,27.0899,27.4033 +4194304,17.945,58.1591,56.2893,53.12,54.6826 +8388608,39.0332,114.253,109.442,105.53,105.275 +16777216,76.2081,229.444,224.134,211.388,209.111 +33554432,151.025,463.919,436.985,424.33,420.766 +67108864,293.145,934.535,894.948,848.997,843.126 +16,0.0001,0.755712,0.912384,0.930816,0.889856 +32,0.0001,0.763904,0.758784,0.72192,0.991232 +64,0.0001,0.63488,0.94208,0.878592,0.897024 +128,0.0001,0.523264,0.79872,0.688128,0.70144 +256,0.0001,0.545792,1.16634,0.668672,0.708608 +512,0.0003,0.487424,0.792576,0.836608,0.712704 +1024,0.0005,0.54272,0.705536,0.65024,0.620544 +2048,0.0009,0.566272,0.7424,0.67584,0.63488 +4096,0.002,0.899072,0.78848,0.71168,0.886784 +8192,0.0031,0.666624,0.973824,0.746496,0.965632 +16384,0.0073,0.953344,0.982016,0.83456,1.20115 +32768,0.017,1.02502,1.30253,0.968704,1.10285 +65536,0.0386,1.41722,1.62714,1.42541,1.39981 +131072,0.583,2.22208,2.47091,2.50368,3.95162 +262144,1.2397,4.06835,3.93011,4.34995,4.76058 +524288,2.2169,7.65133,7.3687,7.61139,8.67328 +1048576,4.8245,14.9852,14.9309,14.3892,14.6217 +2097152,9.0992,28.756,28.8276,27.0735,27.5159 +4194304,18.2517,57.8048,56.1889,53.6566,53.5808 +8388608,36.0444,113.47,110.394,106.042,104.332 +16777216,84.9043,230.554,218.328,211.542,210.271 +33554432,148.889,464.034,447.732,423.667,421.415 +67108864,297.67,932.43,883.082,850.109,842.152 +16,0.0001,0.439296,0.797696,0.80384,0.745472 +32,0.0002,0.495616,0.802816,0.740352,0.838656 +64,0.0001,0.656384,0.858112,0.935936,1.24621 +128,0.0001,0.692224,0.792576,0.877568,0.826368 +256,0.0001,0.508928,0.790528,0.703488,0.70656 +512,0.0002,0.529408,0.674816,0.635904,0.602112 +1024,0.0005,0.652288,0.703488,0.738304,0.570368 +2048,0.001,0.551936,0.739328,0.704512,0.625664 +4096,0.002,0.587776,0.785408,0.72192,0.652288 +8192,0.0031,0.64,0.847872,0.746496,0.681984 +16384,0.0206,0.769024,1.21139,0.8448,0.805888 +32768,0.0176,0.971776,1.33325,1.03629,1.00659 +65536,0.0368,1.44384,1.63942,1.43258,2.35418 +131072,0.6016,2.26099,2.43712,3.09965,2.95526 +262144,1.1681,4.50765,3.98643,4.3479,5.02682 +524288,2.3399,7.5991,7.61242,8.49715,7.79674 +1048576,4.4378,15.1224,14.8797,14.6381,14.7354 +2097152,10.0612,28.7713,28.9526,26.6885,27.1811 +4194304,18.7843,57.1546,56.5617,53.7088,53.5828 +8388608,38.559,113.606,111.791,105.381,105.866 +16777216,80.5494,229.825,222.845,210.885,210.975 +33554432,145.605,463.283,434.639,423.253,421.6 +67108864,293.967,936.078,900.779,845.688,841.143 +16,0.0001,0.643072,0.758784,0.774144,0.958464 +32,0.0001,0.581632,0.823296,0.934912,0.90624 +64,0.0001,0.433152,0.705536,0.907264,0.585728 +128,0.0001,0.64512,0.754688,0.904192,0.653312 +256,0.0002,0.616448,0.663552,0.64512,1.26464 +512,0.0002,0.51712,0.613376,0.635904,0.948224 +1024,0.0005,0.504832,0.712704,0.642048,0.601088 +2048,0.001,0.529408,0.755712,0.679936,0.646144 +4096,0.0018,0.610304,0.960512,0.708608,0.64512 +8192,0.003,0.731136,0.948224,0.749568,0.68096 +16384,0.007,0.768,0.9984,0.862208,0.805888 +32768,0.019,0.96256,1.21344,1.05984,1.00352 +65536,0.0722,1.36806,1.64557,1.37933,1.38957 +131072,0.5849,2.68083,2.50163,2.80474,2.77094 +262144,1.391,4.22195,4.27827,4.34893,4.76262 +524288,2.3576,7.70867,7.50694,8.03021,8.21043 +1048576,4.4385,16.3512,14.6698,14.7057,14.6381 +2097152,9.0416,28.885,28.5225,28.0586,27.8569 +4194304,18.0834,57.9144,56.0282,53.5532,53.8132 +8388608,38.3286,115.135,111.407,107.266,105.141 +16777216,76.8367,231.692,220.182,211.114,211.307 +33554432,150.026,463.035,446.544,425.038,418.748 +67108864,304.846,933.814,885.451,848.94,836.582 +16,0.0001,0.603136,0.54272,0.664576,0.872448 +32,0.0001,0.48128,1.02912,0.739328,0.755712 +64,0.0002,0.498688,1.06086,0.707584,0.745472 +128,0.0001,0.596992,0.700416,0.918528,0.871424 +256,0.0001,0.596992,0.827392,0.813056,0.651264 +512,0.0003,0.684032,0.835584,0.835584,0.724992 +1024,0.0005,0.5888,0.787456,0.769024,0.728064 +2048,0.001,0.694272,1.00966,0.802816,0.758784 +4096,0.0018,0.620544,0.871424,0.714752,0.764928 +8192,0.0035,0.664576,0.86016,0.77312,0.708608 +16384,0.007,0.770048,0.990208,0.847872,0.827392 +32768,0.016,1.03526,1.21037,1.32403,1.00557 +65536,0.0466,1.47149,1.62202,1.45715,1.39776 +131072,0.5862,2.26406,2.45555,2.52109,3.6311 +262144,1.6621,4.21171,4.3049,4.34893,4.7575 +524288,2.3417,7.67898,7.51104,7.53562,8.1705 +1048576,4.4376,15.8454,15.572,14.4282,14.3739 +2097152,9.0919,29.0898,28.0064,28.2552,27.9685 +4194304,17.8566,57.7597,56.3241,54.1809,55.2755 +8388608,40.5776,111.462,110.28,105.934,105.362 +16777216,74.3319,230.544,223.409,212.578,210.611 +33554432,150.106,463.282,439.441,426.989,421.273 +67108864,298.504,936.027,898.509,850.065,843.146 +16,0.0001,0.630784,0.925696,0.740352,0.744448 +32,0.0003,0.766976,0.787456,0.766976,0.787456 +64,0.0002,0.508928,0.8192,1.03117,0.515072 +128,0.0002,0.500736,0.63488,0.646144,0.812032 +256,0.0002,0.474112,0.658432,0.64512,0.590848 +512,0.0003,0.488448,0.69632,0.643072,0.592896 +1024,0.0004,0.541696,1.38035,0.661504,0.611328 +2048,0.001,0.5632,0.741376,0.707584,0.621568 +4096,0.0019,0.580608,0.792576,0.714752,0.643072 +8192,0.0032,0.632832,0.866304,0.74752,0.684032 +16384,0.007,0.779264,0.994304,0.879616,0.807936 +32768,0.0174,1.21446,1.36602,1.04346,0.999424 +65536,0.0396,1.36806,1.64864,1.42029,1.39469 +131072,0.6451,2.23642,2.74227,2.51187,3.16109 +262144,1.6099,4.20147,4.01203,4.53939,4.48717 +524288,2.3424,8.11213,7.68819,7.55302,7.84179 +1048576,4.4353,14.7886,14.5449,14.1588,15.4429 +2097152,10.5637,28.4908,28.5737,26.1622,26.9998 +4194304,18.1775,57.9441,56.2985,53.3484,53.29 +8388608,38.0247,113.986,109.905,106.012,105.837 +16777216,73.6713,229.395,218.897,211.604,211.768 +33554432,149.947,462.155,446.939,423.277,422.252 +67108864,295.745,936.479,888.162,854.408,842.151 +16,0.0001,0.47616,0.713728,0.801792,0.775168 +32,0.0001,0.466944,0.60928,0.8448,0.781312 +64,0.0002,0.468992,1.024,0.663552,0.703488 +128,0.0002,0.502784,0.571392,0.647168,0.585728 +256,0.0002,0.509952,0.646144,0.631808,0.605184 +512,0.0002,0.518144,0.663552,0.638976,0.620544 +1024,0.0005,0.584704,0.69632,0.641024,0.60928 +2048,0.0009,0.879616,0.736256,0.674816,0.98304 +4096,0.0019,0.553984,0.796672,0.708608,0.652288 +8192,0.0036,0.591872,0.821248,0.845824,0.683008 +16384,0.0067,0.83968,1.15507,0.831488,0.836608 +32768,0.0186,1.01274,1.2329,1.21549,1.22573 +65536,0.0363,1.39571,1.61178,1.85958,1.49811 +131072,0.6003,2.59277,2.56922,3.12832,2.9696 +262144,1.2051,4.28442,3.93728,4.95309,4.50867 +524288,2.3414,7.69126,7.8121,8.32,8.01485 +1048576,4.7618,15.0149,14.4937,13.8854,15.4204 +2097152,8.8741,29.0939,28.5645,26.7356,27.4094 +4194304,19.9503,57.3563,55.7722,53.8276,53.8849 +8388608,37.3785,114.538,111.236,105.154,105.783 +16777216,75.3217,231.162,224.411,210.296,210.813 +33554432,147.232,464.357,437.47,421.463,420.056 +67108864,297.046,935.332,899.477,850.74,842.088 +16,0.0002,0.572416,0.676864,0.68608,0.657408 +32,0.0002,0.607232,0.75264,0.724992,0.72704 +64,0.0001,0.81408,0.809984,0.668672,1.05165 +128,0.0001,0.485376,0.782336,0.709632,0.729088 +256,0.0002,0.625664,0.785408,0.723968,0.720896 +512,0.0003,0.534528,0.840704,0.740352,0.748544 +1024,0.0004,0.530432,0.8192,0.769024,0.784384 +2048,0.001,0.535552,0.822272,0.708608,0.991232 +4096,0.0019,0.572416,0.955392,0.75776,0.85504 +8192,0.0055,0.600064,0.932864,0.987136,0.790528 +16384,0.0073,0.857088,1.14483,1.05472,0.884736 +32768,0.0166,0.914432,1.2759,1.16838,1.24621 +65536,0.0388,1.37421,1.72646,2.66035,1.51245 +131072,0.7339,2.29581,2.80883,2.79962,3.33824 +262144,1.1745,4.22093,4.2025,4.28851,4.736 +524288,2.4098,7.7783,7.79469,8.03533,8.23296 +1048576,6.0921,14.8275,14.9146,14.6217,14.8941 +2097152,9.364,29.0816,28.9526,27.007,27.3869 +4194304,17.9992,56.6231,55.9462,54.3805,53.6125 +8388608,36.6749,114.108,110.837,104.777,104.873 +16777216,78.3793,229.328,218.39,210.705,210.308 +33554432,147.342,463.755,446.629,425.032,419.012 +67108864,290.604,939.321,884.455,849.796,842.099 +16,0.0001,0.663552,0.87552,0.903168,0.918528 +32,0.0001,0.648192,0.75264,0.7424,0.763904 +64,0.0002,0.45568,0.816128,0.786432,0.801792 +128,0.0001,0.582656,0.755712,0.712704,0.708608 +256,0.0002,0.664576,0.726016,0.681984,0.72192 +512,0.0003,0.498688,0.809984,0.713728,0.712704 +1024,0.0004,0.622592,0.843776,0.715776,0.741376 +2048,0.001,0.616448,0.935936,0.746496,0.749568 +4096,0.0019,0.868352,1.01478,0.804864,0.75776 +8192,0.0032,0.585728,1.4336,0.794624,0.869376 +16384,0.0081,0.923648,1.26157,0.856064,0.929792 +32768,0.018,1.17146,1.28717,1.12026,1.21549 +65536,0.037,1.42643,1.70189,2.3767,1.60563 +131072,0.5837,2.33984,2.60915,2.62144,3.47238 +262144,1.208,4.40013,4.16973,4.41344,5.0432 +524288,2.4929,7.93498,7.77216,7.87046,8.2944 +1048576,4.4361,15.6303,15.1183,14.1824,14.4855 +2097152,9.0443,29.4676,29.055,27.6562,28.4897 +4194304,18.8164,57.8458,57.0665,53.7436,53.2961 +8388608,40.7567,113.842,111.496,105.87,105.746 +16777216,78.5254,230.135,223.699,211.804,210.474 +33554432,155.797,465.633,436.208,424.893,424.977 +67108864,294.363,939.965,898.231,851.188,846.601 +16,0.0001,0.664576,0.763904,0.792576,0.8192 +32,0.0002,0.57344,0.77824,1.17862,0.774144 +64,0.0002,0.720896,0.775168,0.672768,0.692224 +128,0.0001,0.497664,0.830464,0.731136,0.749568 +256,0.0002,0.590848,0.831488,0.690176,0.722944 +512,0.0135,0.546816,0.933888,0.663552,0.674816 +1024,0.0005,0.572416,0.826368,0.750592,0.600064 +2048,0.0139,0.525312,0.739328,0.676864,0.622592 +4096,0.002,0.594944,0.73728,0.71168,0.65024 +8192,0.0031,0.987136,0.806912,0.754688,0.69632 +16384,0.0075,0.774144,0.99328,0.832512,0.804864 +32768,0.0163,1.02912,1.22266,1.06291,1.00147 +65536,0.038,1.41824,1.63226,1.42746,1.39366 +131072,0.5858,2.23437,2.43917,2.52314,2.95322 +262144,1.1692,4.224,4.02842,4.8343,4.74214 +524288,2.4203,7.91142,7.83565,7.9104,8.70093 +1048576,4.6036,15.3682,14.8644,14.8593,14.6954 +2097152,9.0483,28.5829,28.7242,27.2282,27.6306 +4194304,17.9825,58.2113,55.1772,53.2531,53.6125 +8388608,39.7236,114.511,110.617,105.685,104.945 +16777216,79.9202,229.294,218.27,211.17,211.543 +33554432,148.433,464.553,445.982,420.244,420.845 +67108864,296.297,935.353,884.274,848.206,839.632 +16,0.0001,0.60928,0.64512,0.784384,0.756736 +32,0.0001,0.70656,0.766976,0.905216,0.676864 +64,0.0002,0.534528,0.580608,0.668672,0.718848 +128,0.0002,0.576512,0.628736,0.7936,0.882688 +256,0.0001,0.612352,0.815104,0.674816,0.62976 +512,0.0003,0.625664,0.77312,0.709632,0.728064 +1024,0.0004,0.545792,0.80384,0.748544,0.728064 +2048,0.001,0.555008,0.681984,0.864256,0.77312 +4096,0.002,0.613376,0.791552,0.743424,0.667648 +8192,0.0033,0.736256,0.935936,0.749568,0.707584 +16384,0.0069,0.820224,1.01581,0.843776,0.968704 +32768,0.0167,1.33939,1.20525,1.0537,1.00762 +65536,0.0377,1.41312,1.61792,1.43565,1.39469 +131072,0.5853,2.24358,2.42176,2.50573,2.91021 +262144,1.3692,4.21478,4.38477,4.3479,4.71654 +524288,2.3418,7.62778,7.4752,7.8889,8.32819 +1048576,4.4384,15.6334,15.0743,14.892,14.6084 +2097152,9.2642,28.7314,28.5819,27.4565,27.9306 +4194304,17.9068,57.0388,57.1648,53.1087,53.0289 +8388608,43.2932,113.439,110.324,106.97,105.72 +16777216,74.2488,229.676,225.693,210.074,210.693 +33554432,153.134,464.885,436.747,425.819,419.733 +67108864,297.023,936.063,903.173,850.392,846.979 +16,0.0001,0.68608,0.595968,0.617472,0.95232 +32,0.0001,0.556032,0.939008,0.919552,0.861184 +64,0.0001,0.482304,0.755712,0.77824,0.77312 +128,0.0002,0.52224,0.848896,1.06803,0.806912 +256,0.0001,0.509952,0.837632,0.821248,0.785408 +512,0.0002,0.847872,0.73728,0.787456,0.817152 +1024,0.0005,0.671744,0.848896,0.816128,0.789504 +2048,0.001,0.662528,0.915456,0.800768,0.745472 +4096,0.0019,0.715776,0.987136,1.69165,0.774144 +8192,0.0031,0.64512,0.919552,0.806912,0.820224 +16384,0.0072,1.34246,1.04755,0.929792,0.90112 +32768,0.0166,1.40698,1.31482,1.1008,1.19706 +65536,0.0402,1.42541,1.91386,1.4336,1.4889 +131072,0.5849,2.32038,2.51392,2.55181,3.05152 +262144,1.112,4.40013,4.07859,5.0647,4.74214 +524288,2.4395,8.0599,7.62061,7.6073,8.24627 +1048576,4.6828,15.1695,14.3503,14.6216,15.0456 +2097152,8.8735,28.7703,28.6638,26.8032,27.4924 +4194304,20.2305,57.5488,55.7998,53.4958,53.4026 +8388608,37.6744,115.282,111.313,104.993,106.251 +16777216,79.4497,230.929,219.497,210.831,211.89 +33554432,146.165,463.857,445.78,422.54,420.605 +67108864,292.568,934.812,883.378,848.842,838.439 +16,0.0001,0.585728,0.893952,0.930816,1.60256 +32,0.0001,0.641024,1.04858,0.950272,0.753664 +64,0.0001,0.489472,0.731136,0.728064,0.736256 +128,0.0002,0.729088,0.812032,0.72192,1.06598 +256,0.0002,0.509952,0.799744,0.744448,0.738304 +512,0.0006,0.560128,0.76288,0.740352,0.715776 +1024,0.0005,0.543744,0.912384,0.743424,0.71168 +2048,0.001,0.644096,0.883712,0.815104,0.740352 +4096,0.0019,0.986112,0.77824,0.735232,1.65274 +8192,0.0032,0.868352,0.891904,0.753664,0.685056 +16384,0.0069,0.830464,1.00966,0.903168,0.80896 +32768,0.0166,1.00045,1.21651,1.04448,1.01069 +65536,0.0334,1.41517,1.5575,1.37114,1.39162 +131072,0.5855,2.21901,2.42483,2.50573,3.93626 +262144,1.2866,4.02022,4.01818,4.33459,5.47328 +524288,2.3537,7.73734,7.51002,8.25754,8.2944 +1048576,5.6833,14.975,15.5085,14.7446,14.3268 +2097152,10.8787,28.7314,28.2225,27.4012,26.8411 +4194304,19.6461,57.8447,56.3261,52.9603,53.6586 +8388608,40.4327,114.533,111.435,106.242,104.671 +16777216,79.5389,230.137,225.399,210.41,211.315 +33554432,149.066,464.285,436.237,423.85,419.744 +67108864,295.692,935.56,898.617,849.192,842.251 +16,0,0.611328,0.83968,0.86528,0.888832 +32,0.0002,0.579584,0.769024,0.741376,0.80384 +64,0.0001,0.603136,0.718848,0.759808,0.722944 +128,0.0003,0.76288,0.786432,0.674816,0.632832 +256,0.0003,0.647168,0.766976,0.730112,0.736256 +512,0.0003,0.5632,0.864256,0.678912,0.756736 +1024,0.0004,0.518144,0.668672,0.828416,0.77824 +2048,0.001,0.587776,1.43462,0.776192,0.771072 +4096,0.002,0.626688,1.0025,0.804864,0.72704 +8192,0.0071,0.672768,1.09261,0.78848,0.804864 +16384,0.0073,0.741376,1.08339,0.908288,1.09773 +32768,0.019,0.951296,1.14483,1.14074,1.07827 +65536,0.0393,1.42643,1.75616,1.53498,1.75104 +131072,0.5854,2.56205,2.51699,2.8457,3.09248 +262144,1.1692,4.56499,4.04685,4.69606,4.69811 +524288,2.4089,7.71379,7.47418,7.95648,8.12851 +1048576,4.4375,14.7558,14.7128,14.5172,15.4624 +2097152,9.5297,29.1574,29.3652,27.1391,28.6147 +4194304,19.1924,57.4484,55.8735,53.249,54.0703 +8388608,36.3258,113.776,110.515,104.03,105.52 +16777216,81.1201,229.254,219.255,211.971,211.724 +33554432,153.315,464.144,443.636,423.599,422.217 +67108864,294.263,936.15,884.803,847.863,843.295 +16,0,0.428032,0.826368,0.831488,0.653312 +32,0.0001,0.586752,0.692224,0.70656,0.72704 +64,0.0001,0.462848,0.799744,0.861184,0.72192 +128,0.0001,0.515072,0.874496,0.896,0.986112 +256,0.0001,0.607232,0.806912,0.928768,0.776192 +512,0.0136,0.651264,0.974848,0.896,0.699392 +1024,0.0005,0.551936,0.852992,0.731136,0.702464 +2048,0.001,0.638976,0.850944,0.765952,0.738304 +4096,0.002,0.730112,0.835584,0.876544,0.80896 +8192,0.0041,0.615424,0.925696,0.98816,0.795648 +16384,0.0073,0.801792,1.10182,0.914432,0.889856 +32768,0.0167,1.42746,1.3056,1.15917,1.06906 +65536,0.0386,1.41619,1.70803,2.27635,1.49504 +131072,0.5845,2.36442,2.81498,2.52928,3.20307 +262144,1.174,4.21683,4.87731,4.33766,5.10976 +524288,2.9982,7.60832,8.29542,7.79776,8.46029 +1048576,4.6805,15.0118,14.8367,14.6883,14.8429 +2097152,9.3689,29.4482,28.2952,27.2712,28.3392 +4194304,18.0817,57.4802,55.5889,52.905,52.6766 +8388608,37.048,112.532,110.453,106.31,105.513 +16777216,74.8984,229.753,224.34,210.937,212.375 +33554432,146.794,463.147,435.774,423.769,420.933 +67108864,302.2,933.113,898.601,848.739,845.28 +16,0.0001,0.673792,0.851968,0.799744,0.644096 +32,0.0001,0.52736,0.958464,0.746496,0.71168 +64,0.0001,0.509952,0.792576,0.73728,0.72192 +128,0.0001,0.592896,0.924672,0.77824,0.763904 +256,0.0001,0.534528,0.809984,1.024,0.735232 +512,0.0004,0.712704,0.806912,0.734208,0.746496 +1024,0.0004,0.516096,0.809984,0.861184,0.827392 +2048,0.0018,0.6144,0.982016,0.924672,0.83968 +4096,0.002,0.772096,0.845824,0.935936,0.992256 +8192,0.0031,0.617472,0.980992,0.943104,0.898048 +16384,0.0075,0.746496,1.08749,1.00659,1.02605 +32768,0.0172,0.971776,1.50016,1.15712,1.26259 +65536,0.041,1.46637,2.11149,1.65376,1.59539 +131072,0.5865,2.17907,2.48832,2.7904,3.30547 +262144,1.2028,4.53222,4.09088,4.33664,5.0217 +524288,2.34,7.90528,7.64109,7.96262,8.22682 +1048576,4.571,14.8378,14.6811,14.1322,14.4968 +2097152,9.1156,29.182,28.7846,27.1227,27.7647 +4194304,19.1642,57.215,55.9555,53.8634,53.2541 +8388608,35.9602,114.144,110.363,106.002,106.117 +16777216,77.1243,230.163,216.136,209.618,211.588 +33554432,149.249,463.353,443.711,423.618,419.23 +67108864,291.874,935.427,880.231,849.103,839.075 +16,0.0001,0.572416,0.909312,1.60051,0.913408 +32,0.0002,0.570368,0.770048,0.704512,0.601088 +64,0.0001,0.49152,0.802816,0.748544,1.02298 +128,0.0001,0.530432,1.25235,0.75264,0.71168 +256,0.0002,0.539648,0.802816,0.90624,0.809984 +512,0.0003,0.490496,0.800768,0.735232,0.679936 +1024,0.0005,0.566272,0.8448,0.73728,0.690176 +2048,0.001,0.592896,0.965632,0.775168,0.740352 +4096,0.0019,0.526336,0.85504,0.78848,0.979968 +8192,0.0033,0.626688,1.18784,1.01171,0.765952 +16384,0.0069,0.723968,1.0537,0.95232,1.01171 +32768,0.0167,1.0199,1.26054,1.152,1.24928 +65536,0.0431,1.36909,1.81555,1.47149,1.62611 +131072,0.6024,2.2569,2.49344,2.73203,3.1447 +262144,1.1692,4.25062,4.17075,5.10464,4.72269 +524288,2.4086,7.77011,7.66259,7.81414,8.18688 +1048576,5.8738,14.4896,15.0159,14.5705,14.8316 +2097152,9.4245,29.4595,28.8993,26.9599,27.6777 +4194304,19.2795,56.3405,56.5094,53.6607,52.863 +8388608,40.3651,115.42,110.542,106.625,106.761 +16777216,83.5668,229.78,223.204,212.356,209.743 +33554432,150.721,465.71,436.517,423.712,420.809 +67108864,296.368,935.313,895.354,849.399,842.863 +16,0.0001,0.566272,0.918528,0.937984,0.90624 +32,0.0001,0.510976,0.760832,0.671744,0.715776 +64,0.0001,0.616448,0.772096,0.71168,0.684032 +128,0.0001,0.5376,0.805888,0.723968,0.756736 +256,0.0002,0.571392,0.787456,0.795648,0.769024 +512,0.0002,0.548864,0.828416,0.908288,0.753664 +1024,0.0004,0.784384,0.799744,0.723968,0.724992 +2048,0.001,0.497664,0.900096,0.741376,0.710656 +4096,0.002,0.589824,0.974848,1.02605,0.728064 +8192,0.0031,0.642048,0.922624,0.817152,0.899072 +16384,0.0072,1.1008,1.04755,1.01478,0.990208 +32768,0.0164,1.17862,1.26054,1.19706,1.20627 +65536,0.0391,1.59027,1.68653,1.43155,1.55443 +131072,0.5856,2.18624,2.47091,2.53338,3.01363 +262144,1.1736,4.5824,4.2025,4.52301,5.1968 +524288,2.342,7.936,8.27597,7.57555,8.06093 +1048576,4.6831,15.0508,14.6309,14.2316,14.7282 +2097152,9.1163,29.3048,29.0324,26.5943,28.074 +4194304,18.9278,57.727,55.9892,53.7416,53.5921 +8388608,36.3455,114.594,109.753,106.264,105.376 +16777216,77.3548,229.608,219.067,211.329,219.995 +33554432,148.532,463.794,445.027,424.309,418.461 +67108864,289.166,936.522,885.794,849.526,844.961 +16,0.0001,0.672768,0.769024,0.786432,1.01581 +32,0.0003,0.505856,0.800768,0.734208,0.707584 +64,0.0001,0.531456,0.787456,0.739328,0.698368 +128,0.0001,0.523264,0.82432,0.954368,0.704512 +256,0.0002,0.64,0.740352,0.726016,0.657408 +512,0.0003,0.4864,0.872448,0.784384,0.758784 +1024,0.0005,0.526336,0.772096,0.768,0.595968 +2048,0.001,0.55808,0.748544,0.68096,0.62464 +4096,0.002,0.633856,0.78336,0.702464,0.64 +8192,0.0031,0.63488,0.92672,0.744448,0.719872 +16384,0.0068,0.760832,1.00147,0.838656,0.80384 +32768,0.0164,1.04346,1.20013,1.0455,1.00762 +65536,0.0329,1.42438,1.6384,1.99782,1.38752 +131072,0.5861,2.24154,2.432,2.54362,2.95117 +262144,1.1734,4.64691,3.9936,4.53222,5.2183 +524288,2.4849,8.42138,7.47213,7.52333,8.28109 +1048576,4.6852,14.8152,15.2207,14.7005,14.5562 +2097152,9.6923,29.1205,28.8881,27.095,27.1258 +4194304,19.3863,57.6481,56.8494,54.018,52.5302 +8388608,36.5026,114.348,110.717,106.348,106.382 +16777216,75.7468,230.344,224.036,212.823,210.659 +33554432,145.191,465.158,435.747,423.936,421.262 +67108864,293.501,936.18,899.381,848.853,841.668 +16,0.0001,0.764928,0.74752,0.830464,0.724992 +32,0.0001,0.728064,0.615424,0.672768,0.65536 +64,0.0001,0.45568,0.738304,0.712704,0.702464 +128,0.0002,0.62976,0.80384,0.730112,0.703488 +256,0.0001,0.621568,0.918528,0.772096,0.65536 +512,0.0003,0.596992,0.759808,1.18579,0.770048 +1024,0.0004,0.530432,0.813056,0.707584,0.777216 +2048,0.001,0.543744,1.12128,0.679936,0.569344 +4096,0.002,0.668672,0.795648,0.703488,0.841728 +8192,0.0031,0.584704,0.796672,0.688128,0.699392 +16384,0.0073,0.774144,1.00659,0.965632,1.02912 +32768,0.0205,1.00966,1.35373,1.31379,2.27328 +65536,0.0376,1.40698,2.53338,1.83808,1.60563 +131072,0.6003,2.7648,2.7095,2.7945,2.98803 +262144,1.3103,4.78618,4.15232,4.48922,5.1712 +524288,2.5571,7.936,7.8377,7.2704,7.84589 +1048576,5.6024,14.4824,14.3145,13.8342,13.8783 +2097152,9.8827,28.6833,29.3499,26.966,27.1329 +4194304,19.8792,57.6666,55.6431,53.634,53.8388 +8388608,42.103,113.417,111.069,105.777,105.529 +16777216,78.0536,230.674,219.667,212.092,209.295 +33554432,148.874,464.983,448.275,419.85,420.681 +67108864,291.851,936.04,885.939,848.642,840.985 +16,0.0001,0.649216,0.89088,0.787456,0.746496 +32,0.0001,0.555008,0.731136,0.69632,0.736256 +64,0.0001,0.729088,0.84992,0.713728,0.77824 +128,0.0001,0.498688,1.22573,0.734208,0.730112 +256,0.0002,0.533504,0.795648,0.728064,0.673792 +512,0.0002,0.540672,0.807936,1.24314,0.73728 +1024,0.0005,0.854016,0.800768,0.690176,1.20627 +2048,0.001,0.545792,1.80122,0.781312,0.715776 +4096,0.0019,0.610304,0.919552,0.76288,0.745472 +8192,0.0031,0.637952,0.928768,0.745472,0.68096 +16384,0.0069,0.82944,0.996352,0.841728,1.13869 +32768,0.0166,1.024,1.23187,1.03322,1.0711 +65536,0.035,1.44896,1.63123,1.40083,1.90566 +131072,0.5853,2.18419,2.45043,2.53235,2.96653 +262144,1.3075,4.2199,4.01408,5.36883,4.7831 +524288,2.2179,8.0128,7.54688,8.10394,8.43878 +1048576,5.0182,15.2463,14.4978,14.2408,14.6872 +2097152,9.052,29.0632,28.6136,27.2701,27.5466 +4194304,19.3508,57.2119,56.3005,53.6197,53.0698 +8388608,38.7918,114.241,110.066,105.928,103.758 +16777216,79.2077,230.431,224.208,211.326,210.275 +33554432,151.998,462.89,433.913,425.367,420.732 +67108864,298.852,935.794,898.057,851.958,837.428 +16,0,0.60928,0.641024,0.722944,0.866304 +32,0.0001,0.596992,0.74752,0.786432,0.689152 +64,0.0001,0.523264,0.815104,0.700416,0.72704 +128,0.0001,0.523264,0.784384,0.985088,0.881664 +256,0.0002,0.794624,0.85504,0.877568,0.796672 +512,0.0004,0.671744,0.837632,0.971776,0.753664 +1024,0.0004,0.66048,0.774144,0.719872,1.14893 +2048,0.001,0.627712,0.970752,0.877568,0.685056 +4096,0.0019,0.559104,1.00966,0.745472,0.760832 +8192,0.0032,0.648192,0.935936,0.873472,0.806912 +16384,0.0073,0.813056,1.06803,0.927744,0.93696 +32768,0.0164,1.09773,1.30662,1.11206,1.26566 +65536,0.0395,1.52064,1.73773,1.4633,1.83706 +131072,0.5855,2.40538,2.44019,2.83136,3.0679 +262144,1.1697,4.57626,4.03866,4.47795,4.81075 +524288,2.6625,7.9657,7.52333,7.4967,8.04966 +1048576,4.4373,14.8101,14.422,14.4312,14.1793 +2097152,8.8719,29.483,29.2065,27.5159,26.9404 +4194304,19.6802,57.6389,55.6534,53.0883,53.161 +8388608,38.4906,114.32,111.701,105.756,106.345 +16777216,76.9532,229.632,217.967,210.307,210.084 +33554432,145.335,464.206,446.372,423.489,422.629 +67108864,295.291,934.259,883.012,850.809,842.982 +16,0.0001,0.608256,0.638976,0.705536,0.683008 +32,0.0002,0.621568,0.681984,0.714752,0.740352 +64,0.0001,0.577536,0.766976,0.7168,0.73216 +128,0.0002,0.509952,0.786432,0.740352,1.0025 +256,0.0001,0.651264,1.03117,0.749568,0.714752 +512,0.0002,0.546816,0.779264,0.949248,0.705536 +1024,0.0004,0.656384,0.758784,0.713728,0.693248 +2048,0.001,0.703488,0.951296,0.776192,0.73216 +4096,0.0019,0.610304,0.990208,0.818176,0.785408 +8192,0.0032,0.78848,0.917504,1.0537,0.827392 +16384,0.0076,0.959488,1.12026,0.937984,0.903168 +32768,0.0162,1.05165,1.29843,1.3271,1.18784 +65536,0.0378,1.39674,1.87904,1.45715,1.46842 +131072,0.5859,2.21082,2.53338,2.58355,3.11501 +262144,1.2067,4.28339,4.08064,4.54861,4.78003 +524288,2.3525,7.94931,7.79264,7.91859,8.56576 +1048576,5.8241,14.8183,14.7272,14.4282,14.6862 +2097152,9.1207,28.9413,28.4836,26.9056,26.8595 +4194304,19.3522,57.7219,57.3368,52.9224,53.0504 +8388608,37.5202,113.647,112.046,105.944,104.948 +16777216,79.1651,229.782,222.821,210.619,211.947 +33554432,149.135,463.912,434.755,423.771,420.891 +67108864,291.139,937.433,899.613,849.672,845.296 +16,0.0001,0.59392,0.754688,0.790528,0.822272 +32,0.0001,0.669696,0.64,0.685056,0.736256 +64,0.0002,0.493568,0.723968,0.700416,0.730112 +128,0.0001,0.58368,0.719872,0.7936,0.70144 +256,0.0001,0.533504,0.648192,0.633856,0.59392 +512,0.0003,0.566272,0.671744,0.636928,0.612352 +1024,0.0005,0.88576,0.653312,0.581632,0.835584 +2048,0.0023,0.671744,0.758784,0.678912,0.644096 +4096,0.0035,0.6144,0.712704,0.689152,0.69632 +8192,0.0032,0.6656,0.932864,0.746496,0.704512 +16384,0.0071,0.830464,1.01786,0.831488,1.00147 +32768,0.0165,0.968704,1.23392,1.03424,0.999424 +65536,0.0366,1.43053,2.32858,1.43565,1.39264 +131072,0.5868,2.18624,2.39104,2.39104,2.95731 +262144,1.1742,4.20762,4.32742,4.33869,4.75955 +524288,2.3423,7.64416,8.13158,7.79162,8.22477 +1048576,4.4364,15.9273,14.5521,14.5388,14.6954 +2097152,9.7367,28.8297,30.3002,27.1288,26.9875 +4194304,18.2921,57.4474,56.8801,54.1266,53.2388 +8388608,40.8872,115.182,109.966,106.244,104.836 +16777216,72.2401,230.7,217.829,211.231,210.211 +33554432,147.511,465.616,444.194,425.609,420.065 +67108864,295.125,938.768,883.881,848.816,839.939 +16,0.0001,0.541696,0.749568,0.82432,0.775168 +32,0.0002,0.41984,0.805888,0.781312,0.719872 +64,0.0001,0.479232,0.818176,0.70656,0.678912 +128,0.0002,0.538624,1.08032,0.750592,0.669696 +256,0.0002,0.514048,0.775168,0.708608,0.73216 +512,0.0003,0.623616,0.601088,0.576512,0.587776 +1024,0.0005,0.541696,0.704512,0.657408,0.606208 +2048,0.001,0.561152,0.744448,0.69632,0.621568 +4096,0.002,0.55808,0.789504,0.703488,0.661504 +8192,0.0032,0.647168,0.859136,0.759808,0.6912 +16384,0.0069,0.766976,0.905216,0.777216,0.7424 +32768,0.0206,1.0137,1.37728,1.03219,0.997376 +65536,0.0389,1.38854,1.63738,1.43155,1.39059 +131072,0.5828,2.21901,2.57126,2.50778,3.11603 +262144,1.1732,4.13798,4.00282,4.39296,5.00019 +524288,2.856,7.6503,8.10291,7.46086,7.79981 +1048576,4.438,15.0824,15.1951,14.378,14.8521 +2097152,9.0394,28.9229,29.4236,27.0858,27.5169 +4194304,18.1548,56.9672,56.7777,52.822,53.5235 +8388608,37.735,113.715,111.018,105.127,106.258 +16777216,78.1823,230.051,222.956,211.968,211.827 +33554432,149.297,463.632,435.767,422.475,421.841 +67108864,294.147,933.405,899.723,850.181,841.224 +16,0.0001,0.59904,0.8704,0.939008,0.914432 +32,0.0001,0.715776,0.80896,1.73978,0.751616 +64,0.0001,0.585728,0.820224,0.694272,0.715776 +128,0.0001,0.633856,0.779264,0.685056,1.01171 +256,0.0002,0.618496,0.846848,0.636928,0.684032 +512,0.0004,0.611328,0.820224,0.789504,1.05472 +1024,0.0005,0.533504,1.08237,0.745472,0.748544 +2048,0.0009,0.695296,0.825344,1.06086,0.743424 +4096,0.0019,0.857088,1.02093,0.787456,0.816128 +8192,0.0032,0.653312,1.24211,0.753664,0.685056 +16384,0.007,0.759808,0.990208,0.84992,0.81408 +32768,0.016,0.97792,1.22266,1.80224,1.00352 +65536,0.0376,1.43872,1.63942,1.44384,1.39059 +131072,0.6738,2.18522,2.52826,2.5344,2.95526 +262144,1.1684,4.58035,4.01818,4.33869,4.87219 +524288,3.2724,7.8377,7.57658,7.59296,8.44902 +1048576,4.4392,15.9744,15.234,14.0431,14.5132 +2097152,8.9608,29.994,28.4037,27.8876,27.4463 +4194304,19.3772,57.2355,55.3697,52.907,53.2347 +8388608,39.1082,114.422,110.558,106.895,105.416 +16777216,74.664,233.151,220.921,210.644,211.815 +33554432,147.252,463.461,446.852,425.111,420.121 +67108864,296.116,935.962,881.738,847.008,843.707 +16,0.0001,0.667648,0.827392,0.805888,0.792576 +32,0.0001,0.62464,0.794624,1.54317,0.866304 +64,0.0001,0.449472,0.746496,0.729088,0.726016 +128,0.0001,0.592896,0.781312,0.741376,1.21446 +256,0.0002,0.508928,0.95232,0.789504,0.745472 +512,0.0003,0.502784,0.840704,0.769024,0.733184 +1024,0.0005,0.65536,0.80896,0.956416,0.736256 +2048,0.001,0.795648,0.918528,0.738304,0.704512 +4096,0.0019,0.812032,0.974848,0.76288,0.765952 +8192,0.0035,0.652288,1.65478,0.801792,0.78848 +16384,0.0069,0.909312,1.01888,0.845824,0.812032 +32768,0.0164,0.969728,1.15302,1.04038,1.64557 +65536,0.0403,1.36806,1.6128,1.42438,1.6681 +131072,0.5851,2.44019,2.44122,2.68595,2.93581 +262144,1.1678,4.54246,3.91168,4.36736,4.72576 +524288,3.2064,8.19917,7.73939,7.5561,8.38144 +1048576,4.4389,15.0528,15.5208,14.3012,15.0764 +2097152,9.1108,28.4723,28.4979,27.8979,27.1124 +4194304,18.9324,58.5083,56.7736,53.1087,53.8153 +8388608,38.1801,114.357,111.605,105.124,104.804 +16777216,77.3751,230.682,222.962,210.641,210.894 +33554432,145.359,464.675,436.724,423.856,420.383 +67108864,300.869,928.279,900.605,854.161,841.892 +16,0.0001,0.611328,0.748544,0.712704,0.759808 +32,0.0001,0.695296,0.697344,0.636928,0.743424 +64,0.0001,0.52224,0.622592,0.625664,0.867328 +128,0.0001,0.497664,0.86528,0.695296,0.643072 +256,0.0002,0.73728,0.804864,0.62976,0.602112 +512,0.0003,0.531456,0.688128,0.635904,0.600064 +1024,0.0004,0.510976,0.646144,0.66048,0.591872 +2048,0.001,0.571392,0.707584,0.621568,0.948224 +4096,0.002,0.596992,1.10592,0.697344,0.672768 +8192,0.0034,0.631808,0.863232,1.00045,0.712704 +16384,0.007,1.03014,1.00762,0.83968,0.989184 +32768,0.0164,0.970752,1.2329,1.04346,1.36294 +65536,0.0392,1.43053,1.62918,1.43872,1.39162 +131072,0.5848,2.26611,2.432,2.51802,3.13754 +262144,1.1735,4.20659,4.26803,5.21523,4.71552 +524288,2.3546,7.58272,8.07936,7.85306,8.05069 +1048576,4.4376,14.9699,14.9432,14.0646,14.3442 +2097152,8.8743,29.2966,29.7155,26.6394,26.8616 +4194304,18.7351,57.7137,56.3302,53.1948,53.7754 +8388608,39.2063,114.984,110.6,105.623,105.58 +16777216,81.1555,229.859,219.378,211.703,213.227 +33554432,148.936,464.583,441.842,423.88,423.727 +67108864,290.905,932.865,884.873,848.797,840.488 +16,0.0001,0.66048,0.953344,0.932864,1.02912 +32,0.0001,0.447488,0.730112,0.709632,0.656384 +64,0.0001,0.456704,0.690176,0.740352,0.713728 +128,0.0001,0.672768,0.78336,0.677888,0.713728 +256,0.0002,0.519168,0.744448,0.83456,0.826368 +512,0.0004,0.723968,0.830464,0.945152,0.731136 +1024,0.0004,0.543744,0.825344,0.695296,0.74752 +2048,0.0021,0.536576,0.978944,1.06701,0.623616 +4096,0.0019,0.58368,0.791552,0.699392,0.751616 +8192,0.0031,0.644096,1.29741,0.75264,0.699392 +16384,0.0074,0.765952,1.00557,0.845824,0.841728 +32768,0.0171,0.991232,1.23392,1.29946,0.996352 +65536,0.0396,1.45715,1.60973,1.60461,1.39366 +131072,0.5848,2.21696,2.43917,2.73818,2.92762 +262144,1.1681,4.05811,3.91373,4.26803,5.2439 +524288,2.3427,8.00563,8.06093,7.77933,8.56371 +1048576,4.6379,14.9258,15.1624,13.9633,14.9914 +2097152,8.8733,29.1021,27.8313,27.8743,28.1334 +4194304,19.8822,57.6614,55.767,53.6709,55.4875 +8388608,36.9008,115.069,110.388,107.179,105.356 +16777216,72.9444,231.926,223.464,209.308,209.439 +33554432,150.206,462.287,435.931,421.733,419.258 +67108864,294.753,937.645,897.235,852.462,837.352 +16,0.0001,0.695296,0.843776,0.864256,0.818176 +32,0.0001,0.652288,0.740352,0.703488,0.689152 +64,0.0002,0.524288,0.777216,0.785408,0.751616 +128,0.0001,0.543744,0.823296,0.905216,0.862208 +256,0.0001,0.567296,0.585728,0.632832,0.59392 +512,0.0002,0.519168,0.681984,0.643072,0.63488 +1024,0.0004,0.57344,0.699392,0.663552,0.598016 +2048,0.0141,0.557056,0.7424,0.690176,0.620544 +4096,0.0019,0.598016,0.79872,0.702464,0.681984 +8192,0.003,0.915456,0.949248,0.854016,0.91136 +16384,0.0086,0.851968,1.00352,0.842752,0.80384 +32768,0.0167,1.00659,1.24109,1.04346,0.999424 +65536,0.0354,1.43053,1.64147,1.82272,1.42746 +131072,0.5852,2.24461,2.77811,2.5129,2.99827 +262144,1.1731,4.22195,4.10317,4.33766,4.73498 +524288,2.4085,7.61651,7.40557,7.7783,8.56883 +1048576,4.4385,14.9453,14.549,13.9336,15.0241 +2097152,9.6023,29.4154,28.7734,26.4243,27.221 +4194304,18.211,58.1581,55.0062,53.3268,53.4426 +8388608,37.5299,114.532,110.447,107.069,105.244 +16777216,76.2051,230.544,220.188,210.317,209.904 +33554432,148.124,464.238,446.728,423.106,421.305 +67108864,295.243,932.154,884.189,851.316,844.799 +16,0.0001,0.636928,0.590848,0.620544,0.587776 +32,0.0001,0.529408,0.653312,0.720896,1.14586 +64,0.0003,0.448512,0.637952,0.633856,0.586752 +128,0.0001,0.49152,0.632832,0.656384,0.595968 +256,0.0002,0.499712,0.646144,0.764928,0.598016 +512,0.0003,0.574464,0.62976,0.565248,0.59904 +1024,0.0005,0.923648,0.646144,0.664576,1.04038 +2048,0.001,0.54784,0.75776,0.695296,0.631808 +4096,0.002,0.586752,0.72704,0.80896,0.637952 +8192,0.0031,0.652288,0.937984,0.769024,0.687104 +16384,0.0072,0.771072,1.00966,0.83968,0.831488 +32768,0.0167,1.18374,1.18067,0.958464,0.950272 +65536,0.0327,1.7408,1.63226,1.4336,1.39674 +131072,0.5853,2.21184,2.3808,2.5385,2.96346 +262144,1.1678,4.47283,3.97824,4.36736,4.75443 +524288,2.34,7.8551,7.68614,7.4455,7.85306 +1048576,4.6409,15.0764,14.7917,14.6115,14.9811 +2097152,8.8714,29.4584,28.8532,27.3981,27.7074 +4194304,19.7795,57.3215,57.174,54.0559,53.1302 +8388608,39.2116,115.7,109.781,105.39,105.392 +16777216,78.7709,230.698,224.212,210.234,209.599 +33554432,148.081,464.517,436.061,424.333,422.462 +67108864,292.315,935.764,899.449,847.859,840.012 +16,0.0001,0.662464,0.854016,0.785408,0.745472 +32,0.0001,0.566272,0.806912,0.761856,0.738304 +64,0.0001,0.743424,0.857088,0.86016,0.884736 +128,0.0133,0.520192,0.769024,0.7168,1.2544 +256,0.0002,0.534528,0.812032,0.709632,0.73728 +512,0.0003,0.55808,1.08544,0.765952,0.724992 +1024,0.0005,0.557056,1.65069,0.74752,0.617472 +2048,0.001,0.560128,1.24826,0.60928,0.625664 +4096,0.0021,0.596992,0.776192,0.656384,0.677888 +8192,0.003,0.605184,0.93696,0.77312,0.714752 +16384,0.0074,0.80896,0.997376,1.14483,0.812032 +32768,0.0163,0.970752,1.21651,1.03936,1.01683 +65536,0.0367,1.41722,1.64659,1.44179,1.39366 +131072,1.2036,2.19648,2.64602,2.54464,3.39763 +262144,1.2009,4.31616,4.19533,4.5609,5.10259 +524288,2.3527,7.59398,7.40966,8.17971,8.2473 +1048576,4.4357,14.9791,15.0589,15.1276,14.4835 +2097152,9.0461,30.0882,28.886,27.3818,28.2337 +4194304,18.591,57.1402,55.1936,53.9515,54.4205 +8388608,37.5492,115.222,110.266,107.067,105.313 +16777216,74.53,229.948,218.941,211.211,209.848 +33554432,147.792,466.9,445.344,425.973,418.157 +67108864,296.914,936.286,885.807,851.012,845.808 +16,0,0.651264,0.638976,0.710656,0.763904 +32,0.0001,1.07315,0.903168,0.821248,0.688128 +64,0.0001,1.08032,0.805888,0.659456,0.719872 +128,0.0002,0.632832,0.786432,0.730112,0.995328 +256,0.0002,0.62464,0.74752,0.74752,0.733184 +512,0.0003,0.484352,0.677888,0.66048,0.546816 +1024,0.0004,0.723968,0.62976,0.5888,0.840704 +2048,0.0009,0.562176,0.743424,0.714752,0.96768 +4096,0.002,0.594944,0.78336,0.705536,0.649216 +8192,0.0031,0.632832,0.852992,0.769024,0.694272 +16384,0.0088,0.770048,0.997376,0.841728,0.802816 +32768,0.0166,0.979968,1.20934,1.04346,0.997376 +65536,0.0328,1.59949,1.56058,1.42541,1.31891 +131072,0.6013,2.3849,2.44634,2.50061,2.94707 +262144,1.1678,4.5865,4.01613,4.28954,4.93568 +524288,2.3521,7.71584,7.54586,7.83872,8.35584 +1048576,5.8758,15.3958,15.1644,14.0032,14.5428 +2097152,9.1727,28.9229,27.9654,27.2609,26.7868 +4194304,20.2278,58.3762,56.7255,54.9949,53.9064 +8388608,38.0519,113.212,110.259,105.96,105.997 +16777216,74.7777,230.857,224.546,213.669,209.109 +33554432,147.329,464.306,434.974,422.868,420.347 +67108864,291.695,936.82,897.184,847.474,842.775 +16,0,0.703488,0.912384,0.939008,0.664576 +32,0.0003,0.590848,0.846848,0.759808,0.702464 +64,0.0001,0.52224,0.760832,0.73216,0.678912 +128,0.0001,0.548864,0.777216,0.94208,0.735232 +256,0.0001,0.556032,0.78848,0.751616,0.83968 +512,0.0003,0.557056,0.782336,0.704512,0.781312 +1024,0.0004,0.518144,1.06086,0.765952,0.75776 +2048,0.001,0.587776,0.949248,1.12128,0.687104 +4096,0.002,0.703488,0.87552,0.755712,0.736256 +8192,0.0031,0.661504,0.925696,0.8192,0.823296 +16384,0.0072,0.899072,1.07725,0.902144,0.904192 +32768,0.0167,1.04243,1.31072,1.12947,1.03834 +65536,0.0379,1.51245,1.71622,1.50323,1.4592 +131072,0.6644,2.21491,2.88256,2.54669,4.09805 +262144,1.2057,4.38272,4.39706,4.47283,5.04218 +524288,2.3421,7.57658,7.55098,8.07014,8.22886 +1048576,4.4366,14.8142,15.191,14.2326,14.5132 +2097152,9.4599,29.3192,29.2024,27.2916,27.5773 +4194304,18.1768,57.6031,55.1844,53.0811,53.3207 +8388608,41.3023,113.602,110.385,106.174,104.651 +16777216,77.8979,230.395,219.806,209.693,211.713 +33554432,148.646,464.11,445.577,418.842,421.624 +67108864,298.471,938.157,886.785,850.446,845.1 +16,0.0001,0.6656,0.756736,0.777216,0.804864 +32,0.0002,0.566272,0.649216,0.806912,0.765952 +64,0.0001,1.27181,0.8192,0.676864,0.6912 +128,0.0001,0.52224,0.735232,0.72704,0.702464 +256,0.0002,0.628736,0.806912,0.712704,0.720896 +512,0.0003,0.544768,0.7936,0.748544,0.600064 +1024,0.0004,0.56832,0.714752,0.647168,0.603136 +2048,0.001,0.553984,0.741376,1.08134,0.666624 +4096,0.002,0.582656,0.780288,0.709632,0.720896 +8192,0.0031,0.632832,0.856064,0.750592,0.697344 +16384,0.0071,0.794624,1.36909,0.78848,0.7424 +32768,0.0184,0.999424,1.21344,1.04448,0.937984 +65536,0.0488,1.4039,1.62816,1.5319,1.408 +131072,0.5857,2.24051,2.4535,2.54054,2.95936 +262144,1.1736,4.01818,3.968,4.33971,5.12 +524288,2.3431,8.34867,8.48691,7.46701,7.97389 +1048576,4.4372,15.1511,14.8552,14.2469,15.102 +2097152,9.5654,29.6632,28.2378,26.4776,27.3674 +4194304,19.1666,57.1607,56.8218,53.4467,53.802 +8388608,37.8003,113.801,111.627,105.882,104.924 +16777216,77.9504,229.738,222.783,210.832,211.418 +33554432,145.132,463.611,437.979,422.785,420.013 +67108864,295.048,936.955,900.435,850.951,842.034 +16,0.0001,0.657408,0.888832,0.945152,0.910336 +32,0.0001,0.642048,0.825344,0.79872,0.78848 +64,0.0002,0.73216,0.869376,0.72704,0.847872 +128,0.0002,0.519168,0.792576,0.7168,0.679936 +256,0.0002,0.500736,0.837632,0.984064,0.756736 +512,0.0002,0.515072,0.78848,0.709632,0.718848 +1024,0.0005,1.03322,0.815104,0.735232,1.03424 +2048,0.001,0.667648,0.914432,0.75776,0.730112 +4096,0.0019,0.635904,1.00147,0.772096,0.796672 +8192,0.0039,0.688128,0.887808,0.77312,0.702464 +16384,0.0069,0.832512,0.989184,0.835584,0.820224 +32768,0.0169,1.28102,1.23392,1.03834,0.9984 +65536,0.0384,1.8217,1.63328,1.44691,1.39674 +131072,0.586,2.2743,2.44634,2.52723,2.93069 +262144,1.237,4.03763,3.97107,4.31206,4.72474 +524288,2.3559,7.63187,7.63392,7.89094,8.31181 +1048576,4.4369,15.1009,14.8552,14.2572,14.3503 +2097152,9.3672,29.2547,28.9751,27.1708,27.947 +4194304,18.1537,57.815,55.7537,53.9197,53.8655 +8388608,37.3251,114.406,111.16,105.967,105.087 +16777216,78.4687,230.307,218.911,211.214,211.836 +33554432,148.673,463.482,447.217,422.616,422.379 +67108864,295.068,935.839,884.811,850.528,841.556 +16,0.0001,0.728064,0.929792,0.891904,0.796672 +32,0.0002,0.668672,1.33325,0.99328,0.579584 +64,0.0001,0.494592,0.610304,0.633856,0.605184 +128,0.0001,0.49152,0.567296,0.572416,0.589824 +256,0.0003,0.49152,0.644096,0.90624,0.867328 +512,0.0003,0.507904,0.687104,0.932864,0.591872 +1024,0.0005,0.538624,0.697344,0.64,0.605184 +2048,0.0009,0.559104,0.762848,0.679936,0.612352 +4096,0.002,0.551936,0.779264,0.700416,0.636928 +8192,0.0035,0.633856,0.876544,0.745472,0.693248 +16384,0.0068,0.768,1.01274,1.21446,1.04653 +32768,0.0187,1.33325,1.15405,0.971776,1.23392 +65536,0.0336,1.41312,1.62918,1.43053,1.99475 +131072,0.5852,2.21594,2.44531,2.51802,2.93581 +262144,1.2025,4.38477,4.02944,4.44211,4.78106 +524288,2.8797,7.8551,8.26778,7.51002,8.11725 +1048576,4.7446,14.8879,14.9811,14.932,14.2131 +2097152,10.7843,28.8215,28.4785,27.0623,27.2527 +4194304,17.9552,56.8156,57.9359,53.3412,53.889 +8388608,37.7674,114.782,111.489,103.676,107.452 +16777216,80.7148,230.05,222.167,211.175,209.921 +33554432,150.311,466.073,435.843,420.149,421.135 +67108864,293.5,938.776,905.475,849.579,842.055 +16,0.0001,0.708608,0.900096,0.948224,0.896 +32,0.0001,0.577536,0.769024,0.902144,0.896 +64,0.0001,0.584704,0.872448,0.971776,0.928768 +128,0.0002,0.69632,0.659456,0.964608,0.897024 +256,0.0001,0.47616,0.845824,0.760832,0.792576 +512,0.0002,0.483328,0.953344,0.67584,0.741376 +1024,0.0004,0.663552,0.809984,0.714752,0.692224 +2048,0.001,0.687104,0.959488,0.925696,0.678912 +4096,0.002,0.602112,0.791552,0.699392,0.683008 +8192,0.0032,0.64,0.873472,0.749568,0.697344 +16384,0.007,0.796672,1.04243,0.861184,0.811008 +32768,0.0163,1.01683,1.22778,1.06496,0.94208 +65536,0.0358,1.78074,1.56365,1.43667,1.38957 +131072,0.5846,2.19648,2.43917,2.5559,2.91635 +262144,1.1698,4.72678,3.96493,4.32845,4.70733 +524288,3.3771,8.17664,7.49875,7.52333,8.28621 +1048576,4.6415,14.7159,14.8234,14.4968,14.2858 +2097152,9.0392,28.6464,29.2157,27.7893,27.223 +4194304,19.7469,57.8007,55.508,54.0385,53.6381 +8388608,35.7936,114.947,110.115,105.809,106.851 +16777216,76.4362,229.775,218.21,210.177,211.495 +33554432,144.432,464.949,443.669,422.969,422.03 +67108864,292.47,939.922,883.346,851.708,840.958 +16,0.0001,0.59904,0.924672,0.940032,0.994304 +32,0.0001,0.693248,0.868352,0.940032,0.894976 +64,0.0001,0.45568,0.751616,0.914432,0.83456 +128,0.0002,0.790528,0.827392,0.733184,0.741376 +256,0.0002,0.528384,0.816128,0.688128,0.978944 +512,0.0003,0.666624,0.785408,0.707584,0.648192 +1024,0.0005,0.649216,0.812032,0.724992,0.679936 +2048,0.001,0.586752,0.966656,0.77824,0.67584 +4096,0.0019,0.690176,0.989184,0.76288,0.816128 +8192,0.0031,0.70144,0.980992,0.809984,0.782336 +16384,0.0071,0.927744,1.30662,0.955392,0.90112 +32768,0.0164,1.01171,1.28102,1.13766,1.08646 +65536,0.0375,1.41005,2.1033,1.47046,1.53088 +131072,0.5853,2.30093,2.5088,2.5385,3.072 +262144,1.3516,4.1769,4.0919,5.16301,4.77184 +524288,2.3427,7.76294,7.56122,7.62061,8.28006 +1048576,4.6678,14.9146,14.9463,14.5459,14.4026 +2097152,9.8457,29.27,28.5133,26.5912,27.3951 +4194304,18.5244,57.6553,55.6728,53.2552,55.1455 +8388608,37.6329,114.259,111.435,104.818,105.59 +16777216,74.5059,229.488,225.416,211.455,213.388 +33554432,150.023,463.461,436.093,425.286,424.933 +67108864,291.47,938.227,899.64,851.49,840.315 +16,0.0001,0.667648,0.736256,0.746496,0.73728 +32,0.0003,0.635904,0.794624,0.689152,0.59904 +64,0.0001,0.505856,0.617472,0.626688,0.62976 +128,0.0002,0.494592,0.643072,0.628736,0.58368 +256,0.0002,0.545792,0.842752,0.646144,0.584704 +512,0.0003,0.489472,0.674816,0.65024,0.590848 +1024,0.0005,0.509952,0.70144,0.643072,0.59904 +2048,0.0008,0.674816,0.782336,0.685056,0.631808 +4096,0.002,0.585728,0.785408,0.703488,0.64512 +8192,0.0031,0.636928,0.91136,0.749568,0.678912 +16384,0.0073,0.768,0.999424,0.78848,0.7424 +32768,0.0538,0.975872,1.16019,1.06086,1.01376 +65536,0.0405,1.43053,1.78586,1.42643,1.38957 +131072,0.5854,2.63475,2.43917,2.83443,2.91533 +262144,1.1687,4.35814,3.93728,4.31206,4.92646 +524288,2.9115,9.03782,7.98413,7.70458,8.14182 +1048576,4.4366,15.3364,14.2305,14.6862,14.5398 +2097152,9.4837,29.7359,29.1174,26.9701,26.7018 +4194304,20.2417,57.8458,56.6764,53.0575,53.5388 +8388608,36.6623,114.073,110.712,105.218,105.548 +16777216,80.0242,230.728,218.693,210.834,209.083 +33554432,146.723,463.835,443.475,423.553,421.431 +67108864,293.588,938.538,880.776,849.199,841.012 +16,0.0001,0.70144,0.790528,0.807936,0.673792 +32,0.0161,0.560128,0.800768,0.709632,0.935936 +64,0.0002,0.57856,0.802816,0.969728,0.859136 +128,0.0002,0.759808,0.78848,0.72192,0.894976 +256,0.0002,0.838656,0.729088,0.699392,0.923648 +512,0.0003,0.531456,0.7424,0.690176,0.797696 +1024,0.0005,0.666624,0.786432,0.743424,0.722944 +2048,0.001,0.683008,1.13254,0.804864,0.708608 +4096,0.0019,0.746496,1.92205,0.781312,0.784384 +8192,0.0032,0.60416,1.11616,0.840704,0.77824 +16384,0.007,0.799744,0.990208,0.861184,0.822272 +32768,0.0164,0.969728,1.22675,1.04141,1.00147 +65536,0.038,1.41926,1.74899,1.42643,1.38854 +131072,0.585,2.5344,2.44838,2.5856,2.93376 +262144,1.1691,4.48819,3.99258,4.37658,4.76979 +524288,2.6286,8.14694,7.53971,7.49875,8.34355 +1048576,4.4367,14.9934,14.9504,15.2217,14.8255 +2097152,8.8741,29.2157,27.8682,26.6394,28.0371 +4194304,18.4275,58.283,56.5238,53.2777,53.0217 +8388608,39.3215,114.595,110.246,107.241,105.221 +16777216,73.2063,228.773,223.795,210.596,210.819 +33554432,154.076,462.974,436.615,423.51,419.656 +67108864,297.191,936.5,899.327,849.803,840.334 +16,0.0001,0.659456,0.837632,0.836608,0.781312 +32,0.0001,0.63488,0.74752,0.909312,0.729088 +64,0.0001,0.525312,0.785408,0.626688,0.598016 +128,0.0002,0.451584,0.600064,0.730112,0.46592 +256,0.0002,0.507904,0.70656,0.567296,0.538624 +512,0.0002,0.521216,0.618496,0.746496,0.612352 +1024,0.0005,0.5376,0.71168,0.649216,0.620544 +2048,0.001,0.82432,0.733184,0.689152,1.24006 +4096,0.002,0.559104,0.772096,0.703488,1.12026 +8192,0.0032,0.635904,0.879616,0.687104,0.692224 +16384,0.007,0.7424,1.00659,0.838656,0.804864 +32768,0.0164,1.0199,1.31277,0.98816,0.94208 +65536,0.0393,1.39366,1.64147,1.43053,1.39264 +131072,0.5852,2.23949,2.44736,2.51904,2.9481 +262144,1.17,4.20352,4.01715,4.62541,4.81792 +524288,2.3538,7.8039,7.76602,7.62266,8.50739 +1048576,4.438,14.933,14.5664,14.4947,15.063 +2097152,9.0299,28.926,28.5082,26.9988,26.9722 +4194304,18.5012,57.5744,56.4173,54.1573,53.3914 +8388608,36.4056,114.816,111.237,105.55,106.353 +16777216,79.2248,229.752,217.449,211.524,212.074 +33554432,145.652,464.923,445.563,423.809,420.58 +67108864,290.427,937.445,881.697,848.919,843.649 +16,0.0001,0.615424,0.805888,0.85504,0.822272 +32,0.0001,0.681984,0.800768,0.751616,0.779264 +64,0.0001,0.458752,0.774144,1.04346,0.71168 +128,0.0002,0.48128,0.815104,0.902144,0.748544 +256,0.0001,0.529408,0.79872,0.730112,1.00662 +512,0.0002,0.54272,0.941056,0.720896,0.70656 +1024,0.0005,0.546816,1.49709,0.744448,0.764928 +2048,0.001,0.596992,0.971776,0.871424,0.768 +4096,0.002,0.734208,0.88064,0.902144,0.64 +8192,0.0031,0.642048,0.937984,0.744448,0.949248 +16384,0.007,0.806912,1.03731,0.836608,0.813056 +32768,0.0166,0.976896,1.56365,1.03731,0.999424 +65536,0.038,1.40902,1.85651,1.43565,1.38752 +131072,0.5856,2.22106,2.43712,2.83238,3.04128 +262144,1.1719,4.20454,4.10931,4.31206,4.98176 +524288,2.3534,7.68205,7.6841,8.05274,8.08653 +1048576,4.4369,15.2115,14.8654,14.6719,14.4937 +2097152,9.4768,29.1011,29.3857,26.8595,26.8739 +4194304,18.3334,57.2447,56.746,53.7928,53.504 +8388608,40.6461,115.396,110.423,105.947,106.794 +16777216,77.5513,232.298,223.721,211.266,210.02 +33554432,148.425,463.29,436.07,423.755,421.522 +67108864,291.957,935.428,900.441,849.251,839.955 +16,0.0001,0.662528,0.758784,0.795648,0.84992 +32,0.0001,0.472064,0.827392,0.756736,0.717824 +64,0.0001,0.488448,0.78336,0.923648,0.904192 +128,0.0002,0.685056,0.774144,1.01171,0.734208 +256,0.0002,0.882688,0.779264,0.744448,0.705536 +512,0.0002,0.493568,1.51347,0.719872,0.683008 +1024,0.0005,0.503808,0.842752,0.743424,0.688128 +2048,0.001,0.722944,0.945152,0.77824,0.712704 +4096,0.0019,0.920576,1.01683,0.772096,0.805888 +8192,0.0031,0.637952,0.937984,0.822272,0.745472 +16384,0.0073,0.811008,1.1223,0.919552,0.892928 +32768,0.021,1.05574,1.28717,1.05267,1.04346 +65536,0.0388,1.42643,1.7152,1.50118,1.45408 +131072,0.5833,2.20979,2.5385,2.58253,3.0761 +262144,1.1723,4.27213,4.05197,4.3305,4.7616 +524288,2.3547,7.64819,7.56838,9.49043,8.1193 +1048576,4.4362,15.0139,14.1261,14.4538,14.4077 +2097152,10.1236,29.5916,28.4621,27.2087,27.906 +4194304,19.164,56.8596,55.7353,53.7518,53.3258 +8388608,35.8954,114.572,110.326,106.073,105.84 +16777216,78.8352,229.898,218.707,210.95,211.986 +33554432,147.654,462.97,444.897,422.648,422.729 +67108864,291.536,937.584,885.025,840.717,846.36 +16,0.0001,0.594944,0.869376,0.859136,1.08749 +32,0.0001,0.617472,0.714752,0.68608,0.719872 +64,0.0001,0.935936,0.812032,0.786432,0.679936 +128,0.0002,0.487424,0.86016,0.789504,0.710656 +256,0.0001,0.474112,1.1223,0.718848,0.720896 +512,0.0003,0.546816,0.78336,0.753664,0.733184 +1024,0.0005,0.572416,0.86016,0.710656,0.700416 +2048,0.001,0.927744,0.851968,0.7168,0.643072 +4096,0.0021,0.590848,0.817152,0.704512,0.643072 +8192,0.0031,0.689152,0.86528,0.748544,0.687104 +16384,0.0072,0.769024,1.0025,0.843776,0.804864 +32768,0.0166,0.959488,1.23187,1.28819,0.9984 +65536,0.0326,1.4592,1.64762,1.49914,1.42643 +131072,0.5859,2.18522,2.88256,2.60608,3.07814 +262144,1.1706,4.53734,4.02842,4.31104,4.95514 +524288,3.505,7.64621,7.58477,7.52026,8.03533 +1048576,4.4368,14.8634,14.6606,13.8404,15.0108 +2097152,9.0193,29.6131,28.9864,27.5139,27.5384 +4194304,18.4972,56.9395,56.4685,53.1948,53.2163 +8388608,37.8309,114.506,110.164,105.522,105.06 +16777216,74.5008,229.827,225.621,208.255,209.113 +33554432,146.013,463.438,435.22,423.829,420.785 +67108864,299.022,933.997,901.009,851.376,843.772 +16,0.0001,0.57344,0.817152,0.840704,0.789504 +32,0.0001,0.572416,0.801792,0.7424,0.70656 +64,0.0002,0.4864,0.755712,0.748544,0.736256 +128,0.0002,0.536576,0.775168,0.728064,0.681984 +256,0.0002,0.658432,0.78336,0.666624,0.647168 +512,0.0006,0.521216,0.82432,0.785408,0.734208 +1024,0.0004,0.770048,0.827392,0.63488,0.60416 +2048,0.001,0.557056,0.76288,0.67584,0.646144 +4096,0.0032,0.562176,0.746496,0.8448,0.669696 +8192,0.0031,0.6144,0.88064,0.687104,0.720896 +16384,0.0071,0.766976,1.31174,0.845824,0.817152 +32768,0.0168,0.968704,1.24006,1.03424,1.02707 +65536,0.0366,1.36602,1.62099,1.60563,1.38752 +131072,0.5862,2.23232,2.41664,2.50163,2.92966 +262144,1.1731,4.62848,3.9127,4.38989,4.71962 +524288,2.4207,7.62368,7.37997,7.48954,8.01894 +1048576,4.4366,15.2289,13.9674,15.1839,15.0364 +2097152,8.8753,29.0232,29.2506,27.2302,27.4964 +4194304,18.4913,58.3291,55.1209,53.3596,54.6755 +8388608,41.0339,114.458,110.591,105.849,105.133 +16777216,78.1409,228.725,219.739,210.699,211.296 +33554432,149.54,464.554,447.506,423.775,420.321 +67108864,292.042,931.971,885.183,844.709,841.899 +16,0.0001,0.712704,0.838656,0.944128,0.896 +32,0.0001,0.68096,0.807936,0.75776,0.72704 +64,0.0001,0.488448,0.6144,0.64512,0.592896 +128,0.0001,0.49664,0.627712,0.631808,0.555008 +256,0.0001,0.503808,0.596992,0.575488,0.519168 +512,0.0002,0.561152,0.663552,0.740352,0.589824 +1024,0.0005,0.621568,0.70656,0.65024,0.622592 +2048,0.001,0.570368,0.748544,0.68096,0.622592 +4096,0.0019,0.577536,0.794624,0.708608,0.64512 +8192,0.0031,0.900096,0.899072,0.746496,0.902144 +16384,0.0106,0.761856,0.93696,0.79872,1.07418 +32768,0.0194,0.9728,1.2288,1.06291,0.941056 +65536,0.0354,1.55034,1.75104,1.69984,1.65478 +131072,0.5828,2.2487,2.43712,2.50675,3.17645 +262144,1.1753,4.18509,4.12979,4.3264,4.81485 +524288,2.3525,7.88685,7.69946,7.96672,8.56166 +1048576,4.6854,15.1245,14.9852,14.6924,15.1347 +2097152,8.873,29.1553,28.1754,27.3664,27.0469 +4194304,19.6248,56.8013,56.5627,54.6406,54.3683 +8388608,37.7779,115.442,111.501,105.332,105.571 +16777216,75.807,229.787,222.014,210.534,209.908 +33554432,152.136,464.406,436.558,423.963,422.142 +67108864,294.87,937.036,899.821,849.128,841.782 +16,0.0001,0.572416,0.826368,0.935936,0.904192 +32,0.0001,0.673792,0.740352,0.733184,0.797696 +64,0.0001,0.635904,0.764928,0.740352,0.67584 +128,0.0001,0.61952,0.776192,0.744448,0.677888 +256,0.0002,0.508928,0.763904,0.851968,0.731136 +512,0.0003,0.627712,0.782336,0.666624,0.877568 +1024,0.0004,0.664576,1.32301,0.735232,0.745472 +2048,0.001,0.581632,0.95232,0.928768,0.731136 +4096,0.0019,0.894976,0.929792,0.750592,0.871424 +8192,0.0031,0.644096,1.37011,0.832512,0.779264 +16384,0.0069,0.766976,1.00864,0.833536,0.806912 +32768,0.0191,0.974848,1.2288,1.03424,1.00045 +65536,0.0384,1.36499,1.64352,1.43258,1.40595 +131072,0.6401,2.22106,2.77197,2.50163,3.77856 +262144,1.2024,4.3049,3.98746,4.34278,4.83738 +524288,2.3429,7.86842,7.72096,7.43014,8.04966 +1048576,4.4347,15.2187,14.805,14.0636,14.4753 +2097152,9.2525,29.737,28.8768,27.2835,27.8538 +4194304,18.6123,58.0936,56.3569,53.3658,54.5321 +8388608,41.6469,114.024,109.814,105.466,105.843 +16777216,71.6103,231.288,218.589,211.226,210.399 +33554432,148.582,466.302,447.061,423.977,421.132 +67108864,299.149,937.24,885.735,847.851,840.354 +16,0.0001,0.577536,0.72192,0.720896,0.70656 +32,0.0001,0.425984,0.678912,0.726016,0.751616 +64,0.0001,0.50688,0.826368,0.73216,0.759808 +128,0.0001,0.52224,0.836608,0.689152,0.736256 +256,0.0001,0.514048,1.02298,0.748544,0.726016 +512,0.0002,0.516096,0.775168,0.714752,0.7424 +1024,0.0005,0.570368,0.786432,0.780288,0.59392 +2048,0.0009,0.5888,0.749568,0.67584,0.6656 +4096,0.002,0.586752,0.7936,0.700416,0.673792 +8192,0.003,0.689152,0.85504,0.760832,0.694272 +16384,0.0069,0.771072,0.93184,0.859136,0.817152 +32768,0.0164,1.0025,1.19091,1.2759,1.24928 +65536,0.0388,1.47558,1.76333,1.64557,1.69165 +131072,0.8089,2.20467,2.90509,2.51597,3.19386 +262144,1.1736,4.20454,4.20557,4.33357,4.74726 +524288,2.3409,7.80288,7.73222,7.89402,8.82586 +1048576,4.6668,15.1654,14.8644,14.8163,14.6432 +2097152,9.3712,29.1758,28.3075,27.1862,27.0449 +4194304,18.0943,57.7516,56.8596,53.7446,54.1112 +8388608,39.7184,114.974,111.706,106.71,105.048 +16777216,79.8045,229.941,222.075,210.652,210.102 +33554432,148.192,463.582,432.721,422.207,424.569 +67108864,290.397,933.826,900.699,848.34,838.196 +16,0.0001,0.617472,0.790528,0.934912,0.900096 +32,0.0001,0.72192,0.845824,0.795648,0.761856 +64,0.0001,0.858112,0.850944,0.92672,0.897024 +128,0.0001,0.637952,0.779264,0.751616,0.707584 +256,0.0001,0.524288,0.789504,0.703488,0.779264 +512,0.0003,0.612352,0.776192,1.02605,0.719872 +1024,0.0004,0.553984,0.851968,0.708608,1.1223 +2048,0.001,0.621568,1.44691,0.91136,0.692224 +4096,0.002,0.557056,1.01376,1.23699,0.770048 +8192,0.0031,0.651232,1.09466,1.03731,0.8192 +16384,0.0072,0.812032,1.00659,0.832512,0.82432 +32768,0.016,1.33018,1.22982,1.03629,1.00045 +65536,0.0388,1.62099,1.64454,1.42336,1.39878 +131072,0.5856,2.24563,2.41766,2.67674,2.75661 +262144,1.1703,4.49126,4.00794,4.52813,4.71859 +524288,2.5942,8.07629,7.40557,7.44858,7.97286 +1048576,4.4812,14.636,14.4538,14.2428,14.7917 +2097152,9.2812,29.5137,29.5485,26.9046,27.3172 +4194304,19.1505,57.3286,55.6001,54.0324,53.1108 +8388608,41.3566,114.852,109.193,106.536,105.36 +16777216,73.8712,230.112,219.355,212.428,209.314 +33554432,149.808,463.667,446.163,424.505,419.104 +67108864,294.33,936.374,880.817,848.865,842.589 +16,0.0001,0.613376,0.626688,0.710656,0.688128 +32,0.0003,0.612352,0.799744,0.751616,0.71168 +64,0.0001,0.49152,0.735232,0.739328,0.723968 +128,0.0001,0.50176,0.730112,1.16634,0.729088 +256,0.0002,0.652288,0.811008,0.726016,0.991232 +512,0.0003,0.564224,0.6144,0.631808,0.607232 +1024,0.0005,0.508928,0.70144,0.64512,0.610304 +2048,0.001,0.55296,0.738304,0.68608,0.612352 +4096,0.0019,0.582656,0.7936,0.70656,0.643072 +8192,0.0032,0.603136,0.90112,0.857088,0.68608 +16384,0.0069,0.867328,0.992256,0.833536,0.795648 +32768,0.016,1.51962,1.21344,1.03117,1.21344 +65536,0.0396,1.4121,1.82374,1.52781,1.93434 +131072,0.5827,2.46477,2.46374,2.5344,2.95731 +262144,1.1688,4.1984,3.98643,4.76262,4.70221 +524288,2.4619,8.04966,7.41888,7.45472,8.13466 +1048576,4.4374,15.1368,15.06,14.1834,15.1194 +2097152,11.3818,28.5798,28.375,27.646,27.522 +4194304,18.568,59.3142,56.6682,53.803,53.0883 +8388608,37.8887,114.075,111.609,105.665,105.297 +16777216,78.0317,230.79,223.984,210.418,211.782 +33554432,149.375,465.16,435.891,423.924,419.838 +67108864,293.663,935.763,899.941,848.692,841.521 +16,0.0001,0.524288,0.685056,0.709632,0.66048 +32,0.0001,0.692224,1.36602,0.917504,0.902144 +64,0.0001,0.490496,0.823296,0.9216,0.7424 +128,0.0002,0.576512,0.822272,0.731136,0.688128 +256,0.0002,0.613376,0.776192,0.717824,0.782336 +512,0.0003,0.534528,0.702464,0.642048,0.601088 +1024,0.0005,0.545792,0.700416,0.64,0.608256 +2048,0.001,0.651264,0.684032,0.683008,0.811008 +4096,0.0019,0.584704,0.792576,0.703488,0.67584 +8192,0.0031,0.648192,0.857088,0.745472,0.68096 +16384,0.0071,0.769024,1.0025,0.846848,0.80896 +32768,0.0157,1.32096,1.21344,1.04755,1.43462 +65536,0.0391,1.44384,1.63533,1.43053,1.41005 +131072,0.5856,2.2784,2.44736,2.79654,2.93683 +262144,1.1717,4.26189,3.97414,4.97357,4.57626 +524288,2.4105,7.61139,7.66054,8.16435,8.29747 +1048576,4.4376,15.1992,15.0354,14.0554,14.4916 +2097152,8.9916,29.4021,29.398,27.0971,27.2937 +4194304,20.1855,57.4771,55.8244,53.8737,53.9689 +8388608,39.4862,114.56,110.462,106.797,105.665 +16777216,77.2671,231.229,219.344,212.653,209.174 +33554432,149.294,465.783,446.744,425.758,419.993 +67108864,296.495,936.703,882.431,846.396,841.032 +16,0.0001,0.579584,0.815104,0.971776,0.930816 +32,0.0002,0.65024,0.780288,0.905216,0.693248 +64,0.0001,0.489472,0.761856,0.689152,0.730112 +128,0.0001,0.473024,0.758784,0.755712,0.95744 +256,0.0004,0.649216,0.673792,0.67072,0.702464 +512,0.0005,0.523264,0.69632,1.2032,0.591872 +1024,0.0004,0.55296,0.695296,0.649216,1.19501 +2048,0.0009,0.546816,0.996352,0.673792,0.626688 +4096,0.002,0.591872,0.807936,0.708608,0.664576 +8192,0.0031,0.71168,0.925696,0.749568,0.705504 +16384,0.007,0.915456,1.0199,0.843776,0.80896 +32768,0.0184,0.949248,1.44077,0.989184,0.940032 +65536,0.037,1.41414,2.15245,1.43667,1.38854 +131072,0.5852,2.24154,2.4535,2.52211,3.06176 +262144,1.1733,4.20352,4.31206,4.33766,4.7831 +524288,2.3428,7.6032,8.2217,7.93088,8.30464 +1048576,4.4377,14.6954,14.8357,14.2438,14.5121 +2097152,10.9751,29.1185,28.5645,27.4135,26.7377 +4194304,19.1931,58.2871,57.1955,52.9316,53.845 +8388608,37.2873,114.251,112.338,105.711,105.159 +16777216,79.3004,229.744,224.03,210.44,212.776 +33554432,146.6,465.069,438.054,423.963,420.327 +67108864,291.476,933.826,899.627,849.436,842.34 +16,0.0001,0.745472,0.846848,0.775168,0.795648 +32,0.0001,0.590848,0.914432,0.719872,0.774144 +64,0.0001,0.519168,0.784384,1.05267,0.743424 +128,0.0002,0.566272,0.728064,0.7424,1.32198 +256,0.0002,0.54272,1.09261,0.714752,0.729088 +512,0.0003,0.528384,1.72646,0.724992,0.688128 +1024,0.0004,0.580608,0.7936,0.694272,0.779264 +2048,0.001,0.565248,0.975872,0.801792,0.730112 +4096,0.0019,0.712704,1.01069,0.750592,0.779264 +8192,0.0031,0.786432,0.93696,0.98816,0.791552 +16384,0.0074,0.738304,1.20832,2.07872,0.941056 +32768,0.0165,1.0711,1.31891,1.44998,1.08749 +65536,0.0388,1.58106,1.70189,1.78893,1.43462 +131072,0.586,2.19034,3.31162,2.53338,3.31162 +262144,1.1736,4.23526,4.11955,4.32128,4.82304 +524288,2.3404,7.68614,7.54381,7.87149,8.80026 +1048576,4.4388,14.7825,14.7773,14.7743,14.7886 +2097152,11.0208,28.7396,28.5327,26.6322,28.3699 +4194304,18.9857,57.4986,55.6093,53.5142,54.7031 +8388608,37.2301,114.194,109.684,106.627,105.116 +16777216,79.386,230.549,218.855,209.076,210.568 +33554432,149.533,463.914,445.046,423.505,420.498 +67108864,289.498,932.276,884.351,847.359,843.585 +16,0.0001,0.731136,0.734208,0.886784,0.91136 +32,0.0001,0.621568,0.73728,0.692224,0.902144 +64,0.0001,0.512,0.806912,0.7168,0.704512 +128,0.0002,0.488448,1.0199,0.763904,0.70656 +256,0.0002,0.518144,0.777216,0.713728,0.756736 +512,0.0005,0.603136,0.813056,0.642048,0.589824 +1024,0.0005,0.533504,0.713728,0.638976,0.59904 +2048,0.001,0.621568,0.68096,0.695296,1.3015 +4096,0.002,0.585728,0.790528,0.705536,0.649216 +8192,0.0031,0.646144,1.28922,0.749568,0.681984 +16384,0.0071,0.769024,0.995328,0.861184,0.81408 +32768,0.0395,0.9728,1.20422,1.04858,0.9984 +65536,0.038,1.37421,1.94867,1.36909,1.32608 +131072,0.5839,2.26816,2.47706,2.5344,2.96448 +262144,1.1757,4.03558,4.0151,4.29466,4.77286 +524288,2.3503,7.72403,7.57043,8.03635,8.01997 +1048576,4.955,14.7937,14.976,14.4876,14.72 +2097152,8.8737,29.5066,28.0934,26.625,26.8442 +4194304,19.9253,57.9727,56.2606,53.8327,53.5347 +8388608,37.1167,114.83,110.787,105.629,104.877 +16777216,81.7435,229.821,223.769,211.94,210.492 +33554432,145.575,465.268,436.794,423.242,421.256 +67108864,298.909,937.393,900.824,849.522,841.359 +16,0.0001,0.628736,0.782336,0.75264,0.735232 +32,0.0001,0.53248,0.756736,0.965632,0.671744 +64,0.0001,0.60416,0.704512,0.70144,0.692224 +128,0.0001,0.521216,0.784384,0.741376,0.763904 +256,0.0002,0.5376,0.795648,0.791552,0.745472 +512,0.0003,0.566272,0.791552,0.713728,0.708608 +1024,0.0005,0.533504,0.80896,0.75264,0.718848 +2048,0.001,0.70656,0.931776,0.777216,0.995328 +4096,0.0019,0.596992,1.03219,0.794624,0.760832 +8192,0.0035,0.669696,1.0455,0.889856,0.840704 +16384,0.0072,0.791552,1.05779,0.937984,0.937984 +32768,0.0159,0.97792,1.2841,1.32506,1.08134 +65536,0.0407,1.44896,1.73978,1.50118,1.45715 +131072,0.5833,2.28966,2.59891,2.56819,3.19795 +262144,1.602,4.23014,4.47795,4.33357,4.84966 +524288,2.3522,7.89299,7.60013,8.21862,8.02406 +1048576,4.4374,14.7651,14.6944,14.5265,14.4261 +2097152,9.0588,29.3396,28.8307,27.7658,27.902 +4194304,18.8722,57.2948,55.2479,53.4252,53.7774 +8388608,39.4999,114.75,110.496,105.788,105.06 +16777216,76.9839,228.871,218.206,211.905,210.509 +33554432,149.059,464.975,443.439,422.668,420.736 +67108864,291.253,935.737,883.943,849.388,844.955 +16,0.0001,0.592896,0.893952,0.9472,0.84992 +32,0.0002,0.63488,0.71168,0.827392,0.869376 +64,0.0002,0.452608,0.5632,0.628736,0.602112 +128,0.0002,0.451584,0.638976,0.626688,0.596992 +256,0.0002,0.499712,0.65024,0.635904,0.598016 +512,0.0003,0.512,0.726016,0.8448,0.864256 +1024,0.0426,0.81408,0.702464,0.64512,0.605184 +2048,0.001,0.55808,0.684032,0.88576,0.649216 +4096,0.002,0.586752,0.786432,0.70144,0.67584 +8192,0.0031,1.32813,0.9216,0.748544,0.791552 +16384,0.0078,0.766976,1.02093,0.83968,0.820224 +32768,0.0163,0.973824,1.21242,1.13254,1.00454 +65536,0.0325,1.43872,1.61894,1.61997,1.39776 +131072,0.6804,2.20672,2.45146,2.52109,3.09453 +262144,1.2744,4.19635,3.98643,4.70938,4.69709 +524288,2.5526,8.12237,7.6841,8.19917,7.78342 +1048576,4.6976,14.9801,14.6975,15.0641,14.9412 +2097152,8.9949,29.9745,28.4078,27.3582,27.3971 +4194304,19.552,57.8406,56.788,53.6812,54.0805 +8388608,36.3874,115.178,111.618,105.352,105.975 +16777216,76.2666,229.418,224.564,210.208,209.792 +33554432,148.653,463.105,437.522,422.265,420.458 +67108864,293.515,937.677,900.661,848.025,842.326 +16,0.0001,0.66048,0.763904,0.753664,0.746496 +32,0.0001,0.67584,0.774144,0.652288,0.653312 +64,0.0002,0.483328,0.801792,0.748544,0.782336 +128,0.0001,0.520192,0.792576,1.00045,0.636928 +256,0.0001,0.602112,0.761856,0.72192,0.695296 +512,0.0002,0.509952,0.785408,0.71168,0.740352 +1024,0.0004,0.64512,0.81408,0.674816,0.756736 +2048,0.001,0.5632,0.970752,0.776192,0.729088 +4096,0.002,0.59392,0.816128,0.71168,0.648192 +8192,0.0031,0.64,1.17555,0.755712,0.6912 +16384,0.007,0.765952,1.28717,0.838656,0.800768 +32768,0.0154,1.00147,1.51245,1.26054,1.04038 +65536,0.038,1.47866,2.03674,1.44282,1.4551 +131072,0.5853,2.50266,2.46477,3.24403,3.01773 +262144,1.1685,4.58342,4.03866,4.30899,4.88755 +524288,2.3594,7.70355,7.48237,7.808,8.47155 +1048576,5.0408,14.9074,14.423,14.9453,14.3882 +2097152,11.3707,29.311,29.055,27.1688,27.8385 +4194304,17.9998,57.942,55.5366,53.9054,53.7098 +8388608,37.9892,114.687,110.483,104.895,105.302 +16777216,73.5814,230.911,219.176,212.147,208.517 +33554432,144.188,464.236,444.322,424.415,419.68 +67108864,295.87,938.346,883.801,852.163,842.366 +16,0.0001,0.651264,0.779264,0.789504,0.745472 +32,0.0003,0.581632,0.763904,0.775168,0.743424 +64,0.0002,0.495616,0.787456,0.779264,0.724992 +128,0.0001,0.493568,0.927744,0.73216,0.708608 +256,0.0002,0.647168,1.15712,0.719872,0.728064 +512,0.0003,0.514048,0.827392,0.723968,0.731136 +1024,0.0004,0.65536,0.805888,0.769024,0.726016 +2048,0.001,0.585728,0.94208,0.781312,0.632832 +4096,0.0018,0.613376,0.951296,0.700416,0.674816 +8192,0.0038,0.63488,0.932864,0.78848,0.704512 +16384,0.01,0.823296,0.996352,1.22061,0.80896 +32768,0.0161,1.1817,1.22573,1.04243,1.29843 +65536,0.0332,1.37216,1.6169,1.43053,1.39981 +131072,0.5861,2.23642,2.42176,2.50368,2.92454 +262144,1.1747,4.88038,3.9895,5.00634,4.96947 +524288,2.4075,7.59706,7.39533,7.73018,8.00563 +1048576,4.6676,14.9934,15.1409,14.7405,14.5347 +2097152,8.8738,28.8993,27.7934,26.6895,28.2153 +4194304,18.3218,58.1007,56.3046,53.5818,53.419 +8388608,38.2548,114.355,110.715,105.341,105.591 +16777216,75.569,230.579,223.718,212.353,212.077 +33554432,150.145,462.415,434.612,421.982,419.569 +67108864,292.116,933.198,898.168,848.826,839.972 +16,0.0001,0.549888,0.81408,0.910336,0.869376 +32,0.0001,0.615424,0.729088,0.909312,0.715776 +64,0.0001,0.52736,0.817152,0.756736,0.669696 +128,0.0001,0.509952,0.82944,1.02912,0.746496 +256,0.0002,0.544768,0.78336,0.734208,0.6656 +512,0.0003,0.781312,0.835584,0.723968,0.887808 +1024,0.0005,0.598016,0.822272,0.758784,0.749568 +2048,0.001,0.58368,1.24518,0.78336,0.73216 +4096,0.0019,0.708608,1.00864,0.78848,0.72192 +8192,0.003,0.668672,0.910336,0.797696,0.787456 +16384,0.0071,0.787456,1.07418,0.856064,0.806912 +32768,0.0159,0.963584,1.21958,1.06189,1.00557 +65536,0.039,1.35373,1.64762,1.7193,1.33632 +131072,0.7391,2.25792,2.7351,2.50675,3.39866 +262144,1.1735,4.05709,3.99974,4.30387,4.736 +524288,2.354,7.95034,7.69638,7.54176,8.03738 +1048576,4.437,14.5736,14.551,14.463,14.6903 +2097152,9.2107,29.7441,28.7334,27.1247,27.6756 +4194304,19.615,57.4986,55.127,53.7149,53.6474 +8388608,37.5096,114.662,109.99,105.487,105.127 +16777216,77.777,230.577,220.021,210.438,211.077 +33554432,145.458,466.075,443.631,424.67,419.993 +67108864,296.096,936.368,883.094,852.89,843.941 +16,0.0001,0.623584,0.827392,0.825344,0.760832 +32,0.0001,0.529408,0.907264,0.754688,0.731136 +64,0.0001,0.606208,0.652288,0.749568,0.713728 +128,0.0001,0.602112,0.772096,0.6912,0.669696 +256,0.0002,0.535552,0.786432,0.708608,0.712704 +512,0.0002,0.545792,0.765952,0.794624,0.6912 +1024,0.0005,0.602112,0.83456,0.723968,0.709632 +2048,0.001,0.598016,0.862208,0.772096,0.809984 +4096,0.0019,0.586752,0.745472,0.792576,0.753664 +8192,0.0057,0.683008,1.0199,0.779264,0.836608 +16384,0.0072,0.85504,1.07622,1.02195,0.862208 +32768,0.0166,1.46944,1.28205,1.0967,1.05165 +65536,0.0358,1.7521,1.65376,1.49811,1.4295 +131072,0.5848,2.27123,2.49856,2.57434,3.02387 +262144,1.1727,4.29978,4.13184,4.2793,5.20294 +524288,2.4639,8.26266,7.83053,7.99949,8.18381 +1048576,4.4385,15.1388,14.9903,14.2909,14.8173 +2097152,9.2186,29.9674,27.989,27.3111,27.8641 +4194304,18.9488,58.1939,56.1285,53.7047,53.2132 +8388608,40.0815,115.187,110.911,107.494,104.966 +16777216,77.9367,230.644,224.205,212.751,211.216 +33554432,148.216,464.281,435.985,423.012,422.288 +67108864,292.832,936.45,899.578,851.25,842.309 +16,0.0001,0.602112,0.932864,0.893952,0.859136 +32,0.0003,0.56832,1.26157,0.748544,0.835584 +64,0.0001,0.641024,0.809984,0.864256,0.705536 +128,0.0001,0.579584,0.782336,0.715776,0.690176 +256,0.0002,0.654336,0.790528,0.775168,0.81408 +512,0.0003,0.539648,0.748544,0.659456,0.59904 +1024,0.0005,0.512,0.648192,0.592896,0.596992 +2048,0.0011,0.553984,0.73728,0.674816,0.657408 +4096,0.002,0.581632,0.80384,0.709632,0.654336 +8192,0.0032,0.643072,1.14688,0.74752,0.679936 +16384,0.0069,0.760832,1.01069,1.152,0.872448 +32768,0.0544,1.07622,1.22061,1.04346,1.13869 +65536,0.0382,1.43053,1.6384,1.43258,1.38342 +131072,0.5828,2.2528,2.48218,2.55386,3.13344 +262144,1.1719,4.47795,4.00179,4.38579,4.70528 +524288,2.3402,7.59808,7.44346,7.84077,8.64051 +1048576,4.5692,14.8849,14.7241,14.3811,14.4732 +2097152,8.8728,29.0939,28.7642,26.6353,26.9107 +4194304,19.2392,57.3829,55.6247,53.5654,53.9976 +8388608,38.2331,113.368,110.196,104.484,105.576 +16777216,76.4732,229.631,219.906,209.668,209.58 +33554432,148.53,465.489,444.197,422.975,420.17 +67108864,294.121,936.257,883.286,852.41,843.187 +16,0.0001,0.575488,0.857088,0.978944,0.884736 +32,0.0001,0.653312,0.858112,0.7168,0.746496 +64,0.0001,0.49664,0.879616,0.713728,0.70144 +128,0.0001,0.625664,0.764928,0.940032,0.871424 +256,0.0001,0.641024,0.791552,0.7168,0.729088 +512,0.0003,0.6144,0.804864,0.736256,0.703488 +1024,0.0004,0.52736,0.8192,0.72704,0.705536 +2048,0.001,0.529408,0.888832,0.75776,0.743424 +4096,0.0019,0.57344,1.0199,0.804864,0.82432 +8192,0.0031,0.608256,0.9216,0.81408,1.07622 +16384,0.0083,0.751616,1.03731,0.836608,0.816128 +32768,0.0163,0.973824,1.54419,1.04346,1.0025 +65536,0.0325,1.42541,1.67526,1.45408,1.39674 +131072,0.5859,2.22925,2.45862,2.52314,2.93581 +262144,1.1679,4.21786,3.98438,4.33971,4.49843 +524288,2.341,7.65338,8.15616,8.70093,8.49613 +1048576,4.4363,14.7999,15.0682,14.7999,14.7098 +2097152,9.0414,29.2772,29.3939,27.7821,27.8856 +4194304,18.0271,57.8273,56.5617,53.2398,54.4819 +8388608,38.5993,114.823,109.981,107.221,104.711 +16777216,73.7206,231.23,222.776,211.237,209.038 +33554432,151.897,463.395,436.894,423.961,420.11 +67108864,299.237,937.76,899.537,847.781,843.304 +16,0,0.525312,0.74752,0.780288,0.749568 +32,0.0001,0.468992,0.804864,0.728064,0.720896 +64,0.0001,0.535552,0.817152,0.719872,0.72192 +128,0.0001,0.607232,0.781312,0.758784,0.729088 +256,0.0002,0.521216,1.05779,0.744448,0.748544 +512,0.0002,0.607232,0.811008,0.73216,0.694272 +1024,0.0004,0.550912,0.809984,0.712704,0.728064 +2048,0.0011,0.661504,0.970752,0.986112,0.766976 +4096,0.002,0.661504,0.777216,0.697344,0.795648 +8192,0.0032,0.636928,1.27386,0.883712,0.929792 +16384,0.0074,1.05062,1.18272,0.779264,0.743424 +32768,0.0167,1.03526,1.20934,1.04346,1.00659 +65536,0.0613,1.36806,1.94662,1.43258,1.38445 +131072,0.5857,2.22106,2.45555,2.51904,2.95322 +262144,1.2027,4.3817,4.08986,4.45235,5.59718 +524288,2.3412,7.72813,7.44141,7.98003,8.36915 +1048576,4.6731,14.9197,14.7046,14.3718,15.1255 +2097152,9.5457,29.143,28.6372,27.0131,27.604 +4194304,19.2918,57.9133,55.4025,53.3596,54.3949 +8388608,40.5504,114.048,109.522,105.587,105.12 +16777216,73.555,230.178,217.844,211.493,210.435 +33554432,147.064,466.426,443.737,424.997,419.761 +67108864,295.897,934.457,883.236,848.861,845.104 +16,0.0001,0.666624,0.874496,0.96256,1.16941 +32,0.0001,0.572416,0.813056,0.759808,0.77312 +64,0.0001,0.4864,0.769024,0.726016,0.766976 +128,0.0002,0.637952,0.770048,0.770048,0.759808 +256,0.0001,0.601088,0.796672,0.631808,0.608256 +512,0.0003,0.509952,0.673792,0.574464,0.541696 +1024,0.006,0.544768,0.687104,0.653312,0.751616 +2048,0.001,0.504832,0.746496,0.677888,0.638976 +4096,0.0022,0.5888,0.786432,0.7168,0.643072 +8192,0.0031,0.645024,0.867328,0.754688,0.689152 +16384,0.0069,0.771072,0.9984,0.835584,0.804864 +32768,0.0185,0.985088,1.60666,1.03936,0.9984 +65536,0.0565,1.37114,1.84013,1.44282,1.38854 +131072,0.6537,2.15552,2.45453,2.53952,3.00134 +262144,1.1679,4.21683,3.99155,4.50867,4.73702 +524288,2.2177,7.60115,7.4455,7.48032,9.2119 +1048576,5.0681,14.7036,15.0508,14.5623,15.1132 +2097152,8.8753,29.227,27.8856,27.2681,27.3623 +4194304,21.2709,57.8324,56.4429,52.9408,54.2013 +8388608,35.9436,114.405,111.077,105.95,106.342 +16777216,79.7522,230.797,222.949,210.779,210.229 +33554432,152.023,465.117,436.04,421.701,421.059 +67108864,294.292,937.204,899.174,847.528,842.265 +16,0.0001,0.65536,0.825344,0.857088,0.761856 +32,0.0001,0.600064,0.636928,0.746496,0.718848 +64,0.0001,0.489472,0.785408,0.821248,0.753664 +128,0.0002,0.472064,0.75776,0.726016,0.697344 +256,0.0001,0.687104,0.666624,1.84422,0.584704 +512,0.0003,0.521216,0.673792,0.872448,0.587776 +1024,0.0004,0.543744,0.70144,0.9216,0.606208 +2048,0.001,0.569344,0.750592,0.699392,0.621568 +4096,0.002,0.592896,0.777216,0.935936,0.661504 +8192,0.0031,0.692224,0.950272,1.09466,0.836608 +16384,0.007,0.76288,0.95232,0.841728,0.80896 +32768,0.0167,0.95232,1.46432,1.04243,0.996352 +65536,0.0401,1.43053,1.65171,1.4336,2.10739 +131072,0.5867,2.25587,2.41766,2.52211,2.94195 +262144,1.1733,4.33971,4.00691,4.34995,4.89472 +524288,2.2188,7.60934,7.38509,8.35379,8.3159 +1048576,5.6589,14.3923,14.5377,15.7614,14.4968 +2097152,9.5001,28.885,28.5143,27.7402,28.3351 +4194304,18.7963,58.0659,55.3165,53.2019,53.8798 +8388608,38.9331,114.668,110.067,106.256,105.591 +16777216,77.8149,229.195,219.422,211.937,209.707 +33554432,149.184,462.211,443.096,424.603,420.202 +67108864,293.463,933.815,881.753,848.546,846.564 +16,0.0001,0.589824,0.605184,0.690176,0.802816 +32,0.0001,0.705536,0.729088,0.87552,0.715776 +64,0.0001,0.48128,0.918528,0.976896,0.914432 +128,0.0001,0.825344,0.772096,0.928768,1.09978 +256,0.0001,0.717824,0.712704,0.745472,0.731136 +512,0.0005,0.55808,0.801792,0.728064,0.677888 +1024,0.0007,0.507904,0.779264,0.841728,0.748544 +2048,0.001,0.781312,0.959488,0.76288,0.98304 +4096,0.0019,0.575488,0.917504,0.745472,0.713728 +8192,0.0032,0.724992,1.19091,0.944128,0.759808 +16384,0.0074,0.874496,1.05472,1.05165,0.929792 +32768,0.0165,0.9728,1.27488,1.16941,1.07827 +65536,0.0364,1.49914,1.67219,1.97325,1.46534 +131072,0.5844,2.25997,2.48218,2.7648,3.14778 +262144,1.1745,4.26291,4.03046,4.31923,4.85478 +524288,2.2536,7.92883,7.95341,8.09779,8.45414 +1048576,4.6827,14.7569,14.7558,14.4824,15.2453 +2097152,9.6463,29.1277,27.3613,26.8995,27.905 +4194304,19.7865,57.5672,56.7777,54.314,53.0176 +8388608,38.5929,114.942,111.134,104.954,105.414 +16777216,73.948,230.965,224.128,211.16,209.574 +33554432,150.945,465.033,433.829,424.879,419.886 +67108864,291.524,938.896,902.571,847.596,842.166 +16,0.0001,0.64,0.739328,0.77312,0.760832 +32,0.0001,0.630784,1.06803,0.93696,0.786432 +64,0.0001,0.493568,0.864256,0.954368,0.719872 +128,0.0001,0.699392,0.751616,0.707584,1.26259 +256,0.0001,0.543744,0.807936,0.73216,0.720896 +512,0.0003,0.618496,0.79872,0.703488,0.724992 +1024,0.0004,0.535552,0.822272,0.708608,0.690176 +2048,0.001,0.575488,0.7424,0.676864,0.63488 +4096,0.002,0.6144,1.11514,0.703488,0.648192 +8192,0.0034,0.63488,0.886784,0.864256,1.06394 +16384,0.007,0.76288,1.02912,0.836608,0.807936 +32768,0.0168,0.9728,1.23392,1.0537,0.999424 +65536,0.0402,1.44998,1.64557,1.44691,1.39776 +131072,0.5858,2.30605,2.42381,3.36179,2.944 +262144,1.1686,4.50048,3.97517,4.55475,4.73805 +524288,2.4234,7.61446,7.38611,7.47213,8.55654 +1048576,4.438,15.358,14.8306,14.4527,14.6514 +2097152,8.8734,29.2035,29.4185,26.5021,27.4698 +4194304,18.8723,57.1576,56.0998,53.7252,53.0125 +8388608,37.306,114.438,110.5,105.781,104.188 +16777216,79.8102,229.275,217.514,210.816,210.511 +33554432,148.027,459.921,445.168,423.264,415.838 +67108864,297.827,935.453,882.455,849.478,845.207 +16,0.0001,0.514048,0.899072,0.939008,1.03014 +32,0.0001,0.667648,0.83456,0.69632,1.29638 +64,0.0001,0.608256,0.70656,0.717824,0.707584 +128,0.0002,0.508928,0.777216,0.733184,0.704512 +256,0.0002,0.473088,0.799744,1.04448,0.746496 +512,0.0003,0.785408,0.813056,0.69632,0.987136 +1024,0.0004,0.55808,0.784384,1.06189,0.843776 +2048,0.0009,0.837632,1.0496,1.03629,0.758784 +4096,0.002,0.615424,0.929792,0.78848,0.779264 +8192,0.0032,0.652288,0.881664,0.815104,0.723968 +16384,0.0073,0.768,1.2329,0.96256,0.874496 +32768,0.0165,1.00045,1.21242,1.05677,0.9984 +65536,0.0377,1.44077,1.61997,2.09306,1.37626 +131072,0.6002,2.18829,2.95424,2.37568,2.93581 +262144,1.1735,4.19328,3.97107,4.29978,4.9367 +524288,2.2182,7.98106,7.52435,7.48646,8.03226 +1048576,4.439,15.3702,14.9596,14.0247,14.338 +2097152,9.6189,29.822,28.715,27.1892,26.752 +4194304,18.232,57.0429,56.5248,53.2265,55.3093 +8388608,44.8052,114.311,111.223,106.203,105.779 +16777216,78.1213,229.647,224.056,210.839,210.647 +33554432,145.116,464.987,435.761,425.927,419.912 +67108864,294.346,937.283,899.234,850.105,841.056 +16,0.0001,0.67584,0.805888,0.823296,0.69632 +32,0.0003,0.6144,0.694272,0.733184,0.719872 +64,0.0001,0.45568,0.746496,0.86528,0.7424 +128,0.0002,0.534528,0.72192,0.733184,0.862208 +256,0.0001,0.528384,0.856064,0.781312,0.729088 +512,0.0003,0.499712,0.782336,0.74752,0.739328 +1024,0.0004,0.553984,0.816128,1.71008,0.781312 +2048,0.001,0.584704,1.02502,0.777216,0.730112 +4096,0.002,0.602112,1.0199,0.904192,0.999424 +8192,0.003,0.64512,0.943104,0.817152,0.733184 +16384,0.0089,0.730112,1.07418,0.907264,0.852992 +32768,0.0165,1.34758,1.20627,1.08749,1.08646 +65536,0.0395,1.8688,1.7367,1.48582,1.4889 +131072,0.5869,2.27635,2.47296,2.58355,3.07405 +262144,1.1732,4.44006,4.06835,4.4032,5.28282 +524288,2.23,7.72198,7.75578,8.39066,8.33229 +1048576,4.4854,15.0272,14.5377,14.1414,14.7927 +2097152,9.3912,29.1584,29.2444,26.9885,27.18 +4194304,19.0288,57.9779,56.6702,54.06,53.0504 +8388608,38.372,113.71,110.326,106.383,105.255 +16777216,75.9949,231.618,218.651,209.465,210.06 +33554432,144.337,460.771,443.908,424.69,419.867 +67108864,292.095,935.484,884.299,847.869,840.757 +16,0.0001,0.549888,0.791552,0.812032,0.743424 +32,0.0001,0.559104,2.48627,0.877568,0.749568 +64,0.0002,0.559104,0.802816,0.707584,0.753664 +128,0.0001,0.467968,0.88576,0.723968,0.71168 +256,0.0002,0.53248,0.789504,0.75264,0.702464 +512,0.0003,0.697344,0.781312,0.72704,0.679936 +1024,0.0005,0.541696,0.777216,0.751616,0.720896 +2048,0.001,0.52736,0.976896,0.784384,0.729088 +4096,0.0019,0.560128,1.00966,0.797696,0.758784 +8192,0.003,0.760832,0.92672,0.802816,0.862208 +16384,0.0072,0.7424,1.10797,0.913408,0.888832 +32768,0.0278,1.0711,1.27898,1.05984,1.04243 +65536,0.0362,1.4633,1.70803,1.46739,1.48378 +131072,0.5861,2.2999,2.50266,2.58048,3.05152 +262144,2.467,4.27827,4.09088,5.21114,4.78822 +524288,2.3485,8.07629,7.8377,7.77626,8.25549 +1048576,4.44,14.8828,14.7804,13.9786,15.6396 +2097152,9.8635,28.8522,30.0872,26.9373,27.6552 +4194304,18.6022,57.8048,56.0456,53.6965,53.374 +8388608,40.2402,112.132,111.658,105.364,105.418 +16777216,76.6575,230.673,222.723,210.668,210.003 +33554432,148.758,464.275,434.443,423.029,421.772 +67108864,292.141,936.398,901.28,848.966,845.122 +16,0.0001,0.651264,0.859136,0.828416,0.872448 +32,0.0002,0.618496,0.521216,0.6656,0.587776 +64,0.0001,0.681984,0.914432,0.710656,0.51712 +128,0.0001,0.714752,0.683008,0.695296,0.669696 +256,0.0002,0.587776,0.657408,0.922624,0.736256 +512,0.0003,0.520192,0.667648,0.789504,0.600064 +1024,0.0004,0.695296,0.717824,0.643072,0.734208 +2048,0.0009,0.58368,0.734208,0.690176,0.613376 +4096,0.0021,0.595968,0.781312,1.2329,0.643072 +8192,0.0033,0.647168,0.883712,0.751616,0.710592 +16384,0.007,1.88211,1.02912,0.832512,0.822272 +32768,0.0159,0.965632,1.2288,1.03629,0.9984 +65536,0.036,1.96198,1.64352,1.43667,1.4336 +131072,0.6006,2.56102,2.44736,3.0976,2.97882 +262144,1.8757,4.06016,3.94342,4.33254,4.73498 +524288,2.3417,7.74042,7.72915,7.81619,8.11725 +1048576,4.4372,14.5736,14.5039,14.1281,15.0292 +2097152,9.032,29.2526,28.4017,27.0254,27.5661 +4194304,18.3317,58.07,55.935,54.1921,53.1937 +8388608,38.3572,114.77,110.288,105.723,104.728 +16777216,76.7291,230.306,218.893,211.029,210.159 +33554432,147.583,464.489,444.85,424.511,419.966 +67108864,293.614,932.37,884.048,851.394,845.319 +16,0,0.651264,0.75776,0.71168,0.774144 +32,0.0001,0.651264,0.797696,0.736256,1.06189 +64,0.0001,0.598016,0.75776,0.75264,0.736256 +128,0.0002,0.734208,0.754688,0.713728,0.717824 +256,0.0002,0.502784,0.764928,0.688128,0.78336 +512,0.0004,0.553984,0.83968,0.724992,0.730112 +1024,0.0004,0.550912,0.8192,1.0281,0.73216 +2048,0.001,0.528384,0.963584,0.751616,0.733184 +4096,0.0019,0.564224,1.01171,0.792576,0.748544 +8192,0.0031,0.663552,1.0496,0.837632,0.848896 +16384,0.0073,0.914432,1.08749,1.04858,0.910336 +32768,0.0164,1.01683,1.29024,1.33222,1.07725 +65536,0.0352,1.39776,1.67526,1.69677,1.46739 +131072,0.6428,2.2057,2.83034,2.55795,4.37658 +262144,1.1737,4.19021,4.6551,4.2967,4.99302 +524288,2.3415,8.08755,7.83565,8.40602,8.16333 +1048576,4.4382,15.063,14.7282,14.8122,15.0415 +2097152,9.7734,28.8041,28.1436,26.8411,27.8467 +4194304,18.9535,57.5478,55.7967,54.0692,53.8327 +8388608,38.4031,114.369,111.479,106.339,105.46 +16777216,75.595,229.08,223.688,211.337,210.961 +33554432,150.496,466.889,437.901,422.266,418.44 +67108864,289.186,938.882,898.951,848.256,843.842 +16,0.0001,0.652288,0.82432,0.966656,0.905216 +32,0.0003,0.615424,0.758784,0.97792,0.746496 +64,0.0001,0.512,0.755712,0.736256,0.700416 +128,0.0002,0.523264,0.909312,0.774144,0.72704 +256,0.0001,0.508928,0.785408,0.698368,0.6912 +512,0.0003,0.625664,0.763904,0.937984,0.764928 +1024,0.0004,0.603136,0.83968,0.781312,1.39571 +2048,0.001,0.530432,0.925696,0.90112,0.79872 +4096,0.0021,0.797696,0.768,0.968704,0.65024 +8192,0.003,0.866304,0.960512,0.975872,0.690176 +16384,0.0068,0.766976,1.00147,0.84992,0.811008 +32768,0.0156,1.02605,1.24006,1.3056,1.00659 +65536,0.0401,1.36499,1.64762,1.8688,1.38547 +131072,0.5858,2.21184,2.43507,2.58048,2.78938 +262144,1.1742,4.60493,4.01408,4.30182,4.72678 +524288,2.4508,7.98413,7.4496,7.75782,8.19098 +1048576,4.4365,15.0456,14.7876,14.6166,14.4968 +2097152,8.9745,29.0621,29.0458,27.1401,27.6572 +4194304,18.6702,57.5805,56.2074,52.863,53.7764 +8388608,41.4368,113.312,110.121,106.189,105.263 +16777216,78.4365,229.677,220.278,211.708,210.341 +33554432,149.735,465.408,446.106,423.691,423.601 +67108864,294.34,933.144,881.344,851.301,841.229 +16,0.0001,0.656384,0.795648,0.91136,0.886784 +32,0.0003,0.592896,0.932864,0.77824,0.703488 +64,0.0001,0.514048,0.81408,0.712704,0.724992 +128,0.0002,0.470016,0.729088,0.681984,0.735232 +256,0.0002,0.710656,1.23085,0.750592,0.713728 +512,0.0002,0.54784,0.786432,0.766976,0.745472 +1024,0.0005,0.685056,0.760832,0.775168,1.14995 +2048,0.001,0.524288,0.95744,0.879616,0.626688 +4096,0.002,0.560128,0.73728,0.7168,0.692224 +8192,0.0031,0.632832,0.86528,0.77312,0.6912 +16384,0.007,0.765952,1.02707,0.837632,0.806912 +32768,0.017,0.9728,1.45203,1.04346,0.994304 +65536,0.036,1.4633,1.84832,1.42746,1.38854 +131072,0.5834,2.25382,2.72486,2.38592,3.15085 +262144,1.1728,4.26803,4.36531,4.35712,4.75955 +524288,2.3423,7.61958,7.72608,7.6841,8.05171 +1048576,4.7968,14.846,15.19,13.9807,14.6913 +2097152,8.8749,28.7488,28.5563,27.0889,27.1124 +4194304,18.6437,56.5852,56.322,53.631,53.3985 +8388608,41.6469,114.444,110.356,106.966,105.453 +16777216,73.659,231.748,223.835,211.707,210.959 +33554432,146.874,463.708,436.265,423.981,419.842 +67108864,296.991,935.827,903.409,848.238,841.919 +16,0.0001,0.726016,0.792576,0.82944,0.795648 +32,0.0003,0.570368,1.62509,0.688128,0.705536 +64,0.0001,0.508928,0.755712,0.82944,0.6912 +128,0.0002,0.566272,0.768,0.713728,0.79872 +256,0.0002,0.474112,0.833536,0.761856,0.729088 +512,0.0002,0.520192,0.806912,0.7168,0.708608 +1024,0.0005,0.513024,0.823296,0.756736,0.728064 +2048,0.001,0.662528,0.88064,0.820224,1.16019 +4096,0.0018,0.652288,0.886784,0.791552,0.781312 +8192,0.0031,0.64,1.05165,0.796672,0.876544 +16384,0.0074,0.950272,1.17658,1.12333,1.09158 +32768,0.0169,1.00454,1.3097,1.11309,1.46637 +65536,0.0386,1.5616,1.6681,1.46534,1.4592 +131072,0.5846,2.30605,2.51085,2.57536,3.05971 +262144,1.1746,4.47795,4.08064,4.28339,5.15891 +524288,2.6444,7.72096,7.95648,7.80698,8.35686 +1048576,4.6843,14.6063,14.6401,14.5183,14.3944 +2097152,9.368,29.1779,28.9454,26.9353,27.778 +4194304,18.0872,57.6236,55.5028,53.4426,54.3478 +8388608,36.1566,113.931,110.605,106.045,106.629 +16777216,73.7778,229.867,218.246,211.593,211.065 +33554432,148.252,465.663,444.948,422.952,420.024 +67108864,291.077,935.133,882.526,850.497,843.718 +16,0.0001,0.774144,0.878592,0.883712,0.90624 +32,0.0001,0.7168,0.684032,0.749568,0.759808 +64,0.0001,0.490496,0.77824,0.75264,0.777216 +128,0.0001,0.507904,0.825344,0.703488,0.731136 +256,0.0002,0.516096,0.755712,0.720896,0.726016 +512,0.0003,0.565248,0.80384,0.80896,0.685056 +1024,0.0004,0.736256,0.772096,0.720896,0.658432 +2048,0.0009,0.763904,0.841728,0.777216,0.743424 +4096,0.0019,0.726016,0.971776,0.787456,0.756736 +8192,0.003,0.611328,1.05984,0.809984,0.823296 +16384,0.0068,0.79872,1.07725,0.923648,0.867328 +32768,0.0168,0.958464,1.21242,1.05062,1.00966 +65536,0.0353,1.37728,1.61382,1.43258,1.40083 +131072,0.7413,2.21184,3.03002,2.37875,2.83546 +262144,1.1678,4.64077,3.97824,4.33971,4.96538 +524288,2.2188,8.69786,7.84794,7.74451,8.38861 +1048576,4.4373,15.3549,16.0666,13.9356,14.5388 +2097152,10.2311,28.8164,28.1242,27.1012,26.967 +4194304,18.6208,57.471,56.5402,53.9218,53.8706 +8388608,37.6954,114.636,110.296,104.118,105.997 +16777216,76.0119,230.358,224.589,210.643,210.399 +33554432,151.53,464.69,434.642,423.096,421.743 +67108864,296.902,938.147,900.224,850.741,842.786 +16,0.0001,0.673792,0.7936,0.789504,0.907264 +32,0.0002,0.572416,0.830464,0.934912,0.792576 +64,0.0001,0.4864,0.782336,0.73728,0.751616 +128,0.0001,0.49152,0.73728,0.730112,0.898048 +256,0.0001,0.642048,0.858112,0.914432,0.888832 +512,0.0003,0.5632,0.842752,0.760832,0.764928 +1024,0.0004,0.529408,0.841728,1.06496,0.761856 +2048,0.001,1.26259,0.723968,0.681984,0.620544 +4096,0.002,0.553984,0.792576,0.722944,0.659456 +8192,0.0033,0.848896,1.02502,0.83968,0.63488 +16384,0.0073,0.774144,1.00045,0.837632,0.821248 +32768,0.0157,0.974848,1.1561,0.976896,1.12128 +65536,0.0411,1.46227,1.62714,1.42336,1.64966 +131072,0.5846,2.51597,2.45965,2.84467,2.95834 +262144,1.1702,4.30797,4.00282,4.3776,4.74317 +524288,2.3395,8.20122,7.93395,8.43469,7.9831 +1048576,4.6855,14.9893,15.1409,14.5777,14.7384 +2097152,9.3679,29.142,29.3294,27.1206,27.733 +4194304,20.0158,57.8458,55.4445,52.7319,52.8189 +8388608,38.0587,114.734,110.054,105.808,106.544 +16777216,76.3338,229.734,219.136,209.964,210.918 +33554432,151.665,463.349,445.218,424.101,418.835 +67108864,293.437,933.574,883.508,852.39,841.486 +16,0.0001,0.617472,0.789504,0.759808,0.764928 +32,0.0001,0.5632,0.740352,0.91648,0.72192 +64,0.0001,0.512,0.825344,0.77312,0.731136 +128,0.0001,0.463872,0.850944,0.72192,0.676864 +256,0.0002,0.535552,0.825344,0.761856,0.719872 +512,0.0002,0.621568,0.794624,1.34554,0.750592 +1024,0.0005,0.662528,0.792576,0.761856,0.841728 +2048,0.0018,0.95744,0.75776,0.7936,0.7168 +4096,0.0019,0.6656,0.856064,0.779264,0.764928 +8192,0.0037,0.637952,1.08339,0.850944,0.771072 +16384,0.007,0.878592,1.08851,1.02605,0.805888 +32768,0.0166,1.02707,1.21037,1.03936,1.00454 +65536,0.0358,1.408,1.65786,1.47245,1.38957 +131072,0.5858,2.21696,3.04026,2.54362,2.95526 +262144,1.1681,4.59059,3.98541,4.20352,4.95309 +524288,2.3528,7.6544,7.67795,7.76704,8.63232 +1048576,4.864,14.9914,14.8081,14.0554,14.5562 +2097152,9.7316,29.3632,27.9562,26.9097,27.009 +4194304,18.4308,57.6799,55.9442,53.5511,53.2511 +8388608,40.0615,114.596,110.22,105.023,106.439 +16777216,74.8634,230.128,224.099,209.55,210.474 +33554432,150.383,466.184,433.537,426.201,418.813 +67108864,297.08,939.054,900.071,847.866,841.832 +16,0,0.569344,0.776192,0.781312,0.787456 +32,0.0001,0.467968,0.758784,0.761856,0.724992 +64,0.0001,0.513024,1.00352,0.720896,0.745472 +128,0.0001,0.531456,0.797696,0.739328,0.715776 +256,0.0002,0.738304,0.770048,0.73216,0.907264 +512,0.0002,0.485376,0.882688,0.735232,0.78336 +1024,0.0004,0.567296,0.80384,0.728064,0.715776 +2048,0.0009,0.557056,0.751616,0.689152,0.61952 +4096,0.002,0.5888,0.7936,0.698368,0.661504 +8192,0.0034,0.684032,0.850944,0.751616,0.683008 +16384,0.0069,0.751616,0.997376,0.835584,0.81408 +32768,0.0161,1.20218,1.2288,0.971776,1.40288 +65536,0.0382,1.39264,1.64557,1.43053,1.39162 +131072,0.5851,2.2313,2.46477,2.54464,3.21536 +262144,1.223,4.21274,3.99155,4.96845,4.51584 +524288,2.3518,7.64621,7.7353,7.59706,8.71117 +1048576,4.4721,14.7251,14.4056,14.3974,14.3565 +2097152,8.8724,29.484,28.4846,26.751,27.7125 +4194304,18.8864,57.4577,55.2765,53.2347,53.5972 +8388608,38.9836,113.555,111.294,106.104,105.828 +16777216,76.8814,230.552,219.343,210.86,211.921 +33554432,146.224,463.642,447.744,423.82,420.659 +67108864,293.191,937.04,884.187,849.716,840.862 +16,0.0001,0.6656,0.792576,0.856064,0.854016 +32,0.0001,0.579584,0.672768,0.703488,0.700416 +64,0.0001,0.485376,0.878592,0.708608,0.726016 +128,0.0001,0.4864,1.02605,0.638976,0.600064 +256,0.0002,0.5376,0.651264,0.627712,0.591872 +512,0.0003,0.521216,0.692224,0.649216,0.595968 +1024,0.0005,0.546816,0.718848,0.646144,0.592896 +2048,0.001,0.560128,0.736256,0.673792,0.612352 +4096,0.0019,0.587776,0.774144,0.958464,0.638976 +8192,0.003,0.764928,0.878592,0.694272,0.807936 +16384,0.0144,0.966656,1.14586,0.826368,1.04346 +32768,0.0169,0.98304,1.19194,1.03424,1.00966 +65536,0.033,1.41312,1.6343,1.7664,1.38957 +131072,0.5857,2.16678,2.3767,2.54054,2.94912 +262144,1.1729,4.1943,4.04582,4.34586,5.48864 +524288,3.1374,8.04352,7.5223,7.49875,8.00154 +1048576,4.4373,15.1009,14.8613,14.4916,14.9463 +2097152,8.8738,29.1645,28.7212,26.8739,27.1524 +4194304,19.8148,57.8601,56.4511,53.0012,52.8835 +8388608,36.593,115.39,110.94,105.619,106.544 +16777216,76.5413,229.74,222.72,211.391,212.558 +33554432,194.26,462.019,4.26E+06,543.131,421.977 +67108864,294.829,935.388,903.76,863.966,849.981 +16,0,0.477184,0.67584,0.939008,0.73728 +32,0.0001,0.4608,0.746496,0.781312,0.770048 +64,0.0001,0.626688,1.21242,0.745472,0.845824 +128,0.0001,0.479232,0.766976,0.826368,0.763904 +256,0.0002,0.59904,0.768,0.840704,0.73728 +512,0.0003,0.68096,0.763904,0.791552,0.764928 +1024,0.0004,0.54784,1.2032,0.84992,0.746496 +2048,0.0021,0.987136,0.964608,1.04243,0.968704 +4096,0.002,1.11206,0.908288,0.807936,0.826368 +8192,0.0031,0.707584,0.90112,0.858112,0.786432 +16384,0.0075,1.07315,1.11821,0.876544,0.736256 +32768,0.0165,0.918528,1.26771,1.4592,1.05882 +65536,0.0398,1.42643,1.77152,1.41926,1.57901 +131072,0.7073,2.5559,2.37261,2.46682,3.01056 +262144,1.2632,4.28339,3.9168,4.2455,5.40979 +524288,2.4074,7.79674,7.4711,8.64768,8.99891 +1048576,4.8649,14.42,14.5736,14.4128,14.4251 +2097152,12.8588,31.6416,30.1926,54.698,33.7828 +4194304,19.6326,57.0235,55.5008,54.1778,56.5463 +8388608,40.3929,113.368,110.71,105.554,106.564 +16777216,82.2408,232.504,219.989,211.767,211.994 +33554432,155.661,464.444,448.017,424.571,423.702 +67108864,299.664,930.066,887.389,896.795,869.151 +16,0.0001,0.60928,0.774144,0.777216,0.756736 +32,0.0003,0.676864,0.826368,0.77312,0.86528 +64,0.0002,0.676864,0.852992,1.06189,0.746496 +128,0.0001,0.681984,0.779264,0.791552,0.679936 +256,0.0002,0.536576,0.826368,0.795648,1.22573 +512,0.0003,0.560128,0.986112,0.787456,0.76288 +1024,0.0014,0.687104,0.93184,0.878592,0.813056 +2048,0.001,0.557056,0.673792,0.812032,0.98816 +4096,0.0018,0.636928,1.34451,0.830464,0.881664 +8192,0.0031,0.649216,1.08544,0.806912,0.8192 +16384,0.0072,0.831488,1.18886,1.00557,1.03219 +32768,0.0165,0.922624,1.26566,1.60768,1.46842 +65536,0.0351,1.73568,1.70598,1.57491,1.50528 +131072,0.8566,2.34189,2.51085,2.62861,3.04538 +262144,1.2568,4.20045,4.37658,4.73498,5.06163 +524288,3.015,7.96979,7.99027,8.00154,8.18893 +1048576,4.8003,14.7579,,, diff --git a/Project2-Stream-Compaction/data/Scan_data/data_pow2_faster/cpu.csv b/Project2-Stream-Compaction/data/Scan_data/data_pow2_faster/cpu.csv new file mode 100644 index 0000000..7f3e977 --- /dev/null +++ b/Project2-Stream-Compaction/data/Scan_data/data_pow2_faster/cpu.csv @@ -0,0 +1,893 @@ +16,0.0001 +32,0.0001 +64,0.0004 +128,0.0002 +256,0.0005 +512,0.0005 +1024,0.0008 +2048,0.0024 +4096,0.0032 +8192,0.0048 +16384,0.0329 +32768,0.0213 +65536,0.0575 +131072,0.6192 +262144,1.2485 +524288,2.3498 +1048576,6.2046 +2097152,11.3981 +4194304,20.6636 +8388608,43.3637 +16777216,85.4127 +33554432,154.829 +67108864,305.932 +16,0.0001 +32,0.0002 +64,0.0001 +128,0.0001 +256,0.0006 +512,0.0007 +1024,0.001 +2048,0.0009 +4096,0.0046 +8192,0.0078 +16384,0.0102 +32768,0.0191 +65536,0.0405 +131072,0.6173 +262144,1.1716 +524288,4.1156 +1048576,5.0676 +2097152,9.3184 +4194304,18.6897 +8388608,37.722 +16777216,78.4394 +33554432,152.939 +67108864,306.797 +16,0.0001 +32,0.0001 +64,0.0002 +128,0.0002 +256,0.0004 +512,0.0006 +1024,0.0005 +2048,0.0024 +4096,0.002 +8192,0.0034 +16384,0.0136 +32768,0.0189 +65536,0.0386 +131072,0.5997 +262144,1.2105 +524288,2.3781 +1048576,5.8333 +2097152,9.7722 +4194304,19.889 +8388608,37.4846 +16777216,74.8376 +33554432,155.052 +67108864,319.835 +16,0.0001 +32,0.0001 +64,0.0002 +128,0.0002 +256,0.0004 +512,0.0004 +1024,0.0009 +2048,0.002 +4096,0.0024 +8192,0.0079 +16384,0.0137 +32768,0.0185 +65536,0.0411 +131072,0.6389 +262144,1.2111 +524288,2.4119 +1048576,4.7664 +2097152,10.7374 +4194304,21.4807 +8388608,41.5055 +16777216,89.8766 +33554432,154.233 +67108864,357.386 +16,0.0001 +32,0.0002 +64,0.0002 +128,0.0003 +256,0.0003 +512,0.0006 +1024,0.0005 +2048,0.001 +4096,0.0042 +8192,0.0042 +16384,0.0125 +32768,0.0184 +65536,0.0429 +131072,0.7998 +262144,1.2049 +524288,2.5811 +1048576,5.2995 +2097152,9.6006 +4194304,20.4562 +8388608,38.1438 +16777216,73.6039 +33554432,169.346 +67108864,356.932 +16,0.0001 +32,0.0002 +64,0.0001 +128,0.0002 +256,0.0003 +512,0.0007 +1024,0.0004 +2048,0.0011 +4096,0.0047 +8192,0.004 +16384,0.0097 +32768,0.0239 +65536,0.0446 +131072,0.5995 +262144,1.2068 +524288,2.6112 +1048576,5.1504 +2097152,9.9889 +4194304,20.1765 +8388608,41.4065 +16777216,81.1794 +33554432,172.065 +67108864,347.421 +16,0.0001 +32,0.0002 +64,0.0002 +128,0.0002 +256,0.0003 +512,0.0005 +1024,0.0009 +2048,0.003 +4096,0.0043 +8192,0.0083 +16384,0.0092 +32768,0.0201 +65536,0.0436 +131072,0.6002 +262144,1.2429 +524288,2.5267 +1048576,5.9916 +2097152,9.7162 +4194304,19.3132 +8388608,41.9817 +16777216,92.6883 +33554432,173.766 +67108864,325.101 +16,0.0002 +32,0.0001 +64,0.0001 +128,0.0002 +256,0.0004 +512,0.0002 +1024,0.0013 +2048,0.0011 +4096,0.0027 +8192,0.0047 +16384,0.0092 +32768,0.0191 +65536,0.0691 +131072,0.6038 +262144,1.2063 +524288,2.4168 +1048576,5.0384 +2097152,9.7049 +4194304,23.2013 +8388608,40.0318 +16777216,78.3033 +33554432,165.181 +67108864,327.403 +16,0.0001 +32,0.0001 +64,0.0003 +128,0.0001 +256,0.0003 +512,0.0003 +1024,0.0005 +2048,0.0009 +4096,0.0017 +8192,0.0036 +16384,0.0166 +32768,0.0438 +65536,0.0397 +131072,0.601 +262144,1.2756 +524288,2.6072 +1048576,4.8795 +2097152,10.3231 +4194304,19.7699 +8388608,39.5419 +16777216,77.2469 +33554432,156.535 +67108864,360.905 +16,0.0001 +32,0.0002 +64,0.0002 +128,0.0001 +256,0.0004 +512,0.0007 +1024,0.0005 +2048,0.001 +4096,0.0044 +8192,0.0228 +16384,0.0095 +32768,0.0195 +65536,0.0871 +131072,0.6011 +262144,1.1777 +524288,2.434 +1048576,5.3093 +2097152,9.9951 +4194304,22.1943 +8388608,41.7321 +16777216,83.4175 +33554432,168.77 +67108864,308.815 +16,0 +32,0.0001 +64,0.0001 +128,0.0001 +256,0.0002 +512,0.0008 +1024,0.0006 +2048,0.001 +4096,0.0044 +8192,0.0037 +16384,0.0137 +32768,0.0203 +65536,0.0433 +131072,0.5998 +262144,1.4408 +524288,2.641 +1048576,4.8304 +2097152,15.2972 +4194304,26.7399 +8388608,38.0066 +16777216,86.8103 +33554432,162.15 +67108864,336.767 +16,0.0001 +32,0.0003 +64,0.0002 +128,0.0003 +256,0.0003 +512,0.0005 +1024,0.0014 +2048,0.0025 +4096,0.002 +8192,0.0037 +16384,0.0127 +32768,0.0178 +65536,0.0421 +131072,0.6003 +262144,1.2151 +524288,2.428 +1048576,5.2148 +2097152,14.0085 +4194304,22.1914 +8388608,40.2675 +16777216,80.0839 +33554432,161.431 +67108864,324.663 +16,0.0001 +32,0.0002 +64,0.0001 +128,0.0002 +256,0.0003 +512,0.0008 +1024,0.0005 +2048,0.001 +4096,0.0019 +8192,0.0037 +16384,0.0086 +32768,0.02 +65536,0.0451 +131072,0.6021 +262144,1.1716 +524288,2.4242 +1048576,4.8371 +2097152,11.236 +4194304,20.1574 +8388608,40.8609 +16777216,81.4 +33554432,175.171 +67108864,311.372 +16,0.0001 +32,0.0001 +64,0.0002 +128,0.0003 +256,0.019 +512,0.0007 +1024,0.0014 +2048,0.0023 +4096,0.0046 +8192,0.0035 +16384,0.0115 +32768,0.0187 +65536,0.0379 +131072,0.5994 +262144,1.2047 +524288,2.3984 +1048576,4.61 +2097152,9.4543 +4194304,22.2619 +8388608,36.8641 +16777216,84.3357 +33554432,153.432 +67108864,312.963 +16,0 +32,0.0003 +64,0.0003 +128,0.0002 +256,0.0137 +512,0.0007 +1024,0.0006 +2048,0.001 +4096,0.002 +8192,0.0036 +16384,0.0085 +32768,0.0191 +65536,0.0406 +131072,0.6 +262144,1.1715 +524288,2.6164 +1048576,4.845 +2097152,9.5091 +4194304,25.1463 +8388608,43.4909 +16777216,76.6685 +33554432,156.396 +67108864,313.641 +16,0.0001 +32,0.0001 +64,0.0001 +128,0.0001 +256,0.0002 +512,0.0002 +1024,0.0005 +2048,0.0011 +4096,0.0043 +8192,0.0037 +16384,0.0091 +32768,0.0438 +65536,0.0394 +131072,0.602 +262144,1.2258 +524288,2.3857 +1048576,5.3644 +2097152,10.5898 +4194304,21.5886 +8388608,41.2624 +16777216,78.9556 +33554432,152.112 +67108864,312.208 +16,0 +32,0.0001 +64,0.0002 +128,0.0001 +256,0.0002 +512,0.0005 +1024,0.0004 +2048,0.0011 +4096,0.0022 +8192,0.004 +16384,0.01 +32768,0.0354 +65536,0.0447 +131072,0.7166 +262144,1.2095 +524288,2.5316 +1048576,4.7164 +2097152,9.3944 +4194304,19.7729 +8388608,39.3043 +16777216,80.6635 +33554432,154.041 +67108864,305.373 +16,0.0001 +32,0.0003 +64,0.0004 +128,0.0001 +256,0.0002 +512,0.0005 +1024,0.0005 +2048,0.001 +4096,0.0021 +8192,0.0045 +16384,0.0101 +32768,0.0192 +65536,0.0392 +131072,0.6201 +262144,1.2052 +524288,2.3815 +1048576,4.8124 +2097152,9.7845 +4194304,20.3798 +8388608,37.9352 +16777216,75.2738 +33554432,155.35 +67108864,301.16 +16,0.0001 +32,0.0002 +64,0.0002 +128,0.0001 +256,0.0005 +512,0.0005 +1024,0.0004 +2048,0.0022 +4096,0.002 +8192,0.004 +16384,0.0087 +32768,0.0221 +65536,0.0448 +131072,0.6175 +262144,1.2065 +524288,2.7432 +1048576,5.4133 +2097152,10.9461 +4194304,18.9103 +8388608,40.1785 +16777216,78.2217 +33554432,150.499 +67108864,310.285 +16,0.0001 +32,0.0003 +64,0.0001 +128,0.0003 +256,0.0001 +512,0.0008 +1024,0.0004 +2048,0.0011 +4096,0.0043 +8192,0.0071 +16384,0.0454 +32768,0.0185 +65536,0.0615 +131072,0.6012 +262144,1.5328 +524288,2.3835 +1048576,4.7471 +2097152,9.1785 +4194304,21.9288 +8388608,38.0063 +16777216,77.2364 +33554432,154.669 +67108864,308.568 +16,0.0001 +32,0.0001 +64,0.0001 +128,0.0002 +256,0.0002 +512,0.0006 +1024,0.0004 +2048,0.0023 +4096,0.0044 +8192,0.0039 +16384,0.0097 +32768,0.0206 +65536,0.0429 +131072,0.6006 +262144,1.1709 +524288,3.1029 +1048576,5.0658 +2097152,9.6368 +4194304,17.9428 +8388608,36.1585 +16777216,72.2131 +33554432,144.617 +67108864,302.215 +16,0.0001 +32,0.0001 +64,0.0003 +128,0.0002 +256,0.0005 +512,0.0007 +1024,0.0006 +2048,0.0024 +4096,0.0018 +8192,0.0038 +16384,0.023 +32768,0.0202 +65536,0.039 +131072,0.6012 +262144,1.1695 +524288,2.3415 +1048576,4.4377 +2097152,8.8693 +4194304,18.0013 +8388608,40.1781 +16777216,72.7067 +33554432,145.536 +67108864,292.299 +16,0.0001 +32,0.0003 +64,0.0003 +128,0.0002 +256,0.0003 +512,0.0007 +1024,0.0004 +2048,0.0024 +4096,0.0045 +8192,0.0036 +16384,0.0086 +32768,0.0189 +65536,0.0383 +131072,0.9315 +262144,1.2038 +524288,2.3926 +1048576,4.6295 +2097152,9.2472 +4194304,18.4723 +8388608,36.2125 +16777216,72.2378 +33554432,143.953 +67108864,294.079 +16,0.0001 +32,0.0001 +64,0.0002 +128,0.0004 +256,0.0003 +512,0.0007 +1024,0.0005 +2048,0.0011 +4096,0.0034 +8192,0.0172 +16384,0.0083 +32768,0.0192 +65536,0.0385 +131072,0.6025 +262144,1.2034 +524288,2.3388 +1048576,4.4373 +2097152,8.9988 +4194304,18.2109 +8388608,36.7512 +16777216,79.8632 +33554432,148.859 +67108864,294.819 +16,0.0001 +32,0.0002 +64,0.0002 +128,0.0002 +256,0.0004 +512,0.0007 +1024,0.0005 +2048,0.0024 +4096,0.0022 +8192,0.0037 +16384,0.0093 +32768,0.021 +65536,0.0455 +131072,0.6017 +262144,1.178 +524288,2.3439 +1048576,4.8199 +2097152,10.3041 +4194304,17.9345 +8388608,38.4299 +16777216,74.7989 +33554432,150.141 +67108864,291.188 +16,0.0001 +32,0.0002 +64,0.0001 +128,0.0002 +256,0.0004 +512,0.0007 +1024,0.0005 +2048,0.0011 +4096,0.0044 +8192,0.0037 +16384,0.0088 +32768,0.0198 +65536,0.043 +131072,0.5855 +262144,1.2074 +524288,2.3422 +1048576,4.6824 +2097152,9.0277 +4194304,19.9931 +8388608,36.077 +16777216,77.2349 +33554432,148.555 +67108864,296.691 +16,0.0001 +32,0 +64,0.0003 +128,0.0004 +256,0.0004 +512,0.0007 +1024,0.0005 +2048,0.001 +4096,0.0021 +8192,0.004 +16384,0.0081 +32768,0.037 +65536,0.0419 +131072,0.5829 +262144,1.2031 +524288,2.3348 +1048576,4.4368 +2097152,10.2503 +4194304,18.4924 +8388608,40.0551 +16777216,74.6765 +33554432,147.106 +67108864,292.213 +16,0.0001 +32,0.0001 +64,0.0002 +128,0.0004 +256,0.0006 +512,0.0004 +1024,0.0014 +2048,0.001 +4096,0.002 +8192,0.0037 +16384,0.0097 +32768,0.027 +65536,0.0432 +131072,0.6036 +262144,1.1703 +524288,2.3524 +1048576,5.4524 +2097152,8.8743 +4194304,17.9658 +8388608,36.0634 +16777216,72.3852 +33554432,144.042 +67108864,292.616 +16,0.0001 +32,0.0015 +64,0.0004 +128,0.0001 +256,0.0004 +512,0.0003 +1024,0.0013 +2048,0.001 +4096,0.0021 +8192,0.0039 +16384,0.0092 +32768,0.0208 +65536,0.0404 +131072,0.5865 +262144,1.3806 +524288,2.4932 +1048576,4.6787 +2097152,9.1765 +4194304,18.6997 +8388608,36.2876 +16777216,76.2361 +33554432,146.654 +67108864,291.104 +16,0.0001 +32,0.0002 +64,0.0002 +128,0.0003 +256,0.0004 +512,0.0006 +1024,0.0004 +2048,0.0024 +4096,0.0019 +8192,0.0051 +16384,0.0108 +32768,0.0448 +65536,0.0415 +131072,0.8732 +262144,1.202 +524288,2.356 +1048576,4.5248 +2097152,9.7665 +4194304,18.0082 +8388608,39.1723 +16777216,71.9133 +33554432,146.578 +67108864,298.315 +16,0.0001 +32,0.0001 +64,0.0002 +128,0.0005 +256,0.0003 +512,0.0004 +1024,0.0004 +2048,0.0015 +4096,0.0021 +8192,0.0052 +16384,0.0088 +32768,0.0201 +65536,0.0418 +131072,0.6053 +262144,1.1802 +524288,2.3563 +1048576,4.7625 +2097152,9.0273 +4194304,22.1923 +8388608,36.6701 +16777216,74.7247 +33554432,149.132 +67108864,296.039 +16,0.0001 +32,0.0001 +64,0.0002 +128,0.0003 +256,0.0003 +512,0.0004 +1024,0.0005 +2048,0.0016 +4096,0.0021 +8192,0.0036 +16384,0.0096 +32768,0.0189 +65536,0.073 +131072,0.583 +262144,1.2031 +524288,2.2638 +1048576,4.4377 +2097152,9.574 +4194304,18.6197 +8388608,37.2005 +16777216,76.3943 +33554432,148.727 +67108864,289.96 +16,0.0001 +32,0.0003 +64,0.0002 +128,0.0002 +256,0.0004 +512,0.0007 +1024,0.0011 +2048,0.001 +4096,0.002 +8192,0.0041 +16384,0.0088 +32768,0.02 +65536,0.0383 +131072,0.6001 +262144,1.1762 +524288,2.2203 +1048576,4.8877 +2097152,9.123 +4194304,18.0344 +8388608,36.0168 +16777216,78.2761 +33554432,145.626 +67108864,292.061 +16,0.0001 +32,0.0001 +64,0.0003 +128,0.0002 +256,0.0004 +512,0.0004 +1024,0.0005 +2048,0.001 +4096,0.002 +8192,0.0042 +16384,0.0096 +32768,0.0227 +65536,0.038 +131072,0.5836 +262144,1.2053 +524288,2.6081 +1048576,4.7324 +2097152,10.6257 +4194304,18.8807 +8388608,37.3313 +16777216,71.711 +33554432,146.976 +67108864,290.686 +16,0.0001 +32,0.0001 +64,0.0002 +128,0.0003 +256,0.0004 +512,0.0007 +1024,0.0004 +2048,0.001 +4096,0.0044 +8192,0.0037 +16384,0.0279 +32768,0.0215 +65536,0.0434 +131072,0.5832 +262144,1.2098 +524288,2.3146 +1048576,4.4374 +2097152,9.152 +4194304,19.6962 +8388608,36.5625 +16777216,77.6246 +33554432,143.103 +67108864,293.586 +16,0.0001 +32,0.0001 +64,0.0001 +128,0.0002 +256,0.0003 +512,0.0006 +1024,0.0005 +2048,0.0011 +4096,0.0025 +8192,0.017 +16384,0.0121 +32768,0.0398 +65536,0.0374 +131072,0.5838 +262144,1.1739 +524288,3.546 +1048576,4.8268 +2097152,9.5646 +4194304,18.0147 +8388608,37.9479 +16777216,76.2172 +33554432,144.37 +67108864,290.296 +16,0.0002 +32,0.0003 +64,0.0003 +128,0.0002 +256,0.0004 +512,0.0006 +1024,0.0005 +2048,0.0023 +4096,0.0043 +8192,0.004 +16384,0.0097 +32768,0.0208 +65536,0.0413 +131072,0.6023 +262144,1.1701 +524288,2.3316 +1048576,4.5272 +2097152,11.1004 +4194304,18.2146 +8388608,35.8752 +16777216,72.4059 +33554432,143.77 +67108864,291.074 +16,0.0001 +32,0.0001 +64,0.0003 +128,0.0002 +256,0.0003 +512,0.0004 +1024,0.0004 +2048,0.001 +4096,0.002 +8192,0.0037 +16384,0.0091 +32768,0.0202 +65536,0.0412 +131072,0.618 +262144,1.2099 +524288,3.0552 +1048576,5.1888 +2097152,9.1319 +4194304,18.9283 +8388608,36.0894 +16777216,77.5457 +33554432,147.57 +67108864,313.275 +16,0.0001 +32,0.0002 +64,0.0003 +128,0.0002 +256,0.0003 +512,0.0003 +1024,0.0014 +2048,0.0011 +4096,0.0043 +8192,0.0034 +16384,0.0105 +32768,0.0212 +65536,0.0407 +131072,0.6191 +262144,1.2383 +524288,2.4101 +1048576,4.6843 +2097152,9.6028 +4194304,20.7051 diff --git a/Project2-Stream-Compaction/data/Scan_data/data_pow2_faster/data.csv b/Project2-Stream-Compaction/data/Scan_data/data_pow2_faster/data.csv new file mode 100644 index 0000000..e2ac02d --- /dev/null +++ b/Project2-Stream-Compaction/data/Scan_data/data_pow2_faster/data.csv @@ -0,0 +1,894 @@ +Array Size,CPU (s),Na‹ve (s),Work Efficient (s),Shared Memory (s),Thrust (s) +16,0.0001,0.177184,0.0952,0.15152,0.114688 +32,0.0001,0.18128,0.128032,0.141312,0.120832 +64,0.0004,0.178144,0.13312,0.136192,0.115712 +128,0.0002,0.183328,0.157696,0.139264,0.115712 +256,0.0005,0.203776,0.171008,0.138208,0.192512 +512,0.0005,0.20992,0.192544,0.140288,0.11056 +1024,0.0008,0.27648,0.205856,0.147488,0.109536 +2048,0.0024,0.227328,0.232448,0.137216,0.09216 +4096,0.0032,0.301056,0.234496,0.149504,0.10544 +8192,0.0048,0.273408,0.258048,0.140288,0.183296 +16384,0.0329,0.40144,0.28464,0.157696,0.124928 +32768,0.0213,0.433152,0.300032,0.151552,0.114368 +65536,0.0575,0.651232,0.32256,0.160768,0.103424 +131072,0.6192,1.03526,0.352256,0.146976,0.296992 +262144,1.2485,2.08589,0.417792,0.18784,0.392192 +524288,2.3498,4.10723,0.79872,1.67424,0.467584 +1048576,6.2046,8.21616,1.0783,0.357984,0.479872 +2097152,11.3981,15.7663,2.44157,0.564032,0.524256 +4194304,20.6636,32.1402,3.36486,0.85504,0.617952 +8388608,43.3637,63.6312,7.1895,1.55382,0.844128 +16777216,85.4127,129.222,11.3766,2.92944,1.27686 +33554432,154.829,259.564,30.4968,5.57008,1.93741 +67108864,305.932,534.437,52.2015,11.0404,3.65155 +16,0.0001,0.2304,0.11776,0.198656,0.169984 +32,0.0002,0.142336,0.113664,0.162816,0.192512 +64,0.0001,0.2304,0.147456,0.177152,0.222208 +128,0.0001,0.233472,0.150528,0.159744,0.135168 +256,0.0006,0.437248,0.175104,0.172032,0.154624 +512,0.0007,0.253952,0.193536,0.180224,0.150528 +1024,0.001,0.421888,0.2048,0.182272,0.160768 +2048,0.0009,0.279552,0.392192,0.159744,0.1792 +4096,0.0046,0.278528,0.326656,0.139264,0.14336 +8192,0.0078,0.339968,0.262144,0.161792,0.123904 +16384,0.0102,0.365568,0.282624,0.172704,0.131072 +32768,0.0191,0.556032,0.306176,0.170784,0.156256 +65536,0.0405,0.658432,0.329728,0.165888,0.149504 +131072,0.6173,1.11104,0.346112,0.217088,0.48128 +262144,1.1716,2.11046,0.492544,0.201632,0.536576 +524288,4.1156,3.96422,0.763904,0.298784,0.521152 +1048576,5.0676,8.68285,1.33018,0.359424,0.530432 +2097152,9.3184,16.4447,2.06234,0.61024,0.598016 +4194304,18.6897,31.8985,4.16701,0.854016,0.677888 +8388608,37.722,64.2243,6.8007,1.50835,0.902496 +16777216,78.4394,128.552,16.8387,2.87792,2.78938 +33554432,152.939,264.295,22.2884,5.62029,2.08739 +67108864,306.797,525.804,65.1991,10.9628,3.57069 +16,0.0001,0.229376,0.109568,0.167936,0.149504 +32,0.0001,0.243712,0.131072,0.162816,0.443392 +64,0.0002,0.186368,0.14848,0.17408,0.144384 +128,0.0002,0.233472,0.15872,0.726016,0.152576 +256,0.0004,0.15872,0.172032,0.171008,0.233472 +512,0.0006,0.26112,0.206848,0.180224,0.144384 +1024,0.0005,0.251904,0.223232,0.712704,0.145408 +2048,0.0024,0.2816,0.221184,0.154624,0.242688 +4096,0.002,0.273408,0.248832,0.152576,0.159744 +8192,0.0034,0.304128,0.25088,0.114688,0.125952 +16384,0.0136,0.478208,0.292864,0.198656,0.150528 +32768,0.0189,0.456096,0.320512,0.178112,0.166432 +65536,0.0386,0.673792,0.329728,0.200096,0.17408 +131072,0.5997,1.06394,0.357376,0.195584,0.395744 +262144,1.2105,2.10022,0.413696,0.252928,0.99392 +524288,2.3781,4.25677,0.71168,0.30208,0.497184 +1048576,5.8333,8.55808,1.10285,0.77408,0.539648 +2097152,9.7722,16.0652,2.47603,0.59904,0.548864 +4194304,19.889,31.942,3.41299,0.906816,0.611168 +8388608,37.4846,64.0264,6.63834,1.55136,0.811616 +16777216,74.8376,131.744,11.4343,2.87437,1.26054 +33554432,155.052,273.596,30.3278,5.57357,1.96784 +67108864,319.835,587.39,169.267,11.9151,30.0042 +16,0.0001,0.166912,0.11264,0.154624,0.160768 +32,0.0001,0.177152,0.120832,0.135168,0.157696 +64,0.0002,0.187392,0.149504,0.13312,0.1024 +128,0.0002,0.360448,0.15872,0.140288,0.136192 +256,0.0004,0.30208,0.20992,0.22016,0.139264 +512,0.0004,0.529408,0.191488,0.183296,0.114688 +1024,0.0009,0.227328,0.221184,0.142336,0.222208 +2048,0.002,0.242688,0.406528,0.140288,0.119808 +4096,0.0024,0.28672,0.3072,0.13312,0.123904 +8192,0.0079,0.278528,0.252928,0.210944,0.110592 +16384,0.0137,0.326656,0.309248,0.13824,0.105056 +32768,0.0185,0.414304,0.304128,0.151328,0.08192 +65536,0.0411,0.646144,0.564224,0.160768,0.13264 +131072,0.6389,1.51347,0.354304,0.191488,0.421888 +262144,1.2111,2.18829,0.446464,0.233472,0.380608 +524288,2.4119,3.95571,0.722464,0.26064,0.48608 +1048576,4.7664,8.00003,1.26749,0.342592,0.518944 +2097152,10.7374,16.0537,1.98861,0.579008,0.759808 +4194304,21.4807,37.4221,4.12365,0.89232,0.6312 +8388608,41.5055,64.897,8.45005,1.55546,0.791968 +16777216,89.8766,133.203,15.7389,2.86822,1.3175 +33554432,154.233,260.833,22.1624,5.58781,2.00234 +67108864,357.386,554.094,112.246,11.0528,7.26528 +16,0.0001,0.231424,0.098304,0.226304,0.150528 +32,0.0002,0.208896,0.211968,0.164864,0.136192 +64,0.0002,0.218112,0.139264,0.212992,0.119808 +128,0.0003,0.238592,0.16384,0.160768,0.131072 +256,0.0003,0.238592,0.176128,0.186368,0.147456 +512,0.0006,0.2304,0.223232,0.157696,0.17408 +1024,0.0005,0.32768,0.247808,0.172032,0.12288 +2048,0.001,0.279552,0.214016,0.229376,0.11264 +4096,0.0042,0.275456,0.244736,0.152576,0.108544 +8192,0.0042,0.320512,0.267264,0.222208,0.118784 +16384,0.0125,0.37168,0.300032,0.175584,0.146432 +32768,0.0184,0.44032,0.305792,0.161792,0.136192 +65536,0.0429,0.65936,0.315936,0.179808,0.143872 +131072,0.7998,1.06291,0.354304,0.207264,0.390816 +262144,1.2049,2.42442,0.403456,0.229024,0.507488 +524288,2.5811,3.96493,0.677888,0.295808,0.505856 +1048576,5.2995,7.80851,1.13869,0.379392,0.528736 +2097152,9.6006,15.9334,2.50982,0.536288,0.635328 +4194304,20.4562,32.258,3.39312,0.83952,0.841728 +8388608,38.1438,64.3584,6.77046,1.5416,0.800256 +16777216,73.6039,129.499,11.4299,2.85082,1.38221 +33554432,169.346,265.48,30.463,23.6435,2.02288 +67108864,356.932,523.895,59.2435,11.03,3.61517 +16,0.0001,0.19968,0.105472,0.172032,0.15872 +32,0.0002,0.164864,0.118784,0.142336,0.114688 +64,0.0001,0.185344,0.139264,0.172032,0.2048 +128,0.0002,0.272384,0.152576,0.173056,0.152576 +256,0.0003,0.457728,0.18944,0.20992,0.135168 +512,0.0007,0.247808,0.216064,0.171008,0.190464 +1024,0.0004,0.318464,0.21504,0.1792,0.144384 +2048,0.0011,0.285696,0.35328,0.401408,0.118784 +4096,0.0047,0.273408,0.408576,0.20992,0.14336 +8192,0.004,0.320512,0.263168,0.14336,0.116736 +16384,0.0097,0.349184,0.285696,0.177152,0.135008 +32768,0.0239,0.4608,0.297984,0.15504,0.156672 +65536,0.0446,0.644096,0.326656,0.224256,0.180704 +131072,0.5995,1.16531,0.357376,0.179104,0.364064 +262144,1.2068,2.13197,0.436224,0.191328,0.556032 +524288,2.6112,3.97005,0.760832,0.311008,0.484736 +1048576,5.1504,8.61731,1.39366,0.413344,0.5432 +2097152,9.9889,15.8378,1.98349,0.6496,0.507552 +4194304,20.1765,32.5631,5.11795,0.92672,0.729088 +8388608,41.4065,67.585,6.86182,1.80838,0.801216 +16777216,81.1794,134.546,14.4737,2.89837,2.59891 +33554432,172.065,269.099,24.5309,5.62995,2.07603 +67108864,347.421,534.582,65.2347,11.1258,3.66032 +16,0.0001,0.231424,0.101376,0.1792,0.149504 +32,0.0002,0.208896,0.139264,0.1792,0.155648 +64,0.0002,0.234496,0.129024,0.172032,0.150528 +128,0.0002,0.270336,0.169984,0.169984,0.16896 +256,0.0003,0.287744,0.18944,0.292864,0.149504 +512,0.0005,0.2048,0.206848,0.172032,0.167936 +1024,0.0009,0.340992,0.211968,0.159744,0.134144 +2048,0.003,0.2816,0.20992,0.150528,0.10752 +4096,0.0043,0.303104,0.221184,0.150528,0.13312 +8192,0.0083,0.388096,0.277504,0.151552,0.121856 +16384,0.0092,0.354304,0.279552,0.217088,0.146432 +32768,0.0201,0.44544,0.296288,0.2304,0.146848 +65536,0.0436,0.669696,0.320512,0.177152,0.147904 +131072,0.6002,1.05648,0.357376,0.185152,0.473088 +262144,1.2429,2.05517,0.408576,0.225792,0.652288 +524288,2.5267,4.23606,0.695296,0.310272,0.630784 +1048576,5.9916,9.43002,1.37523,0.377856,0.781312 +2097152,9.7162,16.0877,2.01114,0.543584,0.531456 +4194304,19.3132,32.8376,3.32698,0.910848,0.627424 +8388608,41.9817,66.9003,9.33069,1.74339,0.982784 +16777216,92.6883,137.853,11.2512,2.93069,1.23069 +33554432,173.766,283.352,32.3185,5.64464,2.22515 +67108864,325.101,524.986,52.0837,10.9597,3.69843 +16,0.0002,0.228352,0.104448,0.239616,0.14336 +32,0.0001,0.223232,0.121856,0.173056,0.13824 +64,0.0001,0.23552,0.141312,0.173056,0.144384 +128,0.0002,0.242688,0.1536,0.208896,0.16384 +256,0.0004,0.25088,0.17408,0.1792,0.144384 +512,0.0002,0.392192,0.195584,0.164864,0.14848 +1024,0.0013,0.285696,0.183296,0.180224,0.16384 +2048,0.0011,0.293888,0.222208,0.178176,0.125952 +4096,0.0027,0.301056,0.252928,0.14848,0.126976 +8192,0.0047,0.311296,0.396288,0.152576,0.11776 +16384,0.0092,0.378368,0.290816,0.162816,0.135712 +32768,0.0191,0.436096,0.32768,0.192512,0.185344 +65536,0.0691,0.662208,0.323584,0.17488,0.139264 +131072,0.6038,1.08134,0.347648,0.250688,0.491168 +262144,1.2063,2.06848,0.422912,0.547392,0.412256 +524288,2.4168,3.99811,0.719872,0.264512,0.613696 +1048576,5.0384,8.40336,1.32042,0.409408,0.541312 +2097152,9.7049,15.9717,2.24906,0.65888,0.773792 +4194304,23.2013,32.6234,4.55885,0.944832,0.627712 +8388608,40.0318,64.0241,7.34822,1.65888,0.83552 +16777216,78.3033,130.507,15.5996,2.8496,1.26557 +33554432,165.181,345.31,24.1736,5.6335,2.02944 +67108864,327.403,528.416,111.278,11.1152,3.53485 +16,0.0001,0.226304,0.11264,0.2048,0.149504 +32,0.0001,0.26112,0.131072,0.17408,0.141312 +64,0.0003,0.216064,0.13312,0.21504,0.147456 +128,0.0001,0.185344,0.157696,0.147456,0.1792 +256,0.0003,0.221184,0.176128,0.145408,0.155648 +512,0.0003,0.237568,0.191488,0.173056,0.132096 +1024,0.0005,0.24576,0.218112,0.162816,0.145408 +2048,0.0009,0.292864,0.267264,0.154624,0.123904 +4096,0.0017,0.292864,0.267264,0.151552,0.128 +8192,0.0036,0.306176,0.351232,0.221184,0.119808 +16384,0.0166,0.379232,0.281184,0.403456,0.170816 +32768,0.0438,0.499136,0.303104,0.175104,0.151168 +65536,0.0397,0.672768,0.323008,0.218592,0.116704 +131072,0.601,1.36662,0.42496,0.205824,0.396992 +262144,1.2756,3.75194,0.489472,0.258048,0.565248 +524288,2.6072,3.97414,1.36499,0.264672,1.01114 +1048576,4.8795,7.66259,1.13766,0.406528,0.536064 +2097152,10.3231,16.6294,2.4016,0.523904,0.53248 +4194304,19.7699,33.4868,3.46522,0.887648,0.565248 +8388608,39.5419,64.2385,9.02861,1.54269,0.89088 +16777216,77.2469,131.061,11.4248,2.86003,1.252 +33554432,156.535,261.763,30.5565,5.5815,2.42342 +67108864,360.905,538.415,51.9619,12.0214,3.53229 +16,0.0001,0.188416,0.108544,0.196608,0.162816 +32,0.0002,0.273408,0.119808,0.177152,0.181248 +64,0.0002,0.22016,0.140288,0.202752,0.162816 +128,0.0001,0.237568,0.155648,0.172032,0.14848 +256,0.0004,0.242688,0.171008,0.15872,0.137216 +512,0.0007,0.231424,0.192512,0.18432,0.21504 +1024,0.0005,0.295936,0.24064,0.177152,0.188416 +2048,0.001,0.270336,0.21504,0.151552,0.118784 +4096,0.0044,0.297984,0.26624,0.17408,0.132096 +8192,0.0228,0.273408,0.283648,0.149504,0.11264 +16384,0.0095,0.369664,0.447104,0.173376,0.147424 +32768,0.0195,0.491168,0.305152,0.212544,0.16384 +65536,0.0871,0.677888,0.326656,0.166368,0.17856 +131072,0.6011,1.07008,0.359424,0.180544,0.872448 +262144,1.1777,2.09382,0.433152,0.196608,0.478816 +524288,2.434,4.21965,0.815104,0.313024,0.5376 +1048576,5.3093,7.96774,1.28154,0.357216,0.6656 +2097152,9.9951,16.1194,2.06848,0.536576,0.554816 +4194304,22.1943,33.2426,4.23424,0.848736,1.31174 +8388608,41.7321,64.9196,8.46131,1.53872,0.882688 +16777216,83.4175,146.677,15.2791,4.5831,1.25216 +33554432,168.77,281.107,22.4236,5.6535,2.19648 +67108864,308.815,543.846,66.2636,11.5476,3.45088 +16,0,0.214016,0.099328,0.191488,0.145408 +32,0.0001,0.15872,0.128,0.16896,0.144384 +64,0.0001,0.239616,0.13824,0.182272,0.151552 +128,0.0001,0.303104,0.157696,0.207872,0.128 +256,0.0002,0.242688,0.193536,0.16384,0.145408 +512,0.0008,0.234496,0.18944,0.1792,0.11264 +1024,0.0006,0.279552,0.211968,0.172032,0.162816 +2048,0.001,0.333824,0.226304,0.142336,0.11776 +4096,0.0044,0.295936,0.304128,0.151552,0.129024 +8192,0.0037,0.331776,0.26112,0.149504,0.123904 +16384,0.0137,0.345088,0.331392,0.158368,0.132096 +32768,0.0203,0.450496,0.305152,0.16976,0.11776 +65536,0.0433,0.647168,0.320512,0.177152,0.145152 +131072,0.5998,1.04835,0.355328,0.213856,0.433472 +262144,1.4408,2.25485,0.404768,0.387072,0.509952 +524288,2.641,4.12038,0.699808,0.299008,0.503616 +1048576,4.8304,9.60819,1.15642,0.708416,0.53392 +2097152,15.2972,21.1999,3.67514,0.845824,0.525312 +4194304,26.7399,32.7468,3.34746,0.85568,0.754304 +8388608,38.0066,65.1222,6.57853,2.29069,1.03936 +16777216,86.8103,170.761,11.4391,2.93376,1.26022 +33554432,162.15,263.252,30.0472,5.6151,2.07114 +67108864,336.767,539.289,58.2103,11.9876,3.53066 +16,0.0001,0.186368,0.111616,0.152576,0.12288 +32,0.0003,0.16896,0.130048,0.156672,0.125952 +64,0.0002,0.17408,0.145408,0.14848,0.120832 +128,0.0003,0.203776,0.178176,0.13824,0.109568 +256,0.0003,0.18944,0.165888,0.160768,0.1024 +512,0.0005,0.22016,0.190464,0.165888,0.124928 +1024,0.0014,0.258048,0.201728,0.149504,0.121856 +2048,0.0025,0.237568,0.222208,0.146432,0.137216 +4096,0.002,0.29184,0.231424,0.145408,0.134144 +8192,0.0037,0.32256,0.265216,0.159744,0.120832 +16384,0.0127,0.379648,0.292864,0.200128,0.162816 +32768,0.0178,0.477184,0.29696,0.16976,0.1144 +65536,0.0421,1.07725,0.328704,0.167936,0.168416 +131072,0.6003,1.08749,0.361472,0.211616,0.60256 +262144,1.2151,2.60608,0.42496,0.417792,0.464896 +524288,2.428,3.88246,0.944128,0.30304,0.631392 +1048576,5.2148,8.0167,1.32739,0.372448,0.936512 +2097152,14.0085,15.6619,2.07872,0.5144,0.520672 +4194304,22.1914,31.7878,4.1591,0.845824,0.585664 +8388608,40.2675,65.5524,11.4493,1.52342,0.819072 +16777216,80.0839,130.956,15.8775,4.84966,1.26957 +33554432,161.431,260.976,22.5464,5.68218,2.15322 +67108864,324.663,561.023,71.593,10.9233,3.49184 +16,0.0001,0.169984,0.105472,0.198656,0.16896 +32,0.0002,0.229376,0.129024,0.251904,0.169984 +64,0.0001,0.202752,0.141312,0.177152,0.269312 +128,0.0002,0.397312,0.155648,0.172032,0.1536 +256,0.0003,0.21504,0.178176,0.205824,0.145408 +512,0.0008,0.254976,0.182272,0.147456,0.176128 +1024,0.0005,0.248832,0.217088,0.20992,0.166912 +2048,0.001,0.282624,0.366592,0.173056,0.119808 +4096,0.0019,0.403456,0.24576,0.16384,0.121856 +8192,0.0037,0.325632,0.2816,0.157696,0.113664 +16384,0.0086,0.37376,0.365568,0.17472,0.1448 +32768,0.02,0.456704,0.341984,0.201152,0.139232 +65536,0.0451,0.801312,0.32592,0.181248,0.14416 +131072,0.6021,1.12176,0.345088,0.186368,0.403456 +262144,1.1716,2.69414,0.399968,0.228096,0.521952 +524288,2.4242,4.00534,0.761312,0.350208,0.370688 +1048576,4.8371,7.68848,1.10931,0.36128,0.542144 +2097152,11.236,15.283,3.3792,0.533408,0.582656 +4194304,20.1574,31.5115,3.40512,0.84768,0.690528 +8388608,40.8609,66.6521,6.51981,1.65027,0.803264 +16777216,81.4,128.886,11.366,2.88934,1.20563 +33554432,175.171,263.171,32.6881,5.5873,2.08042 +67108864,311.372,527.436,52.4698,10.8912,3.57123 +16,0.0001,0.21504,0.111616,0.173056,0.144384 +32,0.0001,0.2048,0.13824,0.152576,0.11264 +64,0.0002,0.19968,0.556032,0.217088,0.167936 +128,0.0003,0.223232,0.1536,0.171008,0.178176 +256,0.019,0.212992,0.182272,0.202752,0.14848 +512,0.0007,0.251904,0.197632,0.165888,0.147456 +1024,0.0014,0.252928,0.216064,0.162816,0.136192 +2048,0.0023,0.26624,0.224256,0.224256,0.121856 +4096,0.0046,0.280576,0.221184,0.1536,0.126976 +8192,0.0035,0.310272,0.263168,0.233472,0.10752 +16384,0.0115,0.370688,0.288768,0.157696,0.131584 +32768,0.0187,0.459744,0.30208,0.377856,0.178176 +65536,0.0379,0.66448,0.310656,0.18016,0.141824 +131072,0.5994,1.0537,0.350208,0.265792,0.77168 +262144,1.2047,2.14426,0.39936,0.222208,0.464896 +524288,2.3984,4.04579,0.761856,0.295936,0.555008 +1048576,4.61,7.64403,1.37523,0.372352,0.539424 +2097152,9.4543,15.4109,2.04358,0.565632,0.519168 +4194304,22.2619,30.9944,4.19568,0.872096,0.62656 +8388608,36.8641,66.1068,6.89357,1.51594,0.842752 +16777216,84.3357,140.265,18.4484,2.87638,1.23325 +33554432,153.432,266.035,22.2421,5.59581,2.10582 +67108864,312.963,537.245,66.9756,10.9476,3.6905 +16,0,0.162816,0.106496,0.176128,0.294912 +32,0.0003,0.19456,0.129024,0.169984,0.147456 +64,0.0003,0.21504,0.13312,0.172032,0.145408 +128,0.0002,0.242688,0.159744,0.1792,0.124928 +256,0.0137,0.246784,0.192512,0.176128,0.150528 +512,0.0007,0.251904,0.198656,0.177152,0.14848 +1024,0.0006,0.249856,0.216064,0.16384,0.10752 +2048,0.001,0.268288,0.231424,0.151552,0.12288 +4096,0.002,0.263168,0.222208,0.160768,0.124928 +8192,0.0036,0.357376,0.258048,0.155648,0.136192 +16384,0.0085,0.382624,0.343904,0.17808,0.152192 +32768,0.0191,0.451904,0.516096,0.210272,0.146432 +65536,0.0406,0.663552,0.318464,0.178016,0.1536 +131072,0.6,1.04038,0.342016,0.178976,0.462848 +262144,1.1715,2.18931,0.402784,0.258048,0.645696 +524288,2.6164,4.17997,0.713728,0.305152,0.589824 +1048576,4.845,8.3975,1.1264,0.353824,0.68048 +2097152,9.5091,16.6611,2.51085,0.544192,1.12262 +4194304,25.1463,34.5272,4.34483,0.840288,0.87104 +8388608,43.4909,63.1928,6.74099,1.59437,0.794624 +16777216,76.6685,133.19,11.8436,2.95581,1.26259 +33554432,156.396,272.028,30.5981,5.61395,2.1504 +67108864,313.641,535.695,54.3252,10.9474,3.80694 +16,0.0001,0.207872,0.11264,0.218112,0.206848 +32,0.0001,0.222208,0.12288,0.19456,0.145408 +64,0.0001,0.237568,0.142336,0.169984,0.160768 +128,0.0001,0.216064,0.1536,0.198656,0.166912 +256,0.0002,0.243712,0.52736,0.202752,0.162816 +512,0.0002,0.254976,0.200704,0.172032,0.144384 +1024,0.0005,0.251904,0.211968,0.176128,0.145408 +2048,0.0011,0.283648,0.241664,0.156672,0.131072 +4096,0.0043,0.315392,0.248832,0.155648,0.130048 +8192,0.0037,0.325632,0.24576,0.149504,0.118784 +16384,0.0091,0.361472,0.283648,0.186368,0.13824 +32768,0.0438,0.477184,0.311296,0.197504,0.147456 +65536,0.0394,0.697344,0.319488,0.177856,0.1536 +131072,0.602,1.1305,0.352256,0.190464,0.4352 +262144,1.2258,2.29478,0.438272,0.234496,0.57856 +524288,2.3857,3.90531,0.790528,0.349184,0.520608 +1048576,5.3644,7.93661,1.66298,0.380224,0.550336 +2097152,10.5898,16.1101,1.98861,0.615392,0.51856 +4194304,21.5886,32.8131,4.15325,0.85168,0.628608 +8388608,41.2624,65.9153,6.82906,1.53152,0.808608 +16777216,78.9556,140.092,15.2965,2.86051,1.23661 +33554432,152.112,261.018,22.144,5.95136,2.00253 +67108864,312.208,527.174,65.5534,10.9821,3.62448 +16,0,0.2304,0.099328,0.2048,0.18432 +32,0.0001,0.227328,0.131072,0.202752,0.16896 +64,0.0002,0.223232,0.139264,0.173056,0.145408 +128,0.0001,0.188416,0.1536,0.218112,0.156672 +256,0.0002,0.210944,0.180224,0.1536,0.120832 +512,0.0005,0.259072,0.182272,0.15872,0.126976 +1024,0.0004,0.392192,0.217088,0.151552,0.119808 +2048,0.0011,0.238592,0.228352,0.125952,0.120832 +4096,0.0022,0.254976,0.249856,0.164864,0.139264 +8192,0.004,0.29184,0.285696,0.157696,0.141312 +16384,0.01,0.330752,0.277504,0.218112,0.180224 +32768,0.0354,0.44032,0.305152,0.15504,0.13312 +65536,0.0447,0.661504,0.328704,0.211968,0.128 +131072,0.7166,1.04038,0.352256,0.1792,0.459072 +262144,1.2095,2.72794,0.405504,0.248832,0.442368 +524288,2.5316,3.8871,0.703488,0.508928,0.603456 +1048576,4.7164,8.18586,1.11718,0.450176,0.51744 +2097152,9.3944,16.0587,2.4279,0.582656,0.621376 +4194304,19.7729,32.1329,3.44371,0.85472,0.68688 +8388608,39.3043,64.255,6.63389,1.66566,0.883104 +16777216,80.6635,129.152,11.4575,2.88851,1.26208 +33554432,154.041,264.05,30.1476,5.66214,2.10227 +67108864,305.373,527.551,51.9264,11.1,3.57171 +16,0.0001,0.214016,0.119808,0.193536,0.149504 +32,0.0003,0.20992,0.124928,0.164864,0.186368 +64,0.0004,0.253952,0.147456,0.16896,0.139264 +128,0.0001,0.222208,0.15872,0.1536,0.18432 +256,0.0002,0.249856,0.335872,0.176128,0.144384 +512,0.0005,0.256,0.196608,0.175104,0.145408 +1024,0.0005,0.246784,0.224256,0.180224,0.162816 +2048,0.001,0.285696,0.36352,0.262144,0.126976 +4096,0.0021,0.219136,0.248832,0.146432,0.145408 +8192,0.0045,0.534528,0.273408,0.201728,0.123904 +16384,0.0101,0.375808,0.28672,0.181248,0.132096 +32768,0.0192,0.47616,0.310272,0.169984,0.149504 +65536,0.0392,0.667648,0.320512,0.187392,0.139264 +131072,0.6201,1.11718,0.371712,0.182272,0.477184 +262144,1.2052,2.38899,0.411648,0.229376,0.449536 +524288,2.3815,3.92288,0.76288,0.303104,0.80384 +1048576,4.8124,8.19968,1.37318,0.376224,0.52672 +2097152,9.7845,16.1818,2.31731,0.541568,0.547424 +4194304,20.3798,34.6163,4.16198,0.888832,0.737856 +8388608,37.9352,63.2027,6.40064,1.65478,0.889184 +16777216,75.2738,129.477,15.5566,2.85974,1.34922 +33554432,155.35,261.169,22.2423,5.71862,2.11341 +67108864,301.16,528.798,66.0095,11.8184,3.44758 +16,0.0001,0.23552,0.113664,0.177152,0.147456 +32,0.0002,0.20992,0.134144,0.177152,0.151552 +64,0.0002,0.226304,0.140288,0.197632,0.172032 +128,0.0001,0.24576,0.172032,0.178176,0.149504 +256,0.0005,0.234496,0.178176,0.175104,0.165888 +512,0.0005,0.254976,0.211968,0.173056,0.16384 +1024,0.0004,0.251904,0.232448,0.17408,0.132096 +2048,0.0022,0.62976,0.212992,0.164864,0.142336 +4096,0.002,0.270336,0.35328,0.151552,0.121856 +8192,0.004,0.392192,0.268288,0.156672,0.13312 +16384,0.0087,0.405504,0.29184,0.173056,0.136192 +32768,0.0221,0.474112,0.31232,0.191488,0.155648 +65536,0.0448,0.64,0.330752,0.203776,0.150016 +131072,0.6175,1.11104,0.360448,0.188416,0.490496 +262144,1.2065,2.13402,0.431104,0.224256,0.47616 +524288,2.7432,4.30378,0.681984,0.312896,0.47056 +1048576,5.4133,7.78848,1.12538,0.38048,1.2121 +2097152,10.9461,15.8228,3.14013,0.5304,0.589088 +4194304,18.9103,33.1217,4.28381,0.852992,0.719872 +8388608,40.1785,64.5827,6.65395,1.51731,0.825856 +16777216,78.2217,128.729,11.3623,2.8825,1.32602 +33554432,150.499,260.468,30.0616,5.64298,2.152 +67108864,310.285,531.973,51.9983,10.9507,3.57734 +16,0.0001,0.376832,0.120832,0.173056,0.17408 +32,0.0003,0.226304,0.19456,0.176128,0.146432 +64,0.0001,0.217088,0.15872,0.210944,0.160768 +128,0.0003,0.2304,0.157696,0.172032,0.14848 +256,0.0001,0.24576,0.167936,0.193536,0.17408 +512,0.0008,0.260096,0.19456,0.182272,0.17408 +1024,0.0004,0.268288,0.21504,0.175104,0.14848 +2048,0.0011,0.278528,0.242688,0.151552,0.134144 +4096,0.0043,0.251904,0.293888,0.229376,0.118784 +8192,0.0071,0.3328,0.249856,0.173056,0.27136 +16384,0.0454,0.400384,0.304128,0.183296,0.166912 +32768,0.0185,0.475136,0.333824,0.169632,0.149504 +65536,0.0615,0.666624,0.320512,0.211968,0.15872 +131072,0.6012,1.04038,0.34304,0.192512,0.490496 +262144,1.5328,2.31219,0.45568,0.211968,0.499712 +524288,2.3835,3.8745,0.672768,0.282336,0.53248 +1048576,4.7471,8.2985,1.94253,0.392192,0.60928 +2097152,9.1785,15.8873,2.08234,0.505376,0.549888 +4194304,21.9288,31.1296,4.12512,0.848896,0.667008 +8388608,38.0063,63.4274,6.90176,1.53904,0.853632 +16777216,77.2364,130.428,15.4127,2.88819,1.24906 +33554432,154.669,260.993,22.1389,5.69002,2.2081 +67108864,308.568,527.575,65.6859,11.1733,3.59674 +16,0.0001,0.231424,0.099328,0.203776,0.146432 +32,0.0001,0.228352,0.125952,0.181248,0.150528 +64,0.0001,0.234496,0.160768,0.177152,0.149504 +128,0.0002,0.247808,0.151552,0.260096,0.150528 +256,0.0002,0.2816,0.17408,0.195584,0.139264 +512,0.0006,0.214016,0.192512,0.183296,0.154624 +1024,0.0004,0.264192,0.216064,0.181248,0.145408 +2048,0.0023,0.185344,0.229376,0.14848,0.126976 +4096,0.0044,0.390144,0.223232,0.119808,0.129024 +8192,0.0039,0.433152,0.299008,0.1536,0.128 +16384,0.0097,0.381952,0.283648,0.178176,0.15872 +32768,0.0206,0.538624,0.333824,0.234496,0.181248 +65536,0.0429,0.656384,0.320512,0.200704,0.168256 +131072,0.6006,1.01786,0.365568,0.211968,0.493568 +262144,1.1709,2.13504,0.396288,0.340992,0.494304 +524288,3.1029,3.8871,0.705536,0.30256,0.520768 +1048576,5.0658,8.45517,1.13152,0.379424,0.5376 +2097152,9.6368,15.9649,2.37453,0.543552,0.584608 +4194304,17.9428,31.1941,3.41811,0.859136,0.693248 +8388608,36.1585,63.168,6.51437,1.51962,0.861632 +16777216,72.2131,127.249,11.4575,2.89587,1.33325 +33554432,144.617,255.865,30.0329,5.60282,2.1375 +67108864,302.215,519.788,53.1855,10.9903,3.61206 +16,0.0001,0.217088,0.110592,0.201728,0.169984 +32,0.0001,0.22528,0.11776,0.181248,0.145408 +64,0.0003,0.233472,0.140288,0.178176,0.150528 +128,0.0002,0.229376,0.149504,0.200704,0.173056 +256,0.0005,0.226304,0.173056,0.186368,0.150528 +512,0.0007,0.259072,0.195584,0.203776,0.173056 +1024,0.0006,0.277504,0.214016,0.206848,0.155648 +2048,0.0024,0.267264,0.234496,0.150528,0.119808 +4096,0.0018,0.31232,0.247808,0.150528,0.131072 +8192,0.0038,0.335872,0.26112,0.154624,0.47616 +16384,0.023,0.379904,0.292864,0.173056,0.165888 +32768,0.0202,0.4864,0.323584,0.156672,0.134144 +65536,0.039,0.652288,0.32256,0.214752,0.125952 +131072,0.6012,1.05677,0.351232,0.214016,0.493568 +262144,1.1695,2.33779,0.438272,0.329728,0.514048 +524288,2.3415,3.91222,0.736,0.303488,0.519904 +1048576,4.4377,8.57389,1.30355,0.376832,0.676864 +2097152,8.8693,16.7004,2.1519,0.530016,0.533888 +4194304,18.0013,32.7636,4.16256,0.883712,1.43974 +8388608,40.1781,63.2942,7.1977,1.5049,0.95696 +16777216,72.7067,126.72,15.3549,2.86099,1.30931 +33554432,145.536,257.195,22.073,5.59923,2.12 +67108864,292.299,516.564,66.2564,11.0171,3.63296 +16,0.0001,0.297984,0.109568,0.186368,0.166912 +32,0.0003,0.200704,0.135168,0.196608,0.212992 +64,0.0003,0.219136,0.144384,0.176128,0.14848 +128,0.0002,0.237568,0.166912,0.177152,0.162816 +256,0.0003,0.267264,0.1792,0.200704,0.169984 +512,0.0007,0.258048,0.192512,0.200704,0.169984 +1024,0.0004,0.247808,0.259072,0.193536,0.149504 +2048,0.0024,0.282624,0.241664,0.140288,0.119808 +4096,0.0045,0.303104,0.254976,0.1536,0.150528 +8192,0.0036,0.3072,0.264192,0.183296,0.152576 +16384,0.0086,0.347136,0.28672,0.164864,0.126976 +32768,0.0189,0.442368,0.313344,0.162816,0.132096 +65536,0.0383,0.642048,0.328704,0.216064,0.13056 +131072,0.9315,1.05677,0.333824,0.17456,0.518144 +262144,1.2038,2.11763,0.427008,0.29696,0.530432 +524288,2.3926,4.02739,0.726336,0.334848,0.523264 +1048576,4.6295,8.24006,1.17043,0.380448,0.547744 +2097152,9.2472,16.4731,2.4617,0.4864,0.550912 +4194304,18.4723,33.5124,3.40173,0.903936,0.838144 +8388608,36.2125,62.0697,6.59456,1.54794,0.85232 +16777216,72.2378,127.814,11.3295,3.06106,1.7449 +33554432,143.953,257.562,30.1496,5.60317,2.12954 +67108864,294.079,518.235,52.9997,11.6037,3.65645 +16,0.0001,0.234496,0.109568,0.196608,0.155648 +32,0.0001,0.132096,0.119808,0.173056,0.144384 +64,0.0002,0.229376,0.14336,0.173056,0.165888 +128,0.0004,0.243712,0.14848,0.178176,0.178176 +256,0.0003,0.357376,0.180224,0.196608,0.110592 +512,0.0007,0.253952,0.195584,0.180224,0.151552 +1024,0.0005,0.24064,0.208896,0.203776,0.247808 +2048,0.0011,0.244736,0.236544,0.141312,0.128 +4096,0.0034,0.263168,0.253952,0.149504,0.139264 +8192,0.0172,0.299008,0.259072,0.154624,0.110592 +16384,0.0083,0.334848,0.288768,0.169984,0.13312 +32768,0.0192,0.453632,0.299008,0.16896,0.130048 +65536,0.0385,0.6144,0.470016,0.161728,0.121856 +131072,0.6025,1.07622,0.364544,0.263168,0.466944 +262144,1.2034,2.29683,0.434176,0.205824,0.51712 +524288,2.3388,3.86653,0.761856,0.2984,0.518144 +1048576,4.4373,8.41398,1.29984,0.383296,0.473088 +2097152,8.9988,16.792,2.00858,0.543168,0.574112 +4194304,18.2109,31.4333,4.1984,0.850784,0.690944 +8388608,36.7512,64.6096,6.80038,1.54112,0.83728 +16777216,79.8632,127.231,15.2545,2.89856,1.34838 +33554432,148.859,255.831,22.0035,5.60173,2.0335 +67108864,294.819,519.952,66.0443,10.8974,3.5905 +16,0.0001,0.219136,0.10752,0.200704,0.167936 +32,0.0002,0.219136,0.136192,0.198656,0.165888 +64,0.0002,0.234496,0.139264,0.198656,0.161792 +128,0.0002,0.237568,0.169984,0.193536,0.177152 +256,0.0004,0.249856,0.176128,0.198656,0.171008 +512,0.0007,0.28672,0.202752,0.165888,0.18432 +1024,0.0005,0.283648,0.206848,0.196608,0.176128 +2048,0.0024,0.32256,0.242688,0.1536,0.156672 +4096,0.0022,0.303104,0.278528,0.145408,0.263168 +8192,0.0037,0.36864,0.270336,0.1536,0.132096 +16384,0.0093,0.380928,0.299008,0.176128,0.156672 +32768,0.021,0.477184,0.31232,0.1792,0.160768 +65536,0.0455,0.662528,0.323584,0.423936,0.139264 +131072,0.6017,1.05062,0.36352,0.18432,0.487424 +262144,1.178,2.29376,0.454656,0.224256,0.494304 +524288,2.3439,4.37296,0.740864,0.33792,0.674816 +1048576,4.8199,8.0217,1.11821,0.379904,0.541696 +2097152,10.3041,16.1072,2.52102,0.523072,0.607232 +4194304,17.9345,31.2603,3.38739,0.856896,0.772896 +8388608,38.4299,63.6085,6.62426,1.52342,0.96256 +16777216,74.7989,128.22,12.6874,2.89264,1.40157 +33554432,150.141,257.851,29.9209,5.60832,2.03421 +67108864,291.188,518.677,52.8046,10.9544,3.6367 +16,0.0001,0.222208,0.099328,0.161792,0.144384 +32,0.0002,0.214016,0.119808,0.205824,0.171008 +64,0.0001,0.238592,0.151552,0.180224,0.16896 +128,0.0002,0.237568,0.157696,0.188416,0.152576 +256,0.0004,0.253952,0.175104,0.372736,0.145408 +512,0.0007,0.260096,0.192512,0.22528,0.176128 +1024,0.0005,0.304128,0.212992,0.1536,0.177152 +2048,0.0011,0.246784,0.24064,0.166912,0.150528 +4096,0.0044,0.28672,0.237568,0.15872,0.12288 +8192,0.0037,0.3328,0.31232,0.151552,0.124928 +16384,0.0088,0.653312,0.29184,0.177152,0.151552 +32768,0.0198,0.4864,0.299008,0.192512,0.176128 +65536,0.043,0.68608,0.319488,0.197952,0.181248 +131072,0.5855,1.20525,0.349184,0.193536,0.504832 +262144,1.2074,2.21798,0.395264,0.258048,0.531456 +524288,2.3422,3.88387,0.729088,0.27136,0.508896 +1048576,4.6824,8.28797,1.56877,0.340992,0.470464 +2097152,9.0277,16.2099,2.3271,0.537088,0.513856 +4194304,19.9931,31.0876,4.42675,0.862208,0.643072 +8388608,36.077,64.2516,6.88806,1.61418,0.822752 +16777216,77.2349,127.748,16.2079,2.93315,1.3824 +33554432,148.555,252.981,22.4137,5.59514,1.98144 +67108864,296.691,518.016,66.3035,10.906,3.66899 +16,0.0001,0.277504,0.11776,0.201728,0.144384 +32,0,0.248832,0.125952,0.206848,0.169984 +64,0.0003,0.237568,0.136192,0.180224,0.147456 +128,0.0004,0.237568,0.151552,0.19968,0.238592 +256,0.0004,0.191488,0.18432,0.149504,0.272384 +512,0.0007,0.2304,0.196608,0.159744,0.128 +1024,0.0005,0.279552,0.211968,0.150528,0.128 +2048,0.001,0.390144,0.21504,0.146432,0.161792 +4096,0.0021,0.268288,0.243712,0.152576,0.422912 +8192,0.004,0.30208,0.784384,0.166912,0.11776 +16384,0.0081,0.351232,0.285696,0.156672,0.120832 +32768,0.037,0.448512,0.316416,0.160768,0.131072 +65536,0.0419,0.643072,0.355328,0.16896,0.12288 +131072,0.5829,1.0793,0.345088,0.173056,0.470016 +262144,1.2031,2.26611,0.423936,0.185344,0.525312 +524288,2.3348,4.35078,0.730112,0.27648,0.540992 +1048576,4.4368,7.74928,1.07552,0.339968,0.627712 +2097152,10.2503,16.3451,2.4489,0.513024,0.512 +4194304,18.4924,31.813,3.39094,0.904544,0.690176 +8388608,40.0551,63.2289,6.71232,1.53984,0.792256 +16777216,74.6765,127.56,12.0426,3.15782,1.35626 +33554432,147.106,254.906,29.7223,5.57926,2.15078 +67108864,292.213,519.416,52.8748,11.2023,3.60794 +16,0.0001,0.223232,0.10752,0.178176,0.369664 +32,0.0001,0.211968,0.116736,0.227328,0.18432 +64,0.0002,0.232448,0.136192,0.205824,0.249856 +128,0.0004,0.24576,0.157696,0.177152,0.150528 +256,0.0006,0.249856,0.17408,0.172032,0.150528 +512,0.0004,0.26112,0.20992,0.17408,0.149504 +1024,0.0014,0.232448,0.207872,0.173056,0.152576 +2048,0.001,0.229376,0.236544,0.14848,0.129024 +4096,0.002,0.308224,0.251904,0.159744,0.150528 +8192,0.0037,0.241664,0.264192,0.152576,0.134144 +16384,0.0097,0.344064,0.289792,0.1792,0.154624 +32768,0.027,0.477184,0.297984,0.178176,0.161792 +65536,0.0432,0.668672,0.32768,0.190464,0.17136 +131072,0.6036,1.2329,0.349184,0.206848,0.47104 +262144,1.1703,2.38899,0.407552,0.212992,0.513024 +524288,2.3524,3.83898,0.725696,0.303744,0.510976 +1048576,5.4524,7.99216,1.31856,0.38288,0.71168 +2097152,8.8743,15.7102,2.01626,0.56832,0.550656 +4194304,17.9658,31.753,4.26496,0.884736,0.790016 +8388608,36.0634,63.4243,6.85978,1.51747,0.958464 +16777216,72.3852,128.546,15.2515,2.88938,1.29363 +33554432,144.042,255.174,22.1327,5.67296,2.38464 +67108864,292.616,517.294,67.6137,10.9373,3.6103 +16,0.0001,0.191488,0.103424,0.159744,0.124928 +32,0.0015,0.18944,0.126976,0.164864,0.132096 +64,0.0004,0.191488,0.136192,0.1536,0.130048 +128,0.0001,0.192512,0.15872,0.147456,0.120832 +256,0.0004,0.208896,0.17408,0.330752,0.135168 +512,0.0003,0.229376,0.193536,0.152576,0.13312 +1024,0.0013,0.264192,0.208896,0.152576,0.154624 +2048,0.001,0.39424,0.20992,0.149504,0.113664 +4096,0.0021,0.267264,0.500736,0.160768,0.124928 +8192,0.0039,0.279552,0.280576,0.15872,0.150528 +16384,0.0092,0.347136,0.290816,0.157472,0.126976 +32768,0.0208,0.451584,0.310272,0.161792,0.161792 +65536,0.0404,0.883712,0.315392,0.166912,0.137216 +131072,0.5865,1.06598,0.857088,0.171008,0.475136 +262144,1.3806,2.10432,0.392192,0.598016,0.442944 +524288,2.4932,4.42266,0.72704,0.313344,0.637376 +1048576,4.6787,7.97286,1.10387,0.381952,0.524768 +2097152,9.1765,15.6897,3.50822,0.521184,0.57328 +4194304,18.6997,31.5193,3.41443,0.850688,0.693888 +8388608,36.2876,64.0338,6.5849,1.52099,0.880224 +16777216,76.2361,127.49,11.3408,2.89178,1.37728 +33554432,146.654,255.303,30.2664,5.63098,2.0183 +67108864,291.104,518.827,53.079,10.8859,3.58557 +16,0.0001,0.242688,0.115712,0.197632,0.173056 +32,0.0002,0.160768,0.118784,0.196608,0.173056 +64,0.0002,0.239616,0.141312,0.178176,0.173056 +128,0.0003,0.229376,0.164864,0.198656,0.16384 +256,0.0004,0.246784,0.176128,0.177152,0.169984 +512,0.0006,0.272384,0.196608,0.182272,0.171008 +1024,0.0004,0.253952,0.268288,0.18432,0.171008 +2048,0.0024,0.283648,0.231424,0.152576,0.124928 +4096,0.0019,0.314368,0.269312,0.155648,0.121856 +8192,0.0051,0.345088,0.263168,0.156672,0.139264 +16384,0.0108,0.37888,0.299008,0.190464,0.166912 +32768,0.0448,0.468992,0.321536,0.16384,0.124928 +65536,0.0415,0.866304,0.342016,0.159744,0.13312 +131072,0.8732,1.08134,0.566272,0.216064,0.512 +262144,1.202,2.09715,0.41984,0.228352,0.479872 +524288,2.356,4.35443,0.745472,0.304736,0.504224 +1048576,4.5248,7.73392,1.30083,0.392704,0.534848 +2097152,9.7665,15.7143,2.01318,0.50848,0.59392 +4194304,18.0082,33.3397,4.23424,0.84208,1.02195 +8388608,39.1723,63.4087,6.92794,1.52573,0.995296 +16777216,71.9133,128.478,15.3221,2.90304,1.39357 +33554432,146.578,257.181,22.3713,5.6231,2.14938 +67108864,298.315,517.625,66.6504,10.9136,3.66694 +16,0.0001,0.218112,0.106496,0.201728,0.172032 +32,0.0001,0.289792,0.13312,0.17408,0.149504 +64,0.0002,0.339968,0.292864,0.173056,0.151552 +128,0.0005,0.244736,0.1536,0.178176,0.152576 +256,0.0003,0.227328,0.173056,0.178176,0.16384 +512,0.0004,0.256,0.185344,0.205824,0.16896 +1024,0.0004,0.259072,0.207872,0.15872,0.129024 +2048,0.0015,0.253952,0.21504,0.146432,0.136192 +4096,0.0021,0.246784,0.241664,0.160768,0.154624 +8192,0.0052,0.30208,0.252928,0.164864,0.141312 +16384,0.0088,0.3584,0.289792,0.26112,0.128 +32768,0.0201,0.519168,0.303104,0.16896,0.13264 +65536,0.0418,0.667648,0.320512,0.18672,0.248832 +131072,0.6053,1.10285,0.372736,0.178176,0.621568 +262144,1.1802,2.1207,0.437248,0.257024,0.484352 +524288,2.3563,3.87552,0.689664,0.299904,0.50976 +1048576,4.7625,8.15072,1.0992,0.425984,0.532032 +2097152,9.0273,15.9089,3.16314,0.50864,0.586688 +4194304,22.1923,32.2127,3.40173,0.970528,0.62864 +8388608,36.6701,63.0906,6.55616,1.53942,0.989024 +16777216,74.7247,127.249,11.5471,2.87232,1.38957 +33554432,149.132,257.165,30.0641,5.76096,2.08547 +67108864,296.039,521.653,54.5843,10.9787,3.68394 +16,0.0001,0.233472,0.123904,0.197632,0.169984 +32,0.0001,0.231424,0.124928,0.203776,0.16896 +64,0.0002,0.24064,0.145408,0.239616,0.164864 +128,0.0003,0.214016,0.151552,0.180224,0.146432 +256,0.0003,0.197632,0.172032,0.197632,0.165888 +512,0.0004,0.259072,0.195584,0.177152,0.173056 +1024,0.0005,0.241664,0.216064,0.181248,0.149504 +2048,0.0016,0.32768,0.237568,0.151552,0.130048 +4096,0.0021,0.396288,0.367616,0.152576,0.132096 +8192,0.0036,0.319488,0.273408,0.182272,0.125952 +16384,0.0096,0.431104,0.282624,0.19968,0.16896 +32768,0.0189,0.508928,0.309248,0.192512,0.164736 +65536,0.073,0.657408,0.31744,0.207872,0.166912 +131072,0.583,1.07315,0.36352,0.24064,0.485376 +262144,1.2031,2.43712,0.403456,0.290816,0.492544 +524288,2.2638,3.87443,0.75264,0.303104,0.52224 +1048576,4.4377,7.8999,1.77562,0.38912,0.494272 +2097152,9.574,15.5132,1.96608,0.507904,1.46227 +4194304,18.6197,31.7447,4.16563,0.852384,0.670112 +8388608,37.2005,64.2415,6.89459,1.51082,0.996864 +16777216,76.3943,127.798,15.0592,2.88723,1.3824 +33554432,148.727,257.134,21.7706,5.57638,2.18195 +67108864,289.96,517.477,65.9599,10.8815,3.46566 +16,0.0001,0.219136,0.11264,0.195584,0.156672 +32,0.0003,0.22528,0.13312,0.177152,0.159744 +64,0.0002,0.238592,0.140288,0.177152,0.169984 +128,0.0002,0.244736,0.165888,0.196608,0.169984 +256,0.0004,0.248832,0.172032,0.193536,0.16896 +512,0.0007,0.270336,0.19968,0.185344,0.16896 +1024,0.0011,0.258048,0.222208,0.166912,0.128 +2048,0.001,0.221184,0.227328,0.223232,0.13824 +4096,0.002,0.263168,0.249856,0.15872,0.140288 +8192,0.0041,0.294912,0.284672,0.164864,0.161792 +16384,0.0088,0.359424,0.288768,0.155648,0.121856 +32768,0.02,0.44544,0.715776,0.155168,0.128 +65536,0.0383,0.672768,0.326656,0.166656,0.13824 +131072,0.6001,1.03014,0.351232,0.172032,0.489248 +262144,1.1762,2.11456,0.43008,0.193536,0.8192 +524288,2.2203,3.85946,1.20602,0.26992,1.17658 +1048576,4.8877,7.97389,1.13392,0.396288,0.533216 +2097152,9.123,16.5784,2.43507,0.540576,0.536384 +4194304,18.0344,31.5592,3.41299,0.847264,0.638464 +8388608,36.0168,63.632,6.56246,1.54419,0.978464 +16777216,78.2761,127.002,11.4031,2.92086,1.40115 +33554432,145.626,255.581,29.9587,5.56803,2.15757 +67108864,292.061,518.357,53.5845,11.0139,3.64499 +16,0.0001,0.254976,0.108544,0.198656,0.490496 +32,0.0001,0.258048,0.125952,0.178176,0.178176 +64,0.0003,0.278528,0.145408,0.195584,0.173056 +128,0.0002,0.2048,0.161792,0.149504,0.21504 +256,0.0004,0.212992,0.176128,0.149504,0.125952 +512,0.0004,0.244736,0.192512,0.14848,0.123904 +1024,0.0005,0.270336,0.214016,0.151552,0.128 +2048,0.001,0.239616,0.219136,0.164864,0.146432 +4096,0.002,0.272384,0.253952,0.164864,0.126976 +8192,0.0042,0.297984,0.269312,0.181248,0.137216 +16384,0.0096,0.346112,0.318464,0.149504,0.128 +32768,0.0227,0.442368,0.299008,0.162816,0.135168 +65536,0.038,0.651264,0.316416,0.176128,0.12832 +131072,0.5836,1.09363,0.347136,0.171552,0.448512 +262144,1.2053,2.11046,0.39424,0.192512,0.518144 +524288,2.6081,4.07654,0.720416,0.3,0.531104 +1048576,4.7324,7.84077,1.29491,0.500128,0.55296 +2097152,10.6257,15.4232,1.97389,0.547168,0.522144 +4194304,18.8807,31.8853,4.23526,0.84464,0.615904 +8388608,37.3313,63.2962,6.93555,1.54698,0.886784 +16777216,71.711,128.879,15.3071,2.9313,1.17453 +33554432,146.976,257.597,22.5751,5.60304,2.14426 +67108864,290.686,518.579,66.5016,10.9617,3.51373 +16,0.0001,0.180224,0.109568,0.2048,0.134144 +32,0.0001,0.212992,0.139264,0.160768,0.120832 +64,0.0002,0.178176,0.144384,0.157696,0.11776 +128,0.0003,0.208896,0.155648,0.160768,0.124928 +256,0.0004,0.239616,0.175104,0.159744,0.124928 +512,0.0007,0.210944,0.193536,0.152576,0.129024 +1024,0.0004,0.24064,0.219136,0.160768,0.228352 +2048,0.001,0.248832,0.217088,0.166912,0.139264 +4096,0.0044,0.268288,0.24576,0.166912,0.172032 +8192,0.0037,0.313344,0.269312,0.155648,0.141312 +16384,0.0279,0.350208,0.28672,0.165888,0.126976 +32768,0.0215,0.442368,0.306176,0.160672,0.26624 +65536,0.0434,0.651264,0.339968,0.164192,0.131072 +131072,0.5832,1.05984,0.371712,0.166912,0.437248 +262144,1.2098,2.06438,0.41472,0.189344,0.42496 +524288,2.3146,3.8777,0.704992,0.266976,0.5024 +1048576,4.4374,7.76784,1.1008,0.391744,0.65424 +2097152,9.152,15.2914,2.6112,0.5096,0.493184 +4194304,19.6962,32.638,3.40013,0.958464,0.666624 +8388608,36.5625,63.1552,6.50579,1.60147,0.836544 +16777216,77.6246,127.298,11.3253,2.88218,1.4039 +33554432,143.103,254.512,30.1046,5.62042,2.17149 +67108864,293.586,518.766,52.0411,10.9104,3.54573 +16,0.0001,0.228352,0.121856,0.202752,0.16896 +32,0.0001,0.376832,0.131072,0.18432,0.151552 +64,0.0001,0.233472,0.145408,0.177152,0.145408 +128,0.0002,0.237568,0.162816,0.175104,0.13312 +256,0.0003,0.237568,0.1792,0.19968,0.167936 +512,0.0006,0.206848,0.20992,0.211968,0.145408 +1024,0.0005,0.249856,0.233472,0.185344,0.149504 +2048,0.0011,0.292864,0.22016,0.14848,0.125952 +4096,0.0025,0.304128,0.273408,0.14848,0.136192 +8192,0.017,0.33792,0.269312,0.154624,0.136192 +16384,0.0121,0.397312,0.289792,0.201728,0.171008 +32768,0.0398,0.47616,0.297376,0.157696,0.129024 +65536,0.0374,0.661504,0.323584,0.171008,0.127872 +131072,0.5838,1.08442,0.357376,0.179648,0.509952 +262144,1.1739,2.1289,0.4352,0.323584,0.615744 +524288,3.546,4.29197,0.761856,0.258656,0.372448 +1048576,4.8268,7.73939,1.33174,0.386048,0.461568 +2097152,9.5646,15.4071,1.98336,0.542624,0.5976 +4194304,18.0147,32.1761,4.28646,0.854976,0.642464 +8388608,37.9479,63.2525,6.92064,3.15072,0.79872 +16777216,76.2172,127.213,15.1668,2.8887,1.3056 +33554432,144.37,257.22,22.2945,5.57114,2.28698 +67108864,290.296,518.29,66.4499,11.0104,3.66182 +16,0.0002,0.267264,0.104448,0.195584,0.165888 +32,0.0003,0.226304,0.119808,0.287744,0.151552 +64,0.0003,0.265216,0.13824,0.180224,0.175104 +128,0.0002,0.262144,0.154624,0.180224,0.150528 +256,0.0004,0.248832,0.181248,0.181248,0.16896 +512,0.0006,0.264192,0.195584,0.214016,0.144384 +1024,0.0005,0.602112,0.211968,0.18432,0.145408 +2048,0.0023,0.222208,0.238592,0.169984,0.13312 +4096,0.0043,0.342016,0.248832,0.146432,0.130048 +8192,0.004,0.376832,0.273408,0.142336,0.11776 +16384,0.0097,0.365568,0.28672,0.150528,0.690176 +32768,0.0208,0.509952,0.301056,0.173056,0.144384 +65536,0.0413,0.776192,0.325632,0.187392,0.101376 +131072,0.6023,1.10285,0.359424,0.201728,0.497664 +262144,1.1701,2.53133,0.390656,0.254976,0.816064 +524288,2.3316,3.86253,0.687104,0.31232,0.405504 +1048576,4.5272,8.01382,1.16224,0.385024,0.546816 +2097152,11.1004,15.6433,2.3967,0.659456,0.591872 +4194304,18.2146,32.155,3.52154,2.43894,0.729888 +8388608,35.8752,63.5119,6.6185,1.52371,0.972192 +16777216,72.4059,127.636,11.391,2.87437,1.19091 +33554432,143.77,257.058,30.209,5.59309,2.12944 +67108864,291.074,515.379,52.693,10.8844,3.57539 +16,0.0001,0.214016,0.120832,0.202752,0.169984 +32,0.0001,0.21504,0.116736,0.203776,0.17408 +64,0.0003,0.2816,0.14336,0.17408,0.149504 +128,0.0002,0.241664,0.149504,0.178176,0.152576 +256,0.0003,0.206848,0.17408,0.202752,0.45568 +512,0.0004,0.24064,0.195584,0.180224,0.169984 +1024,0.0004,0.259072,0.205824,0.303104,0.202752 +2048,0.001,0.210944,0.228352,0.150528,0.128 +4096,0.002,0.485376,0.26624,0.152576,0.132096 +8192,0.0037,0.311296,0.26624,0.156672,0.125952 +16384,0.0091,0.407552,0.288768,0.214016,0.156672 +32768,0.0202,0.510976,0.3072,0.1792,0.139168 +65536,0.0412,0.668672,0.32768,0.181248,0.154624 +131072,0.618,1.07418,0.356352,0.208896,0.603136 +262144,1.2099,2.53338,0.454656,0.212736,0.494592 +524288,3.0552,4.03331,0.729088,0.294912,0.498656 +1048576,5.1888,7.58579,1.32762,0.653312,0.6 +2097152,9.1319,15.6955,2.02803,0.513664,0.520192 +4194304,18.9283,31.8595,4.11648,0.874496,0.617472 +8388608,36.0894,64.1843,6.90854,1.59334,0.87216 +16777216,77.5457,128.162,15.3042,2.88051,1.3783 +33554432,147.57,258.466,22.1581,5.57254,2.1504 +67108864,313.275,519.84,65.6624,10.9394,3.65702 +16,0.0001,0.210944,0.105472,0.195584,0.167936 +32,0.0002,0.222208,0.131072,0.181248,0.169984 +64,0.0003,0.23552,0.139264,0.182272,0.149504 +128,0.0002,0.251904,0.16896,0.18432,0.125952 +256,0.0003,0.46592,0.182272,0.160768,0.144384 +512,0.0003,0.290816,0.191488,0.203776,0.14848 +1024,0.0014,0.249856,0.211968,0.177152,0.152576 +2048,0.0011,0.534528,0.338944,0.15872,0.124928 +4096,0.0043,0.273408,0.23552,0.154624,0.126976 +8192,0.0034,0.33792,0.273408,0.246784,0.123904 +16384,0.0105,0.351232,0.308224,0.172736,0.157696 +32768,0.0212,0.470016,0.299008,0.178176,0.146432 +65536,0.0407,0.883712,0.349184,0.218112,0.147456 +131072,0.6191,1.07213,0.366592,0.212896,0.495616 +262144,1.2383,2.27942,0.423936,0.22528,0.448512 +524288,2.4101,3.97373,0.835584,0.308032,0.529408 +1048576,4.6843,7.88445,1.30253,0.395264,0.7168 +2097152,9.6028,15.7745,2.44122,0.508256,0.57856 +4194304,20.7051,32.4172,3.41606,0.964576, diff --git a/Project2-Stream-Compaction/data/Scan_data/data_pow2_faster/eff.csv b/Project2-Stream-Compaction/data/Scan_data/data_pow2_faster/eff.csv new file mode 100644 index 0000000..277c1ab --- /dev/null +++ b/Project2-Stream-Compaction/data/Scan_data/data_pow2_faster/eff.csv @@ -0,0 +1,893 @@ +16,0.0952 +32,0.128032 +64,0.13312 +128,0.157696 +256,0.171008 +512,0.192544 +1024,0.205856 +2048,0.232448 +4096,0.234496 +8192,0.258048 +16384,0.28464 +32768,0.300032 +65536,0.32256 +131072,0.352256 +262144,0.417792 +524288,0.79872 +1048576,1.0783 +2097152,2.44157 +4194304,3.36486 +8388608,7.1895 +16777216,11.3766 +33554432,30.4968 +67108864,52.2015 +16,0.11776 +32,0.113664 +64,0.147456 +128,0.150528 +256,0.175104 +512,0.193536 +1024,0.2048 +2048,0.392192 +4096,0.326656 +8192,0.262144 +16384,0.282624 +32768,0.306176 +65536,0.329728 +131072,0.346112 +262144,0.492544 +524288,0.763904 +1048576,1.33018 +2097152,2.06234 +4194304,4.16701 +8388608,6.8007 +16777216,16.8387 +33554432,22.2884 +67108864,65.1991 +16,0.109568 +32,0.131072 +64,0.14848 +128,0.15872 +256,0.172032 +512,0.206848 +1024,0.223232 +2048,0.221184 +4096,0.248832 +8192,0.25088 +16384,0.292864 +32768,0.320512 +65536,0.329728 +131072,0.357376 +262144,0.413696 +524288,0.71168 +1048576,1.10285 +2097152,2.47603 +4194304,3.41299 +8388608,6.63834 +16777216,11.4343 +33554432,30.3278 +67108864,169.267 +16,0.11264 +32,0.120832 +64,0.149504 +128,0.15872 +256,0.20992 +512,0.191488 +1024,0.221184 +2048,0.406528 +4096,0.3072 +8192,0.252928 +16384,0.309248 +32768,0.304128 +65536,0.564224 +131072,0.354304 +262144,0.446464 +524288,0.722464 +1048576,1.26749 +2097152,1.98861 +4194304,4.12365 +8388608,8.45005 +16777216,15.7389 +33554432,22.1624 +67108864,112.246 +16,0.098304 +32,0.211968 +64,0.139264 +128,0.16384 +256,0.176128 +512,0.223232 +1024,0.247808 +2048,0.214016 +4096,0.244736 +8192,0.267264 +16384,0.300032 +32768,0.305792 +65536,0.315936 +131072,0.354304 +262144,0.403456 +524288,0.677888 +1048576,1.13869 +2097152,2.50982 +4194304,3.39312 +8388608,6.77046 +16777216,11.4299 +33554432,30.463 +67108864,59.2435 +16,0.105472 +32,0.118784 +64,0.139264 +128,0.152576 +256,0.18944 +512,0.216064 +1024,0.21504 +2048,0.35328 +4096,0.408576 +8192,0.263168 +16384,0.285696 +32768,0.297984 +65536,0.326656 +131072,0.357376 +262144,0.436224 +524288,0.760832 +1048576,1.39366 +2097152,1.98349 +4194304,5.11795 +8388608,6.86182 +16777216,14.4737 +33554432,24.5309 +67108864,65.2347 +16,0.101376 +32,0.139264 +64,0.129024 +128,0.169984 +256,0.18944 +512,0.206848 +1024,0.211968 +2048,0.20992 +4096,0.221184 +8192,0.277504 +16384,0.279552 +32768,0.296288 +65536,0.320512 +131072,0.357376 +262144,0.408576 +524288,0.695296 +1048576,1.37523 +2097152,2.01114 +4194304,3.32698 +8388608,9.33069 +16777216,11.2512 +33554432,32.3185 +67108864,52.0837 +16,0.104448 +32,0.121856 +64,0.141312 +128,0.1536 +256,0.17408 +512,0.195584 +1024,0.183296 +2048,0.222208 +4096,0.252928 +8192,0.396288 +16384,0.290816 +32768,0.32768 +65536,0.323584 +131072,0.347648 +262144,0.422912 +524288,0.719872 +1048576,1.32042 +2097152,2.24906 +4194304,4.55885 +8388608,7.34822 +16777216,15.5996 +33554432,24.1736 +67108864,111.278 +16,0.11264 +32,0.131072 +64,0.13312 +128,0.157696 +256,0.176128 +512,0.191488 +1024,0.218112 +2048,0.267264 +4096,0.267264 +8192,0.351232 +16384,0.281184 +32768,0.303104 +65536,0.323008 +131072,0.42496 +262144,0.489472 +524288,1.36499 +1048576,1.13766 +2097152,2.4016 +4194304,3.46522 +8388608,9.02861 +16777216,11.4248 +33554432,30.5565 +67108864,51.9619 +16,0.108544 +32,0.119808 +64,0.140288 +128,0.155648 +256,0.171008 +512,0.192512 +1024,0.24064 +2048,0.21504 +4096,0.26624 +8192,0.283648 +16384,0.447104 +32768,0.305152 +65536,0.326656 +131072,0.359424 +262144,0.433152 +524288,0.815104 +1048576,1.28154 +2097152,2.06848 +4194304,4.23424 +8388608,8.46131 +16777216,15.2791 +33554432,22.4236 +67108864,66.2636 +16,0.099328 +32,0.128 +64,0.13824 +128,0.157696 +256,0.193536 +512,0.18944 +1024,0.211968 +2048,0.226304 +4096,0.304128 +8192,0.26112 +16384,0.331392 +32768,0.305152 +65536,0.320512 +131072,0.355328 +262144,0.404768 +524288,0.699808 +1048576,1.15642 +2097152,3.67514 +4194304,3.34746 +8388608,6.57853 +16777216,11.4391 +33554432,30.0472 +67108864,58.2103 +16,0.111616 +32,0.130048 +64,0.145408 +128,0.178176 +256,0.165888 +512,0.190464 +1024,0.201728 +2048,0.222208 +4096,0.231424 +8192,0.265216 +16384,0.292864 +32768,0.29696 +65536,0.328704 +131072,0.361472 +262144,0.42496 +524288,0.944128 +1048576,1.32739 +2097152,2.07872 +4194304,4.1591 +8388608,11.4493 +16777216,15.8775 +33554432,22.5464 +67108864,71.593 +16,0.105472 +32,0.129024 +64,0.141312 +128,0.155648 +256,0.178176 +512,0.182272 +1024,0.217088 +2048,0.366592 +4096,0.24576 +8192,0.2816 +16384,0.365568 +32768,0.341984 +65536,0.32592 +131072,0.345088 +262144,0.399968 +524288,0.761312 +1048576,1.10931 +2097152,3.3792 +4194304,3.40512 +8388608,6.51981 +16777216,11.366 +33554432,32.6881 +67108864,52.4698 +16,0.111616 +32,0.13824 +64,0.556032 +128,0.1536 +256,0.182272 +512,0.197632 +1024,0.216064 +2048,0.224256 +4096,0.221184 +8192,0.263168 +16384,0.288768 +32768,0.30208 +65536,0.310656 +131072,0.350208 +262144,0.39936 +524288,0.761856 +1048576,1.37523 +2097152,2.04358 +4194304,4.19568 +8388608,6.89357 +16777216,18.4484 +33554432,22.2421 +67108864,66.9756 +16,0.106496 +32,0.129024 +64,0.13312 +128,0.159744 +256,0.192512 +512,0.198656 +1024,0.216064 +2048,0.231424 +4096,0.222208 +8192,0.258048 +16384,0.343904 +32768,0.516096 +65536,0.318464 +131072,0.342016 +262144,0.402784 +524288,0.713728 +1048576,1.1264 +2097152,2.51085 +4194304,4.34483 +8388608,6.74099 +16777216,11.8436 +33554432,30.5981 +67108864,54.3252 +16,0.11264 +32,0.12288 +64,0.142336 +128,0.1536 +256,0.52736 +512,0.200704 +1024,0.211968 +2048,0.241664 +4096,0.248832 +8192,0.24576 +16384,0.283648 +32768,0.311296 +65536,0.319488 +131072,0.352256 +262144,0.438272 +524288,0.790528 +1048576,1.66298 +2097152,1.98861 +4194304,4.15325 +8388608,6.82906 +16777216,15.2965 +33554432,22.144 +67108864,65.5534 +16,0.099328 +32,0.131072 +64,0.139264 +128,0.1536 +256,0.180224 +512,0.182272 +1024,0.217088 +2048,0.228352 +4096,0.249856 +8192,0.285696 +16384,0.277504 +32768,0.305152 +65536,0.328704 +131072,0.352256 +262144,0.405504 +524288,0.703488 +1048576,1.11718 +2097152,2.4279 +4194304,3.44371 +8388608,6.63389 +16777216,11.4575 +33554432,30.1476 +67108864,51.9264 +16,0.119808 +32,0.124928 +64,0.147456 +128,0.15872 +256,0.335872 +512,0.196608 +1024,0.224256 +2048,0.36352 +4096,0.248832 +8192,0.273408 +16384,0.28672 +32768,0.310272 +65536,0.320512 +131072,0.371712 +262144,0.411648 +524288,0.76288 +1048576,1.37318 +2097152,2.31731 +4194304,4.16198 +8388608,6.40064 +16777216,15.5566 +33554432,22.2423 +67108864,66.0095 +16,0.113664 +32,0.134144 +64,0.140288 +128,0.172032 +256,0.178176 +512,0.211968 +1024,0.232448 +2048,0.212992 +4096,0.35328 +8192,0.268288 +16384,0.29184 +32768,0.31232 +65536,0.330752 +131072,0.360448 +262144,0.431104 +524288,0.681984 +1048576,1.12538 +2097152,3.14013 +4194304,4.28381 +8388608,6.65395 +16777216,11.3623 +33554432,30.0616 +67108864,51.9983 +16,0.120832 +32,0.19456 +64,0.15872 +128,0.157696 +256,0.167936 +512,0.19456 +1024,0.21504 +2048,0.242688 +4096,0.293888 +8192,0.249856 +16384,0.304128 +32768,0.333824 +65536,0.320512 +131072,0.34304 +262144,0.45568 +524288,0.672768 +1048576,1.94253 +2097152,2.08234 +4194304,4.12512 +8388608,6.90176 +16777216,15.4127 +33554432,22.1389 +67108864,65.6859 +16,0.099328 +32,0.125952 +64,0.160768 +128,0.151552 +256,0.17408 +512,0.192512 +1024,0.216064 +2048,0.229376 +4096,0.223232 +8192,0.299008 +16384,0.283648 +32768,0.333824 +65536,0.320512 +131072,0.365568 +262144,0.396288 +524288,0.705536 +1048576,1.13152 +2097152,2.37453 +4194304,3.41811 +8388608,6.51437 +16777216,11.4575 +33554432,30.0329 +67108864,53.1855 +16,0.110592 +32,0.11776 +64,0.140288 +128,0.149504 +256,0.173056 +512,0.195584 +1024,0.214016 +2048,0.234496 +4096,0.247808 +8192,0.26112 +16384,0.292864 +32768,0.323584 +65536,0.32256 +131072,0.351232 +262144,0.438272 +524288,0.736 +1048576,1.30355 +2097152,2.1519 +4194304,4.16256 +8388608,7.1977 +16777216,15.3549 +33554432,22.073 +67108864,66.2564 +16,0.109568 +32,0.135168 +64,0.144384 +128,0.166912 +256,0.1792 +512,0.192512 +1024,0.259072 +2048,0.241664 +4096,0.254976 +8192,0.264192 +16384,0.28672 +32768,0.313344 +65536,0.328704 +131072,0.333824 +262144,0.427008 +524288,0.726336 +1048576,1.17043 +2097152,2.4617 +4194304,3.40173 +8388608,6.59456 +16777216,11.3295 +33554432,30.1496 +67108864,52.9997 +16,0.109568 +32,0.119808 +64,0.14336 +128,0.14848 +256,0.180224 +512,0.195584 +1024,0.208896 +2048,0.236544 +4096,0.253952 +8192,0.259072 +16384,0.288768 +32768,0.299008 +65536,0.470016 +131072,0.364544 +262144,0.434176 +524288,0.761856 +1048576,1.29984 +2097152,2.00858 +4194304,4.1984 +8388608,6.80038 +16777216,15.2545 +33554432,22.0035 +67108864,66.0443 +16,0.10752 +32,0.136192 +64,0.139264 +128,0.169984 +256,0.176128 +512,0.202752 +1024,0.206848 +2048,0.242688 +4096,0.278528 +8192,0.270336 +16384,0.299008 +32768,0.31232 +65536,0.323584 +131072,0.36352 +262144,0.454656 +524288,0.740864 +1048576,1.11821 +2097152,2.52102 +4194304,3.38739 +8388608,6.62426 +16777216,12.6874 +33554432,29.9209 +67108864,52.8046 +16,0.099328 +32,0.119808 +64,0.151552 +128,0.157696 +256,0.175104 +512,0.192512 +1024,0.212992 +2048,0.24064 +4096,0.237568 +8192,0.31232 +16384,0.29184 +32768,0.299008 +65536,0.319488 +131072,0.349184 +262144,0.395264 +524288,0.729088 +1048576,1.56877 +2097152,2.3271 +4194304,4.42675 +8388608,6.88806 +16777216,16.2079 +33554432,22.4137 +67108864,66.3035 +16,0.11776 +32,0.125952 +64,0.136192 +128,0.151552 +256,0.18432 +512,0.196608 +1024,0.211968 +2048,0.21504 +4096,0.243712 +8192,0.784384 +16384,0.285696 +32768,0.316416 +65536,0.355328 +131072,0.345088 +262144,0.423936 +524288,0.730112 +1048576,1.07552 +2097152,2.4489 +4194304,3.39094 +8388608,6.71232 +16777216,12.0426 +33554432,29.7223 +67108864,52.8748 +16,0.10752 +32,0.116736 +64,0.136192 +128,0.157696 +256,0.17408 +512,0.20992 +1024,0.207872 +2048,0.236544 +4096,0.251904 +8192,0.264192 +16384,0.289792 +32768,0.297984 +65536,0.32768 +131072,0.349184 +262144,0.407552 +524288,0.725696 +1048576,1.31856 +2097152,2.01626 +4194304,4.26496 +8388608,6.85978 +16777216,15.2515 +33554432,22.1327 +67108864,67.6137 +16,0.103424 +32,0.126976 +64,0.136192 +128,0.15872 +256,0.17408 +512,0.193536 +1024,0.208896 +2048,0.20992 +4096,0.500736 +8192,0.280576 +16384,0.290816 +32768,0.310272 +65536,0.315392 +131072,0.857088 +262144,0.392192 +524288,0.72704 +1048576,1.10387 +2097152,3.50822 +4194304,3.41443 +8388608,6.5849 +16777216,11.3408 +33554432,30.2664 +67108864,53.079 +16,0.115712 +32,0.118784 +64,0.141312 +128,0.164864 +256,0.176128 +512,0.196608 +1024,0.268288 +2048,0.231424 +4096,0.269312 +8192,0.263168 +16384,0.299008 +32768,0.321536 +65536,0.342016 +131072,0.566272 +262144,0.41984 +524288,0.745472 +1048576,1.30083 +2097152,2.01318 +4194304,4.23424 +8388608,6.92794 +16777216,15.3221 +33554432,22.3713 +67108864,66.6504 +16,0.106496 +32,0.13312 +64,0.292864 +128,0.1536 +256,0.173056 +512,0.185344 +1024,0.207872 +2048,0.21504 +4096,0.241664 +8192,0.252928 +16384,0.289792 +32768,0.303104 +65536,0.320512 +131072,0.372736 +262144,0.437248 +524288,0.689664 +1048576,1.0992 +2097152,3.16314 +4194304,3.40173 +8388608,6.55616 +16777216,11.5471 +33554432,30.0641 +67108864,54.5843 +16,0.123904 +32,0.124928 +64,0.145408 +128,0.151552 +256,0.172032 +512,0.195584 +1024,0.216064 +2048,0.237568 +4096,0.367616 +8192,0.273408 +16384,0.282624 +32768,0.309248 +65536,0.31744 +131072,0.36352 +262144,0.403456 +524288,0.75264 +1048576,1.77562 +2097152,1.96608 +4194304,4.16563 +8388608,6.89459 +16777216,15.0592 +33554432,21.7706 +67108864,65.9599 +16,0.11264 +32,0.13312 +64,0.140288 +128,0.165888 +256,0.172032 +512,0.19968 +1024,0.222208 +2048,0.227328 +4096,0.249856 +8192,0.284672 +16384,0.288768 +32768,0.715776 +65536,0.326656 +131072,0.351232 +262144,0.43008 +524288,1.20602 +1048576,1.13392 +2097152,2.43507 +4194304,3.41299 +8388608,6.56246 +16777216,11.4031 +33554432,29.9587 +67108864,53.5845 +16,0.108544 +32,0.125952 +64,0.145408 +128,0.161792 +256,0.176128 +512,0.192512 +1024,0.214016 +2048,0.219136 +4096,0.253952 +8192,0.269312 +16384,0.318464 +32768,0.299008 +65536,0.316416 +131072,0.347136 +262144,0.39424 +524288,0.720416 +1048576,1.29491 +2097152,1.97389 +4194304,4.23526 +8388608,6.93555 +16777216,15.3071 +33554432,22.5751 +67108864,66.5016 +16,0.109568 +32,0.139264 +64,0.144384 +128,0.155648 +256,0.175104 +512,0.193536 +1024,0.219136 +2048,0.217088 +4096,0.24576 +8192,0.269312 +16384,0.28672 +32768,0.306176 +65536,0.339968 +131072,0.371712 +262144,0.41472 +524288,0.704992 +1048576,1.1008 +2097152,2.6112 +4194304,3.40013 +8388608,6.50579 +16777216,11.3253 +33554432,30.1046 +67108864,52.0411 +16,0.121856 +32,0.131072 +64,0.145408 +128,0.162816 +256,0.1792 +512,0.20992 +1024,0.233472 +2048,0.22016 +4096,0.273408 +8192,0.269312 +16384,0.289792 +32768,0.297376 +65536,0.323584 +131072,0.357376 +262144,0.4352 +524288,0.761856 +1048576,1.33174 +2097152,1.98336 +4194304,4.28646 +8388608,6.92064 +16777216,15.1668 +33554432,22.2945 +67108864,66.4499 +16,0.104448 +32,0.119808 +64,0.13824 +128,0.154624 +256,0.181248 +512,0.195584 +1024,0.211968 +2048,0.238592 +4096,0.248832 +8192,0.273408 +16384,0.28672 +32768,0.301056 +65536,0.325632 +131072,0.359424 +262144,0.390656 +524288,0.687104 +1048576,1.16224 +2097152,2.3967 +4194304,3.52154 +8388608,6.6185 +16777216,11.391 +33554432,30.209 +67108864,52.693 +16,0.120832 +32,0.116736 +64,0.14336 +128,0.149504 +256,0.17408 +512,0.195584 +1024,0.205824 +2048,0.228352 +4096,0.26624 +8192,0.26624 +16384,0.288768 +32768,0.3072 +65536,0.32768 +131072,0.356352 +262144,0.454656 +524288,0.729088 +1048576,1.32762 +2097152,2.02803 +4194304,4.11648 +8388608,6.90854 +16777216,15.3042 +33554432,22.1581 +67108864,65.6624 +16,0.105472 +32,0.131072 +64,0.139264 +128,0.16896 +256,0.182272 +512,0.191488 +1024,0.211968 +2048,0.338944 +4096,0.23552 +8192,0.273408 +16384,0.308224 +32768,0.299008 +65536,0.349184 +131072,0.366592 +262144,0.423936 +524288,0.835584 +1048576,1.30253 +2097152,2.44122 +4194304,3.41606 diff --git a/Project2-Stream-Compaction/data/Scan_data/data_pow2_faster/naive.csv b/Project2-Stream-Compaction/data/Scan_data/data_pow2_faster/naive.csv new file mode 100644 index 0000000..f342505 --- /dev/null +++ b/Project2-Stream-Compaction/data/Scan_data/data_pow2_faster/naive.csv @@ -0,0 +1,893 @@ +16,0.177184 +32,0.18128 +64,0.178144 +128,0.183328 +256,0.203776 +512,0.20992 +1024,0.27648 +2048,0.227328 +4096,0.301056 +8192,0.273408 +16384,0.40144 +32768,0.433152 +65536,0.651232 +131072,1.03526 +262144,2.08589 +524288,4.10723 +1048576,8.21616 +2097152,15.7663 +4194304,32.1402 +8388608,63.6312 +16777216,129.222 +33554432,259.564 +67108864,534.437 +16,0.2304 +32,0.142336 +64,0.2304 +128,0.233472 +256,0.437248 +512,0.253952 +1024,0.421888 +2048,0.279552 +4096,0.278528 +8192,0.339968 +16384,0.365568 +32768,0.556032 +65536,0.658432 +131072,1.11104 +262144,2.11046 +524288,3.96422 +1048576,8.68285 +2097152,16.4447 +4194304,31.8985 +8388608,64.2243 +16777216,128.552 +33554432,264.295 +67108864,525.804 +16,0.229376 +32,0.243712 +64,0.186368 +128,0.233472 +256,0.15872 +512,0.26112 +1024,0.251904 +2048,0.2816 +4096,0.273408 +8192,0.304128 +16384,0.478208 +32768,0.456096 +65536,0.673792 +131072,1.06394 +262144,2.10022 +524288,4.25677 +1048576,8.55808 +2097152,16.0652 +4194304,31.942 +8388608,64.0264 +16777216,131.744 +33554432,273.596 +67108864,587.39 +16,0.166912 +32,0.177152 +64,0.187392 +128,0.360448 +256,0.30208 +512,0.529408 +1024,0.227328 +2048,0.242688 +4096,0.28672 +8192,0.278528 +16384,0.326656 +32768,0.414304 +65536,0.646144 +131072,1.51347 +262144,2.18829 +524288,3.95571 +1048576,8.00003 +2097152,16.0537 +4194304,37.4221 +8388608,64.897 +16777216,133.203 +33554432,260.833 +67108864,554.094 +16,0.231424 +32,0.208896 +64,0.218112 +128,0.238592 +256,0.238592 +512,0.2304 +1024,0.32768 +2048,0.279552 +4096,0.275456 +8192,0.320512 +16384,0.37168 +32768,0.44032 +65536,0.65936 +131072,1.06291 +262144,2.42442 +524288,3.96493 +1048576,7.80851 +2097152,15.9334 +4194304,32.258 +8388608,64.3584 +16777216,129.499 +33554432,265.48 +67108864,523.895 +16,0.19968 +32,0.164864 +64,0.185344 +128,0.272384 +256,0.457728 +512,0.247808 +1024,0.318464 +2048,0.285696 +4096,0.273408 +8192,0.320512 +16384,0.349184 +32768,0.4608 +65536,0.644096 +131072,1.16531 +262144,2.13197 +524288,3.97005 +1048576,8.61731 +2097152,15.8378 +4194304,32.5631 +8388608,67.585 +16777216,134.546 +33554432,269.099 +67108864,534.582 +16,0.231424 +32,0.208896 +64,0.234496 +128,0.270336 +256,0.287744 +512,0.2048 +1024,0.340992 +2048,0.2816 +4096,0.303104 +8192,0.388096 +16384,0.354304 +32768,0.44544 +65536,0.669696 +131072,1.05648 +262144,2.05517 +524288,4.23606 +1048576,9.43002 +2097152,16.0877 +4194304,32.8376 +8388608,66.9003 +16777216,137.853 +33554432,283.352 +67108864,524.986 +16,0.228352 +32,0.223232 +64,0.23552 +128,0.242688 +256,0.25088 +512,0.392192 +1024,0.285696 +2048,0.293888 +4096,0.301056 +8192,0.311296 +16384,0.378368 +32768,0.436096 +65536,0.662208 +131072,1.08134 +262144,2.06848 +524288,3.99811 +1048576,8.40336 +2097152,15.9717 +4194304,32.6234 +8388608,64.0241 +16777216,130.507 +33554432,345.31 +67108864,528.416 +16,0.226304 +32,0.26112 +64,0.216064 +128,0.185344 +256,0.221184 +512,0.237568 +1024,0.24576 +2048,0.292864 +4096,0.292864 +8192,0.306176 +16384,0.379232 +32768,0.499136 +65536,0.672768 +131072,1.36662 +262144,3.75194 +524288,3.97414 +1048576,7.66259 +2097152,16.6294 +4194304,33.4868 +8388608,64.2385 +16777216,131.061 +33554432,261.763 +67108864,538.415 +16,0.188416 +32,0.273408 +64,0.22016 +128,0.237568 +256,0.242688 +512,0.231424 +1024,0.295936 +2048,0.270336 +4096,0.297984 +8192,0.273408 +16384,0.369664 +32768,0.491168 +65536,0.677888 +131072,1.07008 +262144,2.09382 +524288,4.21965 +1048576,7.96774 +2097152,16.1194 +4194304,33.2426 +8388608,64.9196 +16777216,146.677 +33554432,281.107 +67108864,543.846 +16,0.214016 +32,0.15872 +64,0.239616 +128,0.303104 +256,0.242688 +512,0.234496 +1024,0.279552 +2048,0.333824 +4096,0.295936 +8192,0.331776 +16384,0.345088 +32768,0.450496 +65536,0.647168 +131072,1.04835 +262144,2.25485 +524288,4.12038 +1048576,9.60819 +2097152,21.1999 +4194304,32.7468 +8388608,65.1222 +16777216,170.761 +33554432,263.252 +67108864,539.289 +16,0.186368 +32,0.16896 +64,0.17408 +128,0.203776 +256,0.18944 +512,0.22016 +1024,0.258048 +2048,0.237568 +4096,0.29184 +8192,0.32256 +16384,0.379648 +32768,0.477184 +65536,1.07725 +131072,1.08749 +262144,2.60608 +524288,3.88246 +1048576,8.0167 +2097152,15.6619 +4194304,31.7878 +8388608,65.5524 +16777216,130.956 +33554432,260.976 +67108864,561.023 +16,0.169984 +32,0.229376 +64,0.202752 +128,0.397312 +256,0.21504 +512,0.254976 +1024,0.248832 +2048,0.282624 +4096,0.403456 +8192,0.325632 +16384,0.37376 +32768,0.456704 +65536,0.801312 +131072,1.12176 +262144,2.69414 +524288,4.00534 +1048576,7.68848 +2097152,15.283 +4194304,31.5115 +8388608,66.6521 +16777216,128.886 +33554432,263.171 +67108864,527.436 +16,0.21504 +32,0.2048 +64,0.19968 +128,0.223232 +256,0.212992 +512,0.251904 +1024,0.252928 +2048,0.26624 +4096,0.280576 +8192,0.310272 +16384,0.370688 +32768,0.459744 +65536,0.66448 +131072,1.0537 +262144,2.14426 +524288,4.04579 +1048576,7.64403 +2097152,15.4109 +4194304,30.9944 +8388608,66.1068 +16777216,140.265 +33554432,266.035 +67108864,537.245 +16,0.162816 +32,0.19456 +64,0.21504 +128,0.242688 +256,0.246784 +512,0.251904 +1024,0.249856 +2048,0.268288 +4096,0.263168 +8192,0.357376 +16384,0.382624 +32768,0.451904 +65536,0.663552 +131072,1.04038 +262144,2.18931 +524288,4.17997 +1048576,8.3975 +2097152,16.6611 +4194304,34.5272 +8388608,63.1928 +16777216,133.19 +33554432,272.028 +67108864,535.695 +16,0.207872 +32,0.222208 +64,0.237568 +128,0.216064 +256,0.243712 +512,0.254976 +1024,0.251904 +2048,0.283648 +4096,0.315392 +8192,0.325632 +16384,0.361472 +32768,0.477184 +65536,0.697344 +131072,1.1305 +262144,2.29478 +524288,3.90531 +1048576,7.93661 +2097152,16.1101 +4194304,32.8131 +8388608,65.9153 +16777216,140.092 +33554432,261.018 +67108864,527.174 +16,0.2304 +32,0.227328 +64,0.223232 +128,0.188416 +256,0.210944 +512,0.259072 +1024,0.392192 +2048,0.238592 +4096,0.254976 +8192,0.29184 +16384,0.330752 +32768,0.44032 +65536,0.661504 +131072,1.04038 +262144,2.72794 +524288,3.8871 +1048576,8.18586 +2097152,16.0587 +4194304,32.1329 +8388608,64.255 +16777216,129.152 +33554432,264.05 +67108864,527.551 +16,0.214016 +32,0.20992 +64,0.253952 +128,0.222208 +256,0.249856 +512,0.256 +1024,0.246784 +2048,0.285696 +4096,0.219136 +8192,0.534528 +16384,0.375808 +32768,0.47616 +65536,0.667648 +131072,1.11718 +262144,2.38899 +524288,3.92288 +1048576,8.19968 +2097152,16.1818 +4194304,34.6163 +8388608,63.2027 +16777216,129.477 +33554432,261.169 +67108864,528.798 +16,0.23552 +32,0.20992 +64,0.226304 +128,0.24576 +256,0.234496 +512,0.254976 +1024,0.251904 +2048,0.62976 +4096,0.270336 +8192,0.392192 +16384,0.405504 +32768,0.474112 +65536,0.64 +131072,1.11104 +262144,2.13402 +524288,4.30378 +1048576,7.78848 +2097152,15.8228 +4194304,33.1217 +8388608,64.5827 +16777216,128.729 +33554432,260.468 +67108864,531.973 +16,0.376832 +32,0.226304 +64,0.217088 +128,0.2304 +256,0.24576 +512,0.260096 +1024,0.268288 +2048,0.278528 +4096,0.251904 +8192,0.3328 +16384,0.400384 +32768,0.475136 +65536,0.666624 +131072,1.04038 +262144,2.31219 +524288,3.8745 +1048576,8.2985 +2097152,15.8873 +4194304,31.1296 +8388608,63.4274 +16777216,130.428 +33554432,260.993 +67108864,527.575 +16,0.231424 +32,0.228352 +64,0.234496 +128,0.247808 +256,0.2816 +512,0.214016 +1024,0.264192 +2048,0.185344 +4096,0.390144 +8192,0.433152 +16384,0.381952 +32768,0.538624 +65536,0.656384 +131072,1.01786 +262144,2.13504 +524288,3.8871 +1048576,8.45517 +2097152,15.9649 +4194304,31.1941 +8388608,63.168 +16777216,127.249 +33554432,255.865 +67108864,519.788 +16,0.217088 +32,0.22528 +64,0.233472 +128,0.229376 +256,0.226304 +512,0.259072 +1024,0.277504 +2048,0.267264 +4096,0.31232 +8192,0.335872 +16384,0.379904 +32768,0.4864 +65536,0.652288 +131072,1.05677 +262144,2.33779 +524288,3.91222 +1048576,8.57389 +2097152,16.7004 +4194304,32.7636 +8388608,63.2942 +16777216,126.72 +33554432,257.195 +67108864,516.564 +16,0.297984 +32,0.200704 +64,0.219136 +128,0.237568 +256,0.267264 +512,0.258048 +1024,0.247808 +2048,0.282624 +4096,0.303104 +8192,0.3072 +16384,0.347136 +32768,0.442368 +65536,0.642048 +131072,1.05677 +262144,2.11763 +524288,4.02739 +1048576,8.24006 +2097152,16.4731 +4194304,33.5124 +8388608,62.0697 +16777216,127.814 +33554432,257.562 +67108864,518.235 +16,0.234496 +32,0.132096 +64,0.229376 +128,0.243712 +256,0.357376 +512,0.253952 +1024,0.24064 +2048,0.244736 +4096,0.263168 +8192,0.299008 +16384,0.334848 +32768,0.453632 +65536,0.6144 +131072,1.07622 +262144,2.29683 +524288,3.86653 +1048576,8.41398 +2097152,16.792 +4194304,31.4333 +8388608,64.6096 +16777216,127.231 +33554432,255.831 +67108864,519.952 +16,0.219136 +32,0.219136 +64,0.234496 +128,0.237568 +256,0.249856 +512,0.28672 +1024,0.283648 +2048,0.32256 +4096,0.303104 +8192,0.36864 +16384,0.380928 +32768,0.477184 +65536,0.662528 +131072,1.05062 +262144,2.29376 +524288,4.37296 +1048576,8.0217 +2097152,16.1072 +4194304,31.2603 +8388608,63.6085 +16777216,128.22 +33554432,257.851 +67108864,518.677 +16,0.222208 +32,0.214016 +64,0.238592 +128,0.237568 +256,0.253952 +512,0.260096 +1024,0.304128 +2048,0.246784 +4096,0.28672 +8192,0.3328 +16384,0.653312 +32768,0.4864 +65536,0.68608 +131072,1.20525 +262144,2.21798 +524288,3.88387 +1048576,8.28797 +2097152,16.2099 +4194304,31.0876 +8388608,64.2516 +16777216,127.748 +33554432,252.981 +67108864,518.016 +16,0.277504 +32,0.248832 +64,0.237568 +128,0.237568 +256,0.191488 +512,0.2304 +1024,0.279552 +2048,0.390144 +4096,0.268288 +8192,0.30208 +16384,0.351232 +32768,0.448512 +65536,0.643072 +131072,1.0793 +262144,2.26611 +524288,4.35078 +1048576,7.74928 +2097152,16.3451 +4194304,31.813 +8388608,63.2289 +16777216,127.56 +33554432,254.906 +67108864,519.416 +16,0.223232 +32,0.211968 +64,0.232448 +128,0.24576 +256,0.249856 +512,0.26112 +1024,0.232448 +2048,0.229376 +4096,0.308224 +8192,0.241664 +16384,0.344064 +32768,0.477184 +65536,0.668672 +131072,1.2329 +262144,2.38899 +524288,3.83898 +1048576,7.99216 +2097152,15.7102 +4194304,31.753 +8388608,63.4243 +16777216,128.546 +33554432,255.174 +67108864,517.294 +16,0.191488 +32,0.18944 +64,0.191488 +128,0.192512 +256,0.208896 +512,0.229376 +1024,0.264192 +2048,0.39424 +4096,0.267264 +8192,0.279552 +16384,0.347136 +32768,0.451584 +65536,0.883712 +131072,1.06598 +262144,2.10432 +524288,4.42266 +1048576,7.97286 +2097152,15.6897 +4194304,31.5193 +8388608,64.0338 +16777216,127.49 +33554432,255.303 +67108864,518.827 +16,0.242688 +32,0.160768 +64,0.239616 +128,0.229376 +256,0.246784 +512,0.272384 +1024,0.253952 +2048,0.283648 +4096,0.314368 +8192,0.345088 +16384,0.37888 +32768,0.468992 +65536,0.866304 +131072,1.08134 +262144,2.09715 +524288,4.35443 +1048576,7.73392 +2097152,15.7143 +4194304,33.3397 +8388608,63.4087 +16777216,128.478 +33554432,257.181 +67108864,517.625 +16,0.218112 +32,0.289792 +64,0.339968 +128,0.244736 +256,0.227328 +512,0.256 +1024,0.259072 +2048,0.253952 +4096,0.246784 +8192,0.30208 +16384,0.3584 +32768,0.519168 +65536,0.667648 +131072,1.10285 +262144,2.1207 +524288,3.87552 +1048576,8.15072 +2097152,15.9089 +4194304,32.2127 +8388608,63.0906 +16777216,127.249 +33554432,257.165 +67108864,521.653 +16,0.233472 +32,0.231424 +64,0.24064 +128,0.214016 +256,0.197632 +512,0.259072 +1024,0.241664 +2048,0.32768 +4096,0.396288 +8192,0.319488 +16384,0.431104 +32768,0.508928 +65536,0.657408 +131072,1.07315 +262144,2.43712 +524288,3.87443 +1048576,7.8999 +2097152,15.5132 +4194304,31.7447 +8388608,64.2415 +16777216,127.798 +33554432,257.134 +67108864,517.477 +16,0.219136 +32,0.22528 +64,0.238592 +128,0.244736 +256,0.248832 +512,0.270336 +1024,0.258048 +2048,0.221184 +4096,0.263168 +8192,0.294912 +16384,0.359424 +32768,0.44544 +65536,0.672768 +131072,1.03014 +262144,2.11456 +524288,3.85946 +1048576,7.97389 +2097152,16.5784 +4194304,31.5592 +8388608,63.632 +16777216,127.002 +33554432,255.581 +67108864,518.357 +16,0.254976 +32,0.258048 +64,0.278528 +128,0.2048 +256,0.212992 +512,0.244736 +1024,0.270336 +2048,0.239616 +4096,0.272384 +8192,0.297984 +16384,0.346112 +32768,0.442368 +65536,0.651264 +131072,1.09363 +262144,2.11046 +524288,4.07654 +1048576,7.84077 +2097152,15.4232 +4194304,31.8853 +8388608,63.2962 +16777216,128.879 +33554432,257.597 +67108864,518.579 +16,0.180224 +32,0.212992 +64,0.178176 +128,0.208896 +256,0.239616 +512,0.210944 +1024,0.24064 +2048,0.248832 +4096,0.268288 +8192,0.313344 +16384,0.350208 +32768,0.442368 +65536,0.651264 +131072,1.05984 +262144,2.06438 +524288,3.8777 +1048576,7.76784 +2097152,15.2914 +4194304,32.638 +8388608,63.1552 +16777216,127.298 +33554432,254.512 +67108864,518.766 +16,0.228352 +32,0.376832 +64,0.233472 +128,0.237568 +256,0.237568 +512,0.206848 +1024,0.249856 +2048,0.292864 +4096,0.304128 +8192,0.33792 +16384,0.397312 +32768,0.47616 +65536,0.661504 +131072,1.08442 +262144,2.1289 +524288,4.29197 +1048576,7.73939 +2097152,15.4071 +4194304,32.1761 +8388608,63.2525 +16777216,127.213 +33554432,257.22 +67108864,518.29 +16,0.267264 +32,0.226304 +64,0.265216 +128,0.262144 +256,0.248832 +512,0.264192 +1024,0.602112 +2048,0.222208 +4096,0.342016 +8192,0.376832 +16384,0.365568 +32768,0.509952 +65536,0.776192 +131072,1.10285 +262144,2.53133 +524288,3.86253 +1048576,8.01382 +2097152,15.6433 +4194304,32.155 +8388608,63.5119 +16777216,127.636 +33554432,257.058 +67108864,515.379 +16,0.214016 +32,0.21504 +64,0.2816 +128,0.241664 +256,0.206848 +512,0.24064 +1024,0.259072 +2048,0.210944 +4096,0.485376 +8192,0.311296 +16384,0.407552 +32768,0.510976 +65536,0.668672 +131072,1.07418 +262144,2.53338 +524288,4.03331 +1048576,7.58579 +2097152,15.6955 +4194304,31.8595 +8388608,64.1843 +16777216,128.162 +33554432,258.466 +67108864,519.84 +16,0.210944 +32,0.222208 +64,0.23552 +128,0.251904 +256,0.46592 +512,0.290816 +1024,0.249856 +2048,0.534528 +4096,0.273408 +8192,0.33792 +16384,0.351232 +32768,0.470016 +65536,0.883712 +131072,1.07213 +262144,2.27942 +524288,3.97373 +1048576,7.88445 +2097152,15.7745 +4194304,32.4172 diff --git a/Project2-Stream-Compaction/data/Scan_data/data_pow2_faster/shared_mem.csv b/Project2-Stream-Compaction/data/Scan_data/data_pow2_faster/shared_mem.csv new file mode 100644 index 0000000..ef7d318 --- /dev/null +++ b/Project2-Stream-Compaction/data/Scan_data/data_pow2_faster/shared_mem.csv @@ -0,0 +1,893 @@ +16,0.15152 +32,0.141312 +64,0.136192 +128,0.139264 +256,0.138208 +512,0.140288 +1024,0.147488 +2048,0.137216 +4096,0.149504 +8192,0.140288 +16384,0.157696 +32768,0.151552 +65536,0.160768 +131072,0.146976 +262144,0.18784 +524288,1.67424 +1048576,0.357984 +2097152,0.564032 +4194304,0.85504 +8388608,1.55382 +16777216,2.92944 +33554432,5.57008 +67108864,11.0404 +16,0.198656 +32,0.162816 +64,0.177152 +128,0.159744 +256,0.172032 +512,0.180224 +1024,0.182272 +2048,0.159744 +4096,0.139264 +8192,0.161792 +16384,0.172704 +32768,0.170784 +65536,0.165888 +131072,0.217088 +262144,0.201632 +524288,0.298784 +1048576,0.359424 +2097152,0.61024 +4194304,0.854016 +8388608,1.50835 +16777216,2.87792 +33554432,5.62029 +67108864,10.9628 +16,0.167936 +32,0.162816 +64,0.17408 +128,0.726016 +256,0.171008 +512,0.180224 +1024,0.712704 +2048,0.154624 +4096,0.152576 +8192,0.114688 +16384,0.198656 +32768,0.178112 +65536,0.200096 +131072,0.195584 +262144,0.252928 +524288,0.30208 +1048576,0.77408 +2097152,0.59904 +4194304,0.906816 +8388608,1.55136 +16777216,2.87437 +33554432,5.57357 +67108864,11.9151 +16,0.154624 +32,0.135168 +64,0.13312 +128,0.140288 +256,0.22016 +512,0.183296 +1024,0.142336 +2048,0.140288 +4096,0.13312 +8192,0.210944 +16384,0.13824 +32768,0.151328 +65536,0.160768 +131072,0.191488 +262144,0.233472 +524288,0.26064 +1048576,0.342592 +2097152,0.579008 +4194304,0.89232 +8388608,1.55546 +16777216,2.86822 +33554432,5.58781 +67108864,11.0528 +16,0.226304 +32,0.164864 +64,0.212992 +128,0.160768 +256,0.186368 +512,0.157696 +1024,0.172032 +2048,0.229376 +4096,0.152576 +8192,0.222208 +16384,0.175584 +32768,0.161792 +65536,0.179808 +131072,0.207264 +262144,0.229024 +524288,0.295808 +1048576,0.379392 +2097152,0.536288 +4194304,0.83952 +8388608,1.5416 +16777216,2.85082 +33554432,23.6435 +67108864,11.03 +16,0.172032 +32,0.142336 +64,0.172032 +128,0.173056 +256,0.20992 +512,0.171008 +1024,0.1792 +2048,0.401408 +4096,0.20992 +8192,0.14336 +16384,0.177152 +32768,0.15504 +65536,0.224256 +131072,0.179104 +262144,0.191328 +524288,0.311008 +1048576,0.413344 +2097152,0.6496 +4194304,0.92672 +8388608,1.80838 +16777216,2.89837 +33554432,5.62995 +67108864,11.1258 +16,0.1792 +32,0.1792 +64,0.172032 +128,0.169984 +256,0.292864 +512,0.172032 +1024,0.159744 +2048,0.150528 +4096,0.150528 +8192,0.151552 +16384,0.217088 +32768,0.2304 +65536,0.177152 +131072,0.185152 +262144,0.225792 +524288,0.310272 +1048576,0.377856 +2097152,0.543584 +4194304,0.910848 +8388608,1.74339 +16777216,2.93069 +33554432,5.64464 +67108864,10.9597 +16,0.239616 +32,0.173056 +64,0.173056 +128,0.208896 +256,0.1792 +512,0.164864 +1024,0.180224 +2048,0.178176 +4096,0.14848 +8192,0.152576 +16384,0.162816 +32768,0.192512 +65536,0.17488 +131072,0.250688 +262144,0.547392 +524288,0.264512 +1048576,0.409408 +2097152,0.65888 +4194304,0.944832 +8388608,1.65888 +16777216,2.8496 +33554432,5.6335 +67108864,11.1152 +16,0.2048 +32,0.17408 +64,0.21504 +128,0.147456 +256,0.145408 +512,0.173056 +1024,0.162816 +2048,0.154624 +4096,0.151552 +8192,0.221184 +16384,0.403456 +32768,0.175104 +65536,0.218592 +131072,0.205824 +262144,0.258048 +524288,0.264672 +1048576,0.406528 +2097152,0.523904 +4194304,0.887648 +8388608,1.54269 +16777216,2.86003 +33554432,5.5815 +67108864,12.0214 +16,0.196608 +32,0.177152 +64,0.202752 +128,0.172032 +256,0.15872 +512,0.18432 +1024,0.177152 +2048,0.151552 +4096,0.17408 +8192,0.149504 +16384,0.173376 +32768,0.212544 +65536,0.166368 +131072,0.180544 +262144,0.196608 +524288,0.313024 +1048576,0.357216 +2097152,0.536576 +4194304,0.848736 +8388608,1.53872 +16777216,4.5831 +33554432,5.6535 +67108864,11.5476 +16,0.191488 +32,0.16896 +64,0.182272 +128,0.207872 +256,0.16384 +512,0.1792 +1024,0.172032 +2048,0.142336 +4096,0.151552 +8192,0.149504 +16384,0.158368 +32768,0.16976 +65536,0.177152 +131072,0.213856 +262144,0.387072 +524288,0.299008 +1048576,0.708416 +2097152,0.845824 +4194304,0.85568 +8388608,2.29069 +16777216,2.93376 +33554432,5.6151 +67108864,11.9876 +16,0.152576 +32,0.156672 +64,0.14848 +128,0.13824 +256,0.160768 +512,0.165888 +1024,0.149504 +2048,0.146432 +4096,0.145408 +8192,0.159744 +16384,0.200128 +32768,0.16976 +65536,0.167936 +131072,0.211616 +262144,0.417792 +524288,0.30304 +1048576,0.372448 +2097152,0.5144 +4194304,0.845824 +8388608,1.52342 +16777216,4.84966 +33554432,5.68218 +67108864,10.9233 +16,0.198656 +32,0.251904 +64,0.177152 +128,0.172032 +256,0.205824 +512,0.147456 +1024,0.20992 +2048,0.173056 +4096,0.16384 +8192,0.157696 +16384,0.17472 +32768,0.201152 +65536,0.181248 +131072,0.186368 +262144,0.228096 +524288,0.350208 +1048576,0.36128 +2097152,0.533408 +4194304,0.84768 +8388608,1.65027 +16777216,2.88934 +33554432,5.5873 +67108864,10.8912 +16,0.173056 +32,0.152576 +64,0.217088 +128,0.171008 +256,0.202752 +512,0.165888 +1024,0.162816 +2048,0.224256 +4096,0.1536 +8192,0.233472 +16384,0.157696 +32768,0.377856 +65536,0.18016 +131072,0.265792 +262144,0.222208 +524288,0.295936 +1048576,0.372352 +2097152,0.565632 +4194304,0.872096 +8388608,1.51594 +16777216,2.87638 +33554432,5.59581 +67108864,10.9476 +16,0.176128 +32,0.169984 +64,0.172032 +128,0.1792 +256,0.176128 +512,0.177152 +1024,0.16384 +2048,0.151552 +4096,0.160768 +8192,0.155648 +16384,0.17808 +32768,0.210272 +65536,0.178016 +131072,0.178976 +262144,0.258048 +524288,0.305152 +1048576,0.353824 +2097152,0.544192 +4194304,0.840288 +8388608,1.59437 +16777216,2.95581 +33554432,5.61395 +67108864,10.9474 +16,0.218112 +32,0.19456 +64,0.169984 +128,0.198656 +256,0.202752 +512,0.172032 +1024,0.176128 +2048,0.156672 +4096,0.155648 +8192,0.149504 +16384,0.186368 +32768,0.197504 +65536,0.177856 +131072,0.190464 +262144,0.234496 +524288,0.349184 +1048576,0.380224 +2097152,0.615392 +4194304,0.85168 +8388608,1.53152 +16777216,2.86051 +33554432,5.95136 +67108864,10.9821 +16,0.2048 +32,0.202752 +64,0.173056 +128,0.218112 +256,0.1536 +512,0.15872 +1024,0.151552 +2048,0.125952 +4096,0.164864 +8192,0.157696 +16384,0.218112 +32768,0.15504 +65536,0.211968 +131072,0.1792 +262144,0.248832 +524288,0.508928 +1048576,0.450176 +2097152,0.582656 +4194304,0.85472 +8388608,1.66566 +16777216,2.88851 +33554432,5.66214 +67108864,11.1 +16,0.193536 +32,0.164864 +64,0.16896 +128,0.1536 +256,0.176128 +512,0.175104 +1024,0.180224 +2048,0.262144 +4096,0.146432 +8192,0.201728 +16384,0.181248 +32768,0.169984 +65536,0.187392 +131072,0.182272 +262144,0.229376 +524288,0.303104 +1048576,0.376224 +2097152,0.541568 +4194304,0.888832 +8388608,1.65478 +16777216,2.85974 +33554432,5.71862 +67108864,11.8184 +16,0.177152 +32,0.177152 +64,0.197632 +128,0.178176 +256,0.175104 +512,0.173056 +1024,0.17408 +2048,0.164864 +4096,0.151552 +8192,0.156672 +16384,0.173056 +32768,0.191488 +65536,0.203776 +131072,0.188416 +262144,0.224256 +524288,0.312896 +1048576,0.38048 +2097152,0.5304 +4194304,0.852992 +8388608,1.51731 +16777216,2.8825 +33554432,5.64298 +67108864,10.9507 +16,0.173056 +32,0.176128 +64,0.210944 +128,0.172032 +256,0.193536 +512,0.182272 +1024,0.175104 +2048,0.151552 +4096,0.229376 +8192,0.173056 +16384,0.183296 +32768,0.169632 +65536,0.211968 +131072,0.192512 +262144,0.211968 +524288,0.282336 +1048576,0.392192 +2097152,0.505376 +4194304,0.848896 +8388608,1.53904 +16777216,2.88819 +33554432,5.69002 +67108864,11.1733 +16,0.203776 +32,0.181248 +64,0.177152 +128,0.260096 +256,0.195584 +512,0.183296 +1024,0.181248 +2048,0.14848 +4096,0.119808 +8192,0.1536 +16384,0.178176 +32768,0.234496 +65536,0.200704 +131072,0.211968 +262144,0.340992 +524288,0.30256 +1048576,0.379424 +2097152,0.543552 +4194304,0.859136 +8388608,1.51962 +16777216,2.89587 +33554432,5.60282 +67108864,10.9903 +16,0.201728 +32,0.181248 +64,0.178176 +128,0.200704 +256,0.186368 +512,0.203776 +1024,0.206848 +2048,0.150528 +4096,0.150528 +8192,0.154624 +16384,0.173056 +32768,0.156672 +65536,0.214752 +131072,0.214016 +262144,0.329728 +524288,0.303488 +1048576,0.376832 +2097152,0.530016 +4194304,0.883712 +8388608,1.5049 +16777216,2.86099 +33554432,5.59923 +67108864,11.0171 +16,0.186368 +32,0.196608 +64,0.176128 +128,0.177152 +256,0.200704 +512,0.200704 +1024,0.193536 +2048,0.140288 +4096,0.1536 +8192,0.183296 +16384,0.164864 +32768,0.162816 +65536,0.216064 +131072,0.17456 +262144,0.29696 +524288,0.334848 +1048576,0.380448 +2097152,0.4864 +4194304,0.903936 +8388608,1.54794 +16777216,3.06106 +33554432,5.60317 +67108864,11.6037 +16,0.196608 +32,0.173056 +64,0.173056 +128,0.178176 +256,0.196608 +512,0.180224 +1024,0.203776 +2048,0.141312 +4096,0.149504 +8192,0.154624 +16384,0.169984 +32768,0.16896 +65536,0.161728 +131072,0.263168 +262144,0.205824 +524288,0.2984 +1048576,0.383296 +2097152,0.543168 +4194304,0.850784 +8388608,1.54112 +16777216,2.89856 +33554432,5.60173 +67108864,10.8974 +16,0.200704 +32,0.198656 +64,0.198656 +128,0.193536 +256,0.198656 +512,0.165888 +1024,0.196608 +2048,0.1536 +4096,0.145408 +8192,0.1536 +16384,0.176128 +32768,0.1792 +65536,0.423936 +131072,0.18432 +262144,0.224256 +524288,0.33792 +1048576,0.379904 +2097152,0.523072 +4194304,0.856896 +8388608,1.52342 +16777216,2.89264 +33554432,5.60832 +67108864,10.9544 +16,0.161792 +32,0.205824 +64,0.180224 +128,0.188416 +256,0.372736 +512,0.22528 +1024,0.1536 +2048,0.166912 +4096,0.15872 +8192,0.151552 +16384,0.177152 +32768,0.192512 +65536,0.197952 +131072,0.193536 +262144,0.258048 +524288,0.27136 +1048576,0.340992 +2097152,0.537088 +4194304,0.862208 +8388608,1.61418 +16777216,2.93315 +33554432,5.59514 +67108864,10.906 +16,0.201728 +32,0.206848 +64,0.180224 +128,0.19968 +256,0.149504 +512,0.159744 +1024,0.150528 +2048,0.146432 +4096,0.152576 +8192,0.166912 +16384,0.156672 +32768,0.160768 +65536,0.16896 +131072,0.173056 +262144,0.185344 +524288,0.27648 +1048576,0.339968 +2097152,0.513024 +4194304,0.904544 +8388608,1.53984 +16777216,3.15782 +33554432,5.57926 +67108864,11.2023 +16,0.178176 +32,0.227328 +64,0.205824 +128,0.177152 +256,0.172032 +512,0.17408 +1024,0.173056 +2048,0.14848 +4096,0.159744 +8192,0.152576 +16384,0.1792 +32768,0.178176 +65536,0.190464 +131072,0.206848 +262144,0.212992 +524288,0.303744 +1048576,0.38288 +2097152,0.56832 +4194304,0.884736 +8388608,1.51747 +16777216,2.88938 +33554432,5.67296 +67108864,10.9373 +16,0.159744 +32,0.164864 +64,0.1536 +128,0.147456 +256,0.330752 +512,0.152576 +1024,0.152576 +2048,0.149504 +4096,0.160768 +8192,0.15872 +16384,0.157472 +32768,0.161792 +65536,0.166912 +131072,0.171008 +262144,0.598016 +524288,0.313344 +1048576,0.381952 +2097152,0.521184 +4194304,0.850688 +8388608,1.52099 +16777216,2.89178 +33554432,5.63098 +67108864,10.8859 +16,0.197632 +32,0.196608 +64,0.178176 +128,0.198656 +256,0.177152 +512,0.182272 +1024,0.18432 +2048,0.152576 +4096,0.155648 +8192,0.156672 +16384,0.190464 +32768,0.16384 +65536,0.159744 +131072,0.216064 +262144,0.228352 +524288,0.304736 +1048576,0.392704 +2097152,0.50848 +4194304,0.84208 +8388608,1.52573 +16777216,2.90304 +33554432,5.6231 +67108864,10.9136 +16,0.201728 +32,0.17408 +64,0.173056 +128,0.178176 +256,0.178176 +512,0.205824 +1024,0.15872 +2048,0.146432 +4096,0.160768 +8192,0.164864 +16384,0.26112 +32768,0.16896 +65536,0.18672 +131072,0.178176 +262144,0.257024 +524288,0.299904 +1048576,0.425984 +2097152,0.50864 +4194304,0.970528 +8388608,1.53942 +16777216,2.87232 +33554432,5.76096 +67108864,10.9787 +16,0.197632 +32,0.203776 +64,0.239616 +128,0.180224 +256,0.197632 +512,0.177152 +1024,0.181248 +2048,0.151552 +4096,0.152576 +8192,0.182272 +16384,0.19968 +32768,0.192512 +65536,0.207872 +131072,0.24064 +262144,0.290816 +524288,0.303104 +1048576,0.38912 +2097152,0.507904 +4194304,0.852384 +8388608,1.51082 +16777216,2.88723 +33554432,5.57638 +67108864,10.8815 +16,0.195584 +32,0.177152 +64,0.177152 +128,0.196608 +256,0.193536 +512,0.185344 +1024,0.166912 +2048,0.223232 +4096,0.15872 +8192,0.164864 +16384,0.155648 +32768,0.155168 +65536,0.166656 +131072,0.172032 +262144,0.193536 +524288,0.26992 +1048576,0.396288 +2097152,0.540576 +4194304,0.847264 +8388608,1.54419 +16777216,2.92086 +33554432,5.56803 +67108864,11.0139 +16,0.198656 +32,0.178176 +64,0.195584 +128,0.149504 +256,0.149504 +512,0.14848 +1024,0.151552 +2048,0.164864 +4096,0.164864 +8192,0.181248 +16384,0.149504 +32768,0.162816 +65536,0.176128 +131072,0.171552 +262144,0.192512 +524288,0.3 +1048576,0.500128 +2097152,0.547168 +4194304,0.84464 +8388608,1.54698 +16777216,2.9313 +33554432,5.60304 +67108864,10.9617 +16,0.2048 +32,0.160768 +64,0.157696 +128,0.160768 +256,0.159744 +512,0.152576 +1024,0.160768 +2048,0.166912 +4096,0.166912 +8192,0.155648 +16384,0.165888 +32768,0.160672 +65536,0.164192 +131072,0.166912 +262144,0.189344 +524288,0.266976 +1048576,0.391744 +2097152,0.5096 +4194304,0.958464 +8388608,1.60147 +16777216,2.88218 +33554432,5.62042 +67108864,10.9104 +16,0.202752 +32,0.18432 +64,0.177152 +128,0.175104 +256,0.19968 +512,0.211968 +1024,0.185344 +2048,0.14848 +4096,0.14848 +8192,0.154624 +16384,0.201728 +32768,0.157696 +65536,0.171008 +131072,0.179648 +262144,0.323584 +524288,0.258656 +1048576,0.386048 +2097152,0.542624 +4194304,0.854976 +8388608,3.15072 +16777216,2.8887 +33554432,5.57114 +67108864,11.0104 +16,0.195584 +32,0.287744 +64,0.180224 +128,0.180224 +256,0.181248 +512,0.214016 +1024,0.18432 +2048,0.169984 +4096,0.146432 +8192,0.142336 +16384,0.150528 +32768,0.173056 +65536,0.187392 +131072,0.201728 +262144,0.254976 +524288,0.31232 +1048576,0.385024 +2097152,0.659456 +4194304,2.43894 +8388608,1.52371 +16777216,2.87437 +33554432,5.59309 +67108864,10.8844 +16,0.202752 +32,0.203776 +64,0.17408 +128,0.178176 +256,0.202752 +512,0.180224 +1024,0.303104 +2048,0.150528 +4096,0.152576 +8192,0.156672 +16384,0.214016 +32768,0.1792 +65536,0.181248 +131072,0.208896 +262144,0.212736 +524288,0.294912 +1048576,0.653312 +2097152,0.513664 +4194304,0.874496 +8388608,1.59334 +16777216,2.88051 +33554432,5.57254 +67108864,10.9394 +16,0.195584 +32,0.181248 +64,0.182272 +128,0.18432 +256,0.160768 +512,0.203776 +1024,0.177152 +2048,0.15872 +4096,0.154624 +8192,0.246784 +16384,0.172736 +32768,0.178176 +65536,0.218112 +131072,0.212896 +262144,0.22528 +524288,0.308032 +1048576,0.395264 +2097152,0.508256 +4194304,0.964576 diff --git a/Project2-Stream-Compaction/data/Scan_data/data_pow2_faster/thrust.csv b/Project2-Stream-Compaction/data/Scan_data/data_pow2_faster/thrust.csv new file mode 100644 index 0000000..5d2a7e0 --- /dev/null +++ b/Project2-Stream-Compaction/data/Scan_data/data_pow2_faster/thrust.csv @@ -0,0 +1,892 @@ +16,0.114688 +32,0.120832 +64,0.115712 +128,0.115712 +256,0.192512 +512,0.11056 +1024,0.109536 +2048,0.09216 +4096,0.10544 +8192,0.183296 +16384,0.124928 +32768,0.114368 +65536,0.103424 +131072,0.296992 +262144,0.392192 +524288,0.467584 +1048576,0.479872 +2097152,0.524256 +4194304,0.617952 +8388608,0.844128 +16777216,1.27686 +33554432,1.93741 +67108864,3.65155 +16,0.169984 +32,0.192512 +64,0.222208 +128,0.135168 +256,0.154624 +512,0.150528 +1024,0.160768 +2048,0.1792 +4096,0.14336 +8192,0.123904 +16384,0.131072 +32768,0.156256 +65536,0.149504 +131072,0.48128 +262144,0.536576 +524288,0.521152 +1048576,0.530432 +2097152,0.598016 +4194304,0.677888 +8388608,0.902496 +16777216,2.78938 +33554432,2.08739 +67108864,3.57069 +16,0.149504 +32,0.443392 +64,0.144384 +128,0.152576 +256,0.233472 +512,0.144384 +1024,0.145408 +2048,0.242688 +4096,0.159744 +8192,0.125952 +16384,0.150528 +32768,0.166432 +65536,0.17408 +131072,0.395744 +262144,0.99392 +524288,0.497184 +1048576,0.539648 +2097152,0.548864 +4194304,0.611168 +8388608,0.811616 +16777216,1.26054 +33554432,1.96784 +67108864,30.0042 +16,0.160768 +32,0.157696 +64,0.1024 +128,0.136192 +256,0.139264 +512,0.114688 +1024,0.222208 +2048,0.119808 +4096,0.123904 +8192,0.110592 +16384,0.105056 +32768,0.08192 +65536,0.13264 +131072,0.421888 +262144,0.380608 +524288,0.48608 +1048576,0.518944 +2097152,0.759808 +4194304,0.6312 +8388608,0.791968 +16777216,1.3175 +33554432,2.00234 +67108864,7.26528 +16,0.150528 +32,0.136192 +64,0.119808 +128,0.131072 +256,0.147456 +512,0.17408 +1024,0.12288 +2048,0.11264 +4096,0.108544 +8192,0.118784 +16384,0.146432 +32768,0.136192 +65536,0.143872 +131072,0.390816 +262144,0.507488 +524288,0.505856 +1048576,0.528736 +2097152,0.635328 +4194304,0.841728 +8388608,0.800256 +16777216,1.38221 +33554432,2.02288 +67108864,3.61517 +16,0.15872 +32,0.114688 +64,0.2048 +128,0.152576 +256,0.135168 +512,0.190464 +1024,0.144384 +2048,0.118784 +4096,0.14336 +8192,0.116736 +16384,0.135008 +32768,0.156672 +65536,0.180704 +131072,0.364064 +262144,0.556032 +524288,0.484736 +1048576,0.5432 +2097152,0.507552 +4194304,0.729088 +8388608,0.801216 +16777216,2.59891 +33554432,2.07603 +67108864,3.66032 +16,0.149504 +32,0.155648 +64,0.150528 +128,0.16896 +256,0.149504 +512,0.167936 +1024,0.134144 +2048,0.10752 +4096,0.13312 +8192,0.121856 +16384,0.146432 +32768,0.146848 +65536,0.147904 +131072,0.473088 +262144,0.652288 +524288,0.630784 +1048576,0.781312 +2097152,0.531456 +4194304,0.627424 +8388608,0.982784 +16777216,1.23069 +33554432,2.22515 +67108864,3.69843 +16,0.14336 +32,0.13824 +64,0.144384 +128,0.16384 +256,0.144384 +512,0.14848 +1024,0.16384 +2048,0.125952 +4096,0.126976 +8192,0.11776 +16384,0.135712 +32768,0.185344 +65536,0.139264 +131072,0.491168 +262144,0.412256 +524288,0.613696 +1048576,0.541312 +2097152,0.773792 +4194304,0.627712 +8388608,0.83552 +16777216,1.26557 +33554432,2.02944 +67108864,3.53485 +16,0.149504 +32,0.141312 +64,0.147456 +128,0.1792 +256,0.155648 +512,0.132096 +1024,0.145408 +2048,0.123904 +4096,0.128 +8192,0.119808 +16384,0.170816 +32768,0.151168 +65536,0.116704 +131072,0.396992 +262144,0.565248 +524288,1.01114 +1048576,0.536064 +2097152,0.53248 +4194304,0.565248 +8388608,0.89088 +16777216,1.252 +33554432,2.42342 +67108864,3.53229 +16,0.162816 +32,0.181248 +64,0.162816 +128,0.14848 +256,0.137216 +512,0.21504 +1024,0.188416 +2048,0.118784 +4096,0.132096 +8192,0.11264 +16384,0.147424 +32768,0.16384 +65536,0.17856 +131072,0.872448 +262144,0.478816 +524288,0.5376 +1048576,0.6656 +2097152,0.554816 +4194304,1.31174 +8388608,0.882688 +16777216,1.25216 +33554432,2.19648 +67108864,3.45088 +16,0.145408 +32,0.144384 +64,0.151552 +128,0.128 +256,0.145408 +512,0.11264 +1024,0.162816 +2048,0.11776 +4096,0.129024 +8192,0.123904 +16384,0.132096 +32768,0.11776 +65536,0.145152 +131072,0.433472 +262144,0.509952 +524288,0.503616 +1048576,0.53392 +2097152,0.525312 +4194304,0.754304 +8388608,1.03936 +16777216,1.26022 +33554432,2.07114 +67108864,3.53066 +16,0.12288 +32,0.125952 +64,0.120832 +128,0.109568 +256,0.1024 +512,0.124928 +1024,0.121856 +2048,0.137216 +4096,0.134144 +8192,0.120832 +16384,0.162816 +32768,0.1144 +65536,0.168416 +131072,0.60256 +262144,0.464896 +524288,0.631392 +1048576,0.936512 +2097152,0.520672 +4194304,0.585664 +8388608,0.819072 +16777216,1.26957 +33554432,2.15322 +67108864,3.49184 +16,0.16896 +32,0.169984 +64,0.269312 +128,0.1536 +256,0.145408 +512,0.176128 +1024,0.166912 +2048,0.119808 +4096,0.121856 +8192,0.113664 +16384,0.1448 +32768,0.139232 +65536,0.14416 +131072,0.403456 +262144,0.521952 +524288,0.370688 +1048576,0.542144 +2097152,0.582656 +4194304,0.690528 +8388608,0.803264 +16777216,1.20563 +33554432,2.08042 +67108864,3.57123 +16,0.144384 +32,0.11264 +64,0.167936 +128,0.178176 +256,0.14848 +512,0.147456 +1024,0.136192 +2048,0.121856 +4096,0.126976 +8192,0.10752 +16384,0.131584 +32768,0.178176 +65536,0.141824 +131072,0.77168 +262144,0.464896 +524288,0.555008 +1048576,0.539424 +2097152,0.519168 +4194304,0.62656 +8388608,0.842752 +16777216,1.23325 +33554432,2.10582 +67108864,3.6905 +16,0.294912 +32,0.147456 +64,0.145408 +128,0.124928 +256,0.150528 +512,0.14848 +1024,0.10752 +2048,0.12288 +4096,0.124928 +8192,0.136192 +16384,0.152192 +32768,0.146432 +65536,0.1536 +131072,0.462848 +262144,0.645696 +524288,0.589824 +1048576,0.68048 +2097152,1.12262 +4194304,0.87104 +8388608,0.794624 +16777216,1.26259 +33554432,2.1504 +67108864,3.80694 +16,0.206848 +32,0.145408 +64,0.160768 +128,0.166912 +256,0.162816 +512,0.144384 +1024,0.145408 +2048,0.131072 +4096,0.130048 +8192,0.118784 +16384,0.13824 +32768,0.147456 +65536,0.1536 +131072,0.4352 +262144,0.57856 +524288,0.520608 +1048576,0.550336 +2097152,0.51856 +4194304,0.628608 +8388608,0.808608 +16777216,1.23661 +33554432,2.00253 +67108864,3.62448 +16,0.18432 +32,0.16896 +64,0.145408 +128,0.156672 +256,0.120832 +512,0.126976 +1024,0.119808 +2048,0.120832 +4096,0.139264 +8192,0.141312 +16384,0.180224 +32768,0.13312 +65536,0.128 +131072,0.459072 +262144,0.442368 +524288,0.603456 +1048576,0.51744 +2097152,0.621376 +4194304,0.68688 +8388608,0.883104 +16777216,1.26208 +33554432,2.10227 +67108864,3.57171 +16,0.149504 +32,0.186368 +64,0.139264 +128,0.18432 +256,0.144384 +512,0.145408 +1024,0.162816 +2048,0.126976 +4096,0.145408 +8192,0.123904 +16384,0.132096 +32768,0.149504 +65536,0.139264 +131072,0.477184 +262144,0.449536 +524288,0.80384 +1048576,0.52672 +2097152,0.547424 +4194304,0.737856 +8388608,0.889184 +16777216,1.34922 +33554432,2.11341 +67108864,3.44758 +16,0.147456 +32,0.151552 +64,0.172032 +128,0.149504 +256,0.165888 +512,0.16384 +1024,0.132096 +2048,0.142336 +4096,0.121856 +8192,0.13312 +16384,0.136192 +32768,0.155648 +65536,0.150016 +131072,0.490496 +262144,0.47616 +524288,0.47056 +1048576,1.2121 +2097152,0.589088 +4194304,0.719872 +8388608,0.825856 +16777216,1.32602 +33554432,2.152 +67108864,3.57734 +16,0.17408 +32,0.146432 +64,0.160768 +128,0.14848 +256,0.17408 +512,0.17408 +1024,0.14848 +2048,0.134144 +4096,0.118784 +8192,0.27136 +16384,0.166912 +32768,0.149504 +65536,0.15872 +131072,0.490496 +262144,0.499712 +524288,0.53248 +1048576,0.60928 +2097152,0.549888 +4194304,0.667008 +8388608,0.853632 +16777216,1.24906 +33554432,2.2081 +67108864,3.59674 +16,0.146432 +32,0.150528 +64,0.149504 +128,0.150528 +256,0.139264 +512,0.154624 +1024,0.145408 +2048,0.126976 +4096,0.129024 +8192,0.128 +16384,0.15872 +32768,0.181248 +65536,0.168256 +131072,0.493568 +262144,0.494304 +524288,0.520768 +1048576,0.5376 +2097152,0.584608 +4194304,0.693248 +8388608,0.861632 +16777216,1.33325 +33554432,2.1375 +67108864,3.61206 +16,0.169984 +32,0.145408 +64,0.150528 +128,0.173056 +256,0.150528 +512,0.173056 +1024,0.155648 +2048,0.119808 +4096,0.131072 +8192,0.47616 +16384,0.165888 +32768,0.134144 +65536,0.125952 +131072,0.493568 +262144,0.514048 +524288,0.519904 +1048576,0.676864 +2097152,0.533888 +4194304,1.43974 +8388608,0.95696 +16777216,1.30931 +33554432,2.12 +67108864,3.63296 +16,0.166912 +32,0.212992 +64,0.14848 +128,0.162816 +256,0.169984 +512,0.169984 +1024,0.149504 +2048,0.119808 +4096,0.150528 +8192,0.152576 +16384,0.126976 +32768,0.132096 +65536,0.13056 +131072,0.518144 +262144,0.530432 +524288,0.523264 +1048576,0.547744 +2097152,0.550912 +4194304,0.838144 +8388608,0.85232 +16777216,1.7449 +33554432,2.12954 +67108864,3.65645 +16,0.155648 +32,0.144384 +64,0.165888 +128,0.178176 +256,0.110592 +512,0.151552 +1024,0.247808 +2048,0.128 +4096,0.139264 +8192,0.110592 +16384,0.13312 +32768,0.130048 +65536,0.121856 +131072,0.466944 +262144,0.51712 +524288,0.518144 +1048576,0.473088 +2097152,0.574112 +4194304,0.690944 +8388608,0.83728 +16777216,1.34838 +33554432,2.0335 +67108864,3.5905 +16,0.167936 +32,0.165888 +64,0.161792 +128,0.177152 +256,0.171008 +512,0.18432 +1024,0.176128 +2048,0.156672 +4096,0.263168 +8192,0.132096 +16384,0.156672 +32768,0.160768 +65536,0.139264 +131072,0.487424 +262144,0.494304 +524288,0.674816 +1048576,0.541696 +2097152,0.607232 +4194304,0.772896 +8388608,0.96256 +16777216,1.40157 +33554432,2.03421 +67108864,3.6367 +16,0.144384 +32,0.171008 +64,0.16896 +128,0.152576 +256,0.145408 +512,0.176128 +1024,0.177152 +2048,0.150528 +4096,0.12288 +8192,0.124928 +16384,0.151552 +32768,0.176128 +65536,0.181248 +131072,0.504832 +262144,0.531456 +524288,0.508896 +1048576,0.470464 +2097152,0.513856 +4194304,0.643072 +8388608,0.822752 +16777216,1.3824 +33554432,1.98144 +67108864,3.66899 +16,0.144384 +32,0.169984 +64,0.147456 +128,0.238592 +256,0.272384 +512,0.128 +1024,0.128 +2048,0.161792 +4096,0.422912 +8192,0.11776 +16384,0.120832 +32768,0.131072 +65536,0.12288 +131072,0.470016 +262144,0.525312 +524288,0.540992 +1048576,0.627712 +2097152,0.512 +4194304,0.690176 +8388608,0.792256 +16777216,1.35626 +33554432,2.15078 +67108864,3.60794 +16,0.369664 +32,0.18432 +64,0.249856 +128,0.150528 +256,0.150528 +512,0.149504 +1024,0.152576 +2048,0.129024 +4096,0.150528 +8192,0.134144 +16384,0.154624 +32768,0.161792 +65536,0.17136 +131072,0.47104 +262144,0.513024 +524288,0.510976 +1048576,0.71168 +2097152,0.550656 +4194304,0.790016 +8388608,0.958464 +16777216,1.29363 +33554432,2.38464 +67108864,3.6103 +16,0.124928 +32,0.132096 +64,0.130048 +128,0.120832 +256,0.135168 +512,0.13312 +1024,0.154624 +2048,0.113664 +4096,0.124928 +8192,0.150528 +16384,0.126976 +32768,0.161792 +65536,0.137216 +131072,0.475136 +262144,0.442944 +524288,0.637376 +1048576,0.524768 +2097152,0.57328 +4194304,0.693888 +8388608,0.880224 +16777216,1.37728 +33554432,2.0183 +67108864,3.58557 +16,0.173056 +32,0.173056 +64,0.173056 +128,0.16384 +256,0.169984 +512,0.171008 +1024,0.171008 +2048,0.124928 +4096,0.121856 +8192,0.139264 +16384,0.166912 +32768,0.124928 +65536,0.13312 +131072,0.512 +262144,0.479872 +524288,0.504224 +1048576,0.534848 +2097152,0.59392 +4194304,1.02195 +8388608,0.995296 +16777216,1.39357 +33554432,2.14938 +67108864,3.66694 +16,0.172032 +32,0.149504 +64,0.151552 +128,0.152576 +256,0.16384 +512,0.16896 +1024,0.129024 +2048,0.136192 +4096,0.154624 +8192,0.141312 +16384,0.128 +32768,0.13264 +65536,0.248832 +131072,0.621568 +262144,0.484352 +524288,0.50976 +1048576,0.532032 +2097152,0.586688 +4194304,0.62864 +8388608,0.989024 +16777216,1.38957 +33554432,2.08547 +67108864,3.68394 +16,0.169984 +32,0.16896 +64,0.164864 +128,0.146432 +256,0.165888 +512,0.173056 +1024,0.149504 +2048,0.130048 +4096,0.132096 +8192,0.125952 +16384,0.16896 +32768,0.164736 +65536,0.166912 +131072,0.485376 +262144,0.492544 +524288,0.52224 +1048576,0.494272 +2097152,1.46227 +4194304,0.670112 +8388608,0.996864 +16777216,1.3824 +33554432,2.18195 +67108864,3.46566 +16,0.156672 +32,0.159744 +64,0.169984 +128,0.169984 +256,0.16896 +512,0.16896 +1024,0.128 +2048,0.13824 +4096,0.140288 +8192,0.161792 +16384,0.121856 +32768,0.128 +65536,0.13824 +131072,0.489248 +262144,0.8192 +524288,1.17658 +1048576,0.533216 +2097152,0.536384 +4194304,0.638464 +8388608,0.978464 +16777216,1.40115 +33554432,2.15757 +67108864,3.64499 +16,0.490496 +32,0.178176 +64,0.173056 +128,0.21504 +256,0.125952 +512,0.123904 +1024,0.128 +2048,0.146432 +4096,0.126976 +8192,0.137216 +16384,0.128 +32768,0.135168 +65536,0.12832 +131072,0.448512 +262144,0.518144 +524288,0.531104 +1048576,0.55296 +2097152,0.522144 +4194304,0.615904 +8388608,0.886784 +16777216,1.17453 +33554432,2.14426 +67108864,3.51373 +16,0.134144 +32,0.120832 +64,0.11776 +128,0.124928 +256,0.124928 +512,0.129024 +1024,0.228352 +2048,0.139264 +4096,0.172032 +8192,0.141312 +16384,0.126976 +32768,0.26624 +65536,0.131072 +131072,0.437248 +262144,0.42496 +524288,0.5024 +1048576,0.65424 +2097152,0.493184 +4194304,0.666624 +8388608,0.836544 +16777216,1.4039 +33554432,2.17149 +67108864,3.54573 +16,0.16896 +32,0.151552 +64,0.145408 +128,0.13312 +256,0.167936 +512,0.145408 +1024,0.149504 +2048,0.125952 +4096,0.136192 +8192,0.136192 +16384,0.171008 +32768,0.129024 +65536,0.127872 +131072,0.509952 +262144,0.615744 +524288,0.372448 +1048576,0.461568 +2097152,0.5976 +4194304,0.642464 +8388608,0.79872 +16777216,1.3056 +33554432,2.28698 +67108864,3.66182 +16,0.165888 +32,0.151552 +64,0.175104 +128,0.150528 +256,0.16896 +512,0.144384 +1024,0.145408 +2048,0.13312 +4096,0.130048 +8192,0.11776 +16384,0.690176 +32768,0.144384 +65536,0.101376 +131072,0.497664 +262144,0.816064 +524288,0.405504 +1048576,0.546816 +2097152,0.591872 +4194304,0.729888 +8388608,0.972192 +16777216,1.19091 +33554432,2.12944 +67108864,3.57539 +16,0.169984 +32,0.17408 +64,0.149504 +128,0.152576 +256,0.45568 +512,0.169984 +1024,0.202752 +2048,0.128 +4096,0.132096 +8192,0.125952 +16384,0.156672 +32768,0.139168 +65536,0.154624 +131072,0.603136 +262144,0.494592 +524288,0.498656 +1048576,0.6 +2097152,0.520192 +4194304,0.617472 +8388608,0.87216 +16777216,1.3783 +33554432,2.1504 +67108864,3.65702 +16,0.167936 +32,0.169984 +64,0.149504 +128,0.125952 +256,0.144384 +512,0.14848 +1024,0.152576 +2048,0.124928 +4096,0.126976 +8192,0.123904 +16384,0.157696 +32768,0.146432 +65536,0.147456 +131072,0.495616 +262144,0.448512 +524288,0.529408 +1048576,0.7168 +2097152,0.57856 diff --git a/Project2-Stream-Compaction/data/Sort_data/data_nonpow2/data.csv b/Project2-Stream-Compaction/data/Sort_data/data_nonpow2/data.csv new file mode 100644 index 0000000..f3c28c7 --- /dev/null +++ b/Project2-Stream-Compaction/data/Sort_data/data_nonpow2/data.csv @@ -0,0 +1,911 @@ +Array Size,Thrust time (s),Radix sort time (s) +13,0.0114,6.35904 +29,0.0051,6.5577 +61,0.0028,5.05958 +125,0.0092,5.43133 +253,0.0046,6.43994 +509,0.0147,6.97139 +1021,0.0097,4.73085 +2045,0.0155,6.32115 +4093,0.0268,6.70928 +8189,0.0883,6.43482 +16381,0.1664,5.36986 +32765,0.3246,6.44301 +65533,2.379,9.59283 +131069,1.3385,7.59094 +262141,2.5597,16.8663 +524285,7.4687,21.3627 +1048573,13.5241,33.6855 +2097149,23.0565,52.1738 +4194301,95.8414,85.8706 +8388605,193.395,154.743 +16777213,385.13,298.556 +33554429,755.448,576.983 +67108861,1460.42,1143.9 +134217725,2912.36,2251.19 +13,0.0027,6.83622 +29,0.0071,8.32816 +61,0.0209,7.98515 +125,0.0088,8.01485 +253,0.0059,8.25344 +509,0.0464,6.98573 +1021,0.0224,5.15994 +2045,0.0472,6.61811 +4093,0.0425,6.23616 +8189,0.0779,7.04102 +16381,0.3436,7.47418 +32765,0.2904,5.24595 +65533,0.848,10.0792 +131069,1.3111,10.2861 +262141,3.0369,17.6998 +524285,5.0796,22.7092 +1048573,10.9716,32.7035 +2097149,21.3974,49.9927 +4194301,89.5675,82.9 +8388605,176.263,153.484 +16777213,375.681,288.316 +33554429,758.883,562.341 +67108861,1507.65,1139.11 +134217725,2951.6,2333.28 +13,0.0047,6.93658 +29,0.0204,7.34618 +61,0.003,5.9863 +125,0.019,6.91814 +253,0.0212,7.42912 +509,0.0125,6.39078 +1021,0.0142,7.0359 +2045,0.0475,4.80154 +4093,0.098,6.8055 +8189,0.12,7.10758 +16381,0.2552,7.2704 +32765,0.2866,7.20077 +65533,0.5574,5.47123 +131069,2.0262,9.31635 +262141,3.1683,17.6947 +524285,5.0057,24.8627 +1048573,11.1775,34.7105 +2097149,21.3271,49.794 +4194301,98.7222,83.5379 +8388605,184.13,187.098 +16777213,384.997,290.199 +33554429,785.93,585.217 +67108861,1490.99,1143.29 +134217725,2918.26,2277.15 +13,0.0026,7.66976 +29,0.0047,6.27098 +61,0.0209,8.10803 +125,0.0092,8.49613 +253,0.0114,6.68467 +509,0.0207,7.58067 +1021,0.047,7.16595 +2045,0.0217,6.10816 +4093,0.0472,7.88992 +8189,0.1791,7.71072 +16381,0.1877,7.48032 +32765,0.3148,7.66054 +65533,0.5593,8.5207 +131069,1.2133,8.90675 +262141,2.8389,18.4607 +524285,5.7486,21.9208 +1048573,10.6359,30.8132 +2097149,23.6569,48.4721 +4194301,100.289,82.7351 +8388605,188.321,150.508 +16777213,362.526,297.797 +33554429,736.482,579.433 +67108861,1434.33,1133.13 +134217725,2887.84,2264.39 +13,0.0027,6.61504 +29,0.0068,6.68058 +61,0.0077,6.95706 +125,0.0142,6.62733 +253,0.0077,5.77434 +509,0.0251,7.04512 +1021,0.026,7.59501 +2045,0.0219,7.24173 +4093,0.1265,7.25709 +8189,0.1089,7.94317 +16381,0.1727,7.90938 +32765,0.3283,7.3728 +65533,0.6751,7.68205 +131069,1.2334,9.51808 +262141,2.7239,18.4187 +524285,5.1112,22.2454 +1048573,10.3636,31.3948 +2097149,22.2883,50.9286 +4194301,103.325,83.3659 +8388605,183.333,151.197 +16777213,369.629,291.704 +33554429,725.454,571.614 +67108861,1452.92,1145.83 +134217725,2901.91,2262.99 +13,0.0027,4.80154 +29,0.0067,4.81587 +61,0.0204,6.67546 +125,0.0194,5.14765 +253,0.0116,5.38931 +509,0.0484,5.53779 +1021,0.0151,6.47373 +2045,0.0207,6.52285 +4093,0.0408,8.28826 +8189,0.1222,6.53722 +16381,0.1712,6.73792 +32765,0.3756,8.93952 +65533,0.5548,8.09062 +131069,1.2238,10.4376 +262141,2.6165,16.9697 +524285,6.0176,24.3804 +1048573,10.7412,30.6708 +2097149,21.9193,49.2268 +4194301,94.5496,82.3163 +8388605,185.198,154.673 +16777213,380.944,295.146 +33554429,736.146,565.812 +67108861,1456.69,1142.99 +134217725,2884.71,2260.41 +13,0.0027,6.73178 +29,0.0027,6.42662 +61,0.0075,7.05126 +125,0.0095,7.42605 +253,0.0051,6.85978 +509,0.0363,6.65088 +1021,0.0336,8.68762 +2045,0.0252,7.5049 +4093,0.1346,7.46291 +8189,0.0783,8.77466 +16381,0.1739,7.7609 +32765,0.3344,5.17018 +65533,0.5575,7.17619 +131069,1.3424,9.72288 +262141,2.6226,18.773 +524285,4.9859,24.5412 +1048573,10.7497,31.6856 +2097149,23.9159,49.2595 +4194301,95.8398,82.3972 +8388605,187.874,151.384 +16777213,362.821,298.756 +33554429,733.687,570.635 +67108861,1448.8,1141.3 +134217725,2900.15,2265.25 +13,0.0026,7.00826 +29,0.0027,9.2887 +61,0.0079,7.28166 +125,0.0096,7.1168 +253,0.0117,8.24525 +509,0.0208,7.14445 +1021,0.0147,6.37645 +2045,0.0345,4.76672 +4093,0.128,7.44346 +8189,0.1534,8.13773 +16381,0.1519,7.39226 +32765,0.3422,7.86022 +65533,0.6309,8.15923 +131069,1.3395,9.61946 +262141,2.8073,16.939 +524285,5.3593,21.591 +1048573,10.2617,31.6211 +2097149,21.8538,50.7044 +4194301,97.8402,82.7576 +8388605,182.357,154.305 +16777213,366.465,298.095 +33554429,730.123,579.032 +67108861,1452.77,1142.98 +134217725,2918.98,2276.26 +13,0.0027,5.21011 +29,0.0043,6.11738 +61,0.0049,4.77594 +125,0.0039,4.80563 +253,0.0208,4.58138 +509,0.0319,6.74202 +1021,0.0236,4.66739 +2045,0.0314,5.71494 +4093,0.0741,5.82042 +8189,0.0889,5.79994 +16381,0.2119,7.51309 +32765,0.3754,5.91667 +65533,0.5556,6.66931 +131069,1.3089,7.89197 +262141,2.4741,17.4961 +524285,6.7469,23.0779 +1048573,10.766,32.129 +2097149,20.8559,47.0733 +4194301,98.6284,83.0136 +8388605,182.006,150.019 +16777213,367.485,294.331 +33554429,735.584,577.424 +67108861,1448.45,1136 +134217725,3009.99,2255.16 +13,0.0028,6.76762 +29,0.0047,5.92077 +61,0.0232,6.4983 +125,0.0062,5.01146 +253,0.0075,7.83974 +509,0.0289,7.38304 +1021,0.0422,9.24979 +2045,0.021,6.12966 +4093,0.059,7.79878 +8189,0.076,8.31693 +16381,0.2493,4.93875 +32765,0.2891,5.14662 +65533,0.6921,7.83974 +131069,1.3297,9.0153 +262141,2.6756,16.6226 +524285,5.3522,23.5827 +1048573,11.016,32.9492 +2097149,21.4589,49.8063 +4194301,95.7134,84.1441 +8388605,184.128,150.648 +16777213,381.288,294.392 +33554429,732.675,577.229 +67108861,1447.28,1134.86 +134217725,2877.69,2257.75 +13,0.0087,6.62221 +29,0.0042,8.73779 +61,0.0078,6.82394 +125,0.0033,6.57818 +253,0.034,7.22125 +509,0.0185,6.65805 +1021,0.0205,6.46451 +2045,0.0851,5.00019 +4093,0.0404,6.58739 +8189,0.0854,6.7328 +16381,0.1604,6.98573 +32765,0.6143,8.30669 +65533,0.5747,6.13376 +131069,1.2157,9.08595 +262141,2.6067,18.7924 +524285,4.9976,23.5766 +1048573,10.2469,32.0164 +2097149,21.4191,49.2534 +4194301,94.6389,83.8205 +8388605,186.556,151.207 +16777213,362.014,293.922 +33554429,744.193,575.659 +67108861,1455.73,1140.21 +134217725,2896.08,2255.87 +13,0.0029,7.94214 +29,0.0029,7.16698 +61,0.0048,7.88992 +125,0.0187,7.18234 +253,0.0075,8.0599 +509,0.0147,8.52275 +1021,0.0126,7.36666 +2045,0.0211,7.24787 +4093,0.1484,6.80448 +8189,0.1038,5.34323 +16381,0.2156,7.84486 +32765,0.3573,7.0144 +65533,0.5589,6.82701 +131069,1.2201,8.10086 +262141,3.2876,19.4509 +524285,5.7233,24.0701 +1048573,10.5619,32.2028 +2097149,21.0206,49.3148 +4194301,95.8763,81.3824 +8388605,185.738,153.004 +16777213,365.602,293.323 +33554429,729.446,574.128 +67108861,1473.22,1140.68 +134217725,2892.73,2262.44 +13,0.0027,7.48237 +29,0.0044,8.55654 +61,0.0078,8.21862 +125,0.0217,7.14035 +253,0.0137,8.2903 +509,0.0124,6.91917 +1021,0.0129,8.72448 +2045,0.0212,7.06662 +4093,0.0568,7.31955 +8189,0.0918,8.05683 +16381,0.1605,6.98573 +32765,0.3583,7.00518 +65533,0.7411,7.46701 +131069,1.3881,10.8206 +262141,2.5451,19.2338 +524285,5.7595,24.7583 +1048573,11.6994,31.4952 +2097149,20.9618,48.2314 +4194301,93.4196,85.0412 +8388605,185.552,147.374 +16777213,368.447,294.211 +33554429,721.794,579.452 +67108861,1506.6,1133.35 +134217725,2907.84,2260.76 +13,0.0026,9.39315 +29,0.0061,5.59923 +61,0.0046,6.22387 +125,0.0033,6.1225 +253,0.0122,5.23366 +509,0.0289,7.22432 +1021,0.0315,8.17971 +2045,0.0211,6.87002 +4093,0.1085,6.71539 +8189,0.0797,7.16083 +16381,0.211,6.89766 +32765,0.423,8.60877 +65533,0.572,7.6073 +131069,1.308,8.04966 +262141,3.5266,18.4463 +524285,5.6977,24.8402 +1048573,11.1024,32.7168 +2097149,23.8067,50.0029 +4194301,94.3694,83.243 +8388605,183.97,151.567 +16777213,379.903,291.894 +33554429,739.658,576.331 +67108861,1463.36,1145.61 +134217725,2911.9,2261.86 +13,0.0031,6.89254 +29,0.0067,7.28678 +61,0.0078,6.78195 +125,0.0082,6.55565 +253,0.0133,7.16493 +509,0.044,6.9591 +1021,0.0318,6.76352 +2045,0.0213,7.43322 +4093,0.0436,7.02874 +8189,0.1961,8.3753 +16381,0.1746,6.08666 +32765,0.3059,7.26733 +65533,1.0127,7.23661 +131069,1.3196,10.0157 +262141,2.5251,19.1857 +524285,5.5541,24.9682 +1048573,10.7449,30.4159 +2097149,20.8959,47.871 +4194301,93.1581,86.6867 +8388605,185.728,154.329 +16777213,363.414,300.473 +33554429,745.773,573.888 +67108861,1447.17,1142.58 +134217725,2915.98,2260.23 +13,0.0027,6.83315 +29,0.0201,6.6775 +61,0.0049,6.09075 +125,0.0083,4.84659 +253,0.0076,4.42778 +509,0.037,7.53869 +1021,0.0216,9.31635 +2045,0.0523,7.55405 +4093,0.0421,7.34413 +8189,0.1264,8.43571 +16381,0.1458,4.59469 +32765,0.4382,7.3257 +65533,0.5776,7.94214 +131069,1.2783,9.34707 +262141,4.0156,16.4946 +524285,5.7501,22.7246 +1048573,10.4437,30.8316 +2097149,22.4876,49.8627 +4194301,96.599,84.2557 +8388605,187.221,151.539 +16777213,367.982,291.34 +33554429,739.931,573.758 +67108861,1457.81,1129.3 +134217725,2894.23,2261.74 +13,0.0043,8.48691 +29,0.0059,6.61402 +61,0.003,6.9888 +125,0.0033,7.64723 +253,0.0333,5.59718 +509,0.0126,7.7568 +1021,0.0135,7.3625 +2045,0.021,7.94931 +4093,0.0388,7.89606 +8189,0.1218,7.74246 +16381,0.2423,6.81779 +32765,0.284,7.19155 +65533,0.5547,7.71072 +131069,1.2148,10.0076 +262141,2.9474,20.6152 +524285,5.4012,24.3937 +1048573,10.5098,32.7905 +2097149,20.9003,50.9983 +4194301,93.8721,81.6486 +8388605,183.204,152.751 +16777213,363.751,290.902 +33554429,735.198,577.519 +67108861,1459.99,1146.02 +134217725,2890.21,2263.31 +13,0.0026,7.02157 +29,0.0045,6.8055 +61,0.0076,7.56941 +125,0.0084,8.10291 +253,0.0122,4.31514 +509,0.0292,6.784 +1021,0.0183,6.6263 +2045,0.021,9.68602 +4093,0.0423,8.10291 +8189,0.0939,7.50285 +16381,0.1642,7.37382 +32765,0.4068,7.61344 +65533,0.5689,5.57056 +131069,1.3052,9.77408 +262141,2.6576,19.1078 +524285,6.239,23.3452 +1048573,10.6844,30.764 +2097149,21.0014,48.1454 +4194301,91.9386,83.2512 +8388605,182.728,153.048 +16777213,366.573,293.258 +33554429,740.525,576.372 +67108861,1455.63,1144.15 +134217725,2904.9,2250.91 +13,0.005,7.04205 +29,0.0205,6.64883 +61,0.0047,6.45837 +125,0.0081,6.87411 +253,0.0248,6.55462 +509,0.0179,6.49011 +1021,0.0379,6.73792 +2045,0.0216,6.69798 +4093,0.0616,7.88992 +8189,0.0929,7.34003 +16381,0.1443,7.97594 +32765,0.4443,6.82496 +65533,1.3369,7.89914 +131069,1.3803,9.87443 +262141,2.4476,19.9311 +524285,6.0599,22.911 +1048573,11.0132,32.3686 +2097149,21.0805,48.3185 +4194301,93.5092,83.4847 +8388605,188.566,152.647 +16777213,363.209,295.843 +33554429,742.652,574.649 +67108861,1519.32,1137.08 +134217725,2894.94,2266.3 +13,0.0026,6.59149 +29,0.016,8.62413 +61,0.0076,7.51104 +125,0.0085,7.32365 +253,0.0086,7.42298 +509,0.0222,7.73837 +1021,0.0131,6.76966 +2045,0.0202,6.71539 +4093,0.0424,6.54234 +8189,0.1069,7.35027 +16381,0.3236,6.7625 +32765,0.4183,7.81414 +65533,0.5858,8.704 +131069,1.2163,7.55302 +262141,2.4601,18.1023 +524285,5.0147,24.7265 +1048573,11.1252,30.6514 +2097149,22.4066,49.3384 +4194301,94.6518,82.8406 +8388605,184.049,150.225 +16777213,364.101,293.661 +33554429,738.38,569.225 +67108861,1465.87,1140.01 +134217725,2878.69,2284.33 +13,0.0026,7.00826 +29,0.0045,6.28634 +61,0.0048,7.38816 +125,0.0053,6.34573 +253,0.0221,5.71187 +509,0.0127,7.66669 +1021,0.012,6.63962 +2045,0.0212,6.49011 +4093,0.0494,6.76147 +8189,0.0943,6.60582 +16381,0.1607,9.16582 +32765,0.2885,8.59443 +65533,0.6149,7.81824 +131069,1.2512,9.36448 +262141,3.2525,17.9016 +524285,5.7394,24.2237 +1048573,10.6835,33.0404 +2097149,20.5591,49.5544 +4194301,95.6524,83.9137 +8388605,184.599,156.498 +16777213,366.585,291.375 +33554429,724.731,580.844 +67108861,1458.58,1135.69 +134217725,2916.6,2279.52 +13,0.0027,7.67795 +29,0.0067,7.40147 +61,0.0076,8.58419 +125,0.0216,6.85261 +253,0.012,4.41446 +509,0.0474,7.56019 +1021,0.0434,6.33139 +2045,0.0281,8.02304 +4093,0.042,7.00621 +8189,0.1432,6.87206 +16381,0.1749,7.62573 +32765,0.3682,7.20794 +65533,0.599,10.0342 +131069,1.2362,9.00403 +262141,2.7327,17.6056 +524285,7.5851,21.9166 +1048573,10.2546,30.1445 +2097149,28.0859,51.0986 +4194301,97.8906,82.4197 +8388605,192.734,156.07 +16777213,380.638,299.307 +33554429,756.803,821.357 +67108861,1458.12,1138.85 +134217725,2855.55,2265.58 +13,0.0027,6.86182 +29,0.003,8.74387 +61,0.0062,5.9607 +125,0.0054,8.60262 +253,0.0127,5.64429 +509,0.0368,7.77626 +1021,0.0125,5.90336 +2045,0.0219,7.5049 +4093,0.1207,5.62893 +8189,0.0751,7.82234 +16381,0.2628,7.0103 +32765,0.3267,7.17517 +65533,0.5821,7.85613 +131069,1.8082,10.9937 +262141,2.5596,18.5446 +524285,5.0409,24.8658 +1048573,14.3314,31.3088 +2097149,20.9038,47.4163 +4194301,89.5461,81.8422 +8388605,179.873,152.084 +16777213,366.227,291.313 +33554429,731.015,576.191 +67108861,1435.63,1140.57 +134217725,2871.51,2255.86 +13,0.0218,6.87514 +29,0.0069,7.99232 +61,0.0052,6.76147 +125,0.0052,7.97286 +253,0.0216,8.73779 +509,0.0469,6.98778 +1021,0.0279,7.98413 +2045,0.0777,5.30022 +4093,0.1689,6.97651 +8189,0.1211,5.48147 +16381,0.1521,6.90893 +32765,0.2818,9.57747 +65533,0.5541,8.53094 +131069,1.2951,8.81254 +262141,2.4834,18.7843 +524285,5.0971,24.1234 +1048573,10.3709,34.1873 +2097149,20.9436,48.6246 +4194301,96.6392,82.9778 +8388605,180.917,152.775 +16777213,355.629,293.393 +33554429,732.672,574.026 +67108861,1434.84,1141.28 +134217725,2871.6,2261.74 +13,0.0027,7.61754 +29,0.0068,7.49466 +61,0.0207,6.20134 +125,0.0084,6.6048 +253,0.031,6.75942 +509,0.0422,5.55418 +1021,0.0254,7.6841 +2045,0.0225,6.1481 +4093,0.0635,6.38669 +8189,0.0886,5.56749 +16381,0.1445,6.63552 +32765,0.2813,7.12704 +65533,0.5595,7.84384 +131069,1.3206,10.3485 +262141,2.5131,18.2436 +524285,5.58,24.0456 +1048573,11.1729,30.6831 +2097149,20.7278,49.7572 +4194301,90.7274,80.9902 +8388605,180.775,150.567 +16777213,361.538,292.162 +33554429,727.432,576.157 +67108861,1442.96,1132.66 +134217725,2907.1,2250.21 +13,0.0216,5.7856 +29,0.0072,5.92589 +61,0.0078,5.92896 +125,0.0054,6.72154 +253,0.0053,6.88845 +509,0.0205,6.48704 +1021,0.013,6.58739 +2045,0.077,7.68102 +4093,0.0941,6.50035 +8189,0.1225,7.00006 +16381,0.1515,8.34253 +32765,0.2812,8.60467 +65533,0.5777,7.74349 +131069,1.2219,9.58566 +262141,3.588,18.5211 +524285,5.2667,24.5647 +1048573,10.2608,31.0579 +2097149,21.2878,47.4726 +4194301,93.978,85.3002 +8388605,183.962,151.526 +16777213,359.213,294.735 +33554429,723.586,576.63 +67108861,1443,1135.68 +134217725,2884.87,2271.37 +13,0.0028,7.37382 +29,0.0047,5.95866 +61,0.0207,7.65952 +125,0.0083,7.21818 +253,0.0246,7.75885 +509,0.0257,6.58022 +1021,0.0321,6.13478 +2045,0.0461,6.51981 +4093,0.0788,5.10259 +8189,0.1079,6.25562 +16381,0.3092,6.8055 +32765,0.3957,7.01952 +65533,0.6263,8.53299 +131069,1.3522,7.85306 +262141,2.5719,19.754 +524285,5.0175,24.1807 +1048573,10.9329,32.5161 +2097149,21.8028,47.4481 +4194301,103.108,83.3219 +8388605,182.655,152.29 +16777213,364.426,291.726 +33554429,726.212,578.371 +67108861,1439.98,1138.6 +134217725,2891.94,2254.02 +13,0.0027,6.92531 +29,0.0026,6.65395 +61,0.0047,6.33958 +125,0.0034,7.0871 +253,0.0073,7.15366 +509,0.0143,7.31238 +1021,0.013,7.50387 +2045,0.0316,7.36768 +4093,0.041,8.72755 +8189,0.0775,6.53107 +16381,0.2579,6.73178 +32765,0.3458,6.9847 +65533,0.5781,8.6487 +131069,1.2169,9.03373 +262141,2.5465,19.372 +524285,5.075,23.3697 +1048573,10.0515,30.7436 +2097149,20.9991,50.0931 +4194301,97.5924,82.5027 +8388605,190.326,147.707 +16777213,362.33,294.477 +33554429,723.548,573.493 +67108861,1440.03,1132.36 +134217725,2875.29,2267.33 +13,0.0029,5.30842 +29,0.0042,5.97811 +61,0.0074,6.64781 +125,0.0051,6.9847 +253,0.0134,6.6775 +509,0.0124,6.52595 +1021,0.019,6.88947 +2045,0.0208,7.18336 +4093,0.0403,7.72506 +8189,0.1054,7.44858 +16381,0.3329,7.03181 +32765,0.4539,7.47213 +65533,0.5787,8.80333 +131069,1.4989,8.9088 +262141,2.6196,19.5758 +524285,4.9887,23.4322 +1048573,11.2416,32.3482 +2097149,20.9969,50.4453 +4194301,92.367,82.7156 +8388605,182.097,152.416 +16777213,357.056,292.218 +33554429,718.006,571.186 +67108861,1470.35,1132.15 +134217725,2882.36,2263.42 +13,0.0029,6.97651 +29,0.0071,7.54176 +61,0.0075,5.37293 +125,0.0052,7.76499 +253,0.0087,9.20166 +509,0.029,6.67648 +1021,0.0279,6.66419 +2045,0.0408,7.63597 +4093,0.1268,6.19622 +8189,0.0903,7.73325 +16381,0.1659,7.16083 +32765,0.3002,6.33344 +65533,0.5781,8.9815 +131069,1.5865,8.8535 +262141,2.465,20.6909 +524285,5.0212,26.0393 +1048573,11.8088,32.1772 +2097149,21.993,49.3527 +4194301,93.1137,81.4684 +8388605,184.289,149.129 +16777213,390.141,294.125 +33554429,724.72,578.588 +67108861,1440.44,1135.94 +134217725,2871.69,2268.8 +13,0.0027,6.80346 +29,0.007,8.49101 +61,0.0079,6.5751 +125,0.0053,6.60275 +253,0.0205,6.83213 +509,0.0118,6.69894 +1021,0.0207,6.60378 +2045,0.0471,6.37133 +4093,0.0724,9.12486 +8189,0.0737,7.84179 +16381,0.1523,7.78957 +32765,0.349,7.57555 +65533,0.7925,7.56531 +131069,1.4999,9.45766 +262141,2.7267,17.8442 +524285,5.0898,23.892 +1048573,11.4968,32.4168 +2097149,22.0564,47.7737 +4194301,92.3565,78.4333 +8388605,183.866,153.091 +16777213,358.776,294.29 +33554429,720.452,575.156 +67108861,1449.3,1136.77 +134217725,2888.59,2265.09 +13,0.0028,6.82189 +29,0.0027,6.75123 +61,0.005,7.91962 +125,0.0049,8.01075 +253,0.0114,7.03898 +509,0.0158,8.45414 +1021,0.0318,7.20282 +2045,0.033,7.60627 +4093,0.042,7.76909 +8189,0.0792,6.91712 +16381,0.2786,6.88538 +32765,0.2743,7.07174 +65533,0.5594,6.41229 +131069,1.2222,9.22214 +262141,3.0477,18.3163 +524285,5.2511,23.3144 +1048573,11.2368,33.2882 +2097149,21.1856,45.5557 +4194301,94.8595,85.1722 +8388605,177.987,150.738 +16777213,366.304,296.884 +33554429,721.243,580.283 +67108861,1454.97,1139.27 +134217725,2883.52,2261.01 +13,0.0163,7.28986 +29,0.0071,8.22784 +61,0.0048,7.26016 +125,0.0082,7.73325 +253,0.0205,8.64256 +509,0.0075,6.84134 +1021,0.0334,8.49715 +2045,0.0209,6.39795 +4093,0.0421,6.20954 +8189,0.0747,7.50694 +16381,0.2152,6.99494 +32765,0.2802,8.52275 +65533,0.5623,8.8791 +131069,1.2074,9.24877 +262141,2.6441,19.6168 +524285,6.9512,23.6544 +1048573,11.0734,29.8025 +2097149,22.1665,46.505 +4194301,94.3564,83.3167 +8388605,185.166,151.607 +16777213,366.33,298.337 +33554429,731.552,569.492 +67108861,1441.06,1138.6 +134217725,2874.38,2262.87 +13,0.0028,7.42298 +29,0.0182,6.92429 +61,0.0034,6.6775 +125,0.0055,6.65088 +253,0.0108,6.7113 +509,0.0062,6.55667 +1021,0.0139,6.45939 +2045,0.0219,6.93453 +4093,0.0541,5.71802 +8189,0.0753,7.47725 +16381,0.1805,7.4281 +32765,0.2801,7.35539 +65533,0.587,8.56166 +131069,1.2765,10.0434 +262141,2.9874,17.0506 +524285,5.0248,24.9231 +1048573,11.2654,32.4178 +2097149,21.7837,50.047 +4194301,93.962,83.1703 +8388605,183.511,152.141 +16777213,359.586,291.778 +33554429,725.72,573.432 +67108861,1441.6,1133.21 +134217725,2873.35,2256.47 +13,0.0047,7.57658 +29,0.0048,4.7032 +61,0.005,5.83782 +125,0.0081,6.93248 +253,0.0046,5.34733 +509,0.011,5.30534 +1021,0.031,6.35085 +2045,0.0368,5.43232 +4093,0.044,6.70413 +8189,0.0914,9.55597 +16381,0.1783,7.36154 +32765,0.3574,7.09734 +65533,0.579,7.49261 +131069,1.4207,10.4018 +262141,2.6662,20.395 +524285,5.2106,24.7665 +1048573,12.6479,32.0369 +2097149,20.9897,49.92 +4194301,92.2397,80.8653 +8388605,180.767,153.185 +16777213,359.322,294.545 +33554429,714.339,574.48 +67108861,1445.16,1124.86 +134217725,2927.57,2260.13 +13,0.0027,6.09382 +29,0.0075,5.35859 +61,0.0047,7.21715 +125,0.0216,4.992 +253,0.0074,7.02669 +509,0.0154,5.93715 +1021,0.0291,6.1481 +2045,0.0212,4.83635 +4093,0.0782,7.66771 +8189,0.0905,6.61504 +16381,0.1649,6.64986 +32765,0.4604,6.528 +65533,0.5678,6.7113 +131069,1.3754,8.99891 +262141,2.4583,18.4627 +524285,5.5183,22.9734 +1048573,11.4413,30.505 +2097149,23.8916,49.0711 +4194301,103.808,81.5872 +8388605,180.419,152.067 +16777213,367.734,297.114 +33554429,727.537,574.135 +67108861,1448.75,1138.02 +134217725,2862.93,2250.46 +13,0.0027,6.24742 +29,0.0028,6.3529 +61,0.0029,6.64371 +125,0.017,7.35437 +253,0.0046,5.47123 +509,0.0173,6.87821 +1021,0.0341,5.73235 +2045,0.0456,6.81882 +4093,0.0402,6.31194 +8189,0.1112,6.47885 +16381,0.1468,6.96627 +32765,0.287,6.3744 +65533,0.5544,9.01939 +131069,2.194,10.2298 +262141,2.6163,20.6623 +524285,5.1315,25.2508 +1048573,10.986,32.3697 +2097149,20.48,49.8852 +4194301,93.8877,82.9901 +8388605,182.384,153.939 +16777213,362.701,294.649 +33554429,713.28,572.809 +67108861,1443.71,1142.08 +134217725,2884.36,2263.84 +13,0.0026,7.64416 +29,0.0162,7.5479 +61,0.0207,6.29453 +125,0.0214,5.85114 +253,0.0069,5.02477 +509,0.0097,4.79642 +1021,0.0319,4.79027 +2045,0.021,6.69594 +4093,0.0389,6.49216 +8189,0.1675,6.67853 +16381,0.217,7.28678 +32765,0.2879,8.1111 +65533,0.6185,7.64928 +131069,1.4387,8.28314 +262141,2.5265,18.3235 +524285,4.9892,22.9919 +1048573,10.7515,31.8669 +2097149,21.9491,49.8012 +4194301,96.9281,84.7247 +8388605,205.874,156.483 +16777213,361.846,294.42 +33554429,752.165,596.451 diff --git a/Project2-Stream-Compaction/data/Sort_data/data_nonpow2/thrust.csv b/Project2-Stream-Compaction/data/Sort_data/data_nonpow2/thrust.csv deleted file mode 100644 index 6dedd7f..0000000 --- a/Project2-Stream-Compaction/data/Sort_data/data_nonpow2/thrust.csv +++ /dev/null @@ -1,910 +0,0 @@ -13,0.0114 -29,0.0051 -61,0.0028 -125,0.0092 -253,0.0046 -509,0.0147 -1021,0.0097 -2045,0.0155 -4093,0.0268 -8189,0.0883 -16381,0.1664 -32765,0.3246 -65533,2.379 -131069,1.3385 -262141,2.5597 -524285,7.4687 -1048573,13.5241 -2097149,23.0565 -4194301,95.8414 -8388605,193.395 -16777213,385.13 -33554429,755.448 -67108861,1460.42 -134217725,2912.36 -13,0.0027 -29,0.0071 -61,0.0209 -125,0.0088 -253,0.0059 -509,0.0464 -1021,0.0224 -2045,0.0472 -4093,0.0425 -8189,0.0779 -16381,0.3436 -32765,0.2904 -65533,0.848 -131069,1.3111 -262141,3.0369 -524285,5.0796 -1048573,10.9716 -2097149,21.3974 -4194301,89.5675 -8388605,176.263 -16777213,375.681 -33554429,758.883 -67108861,1507.65 -134217725,2951.6 -13,0.0047 -29,0.0204 -61,0.003 -125,0.019 -253,0.0212 -509,0.0125 -1021,0.0142 -2045,0.0475 -4093,0.098 -8189,0.12 -16381,0.2552 -32765,0.2866 -65533,0.5574 -131069,2.0262 -262141,3.1683 -524285,5.0057 -1048573,11.1775 -2097149,21.3271 -4194301,98.7222 -8388605,184.13 -16777213,384.997 -33554429,785.93 -67108861,1490.99 -134217725,2918.26 -13,0.0026 -29,0.0047 -61,0.0209 -125,0.0092 -253,0.0114 -509,0.0207 -1021,0.047 -2045,0.0217 -4093,0.0472 -8189,0.1791 -16381,0.1877 -32765,0.3148 -65533,0.5593 -131069,1.2133 -262141,2.8389 -524285,5.7486 -1048573,10.6359 -2097149,23.6569 -4194301,100.289 -8388605,188.321 -16777213,362.526 -33554429,736.482 -67108861,1434.33 -134217725,2887.84 -13,0.0027 -29,0.0068 -61,0.0077 -125,0.0142 -253,0.0077 -509,0.0251 -1021,0.026 -2045,0.0219 -4093,0.1265 -8189,0.1089 -16381,0.1727 -32765,0.3283 -65533,0.6751 -131069,1.2334 -262141,2.7239 -524285,5.1112 -1048573,10.3636 -2097149,22.2883 -4194301,103.325 -8388605,183.333 -16777213,369.629 -33554429,725.454 -67108861,1452.92 -134217725,2901.91 -13,0.0027 -29,0.0067 -61,0.0204 -125,0.0194 -253,0.0116 -509,0.0484 -1021,0.0151 -2045,0.0207 -4093,0.0408 -8189,0.1222 -16381,0.1712 -32765,0.3756 -65533,0.5548 -131069,1.2238 -262141,2.6165 -524285,6.0176 -1048573,10.7412 -2097149,21.9193 -4194301,94.5496 -8388605,185.198 -16777213,380.944 -33554429,736.146 -67108861,1456.69 -134217725,2884.71 -13,0.0027 -29,0.0027 -61,0.0075 -125,0.0095 -253,0.0051 -509,0.0363 -1021,0.0336 -2045,0.0252 -4093,0.1346 -8189,0.0783 -16381,0.1739 -32765,0.3344 -65533,0.5575 -131069,1.3424 -262141,2.6226 -524285,4.9859 -1048573,10.7497 -2097149,23.9159 -4194301,95.8398 -8388605,187.874 -16777213,362.821 -33554429,733.687 -67108861,1448.8 -134217725,2900.15 -13,0.0026 -29,0.0027 -61,0.0079 -125,0.0096 -253,0.0117 -509,0.0208 -1021,0.0147 -2045,0.0345 -4093,0.128 -8189,0.1534 -16381,0.1519 -32765,0.3422 -65533,0.6309 -131069,1.3395 -262141,2.8073 -524285,5.3593 -1048573,10.2617 -2097149,21.8538 -4194301,97.8402 -8388605,182.357 -16777213,366.465 -33554429,730.123 -67108861,1452.77 -134217725,2918.98 -13,0.0027 -29,0.0043 -61,0.0049 -125,0.0039 -253,0.0208 -509,0.0319 -1021,0.0236 -2045,0.0314 -4093,0.0741 -8189,0.0889 -16381,0.2119 -32765,0.3754 -65533,0.5556 -131069,1.3089 -262141,2.4741 -524285,6.7469 -1048573,10.766 -2097149,20.8559 -4194301,98.6284 -8388605,182.006 -16777213,367.485 -33554429,735.584 -67108861,1448.45 -134217725,3009.99 -13,0.0028 -29,0.0047 -61,0.0232 -125,0.0062 -253,0.0075 -509,0.0289 -1021,0.0422 -2045,0.021 -4093,0.059 -8189,0.076 -16381,0.2493 -32765,0.2891 -65533,0.6921 -131069,1.3297 -262141,2.6756 -524285,5.3522 -1048573,11.016 -2097149,21.4589 -4194301,95.7134 -8388605,184.128 -16777213,381.288 -33554429,732.675 -67108861,1447.28 -134217725,2877.69 -13,0.0087 -29,0.0042 -61,0.0078 -125,0.0033 -253,0.034 -509,0.0185 -1021,0.0205 -2045,0.0851 -4093,0.0404 -8189,0.0854 -16381,0.1604 -32765,0.6143 -65533,0.5747 -131069,1.2157 -262141,2.6067 -524285,4.9976 -1048573,10.2469 -2097149,21.4191 -4194301,94.6389 -8388605,186.556 -16777213,362.014 -33554429,744.193 -67108861,1455.73 -134217725,2896.08 -13,0.0029 -29,0.0029 -61,0.0048 -125,0.0187 -253,0.0075 -509,0.0147 -1021,0.0126 -2045,0.0211 -4093,0.1484 -8189,0.1038 -16381,0.2156 -32765,0.3573 -65533,0.5589 -131069,1.2201 -262141,3.2876 -524285,5.7233 -1048573,10.5619 -2097149,21.0206 -4194301,95.8763 -8388605,185.738 -16777213,365.602 -33554429,729.446 -67108861,1473.22 -134217725,2892.73 -13,0.0027 -29,0.0044 -61,0.0078 -125,0.0217 -253,0.0137 -509,0.0124 -1021,0.0129 -2045,0.0212 -4093,0.0568 -8189,0.0918 -16381,0.1605 -32765,0.3583 -65533,0.7411 -131069,1.3881 -262141,2.5451 -524285,5.7595 -1048573,11.6994 -2097149,20.9618 -4194301,93.4196 -8388605,185.552 -16777213,368.447 -33554429,721.794 -67108861,1506.6 -134217725,2907.84 -13,0.0026 -29,0.0061 -61,0.0046 -125,0.0033 -253,0.0122 -509,0.0289 -1021,0.0315 -2045,0.0211 -4093,0.1085 -8189,0.0797 -16381,0.211 -32765,0.423 -65533,0.572 -131069,1.308 -262141,3.5266 -524285,5.6977 -1048573,11.1024 -2097149,23.8067 -4194301,94.3694 -8388605,183.97 -16777213,379.903 -33554429,739.658 -67108861,1463.36 -134217725,2911.9 -13,0.0031 -29,0.0067 -61,0.0078 -125,0.0082 -253,0.0133 -509,0.044 -1021,0.0318 -2045,0.0213 -4093,0.0436 -8189,0.1961 -16381,0.1746 -32765,0.3059 -65533,1.0127 -131069,1.3196 -262141,2.5251 -524285,5.5541 -1048573,10.7449 -2097149,20.8959 -4194301,93.1581 -8388605,185.728 -16777213,363.414 -33554429,745.773 -67108861,1447.17 -134217725,2915.98 -13,0.0027 -29,0.0201 -61,0.0049 -125,0.0083 -253,0.0076 -509,0.037 -1021,0.0216 -2045,0.0523 -4093,0.0421 -8189,0.1264 -16381,0.1458 -32765,0.4382 -65533,0.5776 -131069,1.2783 -262141,4.0156 -524285,5.7501 -1048573,10.4437 -2097149,22.4876 -4194301,96.599 -8388605,187.221 -16777213,367.982 -33554429,739.931 -67108861,1457.81 -134217725,2894.23 -13,0.0043 -29,0.0059 -61,0.003 -125,0.0033 -253,0.0333 -509,0.0126 -1021,0.0135 -2045,0.021 -4093,0.0388 -8189,0.1218 -16381,0.2423 -32765,0.284 -65533,0.5547 -131069,1.2148 -262141,2.9474 -524285,5.4012 -1048573,10.5098 -2097149,20.9003 -4194301,93.8721 -8388605,183.204 -16777213,363.751 -33554429,735.198 -67108861,1459.99 -134217725,2890.21 -13,0.0026 -29,0.0045 -61,0.0076 -125,0.0084 -253,0.0122 -509,0.0292 -1021,0.0183 -2045,0.021 -4093,0.0423 -8189,0.0939 -16381,0.1642 -32765,0.4068 -65533,0.5689 -131069,1.3052 -262141,2.6576 -524285,6.239 -1048573,10.6844 -2097149,21.0014 -4194301,91.9386 -8388605,182.728 -16777213,366.573 -33554429,740.525 -67108861,1455.63 -134217725,2904.9 -13,0.005 -29,0.0205 -61,0.0047 -125,0.0081 -253,0.0248 -509,0.0179 -1021,0.0379 -2045,0.0216 -4093,0.0616 -8189,0.0929 -16381,0.1443 -32765,0.4443 -65533,1.3369 -131069,1.3803 -262141,2.4476 -524285,6.0599 -1048573,11.0132 -2097149,21.0805 -4194301,93.5092 -8388605,188.566 -16777213,363.209 -33554429,742.652 -67108861,1519.32 -134217725,2894.94 -13,0.0026 -29,0.016 -61,0.0076 -125,0.0085 -253,0.0086 -509,0.0222 -1021,0.0131 -2045,0.0202 -4093,0.0424 -8189,0.1069 -16381,0.3236 -32765,0.4183 -65533,0.5858 -131069,1.2163 -262141,2.4601 -524285,5.0147 -1048573,11.1252 -2097149,22.4066 -4194301,94.6518 -8388605,184.049 -16777213,364.101 -33554429,738.38 -67108861,1465.87 -134217725,2878.69 -13,0.0026 -29,0.0045 -61,0.0048 -125,0.0053 -253,0.0221 -509,0.0127 -1021,0.012 -2045,0.0212 -4093,0.0494 -8189,0.0943 -16381,0.1607 -32765,0.2885 -65533,0.6149 -131069,1.2512 -262141,3.2525 -524285,5.7394 -1048573,10.6835 -2097149,20.5591 -4194301,95.6524 -8388605,184.599 -16777213,366.585 -33554429,724.731 -67108861,1458.58 -134217725,2916.6 -13,0.0027 -29,0.0067 -61,0.0076 -125,0.0216 -253,0.012 -509,0.0474 -1021,0.0434 -2045,0.0281 -4093,0.042 -8189,0.1432 -16381,0.1749 -32765,0.3682 -65533,0.599 -131069,1.2362 -262141,2.7327 -524285,7.5851 -1048573,10.2546 -2097149,28.0859 -4194301,97.8906 -8388605,192.734 -16777213,380.638 -33554429,756.803 -67108861,1458.12 -134217725,2855.55 -13,0.0027 -29,0.003 -61,0.0062 -125,0.0054 -253,0.0127 -509,0.0368 -1021,0.0125 -2045,0.0219 -4093,0.1207 -8189,0.0751 -16381,0.2628 -32765,0.3267 -65533,0.5821 -131069,1.8082 -262141,2.5596 -524285,5.0409 -1048573,14.3314 -2097149,20.9038 -4194301,89.5461 -8388605,179.873 -16777213,366.227 -33554429,731.015 -67108861,1435.63 -134217725,2871.51 -13,0.0218 -29,0.0069 -61,0.0052 -125,0.0052 -253,0.0216 -509,0.0469 -1021,0.0279 -2045,0.0777 -4093,0.1689 -8189,0.1211 -16381,0.1521 -32765,0.2818 -65533,0.5541 -131069,1.2951 -262141,2.4834 -524285,5.0971 -1048573,10.3709 -2097149,20.9436 -4194301,96.6392 -8388605,180.917 -16777213,355.629 -33554429,732.672 -67108861,1434.84 -134217725,2871.6 -13,0.0027 -29,0.0068 -61,0.0207 -125,0.0084 -253,0.031 -509,0.0422 -1021,0.0254 -2045,0.0225 -4093,0.0635 -8189,0.0886 -16381,0.1445 -32765,0.2813 -65533,0.5595 -131069,1.3206 -262141,2.5131 -524285,5.58 -1048573,11.1729 -2097149,20.7278 -4194301,90.7274 -8388605,180.775 -16777213,361.538 -33554429,727.432 -67108861,1442.96 -134217725,2907.1 -13,0.0216 -29,0.0072 -61,0.0078 -125,0.0054 -253,0.0053 -509,0.0205 -1021,0.013 -2045,0.077 -4093,0.0941 -8189,0.1225 -16381,0.1515 -32765,0.2812 -65533,0.5777 -131069,1.2219 -262141,3.588 -524285,5.2667 -1048573,10.2608 -2097149,21.2878 -4194301,93.978 -8388605,183.962 -16777213,359.213 -33554429,723.586 -67108861,1443 -134217725,2884.87 -13,0.0028 -29,0.0047 -61,0.0207 -125,0.0083 -253,0.0246 -509,0.0257 -1021,0.0321 -2045,0.0461 -4093,0.0788 -8189,0.1079 -16381,0.3092 -32765,0.3957 -65533,0.6263 -131069,1.3522 -262141,2.5719 -524285,5.0175 -1048573,10.9329 -2097149,21.8028 -4194301,103.108 -8388605,182.655 -16777213,364.426 -33554429,726.212 -67108861,1439.98 -134217725,2891.94 -13,0.0027 -29,0.0026 -61,0.0047 -125,0.0034 -253,0.0073 -509,0.0143 -1021,0.013 -2045,0.0316 -4093,0.041 -8189,0.0775 -16381,0.2579 -32765,0.3458 -65533,0.5781 -131069,1.2169 -262141,2.5465 -524285,5.075 -1048573,10.0515 -2097149,20.9991 -4194301,97.5924 -8388605,190.326 -16777213,362.33 -33554429,723.548 -67108861,1440.03 -134217725,2875.29 -13,0.0029 -29,0.0042 -61,0.0074 -125,0.0051 -253,0.0134 -509,0.0124 -1021,0.019 -2045,0.0208 -4093,0.0403 -8189,0.1054 -16381,0.3329 -32765,0.4539 -65533,0.5787 -131069,1.4989 -262141,2.6196 -524285,4.9887 -1048573,11.2416 -2097149,20.9969 -4194301,92.367 -8388605,182.097 -16777213,357.056 -33554429,718.006 -67108861,1470.35 -134217725,2882.36 -13,0.0029 -29,0.0071 -61,0.0075 -125,0.0052 -253,0.0087 -509,0.029 -1021,0.0279 -2045,0.0408 -4093,0.1268 -8189,0.0903 -16381,0.1659 -32765,0.3002 -65533,0.5781 -131069,1.5865 -262141,2.465 -524285,5.0212 -1048573,11.8088 -2097149,21.993 -4194301,93.1137 -8388605,184.289 -16777213,390.141 -33554429,724.72 -67108861,1440.44 -134217725,2871.69 -13,0.0027 -29,0.007 -61,0.0079 -125,0.0053 -253,0.0205 -509,0.0118 -1021,0.0207 -2045,0.0471 -4093,0.0724 -8189,0.0737 -16381,0.1523 -32765,0.349 -65533,0.7925 -131069,1.4999 -262141,2.7267 -524285,5.0898 -1048573,11.4968 -2097149,22.0564 -4194301,92.3565 -8388605,183.866 -16777213,358.776 -33554429,720.452 -67108861,1449.3 -134217725,2888.59 -13,0.0028 -29,0.0027 -61,0.005 -125,0.0049 -253,0.0114 -509,0.0158 -1021,0.0318 -2045,0.033 -4093,0.042 -8189,0.0792 -16381,0.2786 -32765,0.2743 -65533,0.5594 -131069,1.2222 -262141,3.0477 -524285,5.2511 -1048573,11.2368 -2097149,21.1856 -4194301,94.8595 -8388605,177.987 -16777213,366.304 -33554429,721.243 -67108861,1454.97 -134217725,2883.52 -13,0.0163 -29,0.0071 -61,0.0048 -125,0.0082 -253,0.0205 -509,0.0075 -1021,0.0334 -2045,0.0209 -4093,0.0421 -8189,0.0747 -16381,0.2152 -32765,0.2802 -65533,0.5623 -131069,1.2074 -262141,2.6441 -524285,6.9512 -1048573,11.0734 -2097149,22.1665 -4194301,94.3564 -8388605,185.166 -16777213,366.33 -33554429,731.552 -67108861,1441.06 -134217725,2874.38 -13,0.0028 -29,0.0182 -61,0.0034 -125,0.0055 -253,0.0108 -509,0.0062 -1021,0.0139 -2045,0.0219 -4093,0.0541 -8189,0.0753 -16381,0.1805 -32765,0.2801 -65533,0.587 -131069,1.2765 -262141,2.9874 -524285,5.0248 -1048573,11.2654 -2097149,21.7837 -4194301,93.962 -8388605,183.511 -16777213,359.586 -33554429,725.72 -67108861,1441.6 -134217725,2873.35 -13,0.0047 -29,0.0048 -61,0.005 -125,0.0081 -253,0.0046 -509,0.011 -1021,0.031 -2045,0.0368 -4093,0.044 -8189,0.0914 -16381,0.1783 -32765,0.3574 -65533,0.579 -131069,1.4207 -262141,2.6662 -524285,5.2106 -1048573,12.6479 -2097149,20.9897 -4194301,92.2397 -8388605,180.767 -16777213,359.322 -33554429,714.339 -67108861,1445.16 -134217725,2927.57 -13,0.0027 -29,0.0075 -61,0.0047 -125,0.0216 -253,0.0074 -509,0.0154 -1021,0.0291 -2045,0.0212 -4093,0.0782 -8189,0.0905 -16381,0.1649 -32765,0.4604 -65533,0.5678 -131069,1.3754 -262141,2.4583 -524285,5.5183 -1048573,11.4413 -2097149,23.8916 -4194301,103.808 -8388605,180.419 -16777213,367.734 -33554429,727.537 -67108861,1448.75 -134217725,2862.93 -13,0.0027 -29,0.0028 -61,0.0029 -125,0.017 -253,0.0046 -509,0.0173 -1021,0.0341 -2045,0.0456 -4093,0.0402 -8189,0.1112 -16381,0.1468 -32765,0.287 -65533,0.5544 -131069,2.194 -262141,2.6163 -524285,5.1315 -1048573,10.986 -2097149,20.48 -4194301,93.8877 -8388605,182.384 -16777213,362.701 -33554429,713.28 -67108861,1443.71 -134217725,2884.36 -13,0.0026 -29,0.0162 -61,0.0207 -125,0.0214 -253,0.0069 -509,0.0097 -1021,0.0319 -2045,0.021 -4093,0.0389 -8189,0.1675 -16381,0.217 -32765,0.2879 -65533,0.6185 -131069,1.4387 -262141,2.5265 -524285,4.9892 -1048573,10.7515 -2097149,21.9491 -4194301,96.9281 -8388605,205.874 -16777213,361.846 -33554429,752.165 diff --git a/Project2-Stream-Compaction/data/Sort_data/data_pow2/data.csv b/Project2-Stream-Compaction/data/Sort_data/data_pow2/data.csv new file mode 100644 index 0000000..289f9c2 --- /dev/null +++ b/Project2-Stream-Compaction/data/Sort_data/data_pow2/data.csv @@ -0,0 +1,934 @@ +Array Size,Thurst time (s),Radix time (s) +16,0.0075,5.7385 +32,0.0029,5.79277 +64,0.003,6.67955 +128,0.0039,5.75795 +256,0.0146,5.64122 +512,0.0057,7.1168 +1024,0.0099,5.05549 +2048,0.0245,5.10771 +4096,0.0604,4.72371 +8192,0.1095,5.17018 +16384,0.1496,6.00166 +32768,0.3017,6.87514 +65536,0.6076,7.84282 +131072,1.8703,6.86285 +262144,2.6927,17.0732 +524288,7.218,21.8931 +1048576,13.1339,33.066 +2097152,53.8283,47.2914 +4194304,98.1962,84.779 +8388608,192.116,156.204 +16777216,384.223,294.75 +33554432,753.74,583.485 +67108864,1455.86,1140.21 +134217728,2905.27,2271.62 +16,0.0028,8.04864 +32,0.0069,7.77114 +64,0.0075,6.9335 +128,0.0225,7.76704 +256,0.0126,8.93338 +512,0.0102,5.98835 +1024,0.0217,7.4752 +2048,0.0488,7.05434 +4096,0.0426,6.79219 +8192,0.1388,6.79219 +16384,0.1871,6.95706 +32768,0.3565,7.0103 +65536,0.5737,8.81459 +131072,1.2749,10.1192 +262144,2.5403,19.0894 +524288,7.6741,22.5772 +1048576,10.8598,31.829 +2097152,48.0994,48.8622 +4194304,100.074,81.3814 +8388608,182.265,148.377 +16777216,363.53,290.737 +33554432,726.753,586.126 +67108864,1452.12,1145.14 +134217728,2987.53,2290.31 +16,0.0047,5.23776 +32,0.0072,5.98016 +64,0.0031,4.4185 +128,0.0061,5.32582 +256,0.0425,5.08928 +512,0.0146,6.53722 +1024,0.0094,5.40058 +2048,0.0239,5.39955 +4096,0.0571,6.15526 +8192,0.0768,6.32627 +16384,0.1751,6.14502 +32768,0.465,4.93568 +65536,0.5712,7.48237 +131072,1.3224,8.15718 +262144,3.2329,17.7244 +524288,5.2811,20.8517 +1048576,10.9641,32.4526 +2097152,56.7159,47.5709 +4194304,97.6484,80.9871 +8388608,203.317,151.078 +16777216,393.484,291.817 +33554432,728.65,576.188 +67108864,1456.58,1142.02 +134217728,2889.64,2273.59 +16,0.0191,4.80256 +32,0.0068,4.40115 +64,0.0046,6.75123 +128,0.0099,6.83008 +256,0.0135,4.5353 +512,0.0145,6.94886 +1024,0.0227,8.86374 +2048,0.0236,7.48032 +4096,0.067,5.21216 +8192,0.1035,8.0128 +16384,0.1857,7.7353 +32768,0.3048,7.87558 +65536,0.5833,8.61389 +131072,1.4805,8.61389 +262144,2.5592,16.5806 +524288,7.0234,23.4988 +1048576,11.4328,31.83 +2097152,45.9475,49.6077 +4194304,94.4369,82.9665 +8388608,187.09,152.275 +16777216,366.048,295.922 +33554432,736.721,576.327 +67108864,1461.1,1149.93 +134217728,2959.13,2263.46 +16,0.0027,4.98176 +32,0.0068,5.98221 +64,0.0075,5.76922 +128,0.0069,5.29613 +256,0.0141,6.47578 +512,0.014,7.49466 +1024,0.0232,7.09939 +2048,0.093,8.49613 +4096,0.0456,6.95398 +8192,0.104,5.45485 +16384,0.1795,6.92224 +32768,0.2923,6.89971 +65536,0.5658,8.15514 +131072,1.5317,9.86829 +262144,2.5963,20.9756 +524288,5.2796,24.279 +1048576,11.7991,33.6241 +2097152,46.2733,49.1633 +4194304,99.3084,86.3293 +8388608,190.078,152.036 +16777216,371.639,292.928 +33554432,754.323,579.891 +67108864,1456.32,1140.89 +134217728,2909.28,2275.16 +16,0.0027,6.88026 +32,0.0067,6.68058 +64,0.0231,5.99757 +128,0.0093,7.31238 +256,0.0251,7.52947 +512,0.0057,8.05581 +1024,0.0221,7.51104 +2048,0.0346,7.10246 +4096,0.0887,4.61107 +8192,0.1233,6.97139 +16384,0.3455,7.38816 +32768,0.6507,7.41786 +65536,0.5827,7.63494 +131072,1.5862,9.43411 +262144,2.4598,18.7873 +524288,5.2245,23.2407 +1048576,11.0312,33.5309 +2097152,45.7408,48.2509 +4194304,94.2614,82.7146 +8388608,191.594,152.747 +16777216,364.206,296.188 +33554432,737.077,571.362 +67108864,1449.16,1131.08 +134217728,2877.23,2273.23 +16,0.0027,6.95091 +32,0.0045,8.85043 +64,0.0058,6.56282 +128,0.006,7.55405 +256,0.018,7.56531 +512,0.0223,5.11795 +1024,0.014,6.68979 +2048,0.0234,6.73178 +4096,0.1043,6.70925 +8192,0.2334,7.33389 +16384,0.2337,8.14182 +32768,0.3672,7.17926 +65536,0.6096,9.13715 +131072,1.3075,9.88262 +262144,2.5745,17.2524 +524288,5.7599,22.2095 +1048576,10.7059,33.1684 +2097152,50.5869,48.0737 +4194304,96.3163,83.7724 +8388608,182.478,153.629 +16777216,362.534,297.49 +33554432,748.07,570.131 +67108864,1451.44,1148.87 +134217728,2888.6,2250.91 +16,0.0027,8.06298 +32,0.0043,7.99949 +64,0.0074,6.01702 +128,0.0096,7.81619 +256,0.0255,8.8279 +512,0.014,7.31341 +1024,0.0098,8.63744 +2048,0.0232,7.90323 +4096,0.0434,9.01018 +8192,0.088,9.15558 +16384,0.2119,6.68979 +32768,0.2912,4.68685 +65536,0.6134,7.86842 +131072,1.2726,9.4208 +262144,3.5596,17.0496 +524288,5.1535,21.7651 +1048576,10.5479,31.1122 +2097152,46.9003,46.2817 +4194304,93.5464,84.1697 +8388608,187.529,152.588 +16777216,367.821,293.051 +33554432,726.455,579.208 +67108864,1451.18,1136.47 +134217728,2922.44,2260.51 +16,0.0027,7.00621 +32,0.0047,8.81459 +64,0.0085,5.10771 +128,0.006,5.30842 +256,0.0128,7.22637 +512,0.0054,6.37747 +1024,0.0089,6.59149 +2048,0.0236,6.50957 +4096,0.1393,6.51981 +8192,0.0903,6.67238 +16384,0.2431,6.88947 +32768,0.3696,7.07277 +65536,0.5595,8.38861 +131072,1.356,8.51456 +262144,2.5222,17.9282 +524288,5.9228,23.0359 +1048576,10.3468,32.0963 +2097152,47.4234,49.6845 +4194304,91.6539,82.4771 +8388608,185.849,152.583 +16777216,363.203,294.523 +33554432,726.266,575.825 +67108864,1465.59,1143.94 +134217728,2948.37,2281.3 +16,0.0027,7.0441 +32,0.0047,6.69286 +64,0.0031,6.71027 +128,0.0065,6.77786 +256,0.0191,4.50253 +512,0.0129,7.01645 +1024,0.0417,7.75885 +2048,0.0513,4.36838 +4096,0.0446,5.47123 +8192,0.0794,8.04966 +16384,0.1688,7.47827 +32768,0.3564,8.74086 +65536,0.5883,7.73734 +131072,1.2689,9.78534 +262144,2.4592,17.3251 +524288,5.4951,22.2669 +1048576,10.8357,31.7583 +2097152,45.2517,48.7342 +4194304,91.5442,82.7884 +8388608,181.912,150.76 +16777216,374.792,297.012 +33554432,725.927,578.473 +67108864,1445.34,1148.2 +134217728,2901.67,2271.24 +16,0.0027,6.75635 +32,0.0045,6.63654 +64,0.0208,6.77376 +128,0.0193,6.49626 +256,0.0251,6.80141 +512,0.0103,6.60685 +1024,0.0089,6.45734 +2048,0.0399,6.45222 +4096,0.0448,6.66726 +8192,0.0999,6.66624 +16384,0.1861,6.81165 +32768,0.2956,8.82688 +65536,0.5958,8.91085 +131072,2.0451,8.72038 +262144,2.5185,20.4155 +524288,5.2442,23.1711 +1048576,11.4062,32.2437 +2097152,46.9382,47.7215 +4194304,96.8658,82.6184 +8388608,185.727,151.17 +16777216,366.025,297.516 +33554432,737.99,576.423 +67108864,1433.94,1139.01 +134217728,2903.01,2270.33 +16,0.0025,7.06048 +32,0.0044,9.10643 +64,0.0034,5.79994 +128,0.0195,5.91258 +256,0.0181,8.25958 +512,0.0058,6.2167 +1024,0.0286,6.77069 +2048,0.0238,6.6775 +4096,0.1366,6.84339 +8192,0.0751,6.48704 +16384,0.2883,6.76966 +32768,0.2904,7.13216 +65536,0.7458,10.1929 +131072,1.3796,9.96864 +262144,3.2819,18.8436 +524288,5.227,23.9667 +1048576,10.571,31.2842 +2097152,46.2437,49.109 +4194304,89.8445,83.583 +8388608,185.717,152.531 +16777216,363.216,291.168 +33554432,734.841,574.269 +67108864,1447.57,1137.01 +134217728,2911.64,2257.57 +16,0.0027,6.74202 +32,0.0047,6.05286 +64,0.0085,7.13626 +128,0.0039,7.65542 +256,0.0171,7.13728 +512,0.0144,6.90586 +1024,0.0092,7.9616 +2048,0.0237,7.37894 +4096,0.0455,7.94419 +8192,0.0727,7.37485 +16384,0.183,7.38099 +32768,0.2838,5.66682 +65536,0.6274,6.91098 +131072,1.2615,10.0239 +262144,2.9446,19.4335 +524288,5.1935,25.6 +1048576,10.4826,33.5442 +2097152,46.2779,49.3302 +4194304,92.1948,84.2506 +8388608,189.222,154.936 +16777216,366.019,298.891 +33554432,730.158,578.546 +67108864,1456.5,1131.67 +134217728,2898.22,2268.84 +16,0.0026,7.25299 +32,0.0069,6.9161 +64,0.0075,6.76454 +128,0.0095,7.4793 +256,0.0239,7.26733 +512,0.0103,7.1127 +1024,0.0098,7.59296 +2048,0.0236,7.51923 +4096,0.0445,7.75782 +8192,0.1454,6.79936 +16384,0.2922,5.5767 +32768,1.287,6.8864 +65536,0.6231,7.74656 +131072,1.2927,10.8882 +262144,2.8384,19.4755 +524288,5.1454,23.8469 +1048576,10.852,31.1828 +2097152,44.5099,48.4936 +4194304,99.7367,82.7372 +8388608,191.158,152.316 +16777216,398.534,290.075 +33554432,782.012,575.435 +67108864,1457.42,1141.22 +134217728,2900.47,2278.65 +16,0.0027,8.03533 +32,0.0048,6.88538 +64,0.0049,7.39738 +128,0.0225,7.19155 +256,0.0371,8.32512 +512,0.0141,5.57261 +1024,0.022,7.48339 +2048,0.0229,7.60422 +4096,0.0449,7.66362 +8192,0.1331,5.1456 +16384,0.1511,7.64314 +32768,0.2811,7.85306 +65536,0.5887,7.80698 +131072,1.2516,8.35891 +262144,2.6829,19.328 +524288,5.6604,23.8746 +1048576,10.8225,33.0762 +2097152,43.82,49.9937 +4194304,92.8502,81.8985 +8388608,185.847,153.386 +16777216,354.827,295.179 +33554432,722.205,578.253 +67108864,1448.38,1137.77 +134217728,2899.35,2272.39 +16,0.0027,7.53869 +32,0.0027,6.71539 +64,0.0074,9.33376 +128,0.0061,7.4967 +256,0.014,6.9335 +512,0.0144,6.75533 +1024,0.0092,5.04218 +2048,0.0495,6.86387 +4096,0.0548,5.39443 +8192,0.0745,6.67034 +16384,0.2373,7.77114 +32768,0.6106,6.88947 +65536,0.5757,7.74451 +131072,1.3012,9.28256 +262144,2.4588,21.1108 +524288,5.4724,23.851 +1048576,11.9116,32.5499 +2097152,47.2582,50.5672 +4194304,90.176,80.9073 +8388608,186.772,151.69 +16777216,355.382,290.615 +33554432,721.926,572.833 +67108864,1437.05,1140.19 +134217728,2865.67,2258.29 +16,0.003,7.30726 +32,0.0294,4.97254 +64,0.0046,4.86093 +128,0.02,5.79174 +256,0.0306,6.08461 +512,0.009,6.03034 +1024,0.0093,9.44128 +2048,0.0239,6.92122 +4096,0.0571,6.78502 +8192,0.0872,7.97696 +16384,0.2223,6.85875 +32768,0.3795,8.4992 +65536,0.598,8.92826 +131072,1.2917,8.96922 +262144,3.3023,16.3052 +524288,5.1649,23.5336 +1048576,10.8897,32.1004 +2097152,49.4216,49.6855 +4194304,96.0327,84.1503 +8388608,185.029,151.11 +16777216,361.057,293.544 +33554432,721.187,572.757 +67108864,1426.31,1136.86 +134217728,2873.55,2267.15 +16,0.0044,4.98381 +32,0.0045,4.85376 +64,0.005,4.67456 +128,0.0063,7.07584 +256,0.0193,4.90803 +512,0.0147,6.6263 +1024,0.0095,6.53312 +2048,0.1077,6.5321 +4096,0.1432,7.07174 +8192,0.0905,5.01965 +16384,0.1661,8.18176 +32768,0.3031,7.83667 +65536,0.5789,7.7353 +131072,1.2617,10.0342 +262144,3.2751,18.8303 +524288,5.6768,22.3386 +1048576,11.7154,31.2771 +2097152,45.2314,49.6036 +4194304,93.2075,83.7294 +8388608,184.573,152.856 +16777216,361.703,291.995 +33554432,721.078,579.41 +67108864,1438.16,1129.67 +134217728,2926.33,2277.86 +16,0.0046,8.26061 +32,0.0073,7.48134 +64,0.008,6.01088 +128,0.0089,4.99814 +256,0.0412,5.97197 +512,0.0272,5.12205 +1024,0.0156,5.9648 +2048,0.0496,5.8624 +4096,0.0443,7.12704 +8192,0.0791,5.79584 +16384,0.2927,5.93606 +32768,0.2809,6.95706 +65536,0.7302,6.64474 +131072,1.4279,8.72858 +262144,3.4255,17.282 +524288,7.4474,22.5874 +1048576,12.1369,33.1254 +2097152,47.3726,49.6486 +4194304,109.629,82.5119 +8388608,182.913,151.734 +16777216,367.447,295.345 +33554432,733.049,578.333 +67108864,1446.95,1139.79 +134217728,2909.96,2275.11 +16,0.0026,6.61811 +32,0.0028,6.58637 +64,0.0054,6.71027 +128,0.0067,5.75795 +256,0.0251,6.75533 +512,0.0063,7.18746 +1024,0.0282,5.89107 +2048,0.0237,6.71744 +4096,0.0443,6.62118 +8192,0.1237,6.57306 +16384,0.1512,6.85056 +32768,0.2808,5.32378 +65536,0.5723,9.13101 +131072,1.5044,9.65837 +262144,2.5849,19.7857 +524288,5.8442,24.8279 +1048576,11.5651,32.4731 +2097152,47.1037,49.9988 +4194304,98.4073,82.4422 +8388608,184.959,153.206 +16777216,358.256,293.053 +33554432,727.857,576.947 +67108864,1467.26,1144.56 +134217728,2864.18,2273.02 +16,0.0027,6.88947 +32,0.0029,6.74509 +64,0.0029,6.74202 +128,0.0105,6.66726 +256,0.0568,6.30682 +512,0.0058,5.50605 +1024,0.0224,4.90701 +2048,0.0227,5.1497 +4096,0.0799,6.67443 +8192,0.1496,6.90688 +16384,0.1983,6.59456 +32768,0.305,7.91654 +65536,0.5687,8.91187 +131072,1.271,9.61024 +262144,2.4551,21.6248 +524288,5.1299,24.5453 +1048576,11.5062,33.1868 +2097152,48.0402,50.6563 +4194304,90.3235,83.2317 +8388608,184.874,151.876 +16777216,359.436,292.489 +33554432,717.115,580.022 +67108864,1429.22,1138.5 +134217728,2858.64,2255.35 +16,0.0027,6.92122 +32,0.0205,9.71571 +64,0.0078,5.57773 +128,0.0062,8.12749 +256,0.0252,7.9319 +512,0.0091,7.20486 +1024,0.0286,6.81574 +2048,0.0236,7.13114 +4096,0.0483,7.8633 +8192,0.1135,7.36051 +16384,0.2029,7.50899 +32768,0.2804,7.0359 +65536,0.9921,8.38246 +131072,1.2554,9.57542 +262144,2.4996,18.3194 +524288,5.5279,23.9401 +1048576,10.3012,34.6419 +2097152,45.7887,48.9636 +4194304,91.9197,82.7802 +8388608,185.252,153.482 +16777216,367.349,294.307 +33554432,723.863,571.087 +67108864,1430.71,1141.4 +134217728,2875.4,2285.53 +16,0.0027,6.79936 +32,0.0043,8.90163 +64,0.0051,7.05434 +128,0.0238,5.15174 +256,0.0201,8.18074 +512,0.0091,7.70867 +1024,0.0215,7.1895 +2048,0.0237,7.13216 +4096,0.044,7.4711 +8192,0.1031,7.70662 +16384,0.2492,7.13933 +32768,0.2799,5.58694 +65536,0.5849,7.73222 +131072,1.301,10.112 +262144,2.7737,19.9516 +524288,5.5261,24.3794 +1048576,10.5962,31.6416 +2097152,47.603,50.0644 +4194304,92.1483,83.1908 +8388608,184.543,150.423 +16777216,361.974,294.485 +33554432,728.247,567.91 +67108864,1433.82,1141.74 +134217728,2871.18,2259.21 +16,0.0043,4.70835 +32,0.0206,4.2711 +64,0.0206,6.28019 +128,0.0063,5.49171 +256,0.0308,5.32992 +512,0.0138,5.34426 +1024,0.0414,6.54746 +2048,0.0222,6.44915 +4096,0.0448,8.05171 +8192,0.0769,5.05037 +16384,0.179,6.80243 +32768,0.3232,7.68102 +65536,0.5624,6.71334 +131072,1.2853,7.90733 +262144,2.5167,17.2268 +524288,5.2197,23.3574 +1048576,11.4488,31.0804 +2097152,44.8867,46.89 +4194304,95.5519,82.561 +8388608,182.93,151.356 +16777216,359.07,292.959 +33554432,719.648,576.593 +67108864,1427.25,1131.95 +134217728,2852.85,2255.25 +16,0.0027,6.49622 +32,0.0044,6.6007 +64,0.0047,5.24186 +128,0.0231,7.02464 +256,0.0249,6.42253 +512,0.0092,6.55053 +1024,0.009,7.3943 +2048,0.0498,6.52493 +4096,0.0447,7.4199 +8192,0.078,8.95181 +16384,0.184,5.49786 +32768,0.4797,8.12851 +65536,0.6193,8.30771 +131072,1.7358,9.43002 +262144,2.4491,17.9333 +524288,5.1549,23.7281 +1048576,13.9813,31.1296 +2097152,45.4197,50.175 +4194304,90.4189,83.9352 +8388608,182.515,152.039 +16777216,360.341,293.201 +33554432,705.592,575.007 +67108864,1443.76,1140.17 +134217728,2867.01,2254.17 +16,0.0028,5.96275 +32,0.0044,5.50707 +64,0.0052,5.42515 +128,0.0066,4.90906 +256,0.0239,4.91213 +512,0.0093,4.86707 +1024,0.0097,4.61107 +2048,0.0339,4.6807 +4096,0.114,6.87616 +8192,0.0769,7.27757 +16384,0.2372,7.71482 +32768,0.2806,6.88333 +65536,0.5948,9.09414 +131072,1.4979,9.41875 +262144,2.455,18.1023 +524288,5.2243,23.5121 +1048576,11.3354,31.2637 +2097152,44.3262,49.7439 +4194304,95.4475,84.4831 +8388608,183.444,154.951 +16777216,368.975,294.409 +33554432,721.379,573.095 +67108864,1431.69,1142.43 +134217728,2852.25,2271.38 +16,0.0027,4.88755 +32,0.0045,4.35507 +64,0.0049,8.41728 +128,0.0101,6.84339 +256,0.0183,4.74214 +512,0.0139,4.34995 +1024,0.0346,5.0391 +2048,0.0339,5.15482 +4096,0.045,6.57715 +8192,0.1099,4.53939 +16384,0.2044,7.41069 +32768,0.3132,7.27654 +65536,0.5567,8.39578 +131072,1.2368,6.784 +262144,2.5741,17.7838 +524288,6.0054,21.7487 +1048576,10.581,32.5571 +2097152,46.8896,49.5421 +4194304,96.2426,83.5471 +8388608,180.801,153.997 +16777216,361.217,293.874 +33554432,718.152,573.619 +67108864,1429,1141.98 +134217728,2868.83,2256.34 +16,0.0027,5.66067 +32,0.0069,7.85203 +64,0.0073,6.72358 +128,0.0061,6.70003 +256,0.045,7.60525 +512,0.0144,6.74406 +1024,0.0098,6.72563 +2048,0.0237,6.76762 +4096,0.0461,6.87206 +8192,0.0735,7.15571 +16384,0.2772,6.3703 +32768,0.2804,7.67386 +65536,0.8582,8.14592 +131072,2.6692,9.47405 +262144,2.753,17.6425 +524288,5.1354,24.1367 +1048576,10.6987,32.0891 +2097152,44.6843,48.5222 +4194304,92.3889,83.5594 +8388608,180.723,151.481 +16777216,366.359,292.985 +33554432,725.093,577.509 +67108864,1432.6,1147.37 +134217728,2861.61,2243 +16,0.0026,4.53222 +32,0.0233,8.04762 +64,0.0075,6.73485 +128,0.0067,5.19475 +256,0.0179,6.44608 +512,0.0143,5.61971 +1024,0.0232,7.82541 +2048,0.0231,5.38214 +4096,0.1056,7.87046 +8192,0.0914,7.97901 +16384,0.2395,6.88742 +32768,0.3111,7.48237 +65536,0.5569,7.93088 +131072,1.2238,9.86317 +262144,2.4635,19.5502 +524288,5.2346,25.3092 +1048576,10.8408,32.638 +2097152,47.2428,47.445 +4194304,97.7078,84.4124 +8388608,183.978,150.271 +16777216,362.979,293.296 +33554432,719.964,571.779 +67108864,1434.59,1156.54 +134217728,2863.71,2258.41 +16,0.0027,5.04627 +32,0.0044,4.70323 +64,0.0046,4.72678 +128,0.0039,5.20909 +256,0.0169,5.26541 +512,0.0147,6.93043 +1024,0.0094,6.57101 +2048,0.0237,5.82656 +4096,0.0943,5.76307 +8192,0.1034,6.36723 +16384,0.2044,6.55462 +32768,0.3307,7.58989 +65536,0.5728,7.44243 +131072,1.2528,7.80902 +262144,2.5211,17.2227 +524288,5.4031,24.9723 +1048576,11.049,31.3078 +2097152,43.424,46.4681 +4194304,91.9904,83.2932 +8388608,183.445,149.555 +16777216,372.864,296.081 +33554432,722.539,575.122 +67108864,1436.1,1149.26 +134217728,2843.27,2264.15 +16,0.0029,6.98573 +32,0.0075,6.72563 +64,0.0076,6.63142 +128,0.0086,6.87002 +256,0.0158,6.56486 +512,0.0138,6.62426 +1024,0.0405,7.52435 +2048,0.0236,7.7312 +4096,0.1343,8.25139 +8192,0.1124,5.7088 +16384,0.1703,5.37805 +32768,0.2832,7.29702 +65536,0.5599,7.61037 +131072,1.2341,9.97274 +262144,3.3217,19.158 +524288,5.735,22.8977 +1048576,10.8169,30.89 +2097152,44.7256,49.8442 +4194304,93.5235,81.6323 +8388608,181.917,152.761 +16777216,354.696,292.927 +33554432,726.341,574.107 +67108864,1446.67,1132.99 +134217728,2875.07,2256.53 +16,0.0027,5.14355 +32,0.007,6.32934 +64,0.0077,4.81075 +128,0.0062,5.03706 +256,0.0269,4.83635 +512,0.0148,5.4272 +1024,0.0093,5.76922 +2048,0.026,5.82656 +4096,0.0799,5.68627 +8192,0.141,6.9888 +16384,0.4421,7.77318 +32768,0.281,7.5223 +65536,0.9565,7.67181 +131072,1.2782,10.025 +262144,3.1201,19.8277 +524288,5.6528,24.6303 +1048576,11.5133,32.1894 +2097152,43.9635,50.3572 +4194304,91.596,81.791 +8388608,195.107,150.198 +16777216,353.533,294.535 +33554432,718.949,577.409 +67108864,1434.76,1134.77 +134217728,2860.62,2262.33 +16,0.0164,7.86534 +32,0.0074,5.12922 +64,0.0031,7.78138 +128,0.0102,7.51206 +256,0.0195,5.75898 +512,0.014,6.8137 +1024,0.009,4.32742 +2048,0.0634,4.35098 +4096,0.0446,6.91405 +8192,0.0754,8.05683 +16384,0.3429,7.1209 +32768,0.3268,9.51194 +65536,0.5814,8.66202 +131072,1.2719,9.16685 +262144,2.4777,20.2097 +524288,5.2265,25.4136 +1048576,10.8015,31.9037 +2097152,51.0929,50.1166 +4194304,90.1433,84.4565 +8388608,179.798,151.038 +16777216,354.966,290.267 +33554432,731.741,576.008 +67108864,1439.49,1142.48 +134217728,2862.82,2252.07 +16,0.0161,7.44755 +32,0.0049,8.64154 +64,0.0051,7.32058 +128,0.0096,7.61139 +256,0.0241,8.3671 +512,0.0332,6.98778 +1024,0.0094,8.27392 +2048,0.0238,6.51674 +4096,0.0444,6.53107 +8192,0.0889,6.81779 +16384,0.1513,6.8393 +32768,0.5031,8.15206 +65536,0.5997,8.58726 +131072,1.3857,8.18586 +262144,2.5087,17.9466 +524288,5.1772,24.6313 +1048576,11.3012,31.7051 +2097152,44.8792,48.0051 +4194304,91.7704,83.1324 +8388608,185.394,152.605 +16777216,387.576,296.395 +33554432,766.873,591.469 +67108864,1438.91,1137.46 +134217728,2967.33,2243.96 +16,0.0045,7.1168 +32,0.0202,6.94374 +64,0.0046,7.05434 +128,0.0199,7.44346 +256,0.0176,5.89107 +512,0.0094,5.4569 +1024,0.0346,9.07776 +2048,0.0232,5.30842 +4096,0.0444,7.64826 +8192,0.1235,7.44653 +16384,0.1502,7.16186 +32768,0.4926,8.19098 +65536,0.5733,8.13875 +131072,1.6521,9.56109 +262144,2.5329,20.0929 +524288,5.377,25.4167 +1048576,11.9464,32.8581 +2097152,45.5378,49.2544 +4194304,96.7573,78.5101 +8388608,185.439,151.92 +16777216,364.825,295.145 +33554432,722.599,576.879 +67108864,1433.75,1139.76 +134217728,2867.37,2249.78 +16,0.0044,6.28531 +32,0.0044,5.42003 +64,0.0074,5.1712 +128,0.0065,4.83226 +256,0.0318,4.9961 +512,0.0096,4.84762 +1024,0.0337,4.78822 +2048,0.0343,7.13933 +4096,0.0774,6.79936 +8192,0.1433,6.7328 +16384,0.2607,6.79322 +32768,0.3448,6.91098 +65536,0.5818,7.424 +131072,1.2753,8.62925 +262144,2.5936,18.4228 +524288,5.0498,23.9985 +1048576,10.4051,31.8321 +2097152,45.1465,49.195 +4194304,92.7598,82.6081 +8388608,185.438,151.64 +16777216,361.887,288.948 +33554432,737.066,576.142 +67108864,1467.2,1138.07 +134217728,2871.21,2265.43 +16,0.0027,5.11693 +32,0.0049,4.4329 +64,0.0044,6.71027 +128,0.0073,7.02054 +256,0.0197,6.62118 +512,0.0143,4.41242 +1024,0.0161,6.22285 +2048,0.0464,6.70618 +4096,0.0446,6.66829 +8192,0.0793,7.27859 +16384,0.2374,6.67955 +32768,0.5991,9.7495 +65536,0.5706,6.23514 +131072,1.3998,8.91597 +262144,2.7135,16.6287 +524288,5.2324,22.5208 +1048576,10.5788,30.7251 +2097152,45.1157,49.3507 +4194304,90.1408,81.2821 +8388608,181.795,151.604 +16777216,364.522,292.81 +33554432,721.957,570.394 +67108864,1431.15,1126.76 +134217728,2874.16,2262.82 +16,0.0027,7.66566 +32,0.0043,6.88538 +64,0.0034,6.74918 +128,0.0042,7.56019 +256,0.0245,6.69184 +512,0.0109,6.61299 +1024,0.0526,5.24595 +2048,0.0244,7.76294 +4096,0.0631,6.74202 +8192,0.1214,6.59149 +16384,0.2377,6.8137 +32768,0.2805,6.23616 +65536,0.5833,9.43821 +131072,1.2821,9.48941 +262144,3.4827,19.3976 +524288,5.1161,24.6426 +1048576,11.4642,30.8398 +2097152,49.4287,48.4076 +4194304,93.1013,83.3249 +8388608,177.743,154.09 +16777216,364.265,295.072 +33554432,730.251,574.427 +67108864,1428.23,1135.41 +134217728,2862.61,2264.81 +16,0.0027,4.87424 +32,0.0047,5.81632 +64,0.005,4.90598 +128,0.0037,4.8087 +256,0.0134,4.55168 +512,0.0136,5.74771 +1024,0.0222,6.6816 +2048,0.0238,6.94989 +4096,0.0611,6.9591 +8192,0.0911,7.54586 +16384,0.2823,7.44755 +32768,0.5742,6.94272 +65536,0.9484,7.73222 +131072,1.2684,9.67168 +262144,2.6531,19.2532 +524288,5.9231,24.9252 +1048576,10.9744,30.5295 +2097152,43.38,49.7674 +4194304,90.3833,82.9102 +8388608,186.821,151.755 +16777216,366.362,298.628 diff --git a/Project2-Stream-Compaction/data/Sort_data/data_pow2/thrust.csv b/Project2-Stream-Compaction/data/Sort_data/data_pow2/thrust.csv deleted file mode 100644 index 41ad003..0000000 --- a/Project2-Stream-Compaction/data/Sort_data/data_pow2/thrust.csv +++ /dev/null @@ -1,933 +0,0 @@ -16,0.0075 -32,0.0029 -64,0.003 -128,0.0039 -256,0.0146 -512,0.0057 -1024,0.0099 -2048,0.0245 -4096,0.0604 -8192,0.1095 -16384,0.1496 -32768,0.3017 -65536,0.6076 -131072,1.8703 -262144,2.6927 -524288,7.218 -1048576,13.1339 -2097152,53.8283 -4194304,98.1962 -8388608,192.116 -16777216,384.223 -33554432,753.74 -67108864,1455.86 -134217728,2905.27 -16,0.0028 -32,0.0069 -64,0.0075 -128,0.0225 -256,0.0126 -512,0.0102 -1024,0.0217 -2048,0.0488 -4096,0.0426 -8192,0.1388 -16384,0.1871 -32768,0.3565 -65536,0.5737 -131072,1.2749 -262144,2.5403 -524288,7.6741 -1048576,10.8598 -2097152,48.0994 -4194304,100.074 -8388608,182.265 -16777216,363.53 -33554432,726.753 -67108864,1452.12 -134217728,2987.53 -16,0.0047 -32,0.0072 -64,0.0031 -128,0.0061 -256,0.0425 -512,0.0146 -1024,0.0094 -2048,0.0239 -4096,0.0571 -8192,0.0768 -16384,0.1751 -32768,0.465 -65536,0.5712 -131072,1.3224 -262144,3.2329 -524288,5.2811 -1048576,10.9641 -2097152,56.7159 -4194304,97.6484 -8388608,203.317 -16777216,393.484 -33554432,728.65 -67108864,1456.58 -134217728,2889.64 -16,0.0191 -32,0.0068 -64,0.0046 -128,0.0099 -256,0.0135 -512,0.0145 -1024,0.0227 -2048,0.0236 -4096,0.067 -8192,0.1035 -16384,0.1857 -32768,0.3048 -65536,0.5833 -131072,1.4805 -262144,2.5592 -524288,7.0234 -1048576,11.4328 -2097152,45.9475 -4194304,94.4369 -8388608,187.09 -16777216,366.048 -33554432,736.721 -67108864,1461.1 -134217728,2959.13 -16,0.0027 -32,0.0068 -64,0.0075 -128,0.0069 -256,0.0141 -512,0.014 -1024,0.0232 -2048,0.093 -4096,0.0456 -8192,0.104 -16384,0.1795 -32768,0.2923 -65536,0.5658 -131072,1.5317 -262144,2.5963 -524288,5.2796 -1048576,11.7991 -2097152,46.2733 -4194304,99.3084 -8388608,190.078 -16777216,371.639 -33554432,754.323 -67108864,1456.32 -134217728,2909.28 -16,0.0027 -32,0.0067 -64,0.0231 -128,0.0093 -256,0.0251 -512,0.0057 -1024,0.0221 -2048,0.0346 -4096,0.0887 -8192,0.1233 -16384,0.3455 -32768,0.6507 -65536,0.5827 -131072,1.5862 -262144,2.4598 -524288,5.2245 -1048576,11.0312 -2097152,45.7408 -4194304,94.2614 -8388608,191.594 -16777216,364.206 -33554432,737.077 -67108864,1449.16 -134217728,2877.23 -16,0.0027 -32,0.0045 -64,0.0058 -128,0.006 -256,0.018 -512,0.0223 -1024,0.014 -2048,0.0234 -4096,0.1043 -8192,0.2334 -16384,0.2337 -32768,0.3672 -65536,0.6096 -131072,1.3075 -262144,2.5745 -524288,5.7599 -1048576,10.7059 -2097152,50.5869 -4194304,96.3163 -8388608,182.478 -16777216,362.534 -33554432,748.07 -67108864,1451.44 -134217728,2888.6 -16,0.0027 -32,0.0043 -64,0.0074 -128,0.0096 -256,0.0255 -512,0.014 -1024,0.0098 -2048,0.0232 -4096,0.0434 -8192,0.088 -16384,0.2119 -32768,0.2912 -65536,0.6134 -131072,1.2726 -262144,3.5596 -524288,5.1535 -1048576,10.5479 -2097152,46.9003 -4194304,93.5464 -8388608,187.529 -16777216,367.821 -33554432,726.455 -67108864,1451.18 -134217728,2922.44 -16,0.0027 -32,0.0047 -64,0.0085 -128,0.006 -256,0.0128 -512,0.0054 -1024,0.0089 -2048,0.0236 -4096,0.1393 -8192,0.0903 -16384,0.2431 -32768,0.3696 -65536,0.5595 -131072,1.356 -262144,2.5222 -524288,5.9228 -1048576,10.3468 -2097152,47.4234 -4194304,91.6539 -8388608,185.849 -16777216,363.203 -33554432,726.266 -67108864,1465.59 -134217728,2948.37 -16,0.0027 -32,0.0047 -64,0.0031 -128,0.0065 -256,0.0191 -512,0.0129 -1024,0.0417 -2048,0.0513 -4096,0.0446 -8192,0.0794 -16384,0.1688 -32768,0.3564 -65536,0.5883 -131072,1.2689 -262144,2.4592 -524288,5.4951 -1048576,10.8357 -2097152,45.2517 -4194304,91.5442 -8388608,181.912 -16777216,374.792 -33554432,725.927 -67108864,1445.34 -134217728,2901.67 -16,0.0027 -32,0.0045 -64,0.0208 -128,0.0193 -256,0.0251 -512,0.0103 -1024,0.0089 -2048,0.0399 -4096,0.0448 -8192,0.0999 -16384,0.1861 -32768,0.2956 -65536,0.5958 -131072,2.0451 -262144,2.5185 -524288,5.2442 -1048576,11.4062 -2097152,46.9382 -4194304,96.8658 -8388608,185.727 -16777216,366.025 -33554432,737.99 -67108864,1433.94 -134217728,2903.01 -16,0.0025 -32,0.0044 -64,0.0034 -128,0.0195 -256,0.0181 -512,0.0058 -1024,0.0286 -2048,0.0238 -4096,0.1366 -8192,0.0751 -16384,0.2883 -32768,0.2904 -65536,0.7458 -131072,1.3796 -262144,3.2819 -524288,5.227 -1048576,10.571 -2097152,46.2437 -4194304,89.8445 -8388608,185.717 -16777216,363.216 -33554432,734.841 -67108864,1447.57 -134217728,2911.64 -16,0.0027 -32,0.0047 -64,0.0085 -128,0.0039 -256,0.0171 -512,0.0144 -1024,0.0092 -2048,0.0237 -4096,0.0455 -8192,0.0727 -16384,0.183 -32768,0.2838 -65536,0.6274 -131072,1.2615 -262144,2.9446 -524288,5.1935 -1048576,10.4826 -2097152,46.2779 -4194304,92.1948 -8388608,189.222 -16777216,366.019 -33554432,730.158 -67108864,1456.5 -134217728,2898.22 -16,0.0026 -32,0.0069 -64,0.0075 -128,0.0095 -256,0.0239 -512,0.0103 -1024,0.0098 -2048,0.0236 -4096,0.0445 -8192,0.1454 -16384,0.2922 -32768,1.287 -65536,0.6231 -131072,1.2927 -262144,2.8384 -524288,5.1454 -1048576,10.852 -2097152,44.5099 -4194304,99.7367 -8388608,191.158 -16777216,398.534 -33554432,782.012 -67108864,1457.42 -134217728,2900.47 -16,0.0027 -32,0.0048 -64,0.0049 -128,0.0225 -256,0.0371 -512,0.0141 -1024,0.022 -2048,0.0229 -4096,0.0449 -8192,0.1331 -16384,0.1511 -32768,0.2811 -65536,0.5887 -131072,1.2516 -262144,2.6829 -524288,5.6604 -1048576,10.8225 -2097152,43.82 -4194304,92.8502 -8388608,185.847 -16777216,354.827 -33554432,722.205 -67108864,1448.38 -134217728,2899.35 -16,0.0027 -32,0.0027 -64,0.0074 -128,0.0061 -256,0.014 -512,0.0144 -1024,0.0092 -2048,0.0495 -4096,0.0548 -8192,0.0745 -16384,0.2373 -32768,0.6106 -65536,0.5757 -131072,1.3012 -262144,2.4588 -524288,5.4724 -1048576,11.9116 -2097152,47.2582 -4194304,90.176 -8388608,186.772 -16777216,355.382 -33554432,721.926 -67108864,1437.05 -134217728,2865.67 -16,0.003 -32,0.0294 -64,0.0046 -128,0.02 -256,0.0306 -512,0.009 -1024,0.0093 -2048,0.0239 -4096,0.0571 -8192,0.0872 -16384,0.2223 -32768,0.3795 -65536,0.598 -131072,1.2917 -262144,3.3023 -524288,5.1649 -1048576,10.8897 -2097152,49.4216 -4194304,96.0327 -8388608,185.029 -16777216,361.057 -33554432,721.187 -67108864,1426.31 -134217728,2873.55 -16,0.0044 -32,0.0045 -64,0.005 -128,0.0063 -256,0.0193 -512,0.0147 -1024,0.0095 -2048,0.1077 -4096,0.1432 -8192,0.0905 -16384,0.1661 -32768,0.3031 -65536,0.5789 -131072,1.2617 -262144,3.2751 -524288,5.6768 -1048576,11.7154 -2097152,45.2314 -4194304,93.2075 -8388608,184.573 -16777216,361.703 -33554432,721.078 -67108864,1438.16 -134217728,2926.33 -16,0.0046 -32,0.0073 -64,0.008 -128,0.0089 -256,0.0412 -512,0.0272 -1024,0.0156 -2048,0.0496 -4096,0.0443 -8192,0.0791 -16384,0.2927 -32768,0.2809 -65536,0.7302 -131072,1.4279 -262144,3.4255 -524288,7.4474 -1048576,12.1369 -2097152,47.3726 -4194304,109.629 -8388608,182.913 -16777216,367.447 -33554432,733.049 -67108864,1446.95 -134217728,2909.96 -16,0.0026 -32,0.0028 -64,0.0054 -128,0.0067 -256,0.0251 -512,0.0063 -1024,0.0282 -2048,0.0237 -4096,0.0443 -8192,0.1237 -16384,0.1512 -32768,0.2808 -65536,0.5723 -131072,1.5044 -262144,2.5849 -524288,5.8442 -1048576,11.5651 -2097152,47.1037 -4194304,98.4073 -8388608,184.959 -16777216,358.256 -33554432,727.857 -67108864,1467.26 -134217728,2864.18 -16,0.0027 -32,0.0029 -64,0.0029 -128,0.0105 -256,0.0568 -512,0.0058 -1024,0.0224 -2048,0.0227 -4096,0.0799 -8192,0.1496 -16384,0.1983 -32768,0.305 -65536,0.5687 -131072,1.271 -262144,2.4551 -524288,5.1299 -1048576,11.5062 -2097152,48.0402 -4194304,90.3235 -8388608,184.874 -16777216,359.436 -33554432,717.115 -67108864,1429.22 -134217728,2858.64 -16,0.0027 -32,0.0205 -64,0.0078 -128,0.0062 -256,0.0252 -512,0.0091 -1024,0.0286 -2048,0.0236 -4096,0.0483 -8192,0.1135 -16384,0.2029 -32768,0.2804 -65536,0.9921 -131072,1.2554 -262144,2.4996 -524288,5.5279 -1048576,10.3012 -2097152,45.7887 -4194304,91.9197 -8388608,185.252 -16777216,367.349 -33554432,723.863 -67108864,1430.71 -134217728,2875.4 -16,0.0027 -32,0.0043 -64,0.0051 -128,0.0238 -256,0.0201 -512,0.0091 -1024,0.0215 -2048,0.0237 -4096,0.044 -8192,0.1031 -16384,0.2492 -32768,0.2799 -65536,0.5849 -131072,1.301 -262144,2.7737 -524288,5.5261 -1048576,10.5962 -2097152,47.603 -4194304,92.1483 -8388608,184.543 -16777216,361.974 -33554432,728.247 -67108864,1433.82 -134217728,2871.18 -16,0.0043 -32,0.0206 -64,0.0206 -128,0.0063 -256,0.0308 -512,0.0138 -1024,0.0414 -2048,0.0222 -4096,0.0448 -8192,0.0769 -16384,0.179 -32768,0.3232 -65536,0.5624 -131072,1.2853 -262144,2.5167 -524288,5.2197 -1048576,11.4488 -2097152,44.8867 -4194304,95.5519 -8388608,182.93 -16777216,359.07 -33554432,719.648 -67108864,1427.25 -134217728,2852.85 -16,0.0027 -32,0.0044 -64,0.0047 -128,0.0231 -256,0.0249 -512,0.0092 -1024,0.009 -2048,0.0498 -4096,0.0447 -8192,0.078 -16384,0.184 -32768,0.4797 -65536,0.6193 -131072,1.7358 -262144,2.4491 -524288,5.1549 -1048576,13.9813 -2097152,45.4197 -4194304,90.4189 -8388608,182.515 -16777216,360.341 -33554432,705.592 -67108864,1443.76 -134217728,2867.01 -16,0.0028 -32,0.0044 -64,0.0052 -128,0.0066 -256,0.0239 -512,0.0093 -1024,0.0097 -2048,0.0339 -4096,0.114 -8192,0.0769 -16384,0.2372 -32768,0.2806 -65536,0.5948 -131072,1.4979 -262144,2.455 -524288,5.2243 -1048576,11.3354 -2097152,44.3262 -4194304,95.4475 -8388608,183.444 -16777216,368.975 -33554432,721.379 -67108864,1431.69 -134217728,2852.25 -16,0.0027 -32,0.0045 -64,0.0049 -128,0.0101 -256,0.0183 -512,0.0139 -1024,0.0346 -2048,0.0339 -4096,0.045 -8192,0.1099 -16384,0.2044 -32768,0.3132 -65536,0.5567 -131072,1.2368 -262144,2.5741 -524288,6.0054 -1048576,10.581 -2097152,46.8896 -4194304,96.2426 -8388608,180.801 -16777216,361.217 -33554432,718.152 -67108864,1429 -134217728,2868.83 -16,0.0027 -32,0.0069 -64,0.0073 -128,0.0061 -256,0.045 -512,0.0144 -1024,0.0098 -2048,0.0237 -4096,0.0461 -8192,0.0735 -16384,0.2772 -32768,0.2804 -65536,0.8582 -131072,2.6692 -262144,2.753 -524288,5.1354 -1048576,10.6987 -2097152,44.6843 -4194304,92.3889 -8388608,180.723 -16777216,366.359 -33554432,725.093 -67108864,1432.6 -134217728,2861.61 -16,0.0026 -32,0.0233 -64,0.0075 -128,0.0067 -256,0.0179 -512,0.0143 -1024,0.0232 -2048,0.0231 -4096,0.1056 -8192,0.0914 -16384,0.2395 -32768,0.3111 -65536,0.5569 -131072,1.2238 -262144,2.4635 -524288,5.2346 -1048576,10.8408 -2097152,47.2428 -4194304,97.7078 -8388608,183.978 -16777216,362.979 -33554432,719.964 -67108864,1434.59 -134217728,2863.71 -16,0.0027 -32,0.0044 -64,0.0046 -128,0.0039 -256,0.0169 -512,0.0147 -1024,0.0094 -2048,0.0237 -4096,0.0943 -8192,0.1034 -16384,0.2044 -32768,0.3307 -65536,0.5728 -131072,1.2528 -262144,2.5211 -524288,5.4031 -1048576,11.049 -2097152,43.424 -4194304,91.9904 -8388608,183.445 -16777216,372.864 -33554432,722.539 -67108864,1436.1 -134217728,2843.27 -16,0.0029 -32,0.0075 -64,0.0076 -128,0.0086 -256,0.0158 -512,0.0138 -1024,0.0405 -2048,0.0236 -4096,0.1343 -8192,0.1124 -16384,0.1703 -32768,0.2832 -65536,0.5599 -131072,1.2341 -262144,3.3217 -524288,5.735 -1048576,10.8169 -2097152,44.7256 -4194304,93.5235 -8388608,181.917 -16777216,354.696 -33554432,726.341 -67108864,1446.67 -134217728,2875.07 -16,0.0027 -32,0.007 -64,0.0077 -128,0.0062 -256,0.0269 -512,0.0148 -1024,0.0093 -2048,0.026 -4096,0.0799 -8192,0.141 -16384,0.4421 -32768,0.281 -65536,0.9565 -131072,1.2782 -262144,3.1201 -524288,5.6528 -1048576,11.5133 -2097152,43.9635 -4194304,91.596 -8388608,195.107 -16777216,353.533 -33554432,718.949 -67108864,1434.76 -134217728,2860.62 -16,0.0164 -32,0.0074 -64,0.0031 -128,0.0102 -256,0.0195 -512,0.014 -1024,0.009 -2048,0.0634 -4096,0.0446 -8192,0.0754 -16384,0.3429 -32768,0.3268 -65536,0.5814 -131072,1.2719 -262144,2.4777 -524288,5.2265 -1048576,10.8015 -2097152,51.0929 -4194304,90.1433 -8388608,179.798 -16777216,354.966 -33554432,731.741 -67108864,1439.49 -134217728,2862.82 -16,0.0161 -32,0.0049 -64,0.0051 -128,0.0096 -256,0.0241 -512,0.0332 -1024,0.0094 -2048,0.0238 -4096,0.0444 -8192,0.0889 -16384,0.1513 -32768,0.5031 -65536,0.5997 -131072,1.3857 -262144,2.5087 -524288,5.1772 -1048576,11.3012 -2097152,44.8792 -4194304,91.7704 -8388608,185.394 -16777216,387.576 -33554432,766.873 -67108864,1438.91 -134217728,2967.33 -16,0.0045 -32,0.0202 -64,0.0046 -128,0.0199 -256,0.0176 -512,0.0094 -1024,0.0346 -2048,0.0232 -4096,0.0444 -8192,0.1235 -16384,0.1502 -32768,0.4926 -65536,0.5733 -131072,1.6521 -262144,2.5329 -524288,5.377 -1048576,11.9464 -2097152,45.5378 -4194304,96.7573 -8388608,185.439 -16777216,364.825 -33554432,722.599 -67108864,1433.75 -134217728,2867.37 -16,0.0044 -32,0.0044 -64,0.0074 -128,0.0065 -256,0.0318 -512,0.0096 -1024,0.0337 -2048,0.0343 -4096,0.0774 -8192,0.1433 -16384,0.2607 -32768,0.3448 -65536,0.5818 -131072,1.2753 -262144,2.5936 -524288,5.0498 -1048576,10.4051 -2097152,45.1465 -4194304,92.7598 -8388608,185.438 -16777216,361.887 -33554432,737.066 -67108864,1467.2 -134217728,2871.21 -16,0.0027 -32,0.0049 -64,0.0044 -128,0.0073 -256,0.0197 -512,0.0143 -1024,0.0161 -2048,0.0464 -4096,0.0446 -8192,0.0793 -16384,0.2374 -32768,0.5991 -65536,0.5706 -131072,1.3998 -262144,2.7135 -524288,5.2324 -1048576,10.5788 -2097152,45.1157 -4194304,90.1408 -8388608,181.795 -16777216,364.522 -33554432,721.957 -67108864,1431.15 -134217728,2874.16 -16,0.0027 -32,0.0043 -64,0.0034 -128,0.0042 -256,0.0245 -512,0.0109 -1024,0.0526 -2048,0.0244 -4096,0.0631 -8192,0.1214 -16384,0.2377 -32768,0.2805 -65536,0.5833 -131072,1.2821 -262144,3.4827 -524288,5.1161 -1048576,11.4642 -2097152,49.4287 -4194304,93.1013 -8388608,177.743 -16777216,364.265 -33554432,730.251 -67108864,1428.23 -134217728,2862.61 -16,0.0027 -32,0.0047 -64,0.005 -128,0.0037 -256,0.0134 -512,0.0136 -1024,0.0222 -2048,0.0238 -4096,0.0611 -8192,0.0911 -16384,0.2823 -32768,0.5742 -65536,0.9484 -131072,1.2684 -262144,2.6531 -524288,5.9231 -1048576,10.9744 -2097152,43.38 -4194304,90.3833 -8388608,186.821 -16777216,366.362 diff --git a/Project2-Stream-Compaction/data/Stream_compaction_data/data_nonpow2/data.csv b/Project2-Stream-Compaction/data/Stream_compaction_data/data_nonpow2/data.csv new file mode 100644 index 0000000..0f69b92 --- /dev/null +++ b/Project2-Stream-Compaction/data/Stream_compaction_data/data_nonpow2/data.csv @@ -0,0 +1,925 @@ +Array Size,Cpu without scan (s),Cpu with scan (s),Efficient SC (s),Shared Memory SC (s) +13,0.0002,0.0002,0.720896,0.982016 +29,0.0002,0.0003,0.82224,0.79872 +61,0.0003,0.0005,0.697344,0.95024 +125,0.0009,0.0007,0.828384,0.985088 +253,0.0015,0.001,0.658432,0.710656 +509,0.0031,0.0018,0.692256,0.703456 +1021,0.0059,0.0046,0.854016,0.80384 +2045,0.0054,0.0065,0.780288,1.07626 +4093,0.0112,0.015,0.9728,1.17658 +8189,0.0211,0.0279,1.05062,0.957472 +16381,0.0447,0.0468,1.13661,0.969728 +32765,0.0863,0.1019,1.29331,1.13869 +65533,0.2166,0.1973,2.33981,2.29171 +131069,0.3527,0.3962,2.78835,3.59322 +262141,0.7975,0.8009,5.54595,5.47021 +524285,1.4489,1.7087,9.43104,10.4837 +1048573,3.7309,4.8495,16.6769,16.6062 +2097149,6.277,6.2643,30.2561,31.7583 +4194301,10.7375,13.9408,58.4632,57.0798 +8388605,22.7739,27.6602,117.072,112.317 +16777213,46.2932,49.1884,239.304,222.278 +33554429,89.3897,94.6494,473.875,442.609 +67108861,179.822,182.458,939.836,891.446 +134217725,348.832,356.807,1874.61,1777.51 +268435453,707.613,714.138,3751.79,3550.8 +13,0.0002,0.0002,0.915456,0.827392 +29,0.0003,0.0002,0.7168,1.09875 +61,0.0004,0.0004,0.75776,0.950272 +125,0.0008,0.0006,0.846848,0.891904 +253,0.0007,0.0009,0.95744,1.01478 +509,0.0027,0.0017,1.00762,1.024 +1021,0.0028,0.0029,0.909312,0.922624 +2045,0.0057,0.0057,0.930816,1.03117 +4093,0.0108,0.0125,1.21139,0.95232 +8189,0.0205,0.0356,1.06496,1.01581 +16381,0.0423,0.067,1.08646,1.36704 +32765,0.0868,0.1108,1.49299,1.38342 +65533,0.2201,0.1971,1.82886,2.27021 +131069,0.3351,0.4159,3.37306,3.84307 +262141,0.69,0.8614,5.05754,6.37338 +524285,1.3477,1.8876,8.43571,9.08288 +1048573,2.7091,3.0164,16.8325,16.3062 +2097149,6.1722,6.2,30.1906,29.5936 +4194301,10.8771,11.3662,58.5605,55.934 +8388605,21.2667,22.4057,113.196,110.674 +16777213,45.0367,45.5992,232.41,219.608 +33554429,87.1675,91.2534,470,441.127 +67108861,177.383,178.474,939.366,887.805 +134217725,354.253,352.176,1865.74,1765.57 +268435453,705.847,702.175,3760.55,3558.83 +13,0.0001,0.0001,1.06291,1.02093 +29,0.0004,0.0003,0.82432,0.932864 +61,0.0006,0.0003,0.837632,0.868352 +125,0.0009,0.0007,1.34144,1.08749 +253,0.0015,0.001,0.871424,0.949248 +509,0.0026,0.0018,1.12742,1.33837 +1021,0.0051,0.0034,0.816128,0.866304 +2045,0.0093,0.0056,0.997376,0.9472 +4093,0.0372,0.0115,0.995328,1.12742 +8189,0.0234,0.0231,1.06701,0.961536 +16381,0.0417,0.0454,1.14995,1.23494 +32765,0.0843,0.1094,1.71622,1.44384 +65533,0.1684,0.2022,1.78483,3.52563 +131069,0.3399,0.4201,3.03206,3.92499 +262141,0.6471,0.9515,4.8425,5.89312 +524285,1.2947,1.6137,8.63846,9.06342 +1048573,2.9387,4.0552,17.2575,16.3871 +2097149,5.4765,6.2996,30.9228,29.7615 +4194301,10.9182,10.8663,59.0602,57.5212 +8388605,21.5157,22.8875,115.045,110.313 +16777213,44.1418,45.6427,231.4,221.084 +33554429,86.1577,93.1426,468.585,442.849 +67108861,179.014,181.223,942.884,885.734 +134217725,352.283,360.735,1886.1,1780.3 +268435453,710.144,713.965,3742.75,3537.85 +13,0.0002,0.0003,0.867328,0.79872 +29,0.0004,0.0003,0.712704,0.749568 +61,0.0003,0.0003,0.84992,0.932864 +125,0.0008,0.0007,0.949248,1.70086 +253,0.0008,0.0009,0.941056,1.06189 +509,0.0027,0.0016,0.857088,0.785408 +1021,0.0031,0.0033,0.900096,0.859136 +2045,0.0054,0.0061,1.31686,1.3312 +4093,0.0111,0.0118,0.958464,1.01376 +8189,0.0214,0.0229,1.0752,0.959488 +16381,0.0569,0.0472,1.15712,1.18682 +32765,0.0894,0.1108,1.53395,1.41005 +65533,0.1829,0.2412,1.82989,2.31117 +131069,0.5066,0.4403,2.94093,3.69664 +262141,0.6931,0.8795,5.00736,5.41798 +524285,1.8149,1.5786,9.20064,9.63277 +1048573,2.6406,2.8911,18.0081,15.8065 +2097149,5.2633,5.8979,29.7062,30.7958 +4194301,11.9074,12.0845,59.1328,57.1156 +8388605,21.4079,23.1553,115.594,111.188 +16777213,44.6963,45.6747,231.713,221.179 +33554429,86.2805,92.0319,467.62,441.297 +67108861,177.415,181.465,943.12,884.221 +134217725,354.488,359.487,1873.8,1781.25 +268435453,706.016,706.528,3733.15,3549.53 +13,0.0001,0.0001,0.843776,0.831488 +29,0.0004,0.0005,0.663552,0.780288 +61,0.0003,0.0003,0.68608,1.65581 +125,0.0005,0.0005,1.6087,1.21958 +253,0.0015,0.0008,0.978944,0.93184 +509,0.0018,0.0016,0.88576,0.990208 +1021,0.0038,0.0031,0.935936,0.980992 +2045,0.0053,0.0059,0.940032,0.815104 +4093,0.0333,0.0115,1.63635,1.09875 +8189,0.0217,0.0231,0.994304,1.01069 +16381,0.0434,0.0452,1.18067,0.987136 +32765,0.0846,0.1084,1.31686,1.28717 +65533,0.3817,0.174,2.06234,2.98598 +131069,0.3854,0.373,3.28704,3.48979 +262141,0.7878,0.8041,5.15174,6.62118 +524285,1.4048,1.5644,8.77363,8.95488 +1048573,3.0137,2.9487,16.0276,16.554 +2097149,5.3202,5.8818,29.95,29.993 +4194301,11.251,11.5539,58.241,57.1566 +8388605,22.5801,22.5499,113.812,110.073 +16777213,42.489,44.9387,236.707,221.038 +33554429,88.2472,89.5112,469.083,439.737 +67108861,177.742,177.564,931.93,886.819 +134217725,356.408,354.718,1894.07,1779.53 +268435453,710.087,709.742,3737.78,3537.69 +13,0.0002,0.0002,1.0025,1.09363 +29,0.0002,0.0002,0.88064,1.50938 +61,0.0006,0.0003,1.00762,0.90624 +125,0.0004,0.0006,0.841728,0.984064 +253,0.0018,0.001,0.734208,1.04243 +509,0.0026,0.0017,0.935936,1.05882 +1021,0.0049,0.0031,0.886784,0.876544 +2045,0.0056,0.0058,0.896,0.846848 +4093,0.0106,0.0112,0.98816,0.934912 +8189,0.0215,0.0245,1.03322,1.28922 +16381,0.074,0.0767,1.34144,1.20934 +32765,0.0829,0.1085,1.47763,1.35885 +65533,0.1718,0.2194,1.92614,2.56 +131069,0.3599,0.3906,2.84672,3.61677 +262141,0.644,0.9719,4.8128,5.72518 +524285,1.367,1.8126,9.63686,9.69318 +1048573,3.189,3.0282,15.999,15.4931 +2097149,5.6439,5.5853,30.6852,29.4646 +4194301,12.4116,13.109,57.7413,56.2156 +8388605,21.6358,23.8141,113.891,109.804 +16777213,42.6556,47.6581,232.454,222.023 +33554429,91.2014,90.076,472.402,440.998 +67108861,174.964,179.26,947.121,883.885 +134217725,351.065,358.236,1882.03,1775.82 +268435453,709.357,712.204,3759.39,3556.52 +13,0.0001,0.0002,0.804864,0.949248 +29,0.0002,0.0002,0.862208,0.894976 +61,0.0002,0.0003,1.05686,0.925696 +125,0.0008,0.0006,0.910336,0.915456 +253,0.0013,0.001,0.878592,1.38854 +509,0.0016,0.0016,1.00659,0.915456 +1021,0.0029,0.003,0.796672,1.38035 +2045,0.0095,0.0056,0.985088,0.806912 +4093,0.0105,0.0112,1.03424,1.1049 +8189,0.037,0.0227,1.06906,1.74592 +16381,0.0779,0.0455,1.62099,1.27898 +32765,0.0829,0.1405,1.4633,2.02957 +65533,0.1771,0.1989,1.96198,2.5047 +131069,0.3476,0.483,2.86106,3.57786 +262141,0.6807,1.0455,5.00941,5.48147 +524285,1.3921,1.5491,9.22726,9.07878 +1048573,2.6445,2.9494,16.6205,16.0676 +2097149,5.6502,5.9476,30.3616,29.7492 +4194301,10.8748,11.7123,58.8626,57.0675 +8388605,21.3219,23.1063,115.746,109.908 +16777213,43.631,45.202,232.412,220.451 +33554429,87.5901,100.256,466.648,442.93 +67108861,178.953,178.691,932.509,894.549 +134217725,365.423,353.987,1886.4,1778.32 +268435453,709.55,703.255,3735.14,3546.78 +13,0.0002,0.0002,1.53088,1.03629 +29,0.0006,0.0003,0.789504,1.08442 +61,0.0005,0.0006,1.12435,0.992256 +125,0.0009,0.001,0.841728,0.91136 +253,0.0017,0.001,0.841728,1.13152 +509,0.0028,0.0018,0.876544,1.04858 +1021,0.0053,0.0034,1.14688,1.44282 +2045,0.0058,0.006,1.4121,1.08237 +4093,0.0241,0.0111,1.03117,0.960512 +8189,0.0212,0.024,1.2329,1.06701 +16381,0.0426,0.0443,1.07827,1.56262 +32765,0.0813,0.1075,1.46842,1.17453 +65533,0.1722,0.1788,1.93843,2.89075 +131069,0.3423,0.4095,2.88256,4.00589 +262141,0.7037,0.9351,5.05651,6.30477 +524285,1.7413,1.6418,8.82483,9.58157 +1048573,2.8424,3.4854,15.8771,16.4864 +2097149,7.0964,5.8809,30.6801,29.3243 +4194301,10.8652,11.4392,57.9635,56.2371 +8388605,26.4524,23.0585,115.761,108.79 +16777213,44.8852,47.8367,229.576,219.959 +33554429,95.9369,88.2889,465.057,443.056 +67108861,175.271,177.617,936.014,886.519 +134217725,354.349,349.507,1871.21,1772.5 +268435453,706.536,710.379,3721.48,3544.63 +13,0.0001,0.0002,0.790528,0.953344 +29,0.0002,0.0003,0.789504,0.963584 +61,0.0005,0.0004,0.817152,1.93741 +125,0.0008,0.0005,1.06189,0.992256 +253,0.0016,0.0009,0.878592,0.90624 +509,0.0018,0.0018,0.786432,1.06701 +1021,0.005,0.003,0.861184,0.897024 +2045,0.0073,0.0063,1.03322,0.984064 +4093,0.033,0.0117,1.11206,1.85037 +8189,0.0228,0.0239,1.43258,1.00454 +16381,0.044,0.045,1.11104,1.40288 +32765,0.0913,0.1117,2.11046,1.34656 +65533,0.1686,0.2501,1.85242,2.42586 +131069,0.3603,0.4801,2.94093,3.57171 +262141,0.6428,0.8712,4.98893,6.40102 +524285,1.6564,1.7299,9.29587,8.86272 +1048573,2.8868,2.9011,16.4598,15.7133 +2097149,7.1652,5.7629,31.6938,30.933 +4194301,12.4767,11.419,58.0086,55.4281 +8388605,23.4561,21.9699,114.629,109.151 +16777213,42.976,45.8465,235.248,220.033 +33554429,89.0402,90.4213,470.074,445.964 +67108861,177.026,181.634,937.233,895.004 +134217725,356.666,358.918,1882.49,1771.8 +268435453,713.328,715.653,3730.66,3553.83 +13,0.0001,0.0002,1.00045,0.996352 +29,0.0001,0.0002,0.955392,0.909312 +61,0.0003,0.0004,0.862208,0.842752 +125,0.0008,0.0007,0.941056,1.00454 +253,0.0143,0.001,0.847872,1.89747 +509,0.0025,0.0035,0.843776,1.12128 +1021,0.004,0.0031,0.850944,1.11309 +2045,0.0058,0.0061,1.05472,1.0537 +4093,0.0162,0.0116,1.11411,0.984064 +8189,0.0214,0.0236,0.98816,1.37011 +16381,0.0627,0.0455,1.49914,1.2247 +32765,0.0856,0.1094,1.33325,1.46227 +65533,0.1649,0.2033,1.92512,2.6153 +131069,0.3424,0.6721,3.1785,4.08576 +262141,0.6943,0.8186,5.51117,5.92794 +524285,1.4424,1.6356,8.7808,9.12282 +1048573,3.0472,3.853,16.254,16.9472 +2097149,5.3628,5.703,29.8547,30.0411 +4194301,10.59,11.705,58.409,57.557 +8388605,22.3723,22.9736,114.313,111.113 +16777213,41.9438,44.7481,234.458,219.054 +33554429,87.9528,91.2725,470.572,441.377 +67108861,177.185,176.771,947.326,887.659 +134217725,356.397,359.841,1870.75,1787.83 +268435453,706.531,718.945,3781.44,3550.06 +13,0.0002,0.0002,0.956416,1.15302 +29,0.0001,0.0003,0.874496,1.00659 +61,0.0004,0.0002,0.946176,1.00864 +125,0.0006,0.0007,0.954368,1.06598 +253,0.015,0.0011,0.847872,0.932864 +509,0.0028,0.0019,0.8704,1.01171 +1021,0.0036,0.0033,1.3568,0.973824 +2045,0.0055,0.006,1.07418,1.0711 +4093,0.0106,0.0302,0.859136,1.13971 +8189,0.0207,0.0234,1.19194,1.25133 +16381,0.0633,0.0878,1.2073,1.05472 +32765,0.082,0.1112,2.90099,1.41926 +65533,0.2259,0.2377,1.81658,2.30707 +131069,0.3953,0.4592,3.36589,3.5584 +262141,0.6761,0.8466,4.98074,5.48147 +524285,1.3914,1.669,8.91699,10.154 +1048573,3.6923,3.1537,15.829,16.9196 +2097149,5.5207,6.9688,29.995,29.0028 +4194301,10.7939,11.3853,58.1079,55.9657 +8388605,21.2003,23.2356,116.089,110.839 +16777213,43.7996,45.6913,237.411,220.53 +33554429,86.5621,92.4206,469.996,441.847 +67108861,177.718,182.939,946.939,890.273 +134217725,353.146,350.718,1874.16,1774.03 +268435453,706.805,705.643,3750.76,3551.47 +13,0.0001,0.0002,1.59642,1.04755 +29,0.0005,0.0002,0.782336,0.864256 +61,0.0005,0.0003,0.873472,0.88576 +125,0.0008,0.0006,0.83456,0.9728 +253,0.0148,0.0009,0.866304,0.979968 +509,0.0013,0.0015,0.837632,1.34246 +1021,0.0035,0.0031,0.94208,1.08134 +2045,0.0093,0.0192,1.01581,0.920576 +4093,0.0116,0.012,1.37728,1.01376 +8189,0.021,0.0231,1.05267,1.19706 +16381,0.0412,0.0434,1.15302,1.01274 +32765,0.0869,0.0921,1.72646,1.34758 +65533,0.1774,0.2698,1.84013,3.45395 +131069,0.3429,0.397,3.27885,3.82362 +262141,0.6692,0.8569,5.25312,6.47578 +524285,1.2932,1.7313,9.27334,9.1392 +1048573,3.3073,3.0425,16.128,16.4639 +2097149,5.5047,5.5051,30.1773,30.1527 +4194301,10.8122,12.3038,59.1155,55.2059 +8388605,21.8567,22.4953,115.091,110.546 +16777213,44.9255,45.5346,231.092,221.213 +33554429,87.0138,91.7983,464.675,441.612 +67108861,178.035,182.133,936.077,884.788 +134217725,349.266,352.024,1863.22,1770.81 +268435453,698.171,700.823,3740.4,3560.7 +13,0.0001,0.0002,0.723968,1.16634 +29,0.0002,0.0003,0.7936,0.859136 +61,0.0003,0.0003,0.7936,0.835584 +125,0.0006,0.0005,0.775168,1.34861 +253,0.0013,0.0009,1.37728,0.96768 +509,0.0158,0.0016,0.891904,0.969728 +1021,0.0029,0.003,0.919552,1.31174 +2045,0.0097,0.0255,1.30458,1.03014 +4093,0.011,0.0119,1.02195,1.07725 +8189,0.0205,0.0237,0.914432,0.95232 +16381,0.0644,0.0471,1.44998,1.17248 +32765,0.0819,0.1311,1.51142,1.48173 +65533,0.1702,0.2095,1.79302,2.58355 +131069,0.3345,0.3767,3.63827,3.62598 +262141,0.7114,0.8013,5.4313,5.84192 +524285,1.355,1.5347,9.7321,9.50989 +1048573,2.6188,3.1477,15.7768,15.829 +2097149,5.4098,5.8368,31.2084,28.8655 +4194301,11.274,12.7547,57.7055,57.4966 +8388605,23.3016,21.9648,114.224,108.911 +16777213,42.8513,46.7434,236.318,219.811 +33554429,90.1879,89.1622,468.382,443.17 +67108861,175.758,176.338,939.82,889.484 +134217725,346.223,349.715,1888.54,1770.87 +268435453,699.135,702.774,3740.61,3555.31 +13,0.0001,0.0002,0.891904,1.17555 +29,0.0003,0.0002,0.90624,0.907264 +61,0.0004,0.0003,1.42029,0.892928 +125,0.0005,0.0006,0.89088,0.915456 +253,0.0017,0.001,0.833536,0.764928 +509,0.0032,0.0018,0.83456,1.06701 +1021,0.0029,0.0032,0.858112,0.919552 +2045,0.0097,0.006,0.847872,1.04448 +4093,0.0111,0.0123,1.56262,1.05677 +8189,0.0341,0.0417,1.12435,0.987136 +16381,0.0551,0.0443,1.74182,1.72339 +32765,0.0842,0.1329,1.55034,1.46022 +65533,0.1727,0.1869,2.2016,2.74125 +131069,0.351,0.4444,2.86413,3.74682 +262141,0.6894,0.854,5.05344,6.42662 +524285,1.341,1.6689,8.5975,8.7255 +1048573,2.9477,2.9637,16.0225,15.8484 +2097149,5.5778,5.9219,30.1722,30.2971 +4194301,10.8695,11.326,58.4315,56.6732 +8388605,22.1274,22.5612,116.098,110.047 +16777213,45.4298,45.2822,233.541,221.303 +33554429,86.2632,88.3442,472.032,448.044 +67108861,175.311,175.937,940.071,889.979 +134217725,354.349,347.498,1878.22,1785.41 +268435453,698.503,701.16,3766.6,3548.7 +13,0.0001,0.0002,0.897024,0.963584 +29,0.0002,0.0002,1.17043,1.00557 +61,0.0003,0.0007,0.919552,0.979968 +125,0.0004,0.0006,0.81408,0.909312 +253,0.0014,0.001,1.28819,1.01069 +509,0.0015,0.0016,0.92672,1.18682 +1021,0.0027,0.0032,0.874496,1.28 +2045,0.0078,0.0055,0.961536,1.12128 +4093,0.0134,0.0247,1.03117,1.00045 +8189,0.0204,0.0221,1.05574,1.46227 +16381,0.0441,0.0831,1.09773,1.14483 +32765,0.1487,0.1282,1.42234,1.30662 +65533,0.1703,0.1857,1.81555,2.81805 +131069,0.3376,0.4523,3.1703,3.8656 +262141,0.7209,0.8847,5.33914,5.68934 +524285,1.5434,1.5071,8.66509,10.1458 +1048573,2.6496,3.1652,16.2918,16.4721 +2097149,5.7502,5.7153,30.0534,29.0621 +4194301,11.0278,11.8604,58.4847,56.7009 +8388605,21.1974,24.1675,116.949,111.575 +16777213,42.6648,45.2746,232.693,222.365 +33554429,85.5403,93.0035,469.066,446.276 +67108861,182.145,180.184,932.019,892.793 +134217725,346.353,354.948,1887.12,1771.72 +268435453,707.556,701.563,3749.12,3560.77 +13,0.0002,0.0003,0.8448,0.774144 +29,0.0003,0.0002,0.859136,0.83456 +61,0.0005,0.0003,0.736256,1.13971 +125,0.0008,0.0005,1.18272,1.22368 +253,0.0008,0.0009,0.719872,0.809984 +509,0.0017,0.0016,0.753664,0.893952 +1021,0.0027,0.0035,0.765952,0.898048 +2045,0.0098,0.0057,1.15507,1.3527 +4093,0.0192,0.0114,0.861184,0.991232 +8189,0.0249,0.0225,1.29434,0.879616 +16381,0.0804,0.0452,1.10182,1.07315 +32765,0.0828,0.108,1.82784,1.1776 +65533,0.2099,0.1995,2.14835,2.46886 +131069,0.3595,0.4532,2.75968,3.28806 +262141,0.7065,0.8693,5.31866,7.03078 +524285,1.7419,1.6716,8.23603,9.53958 +1048573,2.8681,3.1353,16.6912,16.0625 +2097149,5.615,6.6054,30.636,30.2961 +4194301,12.922,11.4872,58.1929,56.6446 +8388605,23.4233,23.7708,115.391,109.562 +16777213,44.424,45.2281,229.838,221.611 +33554429,89.0712,87.5058,468.451,444.448 +67108861,176.193,183.365,941.537,885.414 +134217725,352.643,353.445,1867.94,1774.47 +268435453,700.726,704.791,3744.96,3560.29 +13,0.0002,0.0002,0.879616,1.0752 +29,0.0003,0.0002,0.910336,0.939008 +61,0.0006,0.0003,0.883712,1.19398 +125,0.0006,0.0006,0.879616,1.07622 +253,0.0016,0.0011,1.26464,0.805888 +509,0.003,0.0019,0.736256,0.775168 +1021,0.0053,0.0031,0.830464,0.782336 +2045,0.0059,0.0063,0.894976,1.39981 +4093,0.0111,0.0124,0.896,0.817152 +8189,0.0217,0.0234,0.929792,0.869376 +16381,0.0748,0.0665,1.17862,1.35373 +32765,0.0829,0.1114,1.33734,2.04083 +65533,0.1978,0.237,1.8647,2.99213 +131069,0.3589,0.3774,2.94502,3.06381 +262141,0.723,0.9133,5.39341,5.45587 +524285,1.6224,1.6378,8.69171,9.28973 +1048573,2.6958,2.8912,16.1741,16.7844 +2097149,5.3467,5.7834,31.4604,29.2751 +4194301,11.5771,11.6104,60.6321,57.1904 +8388605,21.0603,24.2795,114.882,111.161 +16777213,42.3692,46.5272,235.423,219.809 +33554429,90.3229,88.5108,470.926,441.022 +67108861,175.783,184.313,942.818,886.208 +134217725,351.512,350.945,1883.67,1791 +268435453,702.917,704.3,3726.95,3553.78 +13,0.0001,0.0002,1.77766,1.06189 +29,0.0001,0.0003,0.825344,0.940032 +61,0.0003,0.0004,0.909312,0.92672 +125,0.0005,0.0007,0.891904,1.08339 +253,0.0011,0.0011,1.09568,1.05165 +509,0.0021,0.0022,0.820224,0.9472 +1021,0.0035,0.0031,0.815104,1.28614 +2045,0.0087,0.006,0.937984,0.935936 +4093,0.0109,0.0123,1.21958,0.958464 +8189,0.021,0.0548,1.23802,0.98816 +16381,0.0395,0.0544,1.32813,1.21242 +32765,0.0956,0.0867,1.6087,1.42029 +65533,0.2297,0.1994,1.79712,3.0433 +131069,0.3456,0.4507,2.87744,3.59526 +262141,0.712,0.8962,5.02067,6.09792 +524285,1.3593,1.6706,8.66304,9.31328 +1048573,2.7641,2.8707,15.9283,16.386 +2097149,5.2348,5.7043,29.6079,29.1768 +4194301,12.7711,11.7379,58.4274,57.8365 +8388605,20.6259,23.5456,114.017,110.002 +16777213,42.8089,46.6657,236.661,220.102 +33554429,89.4567,88.8465,472.499,446.781 +67108861,179.441,179.176,940.913,883.085 +134217725,353.374,354.743,1870.92,1785.17 +268435453,699.763,702.204,3779.4,3544.02 +13,0.0002,0.0002,0.83968,1.23904 +29,0.0002,0.0002,1.19706,0.948224 +61,0.0007,0.0004,0.83456,1.19706 +125,0.0006,0.0006,0.81408,0.966656 +253,0.0145,0.0012,1.08237,0.915456 +509,0.0029,0.0018,1.05677,0.94208 +1021,0.005,0.0041,0.894976,0.924672 +2045,0.0057,0.0063,0.909312,0.888832 +4093,0.0323,0.0115,1.15814,1.2544 +8189,0.0214,0.0234,1.08646,1.03117 +16381,0.0417,0.0496,1.11104,1.21651 +32765,0.0877,0.1264,1.55341,1.43462 +65533,0.1739,0.1809,2.00499,2.88051 +131069,0.3673,0.3715,3.03821,3.59014 +262141,1.6079,0.8533,5.22035,5.64122 +524285,1.6788,1.7666,8.64051,9.70342 +1048573,2.7594,3.4152,15.9754,17.1203 +2097149,5.5361,6.1466,30.079,29.9151 +4194301,10.7272,10.7561,60.3351,59.6951 +8388605,21.6321,22.6888,116.143,110.109 +16777213,44.5421,45.5117,231.477,220.676 +33554429,86.0339,90.1662,473.144,442.865 +67108861,177.696,178.765,938.436,887.324 +134217725,351.153,359.983,1877.45,1775.67 +268435453,705.877,700.797,3755.25,3532.78 +13,0.0001,0.0005,1.23802,0.987136 +29,0.0004,0.0003,1.09261,1.01478 +61,0.0002,0.0004,0.845824,0.943104 +125,0.0005,0.0006,0.831488,0.945152 +253,0.0009,0.0011,0.97792,0.915456 +509,0.0029,0.002,0.928768,0.882688 +1021,0.0203,0.0032,1.15814,1.01683 +2045,0.0058,0.0062,1.87597,1.18477 +4093,0.0111,0.012,1.21958,1.1735 +8189,0.0407,0.0537,1.39674,1.06496 +16381,0.0609,0.055,1.21242,1.51962 +32765,0.084,0.159,1.4633,1.40288 +65533,0.1692,0.2371,1.83603,2.54362 +131069,0.3491,0.4499,2.90406,3.47238 +262141,0.6895,0.8119,5.05754,5.4231 +524285,1.8404,1.5971,8.55654,9.55898 +1048573,2.6728,3.0219,16.1167,15.913 +2097149,5.2789,5.7704,31.3733,30.2264 +4194301,10.6687,11.7643,58.8882,56.7675 +8388605,21.5183,22.6825,115.895,109.728 +16777213,46.4988,44.6805,230.788,221.885 +33554429,85.547,90.888,463.507,445 +67108861,175.28,175.451,943.489,886.282 +134217725,347.837,349.535,1870.23,1777.8 +268435453,697.146,709.874,3728.42,3548.23 +13,0.0001,0.0002,0.776192,0.93184 +29,0.0002,0.0002,0.919552,1.22061 +61,0.0003,0.0003,0.796672,0.93184 +125,0.0009,0.0006,1.1776,1.2247 +253,0.0014,0.001,1.08749,0.98816 +509,0.0029,0.0019,0.92672,1.06496 +1021,0.0029,0.0039,0.909312,0.982016 +2045,0.0072,0.006,1.03117,1.0025 +4093,0.0117,0.0114,1.50528,0.932864 +8189,0.0534,0.0231,1.29638,1.12333 +16381,0.0609,0.0778,1.29741,1.13869 +32765,0.0842,0.1662,1.72134,1.61075 +65533,0.1725,0.2296,1.92819,2.51187 +131069,0.3451,0.3494,3.0976,4.00589 +262141,0.7151,1.6118,5.21728,5.87571 +524285,1.3351,1.6197,8.76544,9.0368 +1048573,2.6619,2.9279,15.5351,16.1311 +2097149,5.429,5.9902,29.9151,29.014 +4194301,10.8022,11.6278,57.47,55.7701 +8388605,20.6023,23.0631,113.016,108.847 +16777213,46.8518,44.1403,235.913,225.118 +33554429,85.8326,90.9049,473.309,441.043 +67108861,175.518,179.881,935.351,887.743 +134217725,351.473,352.328,1881.01,1773.81 +268435453,695.844,703.951,3737.66,3558.55 +13,0.0001,0.0002,0.891904,1.06291 +29,0.0002,0.0003,0.934912,0.954368 +61,0.0004,0.0003,1.06086,0.90624 +125,0.0009,0.0006,0.925696,1.2503 +253,0.0014,0.001,0.86528,1.1561 +509,0.0027,0.0019,0.949248,0.9216 +1021,0.0029,0.0032,0.986112,1.1264 +2045,0.0064,0.0057,0.959488,1.14381 +4093,0.011,0.0117,0.958464,0.997376 +8189,0.0201,0.0226,1.34554,0.978944 +16381,0.0479,0.0605,1.26157,1.52166 +32765,0.1036,0.111,1.47558,1.88723 +65533,0.1778,0.1798,1.88723,2.74842 +131069,0.3351,0.3946,2.87334,3.96698 +262141,0.6738,0.9054,5.62176,5.9607 +524285,1.3343,1.56,9.41773,9.30099 +1048573,2.6731,3.263,15.743,17.7869 +2097149,5.2994,5.8612,30.5572,29.013 +4194301,12.0947,12.4005,57.8499,58.0485 +8388605,22.2962,22.7381,114.144,109.877 +16777213,42.4889,47.269,232.287,221.382 +33554429,89.3125,88.7778,474.592,443.543 +67108861,174.693,176.145,946.349,896.618 +134217725,347.113,352.255,1884.24,1780.59 +268435453,695.185,698.086,3756.38,3551.27 +13,0.0001,0.0001,1.28,0.932864 +29,0.0003,0.0002,0.738304,0.996352 +61,0.0004,0.0003,0.817152,0.959488 +125,0.0009,0.0005,0.817152,1.03117 +253,0.0008,0.001,1.18477,1.02502 +509,0.0028,0.0018,0.93696,1.24621 +1021,0.0028,0.0032,0.776192,1.00147 +2045,0.0097,0.0058,1.01683,1.35066 +4093,0.0109,0.0115,0.939008,1.04346 +8189,0.0215,0.038,1.72544,1.25747 +16381,0.0431,0.0584,1.13971,1.53907 +32765,0.0853,0.1054,1.48582,1.4121 +65533,0.1784,0.2131,1.78074,2.68288 +131069,0.3358,0.3614,3.45088,3.45907 +262141,0.9037,0.8715,5.05446,6.17984 +524285,1.4067,1.6126,8.97024,8.84838 +1048573,3.3509,3.0234,16.1198,15.9263 +2097149,5.2253,5.6303,31.2955,30.3462 +4194301,10.5735,14.191,59.9153,56.2708 +8388605,21.7457,26.1124,114.73,112.66 +16777213,42.1169,45.9624,231.06,219.867 +33554429,88.8376,89.8317,467.247,440.759 +67108861,177.373,180.846,940.649,886.448 +134217725,351.165,351.419,1878.95,1777.44 +268435453,694.33,703.961,3758.43,3547.68 +13,0.0001,0.0002,0.797696,0.9472 +29,0.0003,0.0003,0.98304,1.04755 +61,0.0004,0.0003,0.874496,1.00966 +125,0.0006,0.0005,0.924672,0.928768 +253,0.0015,0.001,0.96256,1.28307 +509,0.0027,0.0017,0.786432,1.06394 +1021,0.0215,0.0036,0.93184,1.0281 +2045,0.009,0.0079,1.03424,1.09875 +4093,0.027,0.0113,1.05062,1.1049 +8189,0.0211,0.0228,1.05677,1.13869 +16381,0.0414,0.055,1.59539,1.36397 +32765,0.0873,0.0906,1.62611,1.36294 +65533,0.1699,0.2037,2.10534,2.66035 +131069,0.3634,0.4301,2.88666,3.90144 +262141,0.6705,0.8976,5.13741,6.1184 +524285,1.3,1.6328,8.84224,9.41875 +1048573,2.6913,2.8951,16.2724,16.2468 +2097149,5.3402,5.9547,30.7732,29.3663 +4194301,10.6012,11.662,57.984,56.6968 +8388605,20.9108,21.849,114.205,110.132 +16777213,45.779,42.9926,229.613,224.373 +33554429,86.2213,91.8358,464.928,442.492 +67108861,175.108,177.443,939.014,887.564 +134217725,354.64,347.971,1876.11,1782.23 +268435453,696.77,704.997,3738.1,3543.88 +13,0.0002,0.0002,0.897024,1.05574 +29,0.0004,0.0003,0.820224,0.963584 +61,0.0003,0.0006,0.694272,0.96256 +125,0.0009,0.0005,0.795648,0.902144 +253,0.0016,0.001,0.900096,1.05882 +509,0.0027,0.0018,1.08749,0.994304 +1021,0.0047,0.0029,0.959488,1.07622 +2045,0.026,0.0057,1.152,1.06701 +4093,0.013,0.0268,1.01478,1.48992 +8189,0.0223,0.0227,0.992256,1.01786 +16381,0.0412,0.0451,1.21446,1.29536 +32765,0.0892,0.0923,1.39264,1.34042 +65533,0.1655,0.2063,1.89235,2.60608 +131069,0.3485,0.4777,3.10374,3.83078 +262141,0.7933,0.8352,5.57978,6.36006 +524285,1.3517,1.5418,8.96307,9.24672 +1048573,2.7124,3.0437,15.7573,15.4501 +2097149,5.6138,5.4738,31.273,29.2762 +4194301,10.71,10.8617,58.5482,56.3067 +8388605,22.1585,22.4095,113.693,109.001 +16777213,44.9765,44.5119,235.191,221.843 +33554429,84.0652,90.0569,481.105,443.589 +67108861,173.08,177.661,948.238,887.356 +134217725,354.091,351.811,1887.07,1785.13 +268435453,704.843,703.381,3737.81,3550.5 +13,0.0001,0.0002,0.838656,0.944128 +29,0.0002,0.0003,0.673792,0.973824 +61,0.0004,0.0003,0.862208,0.908288 +125,0.0006,0.0006,0.857088,0.932864 +253,0.0016,0.0011,0.791552,0.804864 +509,0.0017,0.0017,0.81408,1.04346 +1021,0.0028,0.0029,1.1223,0.92672 +2045,0.0074,0.0247,0.948224,1.2759 +4093,0.0245,0.0117,1.08646,0.986112 +8189,0.021,0.0239,1.15405,1.21958 +16381,0.0623,0.0599,1.3097,1.38547 +32765,0.0821,0.1229,1.77357,1.64966 +65533,0.1967,0.1776,1.85037,2.65626 +131069,0.3481,0.3756,2.94707,3.59526 +262141,0.757,0.8328,4.87526,5.92384 +524285,1.4495,1.4575,9.96352,9.25798 +1048573,2.7041,2.9296,15.87,15.9068 +2097149,5.4024,5.7821,30.3124,29.1226 +4194301,11.2823,11.4493,58.8329,56.5955 +8388605,22.4046,22.7907,117.523,109.101 +16777213,46.1456,45.6434,231.043,221.896 +33554429,86.6306,92.8721,469.723,441.127 +67108861,176.845,177.475,940.374,888.838 +134217725,350.665,349.992,1871.32,1784.57 +268435453,697.574,710.087,3766.83,3547.24 +13,0.0001,0.0001,0.725984,0.835584 +29,0.0002,0.0001,0.709632,0.780288 +61,0.0002,0.0003,0.765952,1.21139 +125,0.0007,0.0008,0.708608,1.0281 +253,0.0009,0.001,0.714752,0.770048 +509,0.0023,0.0016,0.812032,0.945152 +1021,0.0028,0.003,0.85504,0.959488 +2045,0.0052,0.0059,0.816128,0.795648 +4093,0.0112,0.0127,0.959488,0.90112 +8189,0.0226,0.0232,0.994304,0.859136 +16381,0.0612,0.047,2.61632,0.996352 +32765,0.0851,0.1098,1.3097,1.18989 +65533,0.1709,0.2107,1.7623,2.43917 +131069,0.3487,0.4257,2.90099,4.1431 +262141,0.7958,0.7457,5.03091,5.74362 +524285,1.4129,1.5991,9.63789,9.4761 +1048573,2.6729,2.9335,16.8223,16.5908 +2097149,5.605,5.8014,30.1056,30.081 +4194301,11.2298,11.7168,58.2277,56.5125 +8388605,21.4918,22.7584,116.815,111.895 +16777213,44.1826,45.5153,233.289,222.226 +33554429,84.0596,92.2806,467.547,447.503 +67108861,175.338,178.131,936.168,884.602 +134217725,354.239,351.645,1867.27,1779.62 +268435453,696.878,704.37,3736.88,3540.29 +13,0.0001,0.0002,0.87552,1.19296 +29,0.0001,0.0002,1.22163,1.00966 +61,0.0003,0.0003,0.68608,1.27181 +125,0.0011,0.0006,1.05779,0.821248 +253,0.0009,0.0009,0.748544,0.770048 +509,0.0028,0.0017,1.03526,0.821248 +1021,0.0027,0.0031,0.821248,0.842752 +2045,0.012,0.0056,0.85504,0.935936 +4093,0.0318,0.0117,0.956416,0.859136 +8189,0.0207,0.0225,1.00045,0.857088 +16381,0.0436,0.0467,1.24621,1.13152 +32765,0.0853,0.1046,1.28102,1.4889 +65533,0.2379,0.2363,1.70291,2.28864 +131069,0.3515,0.4503,2.70848,3.40787 +262141,0.6915,0.9298,4.81178,5.30739 +524285,1.4586,1.6151,8.58214,9.50784 +1048573,3.8124,2.9975,16.4096,16.641 +2097149,5.2806,6.101,30.1353,29.6479 +4194301,10.4954,11.5573,57.5836,58.07 +8388605,21.6654,23.4934,115.103,109.951 +16777213,43.0598,45.2367,233.058,223.305 +33554429,87.0188,89.6501,460.424,448.103 +67108861,175.561,179.575,939.165,887.312 +134217725,345.291,354.902,1870.61,1774.54 +268435453,703.085,706.048,3748.04,3547.29 +13,0.0001,0.0002,1.94867,1.03014 +29,0.0001,0.0002,0.94208,1.05984 +61,0.0003,0.0002,0.71168,0.781312 +125,0.0008,0.0006,0.71168,0.811008 +253,0.0016,0.001,0.9216,0.78848 +509,0.003,0.0018,0.93696,1.43258 +1021,0.003,0.0032,0.826368,0.777216 +2045,0.0089,0.0296,0.831488,1.23494 +4093,0.011,0.0115,0.858112,1.79814 +8189,0.0226,0.0235,0.986112,0.915456 +16381,0.0537,0.045,2.01523,1.66298 +32765,0.1174,0.1322,1.37011,1.1776 +65533,0.1657,0.2141,1.93946,2.70438 +131069,0.3589,0.3744,2.87949,3.79699 +262141,0.8192,1.0111,5.29306,5.56544 +524285,1.561,1.5043,8.5801,9.01427 +1048573,2.8021,2.8946,16.0164,17.6292 +2097149,5.3517,6.9677,29.2864,29.9397 +4194301,10.2554,11.4949,57.001,56.0415 +8388605,21.4403,23.1256,115.517,109.002 +16777213,44.2908,44.9026,233.873,220.262 +33554429,85.1485,93.5969,470.657,443.476 +67108861,175.364,179.563,937.622,887.855 +134217725,354.029,350.887,1884.18,1774.77 +268435453,700.185,709.56,3727.44,3552.92 +13,0.0001,0.0002,0.683008,0.818176 +29,0.0001,0.0005,0.719872,0.801792 +61,0.0006,0.0004,0.78848,0.78336 +125,0.0005,0.0006,0.713728,0.830464 +253,0.0015,0.0009,0.764928,0.919552 +509,0.0026,0.0017,0.815104,0.770048 +1021,0.0027,0.0032,0.86016,0.848896 +2045,0.0092,0.0059,0.841728,0.796672 +4093,0.0107,0.012,1.62099,1.12128 +8189,0.0212,0.0238,0.907264,0.845824 +16381,0.0752,0.0445,1.07725,1.06189 +32765,0.0821,0.1089,1.38035,1.33837 +65533,0.217,0.1878,2.13811,2.36851 +131069,0.3387,0.4303,2.92762,3.36282 +262141,0.7226,0.8903,5.00531,5.77434 +524285,1.3644,1.5529,8.92416,9.26413 +1048573,2.6266,3.0818,15.8505,15.3078 +2097149,7.7056,5.6138,29.6489,29.7779 +4194301,11.0909,11.2594,58.0035,57.6788 +8388605,22.9163,23.3249,115.069,108.305 +16777213,42.375,48.1073,233.307,221.978 +33554429,92.1504,87.9275,473.661,441.338 +67108861,177.802,181.847,944.09,893.174 +134217725,349.126,351.133,1883.21,1774.54 +268435453,696.599,699.154,3801.62,3552.5 +13,0.0002,0.0002,0.900096,0.915456 +29,0.0002,0.0002,0.925696,1.03424 +61,0.0006,0.0003,0.888832,1.73466 +125,0.0009,0.0006,0.915456,0.950272 +253,0.0146,0.001,1.03117,1.08339 +509,0.0028,0.0018,0.748544,0.771072 +1021,0.0033,0.0032,0.873472,0.796672 +2045,0.0058,0.0062,0.81408,1.74797 +4093,0.0104,0.0118,0.891904,0.811008 +8189,0.0211,0.0218,1.0752,0.8704 +16381,0.0696,0.0458,1.1223,1.03629 +32765,0.0824,0.1066,2.31014,2.0736 +65533,0.2112,0.1954,1.8688,2.35725 +131069,0.3581,0.4288,2.76685,3.76218 +262141,0.6924,0.7666,5.39341,5.57978 +524285,1.7831,1.5997,8.72243,8.54426 +1048573,3.0086,3.2759,15.9867,17.0107 +2097149,6.8203,6.2566,30.0155,29.3806 +4194301,11.3851,11.8588,58.7602,57.601 +8388605,24.3165,22.7147,116.393,109.761 +16777213,45.2642,48.0187,230.669,222.404 +33554429,90.9088,89.1233,467.976,444.596 +67108861,172.16,176.457,935.884,891.007 +134217725,358.747,353.158,1883.63,1781.86 +268435453,707.422,703.315,3750.19,3542.43 +13,0.0001,0.0002,1.68243,0.964608 +29,0.0001,0.0003,0.96768,1.03731 +61,0.0005,0.0003,0.907264,1.15507 +125,0.0009,0.0007,0.869376,1.05472 +253,0.0008,0.001,1.19706,1.02195 +509,0.0029,0.0017,0.748544,0.766976 +1021,0.0034,0.0031,0.763904,1.18477 +2045,0.0055,0.0057,0.927744,1.31584 +4093,0.0106,0.0112,0.909312,0.83456 +8189,0.021,0.0226,0.985088,0.963584 +16381,0.0585,0.0451,1.40083,0.982016 +32765,0.0881,0.1146,1.32403,1.27386 +65533,0.1724,0.19,1.76947,3.10989 +131069,0.3462,0.4811,2.73408,3.64749 +262141,0.7139,0.8589,5.59718,5.54701 +524285,1.4404,1.5318,8.55347,9.1689 +1048573,3.383,3.5405,15.7706,15.9662 +2097149,5.2802,5.6228,31.0876,29.4697 +4194301,10.8445,11.8681,58.2717,56.5053 +8388605,21.3323,22.1719,116.922,111.162 +16777213,44.9868,45.0419,231.651,221.369 +33554429,90.643,89.0289,466.146,442.675 +67108861,179.798,179.949,935.914,889.895 +134217725,353.414,353.842,1874.47,1778.09 +268435453,707.517,697.294,3751.9,3552.91 +13,0.0001,0.0002,0.854016,1.08749 +29,0.0003,0.0005,1.35373,1.05165 +61,0.0004,0.0004,0.922624,1.66912 +125,0.0008,0.0005,1.21958,1.0711 +253,0.0016,0.0014,0.884736,0.772096 +509,0.0022,0.0017,0.922624,1.02707 +1021,0.0026,0.003,0.765952,0.828416 +2045,0.0057,0.0058,0.812032,0.869376 +4093,0.0105,0.0114,0.857088,1.1561 +8189,0.0347,0.0227,0.970752,0.867328 +16381,0.0427,0.064,1.3097,1.08442 +32765,0.0826,0.1124,1.37728,1.1817 +65533,0.172,0.2009,1.9456,2.62963 +131069,0.3359,0.4278,3.05766,3.47443 +262141,0.7026,0.8709,4.78618,5.52038 +524285,1.4659,1.5897,8.7767,9.09824 +1048573,3.9414,3.1161,15.8945,16.5888 +2097149,5.1889,6.1035,29.9407,29.4605 +4194301,11.0958,11.3405,58.6332,56.3507 +8388605,21.3988,22.9749,115.552,111.137 +16777213,42.5408,44.8191,234.961,220.996 +33554429,87.7597,90.1893,472.043,442.92 +67108861,178.008,179.584,939.341,889.729 +134217725,346.724,347.44,1886.4,1766.1 +268435453,713.862,701.777,3744.48,3552.7 +13,0.0001,0.0001,0.795648,0.914432 +29,0.0001,0.0002,0.951296,0.991232 +61,0.0007,0.0004,1.29229,1.02707 +125,0.0008,0.0005,0.923648,1.09773 +253,0.001,0.001,1.34144,0.77824 +509,0.0028,0.002,0.766976,0.77824 +1021,0.0029,0.0032,0.77824,0.797696 +2045,0.0056,0.0064,0.820224,0.805888 +4093,0.0111,0.0124,0.902144,0.825344 +8189,0.0221,0.0238,1.1008,1.56979 +16381,0.0497,0.0477,1.42848,0.99328 +32765,0.0812,0.1099,1.37523,1.17555 +65533,0.2256,0.2031,2.46272,2.52416 +131069,0.3331,0.4282,2.75661,3.60237 +262141,0.7173,0.892,5.4999,5.61766 +524285,1.3094,1.5239,8.51661,8.53094 +1048573,2.7464,2.9676,16.1321,17.4408 +2097149,5.0813,5.8439,29.7994,29.6223 +4194301,10.7644,11.6782,57.9308,57.6502 +8388605,21.3083,23.0873,113.31,110.567 +16777213,42.8236,45.4437,238.761,221.463 +33554429,88.9717,88.8316,472.637,441.19 +67108861,180.424,178.373,937.264,885.204 +134217725,455.441,386.233,1909.09,1850.11 +268435453,774.2,773.446,3786.6,4027.12 +13,0.0001,0.0002,0.928768,0.924672 +29,0.0002,0.0002,0.909312,1.03834 +61,0.0003,0.0004,0.83968,1.24211 +125,0.0005,0.0006,0.929792,1.0793 +253,0.0008,0.0011,0.768,1.06189 +509,0.0019,0.0019,0.805888,0.817152 +1021,0.0028,0.0032,1.33325,0.825344 +2045,0.0066,0.006,2.21594,0.811008 +4093,0.0162,0.0117,1.22675,0.876544 +8189,0.021,0.0236,0.971776,1.31686 +16381,0.0755,0.0469,1.18374,2.05414 +32765,0.0873,0.1124,1.64352,1.28922 +65533,0.2471,0.2005,2.32755,3.17747 +131069,0.3273,0.4168,2.75661,4.09293 +262141,0.6846,1.1624,5.78867,5.90438 +524285,1.6063,1.4884,8.51149,8.77568 +1048573,2.5895,3.1253,16.0328,15.8894 +2097149,5.2812,5.6422,29.9489,29.5158 +4194301,11.9212,11.6287,61.0775,57.8949 +8388605,22.9982,22.4216,118.923,110.122 +16777213,51.9211,46.5371,230.376,246.015 +33554429,91.1344,88.2267,474.202,448.822 +67108861,177.019,186.686,935.747,891.463 +134217725,350.444,386.598,1877.25,1776.26 +268435453,702.74,706.312,3747.93,3537.68 +13,0.0001,0.0001,0.961536,1.08237 +29,0.0001,0.0002,0.924672,1.07622 +61,0.0005,0.0003,0.846848,1.00966 +125,0.0006,0.0006,0.90112,0.966656 +253,0.0008,0.0012,1.08339,1.03322 +509,0.0027,0.0017,0.984064,0.818176 +1021,0.0031,0.0034,0.914432,0.996352 +2045,0.0111,0.0062,1.55853,0.861184 +4093,0.0316,0.0118,1.06803,1.39469 +8189,0.0239,0.0286,1.10285,1.38138 +16381,0.076,0.0576,1.2032,0.98816 +32765,0.1043,0.1598,1.4039,1.66605 +65533,0.1853,0.1999,1.91898,2.3808 +131069,0.3885,0.4452,2.86413,3.8441 +262141,0.661,0.8454,5.23878,5.52346 +524285,1.4166,1.6252,8.84224,8.3927 +1048573,2.6578,2.8919,15.7174,16.5591 +2097149,5.1513,6.0394,30.2346,29.9377 +4194301,11.5444,11.9955,58.1427,56.107 +8388605,22.2243,23.513,116.161,109.827 +16777213,46.7388,44.3544,229.472,224.539 +33554429,83.8459,89.9159,468.043,442.075 +67108861,180.051,178.224,933.594,884.767 +134217725,355.098,351.825,1861.28,1785.53 +268435453,698.659,708.39,3731.72,3530.4 +13,0.0001,0.0002,0.826368,1.06598 +29,0.0002,0.0001,1.11206,1.00864 +61,0.0007,0.0003,1.11718,1.01478 +125,0.0005,0.0007,0.92672,0.946176 +253,0.0008,0.0009,0.724992,0.78336 +509,0.0015,0.002,0.85504,1.27488 +1021,0.0028,0.0032,0.772096,0.78336 +2045,0.0228,0.0057,1.57184,0.792576 +4093,0.0196,0.012,0.8448,0.933888 +8189,0.0397,0.0235,0.944128,1.31994 +16381,0.0439,0.0645,1.16019,1.42336 +32765,0.0883,0.1085,1.31174,1.31994 +65533,0.1737,0.1963,2.20365,2.75149 +131069,0.3348,0.5305,3.29728,3.58707 +262141,0.7009,0.7798,5.09542,5.79379 +524285,1.3731,1.9358,8.88218,9.51706 +1048573,2.6416,3.1301,16.4639,16.213 +2097149,5.4587,6.0456,29.7574,30.4998 +4194301,11.2085,11.2115,59.4371,56.702 +8388605,21.8276,23.5509,118.179,112.76 +16777213,43.4263,45.7782,235.738,219.565 +33554429,91.9404,92.2027,469.574,445.246 +67108861,175.722,177.791,945.937,887.337 +,361.519,,, diff --git a/Project2-Stream-Compaction/data/Stream_compaction_data/data_pow2/data.csv b/Project2-Stream-Compaction/data/Stream_compaction_data/data_pow2/data.csv new file mode 100644 index 0000000..918c7ca --- /dev/null +++ b/Project2-Stream-Compaction/data/Stream_compaction_data/data_pow2/data.csv @@ -0,0 +1,1372 @@ +Array Size,Cpu without scan (s),Cpu with scan (s),Efficient SC (s), +16,0.0002,0.0002,0.91648,1.0281 +32,0.0004,0.0003,0.647168,0.813056 +64,0.0004,0.0004,0.873472,0.927744 +128,0.0009,0.0006,0.670752,1.16736 +256,0.001,0.0011,0.702464,1.12538 +512,0.0016,0.0016,0.770048,0.741408 +1024,0.0029,0.0041,0.763872,0.845856 +2048,0.0056,0.006,0.813088,0.859168 +4096,0.0119,0.0144,0.837632,0.817152 +8192,0.0284,0.0307,1.61894,0.81616 +16384,0.0435,0.0459,1.07312,1.40493 +32768,0.0819,0.1082,1.27386,1.40083 +65536,0.1767,0.1872,2.44429,2.688 +131072,0.4384,0.5142,3.09043,3.70688 +262144,0.8429,0.9013,4.66947,5.77434 +524288,1.7027,1.5088,8.37632,8.94771 +1048576,2.7156,2.9924,15.6723,16.8571 +2097152,5.6164,5.816,29.8312,30.5746 +4194304,11.0421,10.9035,60.1344,57.8857 +8388608,24.7709,22.5186,116.532,119.439 +16777216,44.8604,46.321,238.13,224.6 +33554432,93.11,91.0134,475.415,448.19 +67108864,176.681,178.824,937.818,882.165 +134217728,335.069,346.269,1893.06,1776.24 +268435456,682.426,671.694,3739.07,3544.18 +16,0.0001,0.0002,0.7424,0.835584 +32,0.0002,0.0003,0.917504,0.807936 +64,0.0006,0.0004,0.866304,0.95232 +128,0.0009,0.0005,0.789504,1.01171 +256,0.001,0.0011,0.894976,0.979968 +512,0.0029,0.0016,0.963584,0.904192 +1024,0.0055,0.0033,0.809984,0.80384 +2048,0.0061,0.006,0.91648,1.39059 +4096,0.0196,0.0113,1.22573,1.05165 +8192,0.0208,0.0227,1.08237,1.03322 +16384,0.0431,0.0508,1.12742,1.18374 +32768,0.0844,0.1259,1.52883,1.36397 +65536,0.1792,0.1813,1.9753,2.53542 +131072,0.3307,0.3741,3.41299,3.53075 +262144,0.7054,1.0571,5.46918,5.85523 +524288,1.4983,1.4961,9.09926,9.17504 +1048576,2.716,2.968,16.1966,16.3226 +2097152,5.2369,5.7434,30.7589,29.8158 +4194304,10.4689,13.818,58.1765,56.5361 +8388608,23.0293,25.2703,115.842,109.529 +16777216,42.7821,44.5829,232.839,225.388 +33554432,81.2208,86.1327,472.843,444.895 +67108864,174.556,177.227,939.284,888.444 +134217728,336.501,350.886,1866.95,1783.43 +268435456,695.409,693.268,3776.2,3559.09 +16,0.0001,0.0002,0.715776,1.17658 +32,0.0002,0.0002,0.941056,1.09568 +64,0.0004,0.0003,1.57286,1.0281 +128,0.0006,0.0005,0.862208,0.9728 +256,0.0018,0.0011,0.82944,0.953344 +512,0.0021,0.0016,0.881664,1.08544 +1024,0.0046,0.0032,0.927744,1.05062 +2048,0.0056,0.0064,0.812032,0.799744 +4096,0.0119,0.0124,0.866304,1.44077 +8192,0.0226,0.0221,1.08749,0.900096 +16384,0.0415,0.0568,1.17658,1.26157 +32768,0.0849,0.0939,2.26918,1.36704 +65536,0.3475,0.1838,1.90669,2.74534 +131072,0.3615,0.3942,3.10784,4.23219 +262144,0.6836,0.8785,5.09747,5.56237 +524288,1.3727,1.503,9.07366,9.87546 +1048576,2.4496,2.98,15.8167,17.0004 +2097152,5.6101,5.7071,30.292,29.9858 +4194304,10.8534,11.1383,58.0997,55.9831 +8388608,19.7415,23.5885,115.645,110.109 +16777216,41.1805,43.1234,230.966,222.432 +33554432,81.8753,86.9055,473.051,443.28 +67108864,172.542,174.449,945.819,884.19 +134217728,340.058,347.199,1891.72,1791.73 +268435456,697.402,675.506,3753.65,3550.87 +16,0.0001,0.0001,0.678912,0.924672 +32,0.0004,0.0003,0.676864,0.857088 +64,0.0004,0.0006,0.760832,0.837632 +128,0.0006,0.0006,0.904192,1.66298 +256,0.0011,0.0011,1.60563,1.10899 +512,0.0017,0.0016,1.0199,1.02195 +1024,0.0027,0.0033,0.792576,0.782336 +2048,0.0059,0.0062,0.82944,0.818176 +4096,0.012,0.0119,1.19706,0.835584 +8192,0.0348,0.0229,1.03219,1.13254 +16384,0.0435,0.0482,1.32608,1.48582 +32768,0.0872,0.09,1.39571,1.27693 +65536,0.1685,0.1951,1.77869,2.23334 +131072,0.6534,0.4195,3.03923,3.52973 +262144,0.6765,0.9126,4.80973,6.25664 +524288,1.4064,1.483,8.77466,9.57338 +1048576,2.6332,2.9762,16.5581,16.1382 +2097152,5.8366,5.8789,31.316,29.5414 +4194304,14.0794,11.7911,59.0254,55.9012 +8388608,23.701,24.2535,115.457,108.713 +16777216,42.4542,44.2609,232.083,221.307 +33554432,83.2737,87.2814,463.908,443.645 +67108864,164.23,166.429,943.967,885.699 +134217728,345.449,348.521,1858.35,1779.99 +268435456,680.071,712.412,3758.54,3557.33 +16,0.0002,0.0002,0.903168,0.9728 +32,0.0001,0.0003,0.83456,1.00864 +64,0.0002,0.0004,0.805888,1.03219 +128,0.0005,0.0005,0.859136,1.04243 +256,0.001,0.001,0.882688,0.987136 +512,0.0027,0.0017,1.00864,0.78336 +1024,0.0037,0.0029,1.22675,0.786432 +2048,0.0057,0.0058,0.851904,0.817152 +4096,0.0111,0.0111,0.892928,0.817152 +8192,0.0392,0.0417,1.22368,1.26362 +16384,0.0434,0.0552,1.19091,1.4295 +32768,0.0851,0.0938,1.30048,1.18784 +65536,0.2229,0.1868,1.85754,2.94707 +131072,0.3413,0.4572,2.71974,3.78374 +262144,0.7196,0.8563,5.31866,5.67091 +524288,1.6449,1.5424,8.91597,9.3737 +1048576,2.9374,4.1651,15.8013,15.7276 +2097152,4.9908,5.2307,30.89,29.609 +4194304,10.3716,11.7205,58.5892,59.6695 +8388608,20.9815,22.9635,114.506,109.537 +16777216,44.7591,45.1866,234.361,221.695 +33554432,86.1674,89.9113,469.392,442.754 +67108864,173.671,177.769,940.707,889.71 +134217728,340.239,335.807,1881.55,1774.41 +268435456,709.34,674.811,3738.79,3531.58 +16,0.0001,0.0003,0.959488,1.44077 +32,0.0002,0.0003,1.2503,1.02605 +64,0.0006,0.0003,0.846848,1.01786 +128,0.0009,0.0005,1.04858,1.01376 +256,0.0009,0.0025,0.886784,1.14176 +512,0.0021,0.0021,0.82432,0.939008 +1024,0.0036,0.0035,1.39469,0.909312 +2048,0.0107,0.0062,1.0711,1.66707 +4096,0.0192,0.0123,1.39059,0.99328 +8192,0.0242,0.0368,1.11309,0.851968 +16384,0.0748,0.0459,1.13869,1.55546 +32768,0.0844,0.1091,1.2759,1.18374 +65536,0.1709,0.2641,1.71008,2.72794 +131072,0.3598,0.4177,2.82829,3.65261 +262144,0.6923,1.1602,4.77491,5.88288 +524288,1.3397,1.5931,8.53094,9.67168 +1048576,2.7688,2.9394,16.1331,15.8843 +2097152,5.1949,5.746,29.7073,29.0847 +4194304,10.3327,10.8921,58.2011,56.2903 +8388608,25.4277,23.6599,115.249,108.442 +16777216,47.6861,48.126,235.572,221.498 +33554432,86.5501,90.3424,475.481,445.263 +67108864,169.242,175.198,947.639,891.921 +134217728,388.429,381.24,1886.36,1804.83 +268435456,706.963,708.391,3762.98,3541.94 +16,0.0001,0.0002,1.41005,1.28614 +32,0.0002,0.0004,0.76288,0.905216 +64,0.0003,0.0004,1.18067,1.03322 +128,0.0009,0.0005,1.19501,1.60358 +256,0.0014,0.001,0.924672,1.13664 +512,0.0016,0.0018,0.937984,1.37011 +1024,0.006,0.0038,1.62304,1.0496 +2048,0.006,0.0065,1.07418,1.01376 +4096,0.0118,0.0129,1.18579,1.30765 +8192,0.0228,0.0256,1.14995,1.23597 +16384,0.0579,0.0838,1.42131,1.29741 +32768,0.0875,0.1444,1.96608,1.66093 +65536,0.1736,0.2161,2.23437,2.61632 +131072,0.4,0.4425,3.0423,3.57786 +262144,0.7121,0.8244,5.39546,5.96582 +524288,1.3757,1.4242,8.42138,9.10131 +1048576,3.2912,2.7981,15.4501,15.7932 +2097152,5.4003,6.0586,30.5992,29.7318 +4194304,11.9626,11.6898,58.4571,55.7169 +8388608,21.0037,23.2416,117.109,113.362 +16777216,43.5806,46.0699,232.41,219.244 +33554432,90.6363,88.4112,468.296,445.396 +67108864,174.219,176.887,942.114,892.832 +134217728,350.27,349.369,1889.28,1771.63 +268435456,702.739,696.806,3743.54,3546.91 +16,0.0002,0.0002,0.975872,0.996352 +32,0.0003,0.0002,0.785408,1.08237 +64,0.0002,0.0004,0.841728,1.04038 +128,0.0008,0.0005,0.946176,1.0496 +256,0.0008,0.0011,0.842752,1.34758 +512,0.002,0.002,0.891904,1.06496 +1024,0.0032,0.003,0.93696,1.11002 +2048,0.0058,0.0059,1.12845,1.03219 +4096,0.011,0.0118,1.16326,0.86016 +8192,0.036,0.0533,1.03219,1.52269 +16384,0.0525,0.047,1.52986,1.43974 +32768,0.0845,0.0927,1.32506,1.1817 +65536,0.1757,0.1969,1.72851,2.69312 +131072,0.6564,0.4237,3.75501,3.3024 +262144,0.6551,0.8665,4.87219,5.32378 +524288,1.472,1.5584,8.45619,9.02963 +1048576,2.6178,2.9302,15.7512,16.001 +2097152,5.2685,5.9883,29.8527,30.0861 +4194304,11.2574,13.0451,58.2267,59.0971 +8388608,21.5827,22.297,117.027,110.078 +16777216,44.7539,44.3484,232.138,220.806 +33554432,86.5369,91.6488,464.787,442.461 +67108864,171.779,175.382,942.983,888.583 +134217728,348.409,351.256,1875.07,1772.67 +268435456,699.981,694.578,3739.44,3542.08 +16,0.0001,0.0002,1.04038,1.14074 +32,0.0002,0.0002,0.668672,0.848896 +64,0.0004,0.0004,0.791552,0.831488 +128,0.001,0.0005,0.707584,0.795648 +256,0.0016,0.0011,0.7424,1.46842 +512,0.003,0.0017,0.873472,1.21446 +1024,0.0059,0.0033,0.812032,0.769024 +2048,0.008,0.0061,0.818176,0.806912 +4096,0.0204,0.0116,0.939008,0.822272 +8192,0.0224,0.023,0.920576,0.87552 +16384,0.0605,0.0456,1.08237,0.995328 +32768,0.0967,0.1126,1.31277,1.30662 +65536,0.1793,0.205,2.05517,2.28659 +131072,0.3494,0.3753,2.9655,3.96083 +262144,0.7593,0.7224,5.1456,6.0119 +524288,1.4812,1.7823,8.57498,9.14022 +1048576,2.7046,2.9014,15.7972,15.7757 +2097152,5.9248,7.2446,30.2459,29.3868 +4194304,12.0803,10.8564,57.558,56.448 +8388608,24.0132,21.9505,115.867,110.95 +16777216,44.319,47.5296,236.408,220.194 +33554432,93.1337,87.9637,469.579,442.25 +67108864,173.833,178.376,940.729,885.425 +134217728,349.748,343.863,1885.58,1766.93 +268435456,705.945,703.423,3742.01,3533.57 +16,0.0001,0.0002,1.05062,1.07008 +32,0.0003,0.0003,0.871424,1.0537 +64,0.0005,0.0004,0.98816,0.928768 +128,0.001,0.0008,0.842752,1.15302 +256,0.0016,0.001,0.866304,1.34042 +512,0.002,0.0017,0.741376,1.15405 +1024,0.0029,0.0032,1.01786,1.14483 +2048,0.0066,0.0067,0.974848,1.19706 +4096,0.0112,0.0123,1.39878,0.941056 +8192,0.0208,0.0235,0.948224,0.859136 +16384,0.0631,0.0453,1.0793,1.28922 +32768,0.1041,0.1109,1.29024,1.20013 +65536,0.2174,0.2007,1.92307,2.52723 +131072,0.3363,0.3747,3.10989,3.35667 +262144,0.6972,0.8964,5.97811,5.26848 +524288,1.6194,1.5468,8.56064,8.86682 +1048576,2.6442,2.8933,16.1618,16.7465 +2097152,5.8899,5.8858,29.5608,29.8711 +4194304,11.4259,12.9874,59.223,56.1213 +8388608,21.1752,23.6447,115.707,111.031 +16777216,46.0976,44.7818,231.73,220.986 +33554432,90.5909,88.3879,471.377,444.675 +67108864,171.884,180.085,943.246,888.365 +134217728,347.548,348.425,1871.18,1778.94 +268435456,704.235,700.476,3764.57,3554.62 +16,0.0002,0.0002,1.84013,1.04448 +32,0.0002,0.0002,0.786432,0.995328 +64,0.0003,0.0003,0.898048,1.33427 +128,0.001,0.0007,1.16429,1.00864 +256,0.0016,0.0012,1.03219,1.08646 +512,0.0029,0.0022,0.984064,0.939008 +1024,0.0052,0.0037,0.864256,0.787456 +2048,0.0289,0.0064,0.93184,0.852992 +4096,0.0107,0.0125,0.852992,0.8192 +8192,0.0209,0.0229,1.11411,0.935936 +16384,0.0553,0.0435,1.14483,1.18374 +32768,0.1187,0.1104,1.80326,1.2544 +65536,0.1705,0.1865,1.82784,2.51392 +131072,0.3658,0.4237,2.90406,3.37306 +262144,0.726,0.8171,4.76672,6.29555 +524288,1.3776,1.5302,9.06342,9.95021 +1048576,2.7794,2.9604,16.3215,17.5555 +2097152,5.3395,5.8357,29.5301,30.0534 +4194304,11.0735,12.4103,58.8974,57.5048 +8388608,21.5245,22.3664,116.71,109.811 +16777216,44.5499,45.1582,234.05,221.048 +33554432,88.0702,92.7766,466.349,442.545 +67108864,176.132,174.739,934.026,890.865 +134217728,346.402,348.588,1889.99,1777.51 +268435456,702.756,695.344,3755.06,3557.06 +16,0.0001,0.0002,0.648192,1.17555 +32,0.0002,0.0003,0.672768,1.13766 +64,0.0006,0.0002,0.934912,0.758784 +128,0.0005,0.0005,0.761856,0.77824 +256,0.0008,0.001,0.781312,0.851968 +512,0.0016,0.0021,1.1008,1.28717 +1024,0.0031,0.0034,0.928768,1.46739 +2048,0.0108,0.0063,1.02707,1.04038 +4096,0.0109,0.0115,1.38138,0.985088 +8192,0.0405,0.023,0.920576,1.11206 +16384,0.0605,0.0466,1.14995,1.00557 +32768,0.0839,0.1089,1.31482,1.97018 +65536,0.1788,0.2796,1.72954,2.39514 +131072,0.3593,0.395,3.50925,3.19386 +262144,0.6974,0.9396,5.4231,5.39238 +524288,1.5783,1.5955,8.57293,8.99379 +1048576,2.7766,2.917,16.6257,15.6856 +2097152,6.9115,6.0113,30.5295,30.3524 +4194304,10.9061,12.1766,59.2589,57.0368 +8388608,24.765,22.7108,112.6,110.267 +16777216,45.587,49.187,232.283,221.378 +33554432,87.9968,88.9858,464.319,445.341 +67108864,170.591,177.91,936.6,883.924 +134217728,350.451,346.326,1866,1777.65 +268435456,704.275,696.252,3724.92,3554.44 +16,0.0001,0.0002,0.831488,1.17555 +32,0.0006,0.0003,0.909312,1.2544 +64,0.0006,0.0006,0.830464,1.19808 +128,0.001,0.0007,1.18784,0.881664 +256,0.0016,0.0011,0.940032,0.96768 +512,0.0028,0.0016,0.795648,0.979968 +1024,0.0032,0.0032,0.94208,1.06803 +2048,0.0245,0.0061,1.1223,1.05779 +4096,0.0213,0.0114,0.995328,0.990208 +8192,0.0524,0.0275,0.980992,1.16634 +16384,0.043,0.0484,1.14278,1.13869 +32768,0.0843,0.107,1.34246,1.2544 +65536,0.1687,0.208,2.2999,2.72589 +131072,0.3413,0.3855,3.32288,3.32595 +262144,0.7029,0.9122,5.06778,5.76922 +524288,1.3716,1.801,8.96205,9.984 +1048576,2.8923,2.9367,15.6785,16.1331 +2097152,5.4973,5.9555,29.8179,29.9817 +4194304,12.4048,12.2458,58.6916,57.0327 +8388608,22.6855,28.0363,114.204,111.748 +16777216,42.5056,45.99,235.581,221.454 +33554432,91.4573,87.6313,471.448,442.631 +67108864,171.863,176.13,941.172,888.566 +134217728,347.607,352.201,1880.8,1776.96 +268435456,699.286,700.172,3729.01,3532.69 +16,0.0001,0.0002,0.840704,0.905216 +32,0.0002,0.0002,0.869376,1.04038 +64,0.0003,0.0006,0.976896,1.04038 +128,0.0004,0.0006,0.918528,1.01786 +256,0.0013,0.001,1.13459,0.781312 +512,0.0018,0.0016,0.738304,2.02342 +1024,0.0033,0.0031,1.16122,0.77824 +2048,0.0055,0.0073,1.02912,1.76026 +4096,0.0112,0.012,1.08749,0.85504 +8192,0.0207,0.0221,1.06701,1.16019 +16384,0.0404,0.0452,1.15302,1.18067 +32768,0.0873,0.1089,1.48685,1.6343 +65536,0.1704,0.1863,1.88518,2.67366 +131072,0.3376,0.3746,2.7136,3.44576 +262144,0.6849,0.7351,5.32685,6.41638 +524288,1.3323,1.4731,8.48998,8.98355 +1048576,2.7788,3.0283,16.0758,16.6738 +2097152,5.1421,5.9753,30.2664,30.2244 +4194304,11.1266,11.596,60.8287,56.873 +8388608,22.2664,22.1651,116.485,112.04 +16777216,45.0504,47.2775,233.91,220.87 +33554432,86.3016,94.0061,468.41,448.681 +67108864,185.786,183.147,953.693,886.246 +134217728,364.954,362.039,1868.87,1773.96 +268435456,698.632,697.684,3763.42,3549.01 +16,0.0001,0.0002,0.933888,1.51859 +32,0.0002,0.0002,0.86528,1.08544 +64,0.0004,0.0004,0.918528,0.969728 +128,0.0008,0.0005,0.892864,1.02912 +256,0.0015,0.001,1.0025,1.03526 +512,0.0028,0.0019,0.8704,1.35782 +1024,0.0028,0.003,0.929792,0.796672 +2048,0.0053,0.006,0.809984,1.36909 +4096,0.0107,0.0123,0.850944,1.23085 +8192,0.021,0.0234,0.934912,1.28512 +16384,0.0414,0.0775,1.2247,1.08134 +32768,0.0894,0.1184,1.32096,1.64045 +65536,0.178,0.1883,2.08486,3.03309 +131072,0.5051,0.6683,2.72179,3.38534 +262144,0.6481,1.7728,5.39853,6.37645 +524288,1.4398,1.6209,8.53094,8.73472 +1048576,2.5995,2.9858,16.2417,16.7301 +2097152,5.2765,5.8178,29.6622,30.4087 +4194304,10.7966,12.4518,58.2052,56.6497 +8388608,21.5873,23.8922,115.253,109.244 +16777216,42.9272,45.637,235.208,223.449 +33554432,84.9409,92.2917,467.352,442.131 +67108864,171.115,177.181,933.71,888.775 +134217728,380.22,349.592,1878.85,1774.3 +268435456,698.127,707.379,3746.65,3553.89 +16,0.0001,0.0002,0.649216,0.871424 +32,0.0004,0.0002,0.722944,1.03014 +64,0.0005,0.0004,0.740352,0.787456 +128,0.0009,0.0006,0.989184,0.78336 +256,0.0146,0.0011,0.863232,0.795648 +512,0.0029,0.0018,0.813056,0.93184 +1024,0.0056,0.0036,0.929792,0.835584 +2048,0.0109,0.0068,0.85504,0.792576 +4096,0.0201,0.0128,1.1735,1.34246 +8192,0.0264,0.0248,0.96256,0.86528 +16384,0.0571,0.048,1.12435,1.26259 +32768,0.0871,0.0945,1.41312,1.23904 +65536,0.1776,0.1913,1.72544,3.01875 +131072,0.3479,0.4218,2.78426,4.0663 +262144,0.6925,0.9208,5.1456,5.51219 +524288,2.7075,1.5265,8.49818,9.22624 +1048576,2.618,2.8969,15.9273,16.1157 +2097152,5.6404,5.957,30.5859,30.8961 +4194304,11.5857,12.6147,59.8333,57.3901 +8388608,22.681,23.7434,114.549,111.721 +16777216,43.268,44.7254,230.393,219.395 +33554432,87.9966,88.9881,464.312,442.362 +67108864,174.656,178.626,937.834,894.538 +134217728,349.446,347.977,1888.38,1778.42 +268435456,701.212,701.574,3732.64,3551.81 +16,0.0001,0.0002,0.863232,0.89088 +32,0.0004,0.0003,0.759808,0.859136 +64,0.0003,0.0003,0.775168,1.6343 +128,0.0009,0.0006,1.20525,0.77824 +256,0.001,0.0011,0.74752,0.828416 +512,0.0016,0.0018,0.75264,0.797696 +1024,0.0053,0.003,0.806912,0.782336 +2048,0.0058,0.0064,0.821248,0.791552 +4096,0.0108,0.0116,0.910336,1.4592 +8192,0.0491,0.0368,1.2544,0.917504 +16384,0.0582,0.0668,1.22163,1.26771 +32768,0.1048,0.1427,1.35578,1.35066 +65536,0.1806,0.1862,1.8729,2.7863 +131072,0.3404,0.4602,3.37408,3.46214 +262144,0.6572,0.9069,5.99757,5.08723 +524288,1.4068,1.5036,8.77978,9.25184 +1048576,2.7312,3.0211,16.0328,15.6078 +2097152,5.7274,5.708,30.0001,29.1041 +4194304,11.681,11.0884,57.8755,56.5094 +8388608,21.8862,21.9851,115.664,109.879 +16777216,45.9282,44.78,235.238,223.123 +33554432,89.777,88.4944,471.48,443.329 +67108864,173.554,178.417,940.577,890.516 +134217728,357.127,353.235,1887.46,1775 +268435456,708.858,699.082,3745.91,3545.22 +16,0.0001,0.0002,0.879616,1.15814 +32,0.0003,0.0002,0.874496,1.08134 +64,0.0004,0.0004,0.915456,0.98304 +128,0.0009,0.0005,0.940032,1.06291 +256,0.0016,0.001,1.29536,1.03322 +512,0.0029,0.0017,0.717824,1.0281 +1024,0.0056,0.0033,0.956416,0.979968 +2048,0.0054,0.0058,0.878592,0.83456 +4096,0.0323,0.0116,0.83968,0.812032 +8192,0.023,0.0235,0.909312,1.21242 +16384,0.0576,0.0476,1.33939,1.20525 +32768,0.1062,0.1085,1.84525,1.49299 +65536,0.2667,0.193,2.84672,2.2569 +131072,0.3326,0.4806,3.00954,3.85126 +262144,0.7568,0.9809,4.84659,5.65146 +524288,1.4545,1.5667,8.79411,9.22112 +1048576,2.6332,3.0039,15.8116,18.0613 +2097152,5.4902,5.8083,29.5721,29.6479 +4194304,10.6294,12.0485,58.8401,56.0824 +8388608,22.0102,22.6701,117.98,112.771 +16777216,44.4495,45.4474,233.474,220.941 +33554432,86.3781,91.052,472.106,443.879 +67108864,177.215,178.712,943.885,890.748 +134217728,349.079,357.396,1873.24,1771.5 +268435456,699.75,699.653,3765.76,3550.5 +16,0.0001,0.0002,1.71725,1.03526 +32,0.0004,0.0003,0.97792,0.995328 +64,0.0003,0.0003,0.961536,0.9984 +128,0.0009,0.0005,1.0199,0.999424 +256,0.015,0.0011,1.14586,0.995328 +512,0.0031,0.0018,0.821248,1.7961 +1024,0.0055,0.0032,0.897024,0.985088 +2048,0.0105,0.0063,1.68243,0.786432 +4096,0.0114,0.012,0.841728,0.856064 +8192,0.0241,0.0224,0.918528,1.90464 +16384,0.1061,0.0465,1.06394,1.03629 +32768,0.0864,0.1316,1.39981,1.52474 +65536,0.1773,0.1983,1.71725,3.04538 +131072,0.3309,0.3877,2.816,3.59219 +262144,0.6512,0.838,5.25824,5.56442 +524288,1.5917,1.6062,8.8535,9.61741 +1048576,2.6515,3.1144,15.66,16.2048 +2097152,5.5255,5.752,30.507,30.6412 +4194304,10.8267,11.1527,60.0177,56.7572 +8388608,21.2895,23.9699,115.378,108.573 +16777216,42.5658,44.228,233.924,221.873 +33554432,85.9002,91.6663,467.77,442.773 +67108864,175.934,180.94,935.6,885.335 +134217728,350.842,350.328,1880.27,1773.39 +268435456,700.219,707.733,3738.12,3537.39 +16,0.0001,0.0001,0.780288,0.92672 +32,0.0004,0.0003,0.848896,1.03731 +64,0.0004,0.0005,0.867328,1.0711 +128,0.0008,0.0006,0.841728,1.08336 +256,0.0015,0.0011,0.9216,0.892928 +512,0.0027,0.0017,0.83968,0.799744 +1024,0.0027,0.0029,0.863232,0.782336 +2048,0.0053,0.0059,0.802816,1.07622 +4096,0.0176,0.0113,0.862208,0.903168 +8192,0.0227,0.0247,0.999424,1.42541 +16384,0.0541,0.0543,1.36704,0.979968 +32768,0.0888,0.0955,1.48275,1.17248 +65536,0.1774,0.2013,1.77971,2.27328 +131072,0.3723,0.4526,2.93171,3.23686 +262144,0.7107,0.8644,5.40672,5.70061 +524288,1.3257,1.5878,8.50842,9.85088 +1048576,2.7259,3.0084,16.214,16.7854 +2097152,5.6431,5.9891,29.8435,29.2833 +4194304,11.4821,11.2654,57.5447,56.0701 +8388608,21.9066,22.1302,114.819,109.234 +16777216,46.0031,45.8212,230.082,224.474 +33554432,86.3793,88.3417,464.001,443.171 +67108864,175.863,175.316,935.969,885.889 +134217728,349.328,355.763,1861.6,1776.34 +268435456,698.485,723.299,3748.18,3534.34 +16,0.0001,0.0002,0.995328,1.12845 +32,0.0004,0.0005,1.04346,1.14176 +64,0.0003,0.0003,1.06291,0.917504 +128,0.0008,0.0005,0.937984,0.95744 +256,0.0015,0.001,0.8448,0.940032 +512,0.0015,0.0019,0.87552,1.14995 +1024,0.0038,0.0033,1.0025,0.9728 +2048,0.0057,0.0068,1.20525,1.0967 +4096,0.0226,0.0147,1.02502,1.10182 +8192,0.0207,0.0227,1.11002,1.07315 +16384,0.0418,0.0459,1.31683,1.11309 +32768,0.0828,0.1201,1.44282,1.31072 +65536,0.1654,0.1966,1.82886,2.4791 +131072,0.6594,0.444,2.8631,3.34438 +262144,0.6902,0.8497,5.35757,5.71904 +524288,1.3687,1.8199,8.87091,10.1192 +1048576,2.6149,2.9054,16.1352,17.4264 +2097152,5.7958,5.8577,29.8476,29.952 +4194304,10.6025,11.323,58.3987,56.4142 +8388608,22.2906,22.1448,116.408,111.184 +16777216,44.6106,45.7832,234.467,222.254 +33554432,85.691,90.6043,472.663,443.675 +67108864,175.022,179.238,934.736,883.703 +134217728,355.194,350.342,1886.05,1778.19 +268435456,704.34,710.16,3736.23,3541.67 +16,0.0001,0.0002,1.08544,0.989184 +32,0.0003,0.0002,0.864256,1.06598 +64,0.0005,0.0004,1.18682,0.987136 +128,0.0009,0.0005,0.894976,1.08851 +256,0.0014,0.0009,0.873472,1.05165 +512,0.0025,0.0015,0.955392,1.33837 +1024,0.0029,0.0032,0.758784,0.77824 +2048,0.0051,0.0062,1.28922,0.791552 +4096,0.0336,0.0118,0.969728,0.917504 +8192,0.0202,0.0234,1.03629,0.90624 +16384,0.0431,0.0545,1.07725,1.0496 +32768,0.0872,0.1298,1.35782,1.63635 +65536,0.168,0.187,1.93331,2.97267 +131072,0.3426,0.4208,3.43142,3.83795 +262144,0.6722,0.7483,5.37293,5.56442 +524288,1.6511,1.5977,9.50067,9.06957 +1048576,2.8469,3.0086,15.7286,16.343 +2097152,5.4252,5.7725,30.6135,30.166 +4194304,10.6545,13.4253,58.7438,55.9708 +8388608,21.1074,23.4173,115.446,109.77 +16777216,45.2375,44.9282,234.486,220.928 +33554432,86.0075,91.5471,470.607,443.872 +67108864,172.536,175.673,943.738,886.741 +134217728,352.014,352.734,1874.18,1769.98 +268435456,697.052,703.575,3762.46,3544.94 +16,0.0002,0.0002,0.718848,0.959488 +32,0.0005,0.0003,0.740352,0.83456 +64,0.0003,0.0004,0.745472,1.03117 +128,0.0005,0.0006,0.774144,0.828416 +256,0.0008,0.0009,0.78848,1.4551 +512,0.0014,0.0016,0.746496,0.772096 +1024,0.0048,0.0029,0.941056,1.22163 +2048,0.0073,0.0058,0.848896,0.787456 +4096,0.0107,0.0129,1.21446,0.821248 +8192,0.0348,0.042,1.01069,1.29434 +16384,0.0431,0.0625,1.42438,1.25338 +32768,0.1321,0.0971,1.52269,1.59642 +65536,0.1741,0.2429,1.96301,3.43859 +131072,0.344,0.3626,3.28294,3.71917 +262144,0.6909,0.8894,5.24698,6.3785 +524288,1.3915,1.4458,8.47155,9.23546 +1048576,2.9876,2.9906,16.7578,17.0168 +2097152,5.2655,5.8632,30.3073,29.5772 +4194304,10.9058,12.4781,58.0925,56.3384 +8388608,21.4742,23.454,117.803,112.171 +16777216,48.1003,43.6482,232.125,221.673 +33554432,85.7283,92.4688,469.018,444.875 +67108864,174.281,177.671,930.703,884.904 +134217728,353.5,354.069,1878.57,1773.36 +268435456,704.112,696.738,3745.27,3540.36 +16,0.0001,0.0002,0.946176,0.871424 +32,0.0004,0.0002,0.804864,1.03117 +64,0.0006,0.0004,0.886784,1.05882 +128,0.0009,0.0007,0.897024,1.00762 +256,0.001,0.0009,1.68346,1.31174 +512,0.0019,0.0019,1.06291,0.949248 +1024,0.0031,0.0034,1.18272,1.01581 +2048,0.0065,0.0067,0.887808,0.807936 +4096,0.0109,0.0325,0.917504,1.04243 +8192,0.0221,0.0252,0.91136,1.01683 +16384,0.0432,0.0451,1.06701,1.59744 +32768,0.0848,0.1094,1.39571,1.17658 +65536,0.1788,0.1973,1.82272,2.47091 +131072,0.4989,0.4048,2.7392,3.64134 +262144,0.7757,0.8794,5.0432,6.01088 +524288,1.4458,1.6905,8.58522,9.47302 +1048576,2.6784,3.0138,17.5104,16.4209 +2097152,5.2871,5.9683,31.0999,29.356 +4194304,11.2392,11.5458,58.709,55.5479 +8388608,20.8303,23.2905,113.335,110.284 +16777216,44.2938,44.275,230.502,220.902 +33554432,85.4026,91.0899,464.887,443.606 +67108864,174.064,179.702,936.96,887.082 +134217728,352.474,352.733,1867.75,1774.75 +268435456,704.818,701.803,3727.99,3542.85 +16,0.0002,0.0002,0.720896,0.95232 +32,0.0005,0.0003,0.749568,0.837632 +64,0.0003,0.0005,0.740352,0.86528 +128,0.0008,0.0006,0.7168,0.758784 +256,0.0014,0.001,0.81408,1.19296 +512,0.002,0.0016,0.744448,0.787456 +1024,0.0028,0.0032,0.828416,2.09306 +2048,0.0071,0.0063,1.26976,0.794624 +4096,0.0111,0.0128,0.960512,0.878592 +8192,0.0215,0.0288,1.21034,0.85504 +16384,0.0448,0.0464,1.47558,0.990208 +32768,0.088,0.0954,1.33325,1.88109 +65536,0.172,0.1998,1.76435,2.45453 +131072,0.3423,0.3886,2.83955,3.67206 +262144,0.6999,0.9152,5.87469,5.53165 +524288,1.2939,1.6402,9.10746,9.1136 +1048576,2.6937,2.9492,16.2263,16.8428 +2097152,5.4599,6.0133,30.6493,29.694 +4194304,10.6196,11.6692,57.1023,56.2596 +8388608,21.3847,24.0232,116.488,108.94 +16777216,46.8651,44.8382,236.217,221.092 +33554432,85.2546,90.7799,470.385,441.129 +67108864,175.41,177.88,941.828,887.699 +134217728,353.388,350.317,1879.06,1772.2 +268435456,705.359,697.939,3732.8,3549.53 +16,0.0001,0.0002,0.66048,1.11309 +32,0.0002,0.0003,0.883712,0.973824 +64,0.0005,0.0004,0.781312,0.886784 +128,0.0009,0.0005,1.0455,1.01376 +256,0.0009,0.001,0.838656,0.909312 +512,0.0029,0.0016,0.914432,0.904192 +1024,0.0027,0.0031,0.968704,0.930816 +2048,0.0054,0.0058,0.971776,0.9472 +4096,0.0107,0.0308,1.86266,1.00966 +8192,0.0247,0.0271,1.18374,1.06086 +16384,0.0409,0.0595,1.25645,1.19603 +32768,0.1572,0.103,1.51142,1.94458 +65536,0.1739,0.24,2.0224,2.29171 +131072,0.4716,0.3956,3.23789,3.56966 +262144,0.7384,0.8842,5.47942,5.4999 +524288,1.3065,1.7636,8.97741,9.40544 +1048576,2.6951,3.0638,15.9416,16.8909 +2097152,5.3498,5.6796,30.1455,29.0007 +4194304,10.9418,12.6395,58.3844,55.8602 +8388608,21.1254,23.1501,117.873,110.323 +16777216,47.0937,45.4258,233.564,220.731 +33554432,85.6237,88.7791,474.811,447.797 +67108864,170.498,175.437,944.226,888.333 +134217728,352.365,350.883,1876.26,1773.79 +268435456,700.088,704.486,3757.03,3539.98 +16,0.0001,0.0002,0.841728,1.08442 +32,0.0005,0.0002,0.802816,0.961536 +64,0.0002,0.0003,0.908288,0.920576 +128,0.0009,0.0006,0.801792,1.05267 +256,0.0014,0.0012,1.16224,1.19808 +512,0.0026,0.002,0.920576,1.08851 +1024,0.0053,0.0032,1.11821,1.98246 +2048,0.0093,0.006,1.0025,0.797696 +4096,0.0108,0.0113,0.868352,0.818176 +8192,0.0227,0.0233,1.5319,1.25133 +16384,0.0754,0.0786,1.16531,1.152 +32768,0.0858,0.1649,1.34554,1.40186 +65536,0.1687,0.2054,2.37466,2.64909 +131072,0.3408,0.4954,3.52563,3.47648 +262144,0.703,0.8779,4.84659,5.5081 +524288,1.3549,1.5678,8.41216,8.99584 +1048576,3.1548,3.0435,15.9724,16.6103 +2097152,5.2919,6.1005,29.9704,29.6161 +4194304,10.8271,11.5524,58.2943,59.9071 +8388608,20.5866,23.6811,114.843,112.266 +16777216,43.9057,44.4962,231.187,220.165 +33554432,87.1507,89.0159,471.015,441.044 +67108864,176.251,177.516,939.542,895.649 +134217728,351.027,347.737,1878.85,1771.85 +268435456,701.519,703.458,3748.34,3544.44 +16,0.0001,0.0002,1.28307,1.07315 +32,0.0003,0.0005,0.879616,0.795648 +64,0.0005,0.0004,0.69632,1.17043 +128,0.0143,0.0005,1.0455,0.790528 +256,0.0008,0.0011,0.744448,0.794624 +512,0.0021,0.0015,1.7449,0.774144 +1024,0.0187,0.0033,0.753664,0.770048 +2048,0.0055,0.0059,0.982016,0.82944 +4096,0.02,0.0118,0.899072,0.83456 +8192,0.048,0.0233,1.46944,0.871424 +16384,0.0419,0.0471,1.10387,1.06189 +32768,0.0836,0.144,1.69677,1.30662 +65536,0.1704,0.185,1.88314,2.74534 +131072,0.4321,0.3751,3.28397,3.30752 +262144,0.6716,0.8304,5.17222,5.38829 +524288,1.4215,2.0945,9.13408,10.8503 +1048576,2.6703,3.0591,16.5396,16.5007 +2097152,5.307,6.2642,29.7155,28.886 +4194304,13.3021,11.237,57.7884,55.9227 +8388608,22.7729,23.7597,114.998,109.688 +16777216,44.0914,49.4265,231.955,221.444 +33554432,89.4414,88.7111,462.702,442.812 +67108864,173.668,178.444,939.082,885.897 +134217728,351.713,350.311,1873.47,1773.64 +268435456,703.771,705.273,3732.25,3536.26 +16,0.0001,0.0001,0.714752,1.05267 +32,0.0004,0.0002,1.07418,0.899072 +64,0.0002,0.0003,0.80384,0.898048 +128,0.0004,0.0006,0.722944,0.776192 +256,0.0016,0.0011,1.4377,0.831488 +512,0.0029,0.0018,0.740352,0.792576 +1024,0.0083,0.0032,0.920576,0.930816 +2048,0.0084,0.006,0.893952,1.17658 +4096,0.0195,0.0123,0.966656,1.3353 +8192,0.0217,0.0244,1.21344,2.33779 +16384,0.0429,0.0466,1.08646,1.08954 +32768,0.0887,0.1048,1.71418,1.42438 +65536,0.1814,0.2051,1.88621,2.98496 +131072,0.3444,0.3807,2.7095,3.31571 +262144,0.6869,0.8745,5.46611,5.47021 +524288,1.7123,1.5778,8.22374,8.90266 +1048576,2.6708,2.9417,15.7614,16.3891 +2097152,5.2299,7.3399,29.8435,29.7441 +4194304,12.2155,11.5123,57.8058,56.5279 +8388608,24.6636,24.5728,115.676,109.785 +16777216,42.5757,49.3065,235.234,222.225 +33554432,88.5964,88.0146,471.652,442.769 +67108864,175.743,179.73,937.299,883.315 +134217728,351.119,348.992,1887.29,1773.87 +268435456,713.69,697.639,3734.08,3545.95 +16,0.0164,0.0001,0.828416,1.12333 +32,0.0004,0.0003,0.900096,1.03936 +64,0.0004,0.0006,0.684032,0.771072 +128,0.0008,0.0005,0.941056,0.807936 +256,0.0013,0.0011,0.734208,0.920576 +512,0.0028,0.0016,0.864256,0.838656 +1024,0.0053,0.0036,1.10182,1.27283 +2048,0.006,0.0065,1.23187,0.802816 +4096,0.0118,0.0123,1.1223,1.50323 +8192,0.033,0.0286,1.05574,0.904192 +16384,0.0425,0.047,1.93434,0.985088 +32768,0.0835,0.1097,1.29536,1.22778 +65536,0.1719,0.2003,1.72646,2.27533 +131072,0.4691,0.3921,3.05766,3.97926 +262144,0.8075,0.7683,4.77286,5.58899 +524288,1.4266,1.6024,8.94464,10.3475 +1048576,2.6639,3.0138,15.7645,16.6595 +2097152,5.7053,5.833,30.1681,29.5178 +4194304,11.1607,11.4598,58.3977,57.8038 +8388608,21.0557,22.8168,114.877,109.398 +16777216,46.3328,46.3738,237.275,221.256 +33554432,85.528,89.4309,469.209,444.637 +67108864,174.924,175.108,938.074,881.39 +134217728,349.031,353.938,1878.28,1767.43 +268435456,698.31,702.573,3763.14,3534.49 +16,0.0002,0.0002,1.32915,0.999424 +32,0.0002,0.0001,0.87552,1.23085 +64,0.0003,0.0003,1.10182,1.05165 +128,0.0006,0.0005,0.892928,1.08442 +256,0.0015,0.0011,0.900096,0.94208 +512,0.0028,0.0016,0.909312,1.20934 +1024,0.005,0.0035,0.925696,1.06496 +2048,0.0055,0.0062,1.36602,1.03629 +4096,0.0119,0.0148,1.1264,1.10285 +8192,0.021,0.0267,0.955392,0.913408 +16384,0.0622,0.0469,1.12947,1.06803 +32768,0.091,0.1104,1.29638,1.31174 +65536,0.173,0.2321,1.69574,2.27021 +131072,0.3342,0.4252,2.98803,4.48211 +262144,0.7082,0.8217,4.69504,5.23059 +524288,1.358,1.6603,9.76691,8.68147 +1048576,2.6104,3.0548,16.6963,16.1065 +2097152,5.5767,5.7139,30.2909,29.9725 +4194304,10.7427,11.2261,58.8913,55.7947 +8388608,21.1969,24.4349,121.001,109.329 +16777216,46.4821,45.1457,232.208,220.647 +33554432,86.6729,90.788,468.433,444.699 +67108864,170.812,175.276,938.404,889.642 +134217728,349.427,349.828,1874.06,1770.12 +268435456,707.097,707.316,3746.7,3536.41 +16,0.0002,0.0003,0.878592,1.08851 +32,0.0002,0.0002,0.866304,0.970752 +64,0.0004,0.0003,1.12333,1.00454 +128,0.0005,0.0005,0.96768,0.95232 +256,0.0016,0.0011,0.731136,1.21754 +512,0.0015,0.0018,1.85139,1.01376 +1024,0.005,0.0029,0.935936,1.03629 +2048,0.0055,0.0059,0.795648,1.59232 +4096,0.0112,0.0116,1.04755,1.03936 +8192,0.0223,0.0234,1.00557,0.98816 +16384,0.0419,0.0448,1.37728,1.23802 +32768,0.0837,0.0959,1.5616,1.39571 +65536,0.1815,0.1872,1.83296,2.79757 +131072,0.3292,0.3714,2.9225,3.77958 +262144,0.6802,0.934,4.84147,5.96992 +524288,1.4445,1.6955,8.80026,9.22624 +1048576,2.896,2.8847,16.3471,15.7686 +2097152,5.2725,6.0394,29.9663,30.7876 +4194304,10.7029,11.595,58.4141,56.0159 +8388608,21.2664,24.0679,117.986,109.614 +16777216,43.8605,44.6281,233.266,218.981 +33554432,84.0786,90.0335,466.438,444.183 +67108864,174.146,176.738,939.48,883.841 +134217728,346.784,348.484,1863.81,1776.23 +268435456,709.063,698.513,3741.44,3560.45 +16,0.0001,0.0002,0.729088,1.4295 +32,0.0006,0.0003,1.85651,0.9216 +64,0.0004,0.0004,1.2329,1.16531 +128,0.0006,0.0007,1.08339,0.770048 +256,0.0016,0.0011,0.735232,0.786432 +512,0.0031,0.0018,0.751616,0.77312 +1024,0.0031,0.0032,0.77312,0.882688 +2048,0.0103,0.006,0.874496,0.864256 +4096,0.0124,0.0117,1.00762,0.978944 +8192,0.0209,0.0241,1.024,1.26157 +16384,0.0878,0.0473,1.19501,1.00147 +32768,0.0847,0.1101,1.408,1.17555 +65536,0.1694,0.2222,1.76333,2.45453 +131072,0.3351,0.3969,3.72429,3.25222 +262144,0.6923,0.8708,4.81485,5.49376 +524288,1.3049,1.7636,9.18733,9.37267 +1048576,2.6803,2.9192,15.618,16.2959 +2097152,5.383,5.9581,30.6995,29.0427 +4194304,11.8313,12.5366,58.2042,55.4066 +8388608,22.9676,24.7304,113.663,109.892 +16777216,43.7907,47.0556,236.342,218.613 +33554432,89.1462,88.3422,470.255,444.223 +67108864,177.879,178.015,936.094,883.891 +134217728,351.456,352.953,1886.11,1773.15 +268435456,702.461,703.679,3739,3535.43 +16,0.0001,0.0002,0.868352,0.955392 +32,0.0003,0.0006,0.946176,1.21754 +64,0.0006,0.0003,0.87552,1.01069 +128,0.0004,0.0006,1.06189,1.40083 +256,0.0008,0.0013,0.928768,1.06598 +512,0.002,0.0018,1.02605,1.25338 +1024,0.0215,0.0031,0.982016,0.87552 +2048,0.0101,0.0062,1.10387,1.30048 +4096,0.0193,0.0119,1.07315,0.937984 +8192,0.0789,0.0542,1.20832,1.05574 +16384,0.0937,0.0464,1.1735,1.17043 +32768,0.0842,0.1236,1.42643,1.6087 +65536,0.1796,0.2031,1.72032,2.52416 +131072,0.3588,0.4703,2.75661,3.65261 +262144,0.6762,0.8628,5.32173,5.71085 +524288,1.395,1.5524,8.43878,9.8519 +1048576,2.6687,3.314,16.47,15.9212 +2097152,5.3089,7.3118,31.231,29.4799 +4194304,10.4355,11.5582,59.1247,56.8617 +8388608,22.203,22.107,112.886,110.909 +16777216,42.7095,44.9727,234.684,220.475 +33554432,86.2585,93.3107,474.32,445.386 +67108864,175.737,176.314,946.712,898.761 +134217728,342.322,351.198,1873.85,1769.12 +268435456,707.67,697.964,3753.57,3536.58 +16,0.0001,0.0002,0.959488,1.10285 +32,0.0003,0.0002,1.09978,0.96768 +64,0.0005,0.0004,1.17146,1.21037 +128,0.0008,0.0005,0.940032,0.994304 +256,0.0016,0.001,0.935936,0.954368 +512,0.003,0.0017,0.87552,0.791552 +1024,0.0049,0.0031,0.797696,0.804864 +2048,0.0297,0.0057,1.13664,1.26362 +4096,0.0139,0.028,1.16736,0.970752 +8192,0.0208,0.0226,1.31891,0.889856 +16384,0.0609,0.0461,1.29229,0.984064 +32768,0.1781,0.1621,1.50221,1.2329 +65536,0.1725,0.1983,1.77766,2.45146 +131072,0.3481,0.4319,2.92762,3.25427 +262144,0.6884,0.853,5.11181,6.26381 +524288,1.411,1.5803,8.59443,9.01325 +1048576,2.8144,2.931,16.2755,15.958 +2097152,5.4253,6.2913,30.2766,29.3171 +4194304,10.3794,11.8673,58.6189,56.5033 +8388608,24.4788,22.7847,117.096,111.556 +16777216,43.043,44.313,232.28,222.222 +33554432,85.9505,91.1145,471.37,443.843 +67108864,176.758,180.555,942.013,884.929 +134217728,346.299,353.414,1876.44,1774.78 +268435456,703.865,699.114,3750.31,3548.52 +16,0.0001,0.0002,0.708608,1.77152 +32,0.0002,0.0006,0.868352,1.30867 +64,0.0003,0.0004,0.88576,1.24416 +128,0.0009,0.0006,0.9728,0.892928 +256,0.0012,0.001,0.804864,1.52166 +512,0.0021,0.0016,0.8192,0.811008 +1024,0.0236,0.0029,0.769024,1.00966 +2048,0.0054,0.006,1.03936,0.86528 +4096,0.0103,0.0116,0.854016,0.9472 +8192,0.0214,0.0236,1.10797,0.974848 +16384,0.0422,0.0456,1.0752,1.01786 +32768,0.0846,0.1118,1.54317,1.21958 +65536,0.173,0.2155,2.98189,2.34906 +131072,0.3336,0.3927,3.65568,3.88198 +262144,0.7211,0.8799,5.34528,5.98733 +524288,1.6876,1.5722,8.68454,9.55392 +1048576,2.6408,3.0161,15.6723,15.916 +2097152,5.3873,6.5343,29.8281,29.8383 +4194304,10.5054,11.0758,59.4104,57.7362 +8388608,21.1817,23.5676,116.072,110.898 +16777216,44.2905,44.5698,231.705,221.114 +33554432,85.943,93.2397,465.101,443.262 +67108864,173.673,178.331,940.293,884.385 +134217728,350.476,350.661,1869.77,1775.81 +268435456,700.164,698.743,3739.22,3540.36 +16,0.0001,0.0002,1.21139,0.887808 +32,0.0001,0.0003,0.746496,0.836608 +64,0.0003,0.0003,0.877568,0.994304 +128,0.0005,0.0006,0.881664,0.934912 +256,0.0008,0.0011,0.920576,1.29741 +512,0.0027,0.0017,0.980992,1.0793 +1024,0.0039,0.0032,0.843776,0.797696 +2048,0.0291,0.0062,0.828416,0.80896 +4096,0.0109,0.012,1.55136,0.809984 +8192,0.0215,0.0234,0.923648,0.900096 +16384,0.0568,0.046,1.11718,1.82784 +32768,0.0832,0.111,1.29229,1.38957 +65536,0.1815,0.2309,1.93229,2.68493 +131072,0.3453,0.3759,2.8713,3.44269 +262144,0.687,1.0365,5.78867,5.70778 +524288,1.3256,1.5848,9.37882,9.34502 +1048576,3.4575,2.9803,16.1495,17.0844 +2097152,5.227,6.0406,30.0728,29.3724 +4194304,11.2147,13.5789,57.4935,55.8909 +8388608,21.104,23.317,115.66,108.157 +16777216,42.9064,43.5921,235.25,220.31 +33554432,86.8779,88.2691,473.082,442.342 +67108864,175.59,178.461,938.91,887.932 +134217728,344.415,349.612,1885.06,1778.59 +268435456,700.232,696.33,4396.55,3603.08 +16,0.0001,0.0003,0.949248,1.21446 +32,0.0002,0.0002,0.79872,1.01069 +64,0.0003,0.0003,1.0711,1.02707 +128,0.0004,0.0008,0.857088,0.863232 +256,0.0008,0.0009,1.02093,1.59949 +512,0.0017,0.0016,0.83968,0.831488 +1024,0.0027,0.0036,1.2841,0.77824 +2048,0.0266,0.0057,0.81408,0.904192 +4096,0.0208,0.0118,1.29843,1.0025 +8192,0.0235,0.0234,0.953344,1.03936 +16384,0.0564,0.0593,1.25949,1.08749 +32768,0.0898,0.0895,1.78278,1.28717 +65536,0.1778,0.2945,2.05312,2.92659 +131072,0.3507,0.3744,3.04435,3.48262 +262144,0.7186,0.8395,5.18554,5.42413 +524288,1.3552,1.5894,9.10336,9.20474 +1048576,2.6385,3.0866,16.3226,16.428 +2097152,5.2903,6.0682,37.3985,32.5458 +4194304,10.6927,11.815,59.3582,67.6045 +8388608,22.6672,23.02,135.122,108.562 +16777216,46.1108,46.8495,241.24,225.119 +33554432,85.0503,91.0357,475.632,454.894 +67108864,191.271,190.869,978.084,898.64 +134217728,369.516,368.655,1885.73,1792.91 +268435456,716.176,707.166,3844.28,3582.44 +16,0.0002,0.0003,0.910336,1.00147 +32,0.0005,0.0003,0.848896,1.00966 +64,0.0003,0.0003,1.39469,1.09158 +128,0.0005,0.0005,0.925696,1.15302 +256,0.0015,0.0174,1.27898,1.40186 +512,0.0026,0.0016,1.08954,0.804864 +1024,0.0029,0.003,0.867328,0.861184 +2048,0.0095,0.0062,0.88064,0.932864 +4096,0.0131,0.0112,0.857088,1.14893 +8192,0.0443,0.0238,0.91136,0.930816 +16384,0.0418,0.044,1.26669,1.01171 +32768,0.082,0.1097,1.66298,1.34963 +65536,0.1713,0.2141,2.20262,2.58355 +131072,0.5232,0.4515,3.10784,3.28602 +262144,0.7814,0.9899,5.00326,5.2736 +524288,1.3401,1.6301,8.41523,9.39315 +1048576,2.6983,3.3587,16.5233,16.9185 +2097152,5.2171,5.8473,31.3426,29.3827 +4194304,10.7075,11.8018,58.581,56.3333 +8388608,21.6251,24.9649,115.78,111.567 +16777216,43.9719,49.8613,235.582,223.969 +33554432,91.0978,88.5712,472.408,451.887 +67108864,178.642,175.427,948.15,892.854 +134217728,355.734,361.461,1890.94,1786.12 +268435456,740.628,741.901,3763.14,3566.78 +16,0.0002,0.0002,0.84992,1.03731 +32,0.0003,0.0003,0.830464,1.08851 +64,0.0003,0.0005,0.789504,1.03936 +128,0.0007,0.0008,0.856064,1.01376 +256,0.0018,0.0011,0.846848,1.11411 +512,0.0029,0.0019,0.897024,1.00762 +1024,0.0028,0.0032,0.9984,1.03424 +2048,0.0056,0.0064,1.04448,1.08339 +4096,0.0107,0.0116,1.04346,1.45715 +8192,0.0221,0.0263,1.0752,1.06394 +16384,0.0605,0.0468,1.43974,1.54112 +32768,0.1002,0.1125,1.37114,1.18682 +65536,0.1646,0.2514,1.79098,2.59174 +131072,0.3547,0.4523,3.35053,3.69766 +262144,0.6471,0.8845,5.08006,5.54701 +524288,1.3482,2.1698,8.56371,8.9856 +1048576,2.6135,3.0946,16.2365,15.8863 +2097152,7.2024,6.8354,30.7517,29.9653 +4194304,11.8227,11.7752,60.7252,56.9825 +8388608,24.1999,24.8787,116.346,112.372 +16777216,46.4314,45.6448,232.614,232.3 +33554432,83.9867,92.5079,465.392,452.856 +67108864,185.945,183.811,951.25,892.789 +134217728,383.485,373.281,1876.88,1793.12 +268435456,744.263,733.446,3807.58,3555.42 +16,0.0002,0.0002,0.692224,0.818176 +32,0.0002,0.0002,1.39366,0.903168 +64,0.0005,0.0004,0.974848,1.43258 +128,0.0006,0.0005,0.863232,1.22061 +256,0.0007,0.001,1.41005,0.766976 +512,0.0016,0.0017,0.807936,1.35373 +1024,0.0033,0.0031,0.845824,0.840704 +2048,0.0245,0.0063,1.34554,0.796672 +4096,0.0112,0.0119,0.937984,0.96256 +8192,0.0222,0.0377,0.912384,1.51866 +16384,0.0467,0.048,1.68032,1.52986 +32768,0.0852,0.1092,1.37523,1.25542 +65536,0.1908,0.2309,2.30912,2.7689 +131072,0.3593,0.5174,2.98906,3.65773 +262144,0.6683,0.9001,5.55315,5.56339 +524288,1.3318,1.5163,8.6016,9.02144 +1048576,2.7299,3.9506,15.7266,16.94 +2097152,5.3239,6.0254,31.4849,29.8619 +4194304,10.4438,11.3557,58.1837,56.193 +8388608,21.9451,23.0287,117.005,109.9 +16777216,46.2893,45.0412,233.969,220.294 +33554432,86.3175,92.6062,468.331,446.129 +67108864,174.958,189.463,951.943,887.13 +134217728,368.314,365.473,1931.13,1793.7 +268435456,750.606,737.714,3769.99,3551.85 +16,0.0001,0.0002,0.9728,0.828416 +32,0.0002,0.0002,0.717824,0.766976 +64,0.0004,0.0006,0.78336,0.823296 +128,0.0006,0.0006,0.771072,0.809984 +256,0.0016,0.001,0.89088,0.835584 +512,0.0016,0.0018,0.799744,1.34349 +1024,0.0029,0.0031,0.827392,0.809984 +2048,0.0054,0.0105,1.01581,0.794624 +4096,0.0231,0.0118,0.903168,0.8448 +8192,0.0219,0.0238,1.0281,0.874496 +16384,0.056,0.047,1.11718,1.11206 +32768,0.0826,0.0935,1.29126,1.28307 +65536,0.2223,0.2314,1.68755,2.46067 +131072,0.3599,0.4407,3.06893,3.79904 +262144,1.0599,0.8898,5.10157,5.56237 +524288,1.4622,2.0694,8.9856,9.06957 +1048576,2.6387,3.1484,16.1505,15.9365 +2097152,6.4564,5.732,30.2961,30.5592 +4194304,10.7296,11.4505,57.7434,55.3789 +8388608,22.4162,23.095,115.594,109.825 +16777216,47.0075,46.7376,239.502,220.423 +33554432,88.527,92.8298,471.31,440.515 +67108864,171.022,179.678,940.627,882.406 +134217728,347.354,351.04,1892.85,1788.01 +268435456,721.039,723.637,3812.75,3595.58 +16,0.0002,0.0002,0.750592,0.925696 +32,0.0003,0.0002,0.804864,1.0711 +64,0.0003,0.0003,0.871424,1.37728 +128,0.0006,0.0006,0.80384,1.05062 +256,0.0013,0.001,0.959488,0.996352 +512,0.0024,0.0015,0.867328,1.07622 +1024,0.0049,0.0035,1.26771,1.06189 +2048,0.0095,0.0058,1.04141,1.04038 +4096,0.1791,0.0115,1.15917,1.26874 +8192,0.0584,0.0408,1.27488,1.82067 +16384,0.0754,0.0787,1.21856,1.1008 +32768,0.1057,0.1718,1.31277,1.21754 +65536,0.165,0.1888,1.93536,2.82317 +131072,0.3362,0.4398,3.05152,3.53997 +262144,0.8445,0.8689,5.36474,6.72563 +524288,1.3519,1.8787,8.9856,9.15456 +1048576,2.9072,3.104,15.5924,15.4552 +2097152,7.2401,5.8927,29.1482,28.9434 +4194304,11.1294,11.9823,60.9147,59.8641 +8388608,23.2812,22.3335,116.106,116.614 +16777216,45.3039,45.0468,229.259,227.822 +33554432,89.5576,93.5437,469.363,452.384 +67108864,185.203,179.027,957.157,889.943 +134217728,369.254,383.949,1891.72,1819.45 +268435456,736.034,715.914,3795.23,3566.87 +16,0.0001,0.0003,0.879616,1.02502 +32,0.0002,0.0002,0.726016,0.944128 +64,0.0003,0.0003,0.74752,1.2073 +128,0.014,0.0006,0.91136,0.973824 +256,0.001,0.0011,0.751616,1.32608 +512,0.0016,0.0022,0.914432,1.10896 +1024,0.0242,0.004,1.26669,0.995328 +2048,0.0067,0.0075,0.856064,1.16634 +4096,0.0197,0.0255,1.05165,0.932864 +8192,0.0214,0.0225,1.02502,0.985088 +16384,0.0688,0.0586,1.21856,1.39776 +32768,0.083,0.0933,1.42541,1.34451 +65536,0.1723,0.193,1.80429,2.57536 +131072,0.3474,0.482,3.16211,3.61062 +262144,0.6769,0.9241,4.95923,5.72928 +524288,1.3505,1.6988,8.45312,9.52115 +1048576,2.7724,4.1594,15.614,16.129 +2097152,5.8294,5.9438,29.9766,29.4666 +4194304,10.9456,11.6612,61.9459,55.5366 +8388608,22.2763,24.5737,114.3,110.68 +16777216,48.7276,44.826,249.142,226.191 +33554432,92.6623,97.5941,472.394,457.048 +67108864,176.209,179.95,946.636,894.687 +134217728,356.808,358.837,1888.29,1776.44 +268435456,706.225,718.63,3770.85,3584.62 +16,0.0002,0.0002,0.919552,0.898048 +32,0.0003,0.0002,0.72192,1.11718 +64,0.0004,0.0003,1.13254,1.4592 +128,0.0008,0.0005,0.99328,1.0793 +256,0.0009,0.001,1.35987,0.991232 +512,0.0026,0.0016,1.12333,1.01376 +1024,0.0049,0.005,0.871424,1.06496 +2048,0.0055,0.0059,0.951296,0.961536 +4096,0.0114,0.0116,0.96256,1.17965 +8192,0.0534,0.0235,1.08544,1.32608 +16384,0.0457,0.0562,1.2544,1.17146 +32768,0.1342,0.1246,1.46637,1.63635 +65536,0.1695,0.2516,2.11763,2.96755 +131072,0.3408,0.505,3.04435,4.25062 +262144,0.6867,0.8793,5.2439,5.27053 +524288,1.3535,1.518,9.01837,9.06342 +1048576,2.662,3.0444,17.1284,16.7926 +2097152,5.5299,6.2455,29.6919,29.0601 +4194304,10.9316,14.0454,57.0644,55.6861 +8388608,22.0226,24.8925,114.156,110.344 +16777216,43.1261,48.1358,244.982,230.253 +33554432,88.9781,91.2609,472.05,450.364 +67108864,178.021,180.784,937.596,891.337 +134217728,347.914,356.646,1883.64,1781.72 +268435456,693.804,706.507,3739.89,3542.19 +16,0.0001,0.0002,0.712704,0.84992 +32,0.0003,0.0002,0.740352,0.831488 +64,0.0004,0.0004,0.741376,0.825344 +128,0.0007,0.0005,0.765952,0.790528 +256,0.0008,0.0009,0.733184,0.781312 +512,0.0026,0.0015,0.745472,0.756736 +1024,0.0053,0.0032,0.781312,0.805888 +2048,0.0096,0.0057,0.809984,0.872448 +4096,0.0104,0.0111,0.846848,1.04141 +8192,0.0226,0.0229,0.994304,1.05267 +16384,0.0681,0.0445,1.08339,1.03526 +32768,0.1231,0.0956,1.57798,1.23904 +65536,0.1888,0.2079,1.97939,2.65626 +131072,0.3433,0.54,2.80883,3.23789 +262144,0.6702,0.7505,5.28589,5.68525 +524288,1.343,1.5573,9.15866,9.12896 +1048576,2.7128,3.0017,15.5085,15.4245 +2097152,5.7421,5.6114,29.4359,29.5322 +4194304,11.4643,11.5027,58.0526,56.6569 +8388608,21.0198,23.6533,114.576,112.658 +16777216,45.072,46.6837,234.25,219.957 +33554432,85.2218,88.9079,471.615,441.621 +67108864,175.051,178.321,942.649,893.935 +134217728,351.525,359.131,1872.1,1773.66 +268435456,690.183,708.749,3762.24,3541.03 +16,0.0002,0.0002,1.57082,0.969728 +32,0.0001,0.0002,0.93184,1.07827 +64,0.0004,0.0004,0.994304,1.1223 +128,0.0009,0.0006,0.828416,0.940032 +256,0.0012,0.0011,0.863232,0.948224 +512,0.0022,0.004,0.820224,1.0025 +1024,0.0164,0.0033,1.27693,1.01888 +2048,0.0061,0.0067,0.971776,1.06394 +4096,0.0115,0.0118,0.837632,1.12435 +8192,0.0342,0.0375,1.16531,1.06598 +16384,0.0423,0.0456,1.16941,1.44179 +32768,0.0886,0.0909,1.55546,1.64864 +65536,0.1712,0.2171,1.92717,2.48627 +131072,0.3873,0.3772,3.06483,3.91475 +262144,0.6632,0.7851,5.5337,5.17018 +524288,1.3593,1.6027,8.49101,9.9072 +1048576,2.7161,2.9423,17.3025,16.9779 +2097152,6.6871,7.0642,29.5987,29.5444 +4194304,10.7791,11.6966,58.5626,55.3267 +8388608,21.6848,22.5445,116.174,112.329 +16777216,43.0374,46.087,231.52,219.94 +33554432,87.0853,91.2358,469.637,440.995 +67108864,177.783,177.71,936.03,885.3 +134217728,356.385,351.197,1873.87,1770.51 +268435456,701.888,709.403,3749.61,3533.31 +16,0.0001,0.0002,0.703488,1.18784 +32,0.0002,0.0002,0.681984,0.848896 +64,0.0006,0.0003,1.02298,0.82432 +128,0.0005,0.0005,0.764928,0.827392 +256,0.0014,0.0011,0.771072,0.9216 +512,0.0028,0.0017,0.878592,0.769024 +1024,0.0034,0.0034,0.82944,0.7936 +2048,0.008,0.0065,1.02707,0.884736 +4096,0.0429,0.0128,0.97792,1.11411 +8192,0.0248,0.0239,0.971776,1.02195 +16384,0.0537,0.0466,1.20218,1.26464 +32768,0.0817,0.1112,1.31174,1.24109 +65536,0.1658,0.235,1.76538,2.43814 +131072,0.3568,0.4812,2.88973,3.54406 +262144,0.6851,0.8152,4.9664,6.74202 +524288,1.4124,1.5343,8.94157,9.40954 +1048576,2.5992,3.0069,15.959,16.0573 +2097152,5.2308,5.6642,30.0872,30.0943 +4194304,10.9045,11.7277,57.5928,58.2656 +8388608,23.6722,24.0372,114.5,109.191 +16777216,46.8247,44.6511,229.956,219.93 +33554432,87.948,90.2759,465.519,443.19 +67108864,189.137,187.937,960.672,900.63 +134217728,350.955,350.389,1869.96,1783.44 +268435456,706.693,704.719,3685.25,3545.3 +16,0.0001,0.0002,0.714752,1.12128 +32,0.0002,0.0003,0.724992,1.12333 +64,0.0003,0.0003,1.01786,1.00147 +128,0.0008,0.0005,0.789504,1.09568 +256,0.0008,0.0013,0.857088,0.898048 +512,0.0019,0.0017,0.816128,1.03936 +1024,0.0028,0.0039,1.02912,1.01888 +2048,0.0058,0.0198,1.33325,1.0281 +4096,0.0109,0.0119,0.871424,1.0711 +8192,0.0213,0.0371,1.15507,1.19194 +16384,0.0436,0.0488,1.17043,1.47763 +32768,0.0831,0.0959,1.34349,1.31072 +65536,0.1751,0.2353,1.81555,2.2743 +131072,0.3378,0.513,2.84877,4.15642 +262144,0.6879,0.8297,5.04934,5.88083 +524288,1.3283,1.5391,8.99379,9.10131 +1048576,3.0175,2.9408,15.5894,15.4419 +2097152,5.2775,5.751,30.2858,29.8271 +4194304,11.5201,12.6888,57.0573,56.2575 +8388608,22.5328,24.0229,114.134,109.668 +16777216,42.3091,47.406,236.901,221.11 +33554432,88.0426,89.9687,470.908,444.777 +67108864,175.641,176.034,938.888,885.6 +134217728,348.908,355.479,1884.8,1779.45 +268435456,699.993,702.784,3735.53,3542.84 +16,0.0002,0.0002,0.84992,0.874496 +32,0.0004,0.0003,0.68608,0.831488 +64,0.0005,0.0004,0.734208,0.86528 +128,0.0005,0.0005,0.841728,0.836608 +256,0.0011,0.0011,0.896,0.8192 +512,0.0028,0.0018,1.02707,0.86528 +1024,0.0056,0.0034,0.864256,1.0496 +2048,0.0098,0.0061,1.01171,1.03117 +4096,0.0111,0.0124,0.920576,1.37318 +8192,0.0209,0.0228,1.31686,1.16122 +16384,0.0948,0.0454,1.14995,1.16224 +32768,0.111,0.1464,1.52166,1.64557 +65536,0.1703,0.1855,1.77971,2.67366 +131072,0.3508,0.3924,2.85594,3.6311 +262144,0.7105,0.892,5.4313,5.62278 +524288,1.3744,1.6895,8.55859,9.44742 +1048576,3.2414,2.9021,15.5638,15.7594 +2097152,5.2771,6.0126,30.4538,28.4611 +4194304,12.2937,11.9244,59.435,58.5933 +8388608,23.338,22.8811,113.743,108.47 +16777216,42.7144,48.4382,234.093,221.272 +33554432,89.4402,88.8967,472.12,442.662 +67108864,176.158,176.185,943.031,888.302 +134217728,354.913,388.454,1879.62,1770.63 +268435456,738.871,757.256,3842.28,3580.33 +16,0.0002,0.0002,0.878592,0.958464 +32,0.0004,0.0003,0.867328,0.940032 +64,0.0003,0.0004,2.50982,1.07315 +128,0.0005,0.0005,1.12538,1.32813 +256,0.0013,0.001,0.965632,0.93696 +512,0.0014,0.0019,0.843776,0.969728 +1024,0.0049,0.0031,0.907264,1.14586 +2048,0.0088,0.0063,0.968704,1.02707 +4096,0.011,0.0119,1.09261,1.00557 +8192,0.0215,0.0229,1.03424,1.26771 +16384,0.0419,0.0504,1.23494,1.37421 +32768,0.0831,0.1226,1.37216,1.82067 +65536,0.1704,0.1872,1.84115,2.49344 +131072,0.336,0.4906,3.01056,3.47853 +262144,0.7254,0.9895,4.79539,5.60742 +524288,1.3597,1.6569,8.79923,9.16378 +1048576,2.6776,3.05,15.615,15.9672 +2097152,5.6688,5.7314,30.3657,28.6628 +4194304,12.0131,11.7786,57.2559,55.4537 +8388608,24.9333,22.8523,114.769,108.86 +16777216,44.5357,47.7788,240.661,218.855 +33554432,86.2637,88.2306,468.855,447.44 +67108864,188.836,182.878,979.09,897.894 +134217728,354.732,372.503,1901.86,1787.89 +268435456,713.443,739.312,3789.33,3548.12 +16,0.0001,0.0002,0.616448,1.09158 +32,0.0002,0.0002,0.923648,1.08134 +64,0.0003,0.0003,0.912384,1.04653 +128,0.0008,0.0008,0.857088,1.0793 +256,0.0014,0.001,0.790528,0.996352 +512,0.0018,0.0017,0.920576,0.976896 +1024,0.0043,0.0055,0.769024,1.09056 +2048,0.0054,0.0194,1.00557,1.03526 +4096,0.0108,0.0118,1.04141,1.08544 +8192,0.0348,0.0222,1.10694,1.27898 +16384,0.0449,0.0463,1.3824,1.20627 +32768,0.1067,0.0904,1.55238,1.99475 +65536,0.177,0.2041,1.78278,2.81907 +131072,0.3321,0.5211,2.87232,3.38944 +262144,0.6703,0.8383,5.0944,5.67808 +524288,1.369,1.5587,8.73882,8.97741 +1048576,3.1287,2.7631,15.4204,15.8607 +2097152,5.4641,5.7251,30.081,29.2526 +4194304,11.2403,11.6317,57.3624,54.8178 +8388608,24.0695,23.5972,115.765,111.6 +16777216,42.2762,48.2251,236.693,220.163 +33554432,89.4538,90.333,463.302,443.183 +67108864,175.145,179.769,950.186,899.156 +134217728,358.332,356.16,1905.87,1779.27 +268435456,721.248,743.58,3758.53,3575.08 +16,0.0002,0.0002,0.89088,1.16429 +32,0.0004,0.0001,0.792576,1.04653 +64,0.0138,0.0003,0.816128,0.76288 +128,0.0005,0.0006,0.9216,0.992256 +256,0.0009,0.0009,1.04038,0.995328 +512,0.0017,0.0018,1.09158,1.03014 +1024,0.0048,0.0031,0.893952,0.941056 +2048,0.0116,0.0064,0.934912,1.33837 +4096,0.0466,0.0124,1.08954,1.27386 +8192,0.0589,0.0376,1.15405,1.0537 +16384,0.0686,0.0564,1.30662,1.34963 +32768,0.1115,0.0931,1.72339,1.66605 +65536,0.2136,0.2014,1.99885,2.54874 +131072,0.3396,0.4681,3.01773,3.69971 +262144,0.7524,0.7204,5.37702,5.05958 +524288,1.4298,1.541,8.48486,9.25491 +1048576,2.8104,2.8757,15.6621,15.9222 +2097152,5.5336,5.7412,29.2219,30.3012 +4194304,10.9352,12.1295,57.5222,56.0691 +8388608,22.324,24.9028,118.136,109.264 +16777216,45.1294,47.4251,235.965,220.261 +33554432,88.3907,94.569,471.673,442.528 +67108864,192.903,188.105,943.337,909.787 +134217728,375.494,364.91,1883.59,1776.7 +268435456,716.414,735.546,3747.06,3584.81 +16,0.0001,0.0002,0.818176,1.14995 +32,0.0003,0.0003,0.857088,1.06496 +64,0.0006,0.0003,0.995328,0.80896 +128,0.0009,0.0005,0.712704,0.836608 +256,0.0009,0.0014,0.722944,0.753664 +512,0.0019,0.0017,0.802816,0.838656 +1024,0.0186,0.0031,0.86528,0.996352 +2048,0.0059,0.0064,0.989184,1.52371 +4096,0.0145,0.0155,1.18579,1.34963 +8192,0.0236,0.0232,1.08339,0.859136 +16384,0.0568,0.0469,1.14074,0.984064 +32768,0.1103,0.0936,1.29126,1.45715 +65536,0.169,0.2505,1.84627,2.88973 +131072,0.3793,0.5221,2.74637,3.42528 +262144,0.7077,0.7985,5.22752,5.96992 +524288,1.3595,1.485,8.78592,9.54982 +1048576,3.4014,2.8998,15.8167,16.4475 +2097152,5.4595,6.0612,29.951,29.4717 +4194304,11.9487,11.3729,60.0248,56.9436 +8388608,22.1231,23.2813,115.09,114.194 +16777216,52.4248,45.3878,239.436,228.138 +33554432,89.3893,88.7686,471.351,457.313 +67108864,182.812,190.56,953.21,892.004 +134217728,360.407,353.309,1871.36,1772.29 +268435456,701.212,701.868,3750.34,3547.74 +16,0.0001,0.0002,0.720896,0.846848 +32,0.0002,0.0002,0.687104,1.31994 +64,0.0003,0.0003,0.642048,0.864256 +128,0.0009,0.0007,1.03834,0.794624 +256,0.0017,0.0017,1.00966,0.809984 +512,0.0028,0.0017,0.771072,1.32403 +1024,0.0051,0.0033,0.973824,0.769024 +2048,0.0105,0.0064,1.20013,0.812032 +4096,0.0203,0.0259,1.09773,1.24109 +8192,0.0218,0.0277,1.13971,0.894976 +16384,0.0919,0.0475,1.07622,1.04653 +32768,0.1489,0.113,1.29229,1.47661 +65536,0.1712,0.2301,1.73466,2.80883 +131072,0.3572,0.3741,2.8375,4.29568 +262144,0.6953,0.94,5.0903,6.272 +524288,1.3033,1.6636,8.94566,10.0168 +1048576,2.6615,3.1441,16.172,16.0451 +2097152,5.3257,5.8067,31.234,30.1353 +4194304,10.3885,13.1513,58.7244,56.3589 +8388608,23.4203,24.7768,117.098,110.33 +16777216,42.986,48.0559,234.404,220.712 diff --git a/Project2-Stream-Compaction/src/data_gen.cpp b/Project2-Stream-Compaction/src/data_gen.cpp index 8c9b03e..50ab731 100644 --- a/Project2-Stream-Compaction/src/data_gen.cpp +++ b/Project2-Stream-Compaction/src/data_gen.cpp @@ -21,14 +21,14 @@ using namespace std; #define max_value_scan 50 #define max_value_compaction 4 #define max_value_sorting 500 -#define do_scan false -#define do_sort true // true skips scan (so set to false if we want scan or stream compaction data) +#define do_scan true +#define do_sort false // true skips scan (so set to false if we want scan or stream compaction data) #define cpu_scan true // always keep this true to get metrics (pass/fail) #define naive_scan true #define efficient_scan true #define shared_mem_scan true #define thrust_scan true -#define pow_2 false +#define pow_2 true #define max_pow 26 void csv_write(float time, unsigned long long size, string file_name){ std::ofstream outfile; @@ -45,7 +45,7 @@ int main(int argc, char* argv[]) { int pow = 4; while (true && !do_sort) { unsigned long long int SIZE; - if (pow > 28) + if (pow > max_pow)// 28 if stream_compaction pow = 4; cout << pow << endl; if (pow_2) diff --git a/Project2-Stream-Compaction/stream_compaction/cpu.cu b/Project2-Stream-Compaction/stream_compaction/cpu.cu index 744edcf..ec2cf4b 100644 --- a/Project2-Stream-Compaction/stream_compaction/cpu.cu +++ b/Project2-Stream-Compaction/stream_compaction/cpu.cu @@ -33,9 +33,9 @@ namespace StreamCompaction { * @returns the number of elements remaining after compaction. */ unsigned long long int compactWithoutScan(unsigned long long int n, long long *odata, const long long *idata) { - timer().startCpuTimer(); unsigned long long int count = 0; unsigned long long int odata_pos = 0; + timer().startCpuTimer(); for (unsigned long long i = 0; i < n; i++) if (idata[i] != 0) { count++; @@ -51,10 +51,10 @@ namespace StreamCompaction { * @returns the number of elements remaining after compaction. */ unsigned long long int compactWithScan(unsigned long long int n, long long *odata, const long long *idata) { - timer().startCpuTimer(); // Step 1, mark each cell with 1/0 if it has a element or not (super easy to parallelize) long long* scan_data = new long long[n](); long long* mask = new long long[n](); + timer().startCpuTimer(); for (unsigned long long i = 0; i < n; i++) { if (idata[i]) mask[i] = 1; @@ -68,10 +68,10 @@ namespace StreamCompaction { if (idata[i]) odata[scan_data[i] + 1] = idata[i]; } + timer().endCpuTimer(); int res = scan_data[n - 1]; delete[] scan_data; delete[] mask; - timer().endCpuTimer(); return res; } } diff --git a/Project2-Stream-Compaction/stream_compaction/efficient.cu b/Project2-Stream-Compaction/stream_compaction/efficient.cu index faf0551..fb8e8d2 100644 --- a/Project2-Stream-Compaction/stream_compaction/efficient.cu +++ b/Project2-Stream-Compaction/stream_compaction/efficient.cu @@ -39,7 +39,6 @@ namespace StreamCompaction { * Performs prefix-sum (aka scan) on idata, storing the result into odata. */ void scan(unsigned long long int n, long long *odata, const long long *idata) { - timer().startGpuTimer(); // allocate pointers to memory and copy data over long long *dev_odata; unsigned long long int blocks = 0; @@ -49,6 +48,7 @@ namespace StreamCompaction { // we can use dev_odata to hold idata (because we do the scan inplace) cudaMemcpy(dev_odata, idata, n * sizeof(long long), cudaMemcpyHostToDevice); checkCUDAErrorWithLine("memcpy failed!"); + timer().startGpuTimer(); // reduce phase // so we dont need to do the last round of computation because we zero it anyway for (long long d = 0; d <= ilog2ceil(closest_pow2) - 2; d++) { @@ -65,11 +65,11 @@ namespace StreamCompaction { downsweep_parallel <<>> (closest_pow2, dev_odata, d); checkCUDAErrorWithLine("downsweep phase failed!"); } + timer().endGpuTimer(); //read data back cudaMemcpy(odata, dev_odata, n * sizeof(long long), cudaMemcpyDeviceToHost); checkCUDAErrorWithLine("memcpy back failed!"); cudaFree(dev_odata); - timer().endGpuTimer(); } /*Copy of scan but only works with cuda pointers*/ @@ -216,7 +216,6 @@ namespace StreamCompaction { data[index] += dev_block_offset[bid]; } void scan(unsigned long long int n, long long *odata, long long *idata) { - timer().startGpuTimer(); // allocate pointers to memory and copy data over long long *dev_odata, *dev_idata, *dev_block_sum, *dev_block_offset; long long *block_sum, *block_offset; @@ -235,6 +234,7 @@ namespace StreamCompaction { // copy over raw data cudaMemcpy(dev_idata, idata, n * sizeof(long long), cudaMemcpyHostToDevice); checkCUDAErrorWithLine("memcpy failed!"); + timer().startGpuTimer(); // large prescan, pre alloc shared memory dev_scan<<> 1)>>>(closest_pow2, dev_odata, dev_idata, dev_block_sum); checkCUDAErrorWithLine("prescan fn failed!"); @@ -248,6 +248,8 @@ namespace StreamCompaction { // add dev_block_offset to each block add_offset <<>> (n, dev_odata, dev_block_offset); checkCUDAErrorWithLine("add_offset fn failed!"); + timer().endGpuTimer(); + // Finished scan, copy back data cudaMemcpy(odata, dev_odata, n * sizeof(long long), cudaMemcpyDeviceToHost); checkCUDAErrorWithLine("memcpy back failed!"); // free memory @@ -257,7 +259,6 @@ namespace StreamCompaction { cudaFree(dev_block_offset); delete[] block_sum; delete[] block_offset; - timer().endGpuTimer(); } void dev_scan(unsigned long long int n, long long *dev_odata, long long *dev_idata) { // allocate pointers to memory and copy data over diff --git a/Project2-Stream-Compaction/stream_compaction/naive.cu b/Project2-Stream-Compaction/stream_compaction/naive.cu index 3096296..bcfe064 100644 --- a/Project2-Stream-Compaction/stream_compaction/naive.cu +++ b/Project2-Stream-Compaction/stream_compaction/naive.cu @@ -37,7 +37,6 @@ namespace StreamCompaction { * Performs prefix-sum (aka scan) on idata, storing the result into odata. */ void scan(unsigned long long int n, long long *odata, const long long *idata) { - timer().startGpuTimer(); unsigned long long int blocks = (n + blocksize - 1) / blocksize; // allocate data long long *dev_odata, *dev_odata_2; @@ -48,6 +47,7 @@ namespace StreamCompaction { // copy data over cudaMemcpy(dev_odata, idata, n*sizeof(long long), cudaMemcpyHostToDevice); checkCUDAErrorWithLine("memcpy failed!"); + timer().startGpuTimer(); unsigned long long int uppper_limit = 1 << ilog2ceil(n); for (long d = 1; d <= uppper_limit; d<<=1) { naive_parallel_scan <<> > (n, dev_odata_2, dev_odata, d); @@ -58,10 +58,10 @@ namespace StreamCompaction { checkCUDAErrorWithLine("right shift failed failed!"); cudaMemcpy(odata, dev_odata_2, n*sizeof(long long), cudaMemcpyDeviceToHost); checkCUDAErrorWithLine("memcpy back failed!"); + timer().endGpuTimer(); cudaFree(dev_odata); cudaFree(dev_odata_2); // create buffer - timer().endGpuTimer(); } } } diff --git a/Project2-Stream-Compaction/stream_compaction/thrust.cu b/Project2-Stream-Compaction/stream_compaction/thrust.cu index 77d2fa6..d6e45c9 100644 --- a/Project2-Stream-Compaction/stream_compaction/thrust.cu +++ b/Project2-Stream-Compaction/stream_compaction/thrust.cu @@ -18,18 +18,18 @@ namespace StreamCompaction { * Performs prefix-sum (aka scan) on idata, storing the result into odata. */ void scan(unsigned long long int n, long long *odata, const long long *idata) { - timer().startGpuTimer(); long long *dev_odata, *dev_idata; cudaMalloc((void**)&dev_odata, n * sizeof(long long)); cudaMalloc((void**)&dev_idata, n * sizeof(long long)); cudaMemcpy(dev_idata, idata, n * sizeof(long long), cudaMemcpyHostToDevice); + timer().startGpuTimer(); thrust::device_ptr dv_in(dev_idata); thrust::device_ptr dv_out(dev_odata); thrust::exclusive_scan(dv_in, dv_in + n, dv_out); + timer().endGpuTimer(); cudaMemcpy(odata, dev_odata, sizeof(long long) * n, cudaMemcpyDeviceToHost); cudaFree(dev_odata); cudaFree(dev_idata); - timer().endGpuTimer(); } } } From 5e8296ed23204c6c3e5d6af7f80b483fe8c63a8c Mon Sep 17 00:00:00 2001 From: Vaibhav Arcot Date: Tue, 17 Sep 2019 02:29:08 -0400 Subject: [PATCH 19/34] Working image classification; todo improve speed to convergence --- .../character_recognition/mlp.cu | 7 +- .../character_recognition/mlp.h | 5 +- Project2-Character-Recognition/src/main.cpp | 113 +++++++++++------- 3 files changed, 81 insertions(+), 44 deletions(-) diff --git a/Project2-Character-Recognition/character_recognition/mlp.cu b/Project2-Character-Recognition/character_recognition/mlp.cu index 680875f..e4dc93f 100644 --- a/Project2-Character-Recognition/character_recognition/mlp.cu +++ b/Project2-Character-Recognition/character_recognition/mlp.cu @@ -312,8 +312,11 @@ namespace CharacterRecognition { } - double Net::loss(int *y) { - return -1; + double Net::loss(double *y_pred, double *y) { + double loss = 0; + for (int i = 0; i < params.layer_sizes[params.layer_count - 1]; i++) + loss += y[i] * log2(y_pred[i]); + return -loss; } Net::~Net() { diff --git a/Project2-Character-Recognition/character_recognition/mlp.h b/Project2-Character-Recognition/character_recognition/mlp.h index 310a338..d227d32 100644 --- a/Project2-Character-Recognition/character_recognition/mlp.h +++ b/Project2-Character-Recognition/character_recognition/mlp.h @@ -45,7 +45,10 @@ namespace CharacterRecognition { Net(int n, vector layers, double lr); // creates weight matrixs double* forward(double *data, int n); // returns class void backprop(double *y); - double Net::loss(int *y); + double Net::loss(double *y_pred, double *y); + void update_lr(int epoch, int max_epoch) { + + } ~Net(); // to delete the weights }; // TODO: implement required elements for MLP sections 1 and 2 here diff --git a/Project2-Character-Recognition/src/main.cpp b/Project2-Character-Recognition/src/main.cpp index bce10ec..d14813d 100644 --- a/Project2-Character-Recognition/src/main.cpp +++ b/Project2-Character-Recognition/src/main.cpp @@ -11,68 +11,99 @@ #include #include "testing_helpers.hpp" #include -//#include +#include +#include +#include #include -//#include -#define inputs 2 -#define classes 2 -#define lr 0.007 +#include + +#define inputs 196 +#define classes 52 +#define epochs 40000 +#define in_dim 14 using namespace std; -//int image_read(string path) { -// cv::Mat image = cv::imread(path.c_str(), 0); -// if (!image.data) // Check for invalid input -// { -// cout << "Could not open or find the image" << std::endl; -// return -1; -// } -// // 1d array!!! -// uchar * arr = image.isContinuous() ? image.data : image.clone().data; -// uint length = image.total()*image.channels(); -// return length; -//} -void read_directory(const std::string& name, vector& v) -{ +int image_read(string path, vector &data) { + cv::Mat image = cv::imread(path.c_str(), 0); + if (!image.data) // Check for invalid input + { + cout << "Could not open or find the image" << std::endl; + return 0; + } + data.push_back(new double[inputs]); + cv::resize(image, image, cv::Size(in_dim, in_dim)); + for (int i = 0; i < inputs; i++) + data[data.size() - 1][i] = (double)image.data[i]; + return 1; +} +void csv_write(int iter, double loss, string file_name) { + std::ofstream outfile; + outfile.open(file_name, std::ios_base::app); + outfile << iter << "," << loss << endl; +} + +void read_directory(const std::string& name, vector& v) { std::string pattern(name); pattern.append("\\*"); WIN32_FIND_DATA data; HANDLE hFind; if ((hFind = FindFirstFile(pattern.c_str(), &data)) != INVALID_HANDLE_VALUE) { do { - // todo take only file names with bmp/img - v.push_back(data.cFileName); + if (string(data.cFileName).find("bmp") != std::string::npos) + v.push_back(data.cFileName); } while (FindNextFile(hFind, &data) != 0); FindClose(hFind); } } + +void lable_read(string name, vector &data) { + int value = stoi(name.substr(0, 2)); + data.push_back(new double[classes]); + memset(data[data.size() - 1], 0, classes * sizeof(double)); + data[data.size() - 1][value - 1] = 1; +} int main(int argc, char* argv[]) { - // test read dir - /*string path = R"(..\data-set\)"; + // load image paths + string path = R"(..\data-set\)"; vector files; + vector input_data; + vector output_data; read_directory(path, files); for (auto x : files) - cout << x << endl;*/ + if (image_read(path + x, input_data)) + lable_read(x, output_data); // test forward pass - CharacterRecognition::Net nn(inputs, {4, 3, classes}, lr); - double input[4][2] = { {0, 0}, {0, 1}, { 1,0 }, {1, 1} }; - double output[4][2] = { {0, 1}, {1,0}, {1,0}, {0, 1} }; + double lr = 0.003; + CharacterRecognition::Net nn(inputs, {98, 65, 50, 25, 40, classes}, lr); int i; - for (i = 0; i < 4000; i++) { - auto x = nn.forward(input[i%4], inputs); - nn.backprop(output[i % 4]); - // cout << output[i % 4][0] << ", " << output[i % 4][1] << ":"; - //cout << x[0] << ", " << x[1] < x[1]) - cout << i << ((output[i % 4][0] == 1) ? "Works" : "Fail") < 0.5) == output[i][0]); + int val = 0; + for (int i = 0; i < classes; i++) { + double* x = nn.forward(input_data[i], inputs); + int pos1 = distance(x, max_element(x, x + classes)); + int pos2 = distance(output_data[i], max_element(output_data[i], output_data[i] + classes)); + val += (bool)(pos1 == pos2); + delete[] x; } - cout << "Passes " << count << " Out of 4"; + cout << "Passes " << val << " Out of "< Date: Tue, 17 Sep 2019 03:25:55 -0400 Subject: [PATCH 20/34] Added momentum gradient decent and adaptive learning rate to improve stability --- .../character_recognition/mlp.cu | 68 ++++++++++++++++--- .../character_recognition/mlp.h | 12 ++-- Project2-Character-Recognition/src/main.cpp | 15 ++-- 3 files changed, 74 insertions(+), 21 deletions(-) diff --git a/Project2-Character-Recognition/character_recognition/mlp.cu b/Project2-Character-Recognition/character_recognition/mlp.cu index e4dc93f..d03b074 100644 --- a/Project2-Character-Recognition/character_recognition/mlp.cu +++ b/Project2-Character-Recognition/character_recognition/mlp.cu @@ -105,6 +105,13 @@ namespace CharacterRecognition { return; data[index] = value; } + + __global__ void update_momentum(int n, double *vdw, double *dL_dw, double beta) { + int index = blockIdx.x * blockDim.x + threadIdx.x; + if (index >= n) + return; + vdw[index] = beta * vdw[index] + (1 - beta) * dL_dw[index]; + } ////////////////////////////// /* Helper */ ////////////////////////////// @@ -121,12 +128,18 @@ namespace CharacterRecognition { curandGenerateNormalDouble(prng, A, size, 0, std); } - Net::Net(int n, vector layers, double lr) { + Net::Net(int n, vector layers, double lr, double beta) { // layers = {98, 52, 52} params.layer_count = layers.size(); params.input_size = n; params.lr = lr; params.layer_sizes = layers; + if (beta != -1) { + momentum_grad = true; + params.beta = beta; + } + else + momentum_grad = false; // init raw data holder cudaMalloc((void**)&dev_data, n * sizeof(double)); cudaMalloc((void**)&dev_y, layers[params.layer_count - 1] * sizeof(double)); @@ -143,6 +156,7 @@ namespace CharacterRecognition { // memset dev_b blocks = (layers[i + 1] + params.block_size - 1) / params.block_size; memset << > > (layers[i + 1], dev_b, 0.1); + checkCUDAErrorWithLine("Memset failed!"); //GPU_fill_rand(dev_b, layers[i + 1], 2.0 / layers[i]); // zero initilizaton is fine for biases // push into vector w.push_back(dev_w); @@ -171,6 +185,21 @@ namespace CharacterRecognition { cudaMalloc((void**)&dev_z, (layers[i + 1]) * sizeof(double)); checkCUDAErrorWithLine("Cuda malloc failed!"); d_relu.push_back(dev_z); + // momentum variables + if (momentum_grad) { + // Vb + cudaMalloc((void**)&dev_z, (layers[i + 1]) * sizeof(double)); + checkCUDAErrorWithLine("Malloc failed!"); + memset << > > (layers[i + 1], dev_z, 0);// zero position because it is a running buffer + checkCUDAErrorWithLine("Memset failed!"); + vdb.push_back(dev_z); + // Vw + blocks = ((layers[i] * layers[i + 1]) + params.block_size - 1) / params.block_size; + cudaMalloc((void**)&dev_w, (layers[i] * layers[i + 1]) * sizeof(double)); + memset << > > ((layers[i] * layers[i + 1]), dev_w, 0); // zero position because it is a running buffer + checkCUDAErrorWithLine("Cuda malloc failed!"); + vdw.push_back(dev_w); + } } // initilizaton cublas handle cublasCreate(&handle); @@ -297,17 +326,29 @@ namespace CharacterRecognition { // W n = params.layer_sizes[i] * layer_im1; blocks = ceil((n + params.block_size - 1) / params.block_size); - update_params << > > (n, w[i], dL_dw[i], params.lr); - checkCUDAErrorWithLine("Update w failed!"); + if (momentum_grad) { + update_momentum <<>> (n, vdw[i], dL_dw[i], params.beta); + checkCUDAErrorWithLine("Update momentum vw failed!"); + update_params << > > (n, w[i], vdw[i], params.lr); + checkCUDAErrorWithLine("Update w failed!"); + } + else { + update_params << > > (n, w[i], dL_dw[i], params.lr); + checkCUDAErrorWithLine("Update w failed!"); + } //B n = params.layer_sizes[i]; blocks = ceil((n + params.block_size - 1) / params.block_size); - update_params << > > (n, b[i], dL_dz[i], params.lr); - checkCUDAErrorWithLine("Update b failed!"); - // print grads - //printCuda(dL_dw[i], layer_im1 * params.layer_sizes[i], "Grad W" + to_string(i)); - //printCuda(dL_dz[i], params.layer_sizes[i], "Grad b"+to_string(i)); - checkCUDAErrorWithLine("Print failed!"); + if (momentum_grad) { + update_momentum << > > (n, vdb[i], dL_dz[i], params.beta); + checkCUDAErrorWithLine("Update momentum vb failed!"); + update_params << > > (n, b[i], vdb[i], params.lr); + checkCUDAErrorWithLine("Update b failed!"); + } + else { + update_params << > > (n, b[i], dL_dz[i], params.lr); + checkCUDAErrorWithLine("Update b failed!"); + } } } @@ -319,6 +360,10 @@ namespace CharacterRecognition { return -loss; } + void Net::update_lr() { + params.lr /= 2; + } + Net::~Net() { // free weights and biases for (auto x : w) @@ -339,6 +384,11 @@ namespace CharacterRecognition { cudaFree(x); for (auto x : d_relu) cudaFree(x); + // free momentum variables + for (auto x : vdw) + cudaFree(x); + for (auto x : vdb) + cudaFree(x); cudaFree(dev_data); cudaFree(dev_y); // clean culbas hand diff --git a/Project2-Character-Recognition/character_recognition/mlp.h b/Project2-Character-Recognition/character_recognition/mlp.h index d227d32..01d479f 100644 --- a/Project2-Character-Recognition/character_recognition/mlp.h +++ b/Project2-Character-Recognition/character_recognition/mlp.h @@ -13,10 +13,11 @@ namespace CharacterRecognition { struct Params { vector layer_sizes; int layer_count, input_size; - double lr; + double lr, beta; const static int block_size = 128; }; class Net { + bool momentum_grad; // just a flag for momentum // input data double *dev_data; double *dev_y; @@ -32,6 +33,9 @@ namespace CharacterRecognition { vector dL_dz; // z = wx + b vector dL_da; // activation function grads (dy_dg for the final layer) vector dL_dw; + // momentum gradients + vector vdb; + vector vdw; // relu gradient vector d_relu; // parameters @@ -42,13 +46,11 @@ namespace CharacterRecognition { // multiplication of matrices void gpu_blas_mmul(const double *A, const double *B, double *C, const int m, const int k, const int n, bool trans_flag_a = false, bool trans_flag_b = false); public: - Net(int n, vector layers, double lr); // creates weight matrixs + Net(int n, vector layers, double lr, double beta = -1); // creates weight matrixs double* forward(double *data, int n); // returns class void backprop(double *y); double Net::loss(double *y_pred, double *y); - void update_lr(int epoch, int max_epoch) { - - } + void update_lr(); // halfs learning rate every x iterations ~Net(); // to delete the weights }; // TODO: implement required elements for MLP sections 1 and 2 here diff --git a/Project2-Character-Recognition/src/main.cpp b/Project2-Character-Recognition/src/main.cpp index d14813d..f5d7afc 100644 --- a/Project2-Character-Recognition/src/main.cpp +++ b/Project2-Character-Recognition/src/main.cpp @@ -17,10 +17,12 @@ #include #include -#define inputs 196 #define classes 52 #define epochs 40000 -#define in_dim 14 +#define in_dim 15 +#define inputs in_dim*in_dim +#define lr 0.0038 +#define beta 0.65 using namespace std; int image_read(string path, vector &data) { @@ -73,8 +75,8 @@ int main(int argc, char* argv[]) { if (image_read(path + x, input_data)) lable_read(x, output_data); // test forward pass - double lr = 0.003; - CharacterRecognition::Net nn(inputs, {98, 65, 50, 25, 40, classes}, lr); + + CharacterRecognition::Net nn(inputs, {98, 65, 50, 30, 25, 40, classes}, lr, beta); int i; float total_loss = 0; for (i = 0; i < epochs; i++) { @@ -86,9 +88,8 @@ int main(int argc, char* argv[]) { total_loss = 0; } nn.backprop(output_data[i%classes]); - /*for (int j = 0; j < classes; j++) - cout << x[j] << " "; - cout << endl;*/ + if (i % classes * 100 && !i) + nn.update_lr(); delete[] x; } int val = 0; From 87680d435f0dda766503c587c6c96c2cefce917c Mon Sep 17 00:00:00 2001 From: Vaibhav Arcot Date: Tue, 17 Sep 2019 12:42:04 -0400 Subject: [PATCH 21/34] Moved reduction to GPU --- .../character_recognition/mlp.cu | 83 +++++++++++++++---- .../character_recognition/mlp.h | 9 +- Project2-Character-Recognition/src/main.cpp | 4 +- 3 files changed, 75 insertions(+), 21 deletions(-) diff --git a/Project2-Character-Recognition/character_recognition/mlp.cu b/Project2-Character-Recognition/character_recognition/mlp.cu index d03b074..5c33fb0 100644 --- a/Project2-Character-Recognition/character_recognition/mlp.cu +++ b/Project2-Character-Recognition/character_recognition/mlp.cu @@ -112,6 +112,25 @@ namespace CharacterRecognition { return; vdw[index] = beta * vdw[index] + (1 - beta) * dL_dw[index]; } + + __global__ void cross_entropy_kernal(int n, double *y, double *y_hat, double *dev_loss) { + int index = blockIdx.x * blockDim.x + threadIdx.x; + if (index >= n) + return; + dev_loss[index] = y[index] * log2(y_hat[index]); + } + + /*From Stream compaction part of this assignment*/ + __global__ void reduce_kern(int n, double *data, int d) { + unsigned long long int tmp_d = 1 << (d + 1); + unsigned long long int index = (blockDim.x * blockIdx.x + threadIdx.x)*tmp_d; + if (index >= n) + return; + double tmp_data = data[index + (tmp_d >> 1) - 1]; + if (tmp_data == 0) + return; + data[index + tmp_d - 1] += tmp_data; + } ////////////////////////////// /* Helper */ ////////////////////////////// @@ -143,6 +162,8 @@ namespace CharacterRecognition { // init raw data holder cudaMalloc((void**)&dev_data, n * sizeof(double)); cudaMalloc((void**)&dev_y, layers[params.layer_count - 1] * sizeof(double)); + cudaMalloc((void**)&dev_reduction_pow2, 1<<(ilog2ceil(layers[params.layer_count - 1])) * sizeof(double)); + // add input layer to front layers.insert(layers.begin(), n); double *dev_w, *dev_b, *dev_z, *dev_a, *dev_da; int blocks; @@ -207,6 +228,8 @@ namespace CharacterRecognition { printCuda(w[i], (layers[i] * layers[i + 1]), "INIT W" + to_string(i)); printCuda(b[i], (layers[i + 1]), "INIT B" + to_string(i)); }*/ + // set read_dev_y flag to false (i.e not read data) + read_dev_y = false; } // C(m,n) = A(m,k) * B(k,n) @@ -232,6 +255,8 @@ namespace CharacterRecognition { // copy over data to process cudaMemcpy(dev_data, data, n * sizeof(double), cudaMemcpyHostToDevice); checkCUDAErrorWithLine("Cuda memcpy failed!"); + // reset reduction buffer + cudaMemset(dev_reduction_pow2, 0, 1 << (ilog2ceil(params.layer_sizes[params.layer_count - 1])) * sizeof(double)); for (int i = 0; i < params.layer_count; i++) { blocks = ceil((params.layer_sizes[i] + params.block_size - 1) / params.block_size); // clear g, a for this layer @@ -257,33 +282,43 @@ namespace CharacterRecognition { checkCUDAErrorWithLine("relu failed!"); } else { - //exp_copy << > > (params.layer_sizes[i], a[i], z[i]); // why do this anymore lol + exp_copy << > > (params.layer_sizes[i], a[i], z[i]); // why do this anymore lol checkCUDAErrorWithLine("exp copy failed!"); - // todo move this to the gpu this later - double *tmp = new double[params.layer_sizes[i]]; - double exp_sum = 0; - cudaMemcpy(tmp, z[i], params.layer_sizes[i] * sizeof(double), cudaMemcpyDeviceToHost); // used to be a[i] + cudaMemcpy(dev_reduction_pow2, a[i],params.layer_sizes[i]* sizeof(double), cudaMemcpyDeviceToDevice); + checkCUDAErrorWithLine("dev to dev copy failed!"); + reduction(1 << ilog2ceil(params.layer_sizes[i]), dev_reduction_pow2); + double exp_sum; + cudaMemcpy(&exp_sum, dev_reduction_pow2 + (1 << ilog2ceil((params.layer_sizes[i]))) - 1, sizeof(double), cudaMemcpyDeviceToHost); // copy last value to cpu checkCUDAErrorWithLine("Cuda memcpy failed!"); - for (int pos = 0; pos < params.layer_sizes[i]; pos++) - exp_sum += exp(tmp[pos]); - delete[] tmp; + //// todo move this to the gpu this later + //double *tmp = new double[params.layer_sizes[i]]; + //double exp_sum = 0; + //cudaMemcpy(tmp, z[i], params.layer_sizes[i] * sizeof(double), cudaMemcpyDeviceToHost); // used to be a[i] + //checkCUDAErrorWithLine("Cuda memcpy failed!"); + //for (int pos = 0; pos < params.layer_sizes[i]; pos++) + // exp_sum += exp(tmp[pos]); + //delete[] tmp; + //cout << exp_sum << endl; // modified scan to get the exponential sum of all elements (P1 of assignment used!!) // softmax activation - checkCUDAErrorWithLine("Cuda memcpy failed!"); softmax_activation <<>> (params.layer_sizes[i], z[i], a[i], exp_sum); checkCUDAErrorWithLine("softmax failed!"); } } cudaMemcpy(res, a[params.layer_count - 1], params.layer_sizes[params.layer_count - 1] * sizeof(double), cudaMemcpyDeviceToHost); checkCUDAErrorWithLine("Cuda res memcpy failed!"); + cudaMemset(dev_reduction_pow2, 0, 1 << (ilog2ceil(params.layer_sizes[params.layer_count - 1])) * sizeof(double)); return res; } void Net::backprop(double *y) { // calculate loss grad int n = -1; - cudaMemcpy(dev_y, y, params.layer_sizes[params.layer_count - 1] * sizeof(double), cudaMemcpyHostToDevice); - checkCUDAErrorWithLine("Cuda memcpy failed!"); + if (!read_dev_y) { + cudaMemcpy(dev_y, y, params.layer_sizes[params.layer_count - 1] * sizeof(double), cudaMemcpyHostToDevice); + checkCUDAErrorWithLine("Cuda memcpy failed!"); + read_dev_y = true; + } for (int i = params.layer_count - 1; i >= 0; i--) { n = params.layer_sizes[i]; blocks = ceil((n + params.block_size - 1) / params.block_size); @@ -350,13 +385,30 @@ namespace CharacterRecognition { checkCUDAErrorWithLine("Update b failed!"); } } - + read_dev_y = false; // for next cycle + } + void Net::reduction(int n, double *dev_odata) { + // reduce phase + for (int d = 0; d <= ilog2ceil(n) - 1; d++) { + // compute number of threads to spawn + blocks = ceil((n / (1 << (d + 1)) + params.block_size - 1) / params.block_size); + reduce_kern <<> > (n, dev_odata, d); + checkCUDAErrorWithLine("reduce phase failed!"); + } } - double Net::loss(double *y_pred, double *y) { double loss = 0; - for (int i = 0; i < params.layer_sizes[params.layer_count - 1]; i++) - loss += y[i] * log2(y_pred[i]); + int n = params.layer_sizes[params.layer_count - 1]; + if (!read_dev_y) { + cudaMemcpy(dev_y, y, params.layer_sizes[params.layer_count - 1] * sizeof(double), cudaMemcpyHostToDevice); + checkCUDAErrorWithLine("Cuda memcpy failed!"); + read_dev_y = true; + } + blocks = ceil((n + params.block_size - 1) / params.block_size); + cross_entropy_kernal <<< blocks, params.block_size>>> (n, dev_y, a[params.layer_count - 1], dev_reduction_pow2); + // reduction to get sum + reduction(1 << ilog2ceil(n), dev_reduction_pow2); + cudaMemcpy(&loss, dev_reduction_pow2 + (1 << ilog2ceil(n)) - 1, sizeof(double), cudaMemcpyDeviceToHost); return -loss; } @@ -391,6 +443,7 @@ namespace CharacterRecognition { cudaFree(x); cudaFree(dev_data); cudaFree(dev_y); + cudaFree(dev_reduction_pow2); // clean culbas hand cublasDestroy(handle); } diff --git a/Project2-Character-Recognition/character_recognition/mlp.h b/Project2-Character-Recognition/character_recognition/mlp.h index 01d479f..cb72237 100644 --- a/Project2-Character-Recognition/character_recognition/mlp.h +++ b/Project2-Character-Recognition/character_recognition/mlp.h @@ -7,9 +7,8 @@ using namespace std; #define checkCUDAErrorWithLine(msg) checkCUDAError(msg, __LINE__) - namespace CharacterRecognition { - Common::PerformanceTimer& timer(); + Common::PerformanceTimer& timer(); struct Params { vector layer_sizes; int layer_count, input_size; @@ -21,6 +20,8 @@ namespace CharacterRecognition { // input data double *dev_data; double *dev_y; + double *dev_reduction_pow2; + bool read_dev_y; // cublas cublasHandle_t handle; vector w; @@ -45,6 +46,8 @@ namespace CharacterRecognition { void GPU_fill_rand(double *A, int size, double std); // multiplication of matrices void gpu_blas_mmul(const double *A, const double *B, double *C, const int m, const int k, const int n, bool trans_flag_a = false, bool trans_flag_b = false); + // reduction invocation code + void Net::reduction(int n, double *dev_odata); public: Net(int n, vector layers, double lr, double beta = -1); // creates weight matrixs double* forward(double *data, int n); // returns class @@ -53,6 +56,4 @@ namespace CharacterRecognition { void update_lr(); // halfs learning rate every x iterations ~Net(); // to delete the weights }; - // TODO: implement required elements for MLP sections 1 and 2 here } -// From P1 of this assignment, shared memory scan (modified to use exponents of values diff --git a/Project2-Character-Recognition/src/main.cpp b/Project2-Character-Recognition/src/main.cpp index f5d7afc..2bde07a 100644 --- a/Project2-Character-Recognition/src/main.cpp +++ b/Project2-Character-Recognition/src/main.cpp @@ -83,12 +83,12 @@ int main(int argc, char* argv[]) { auto x = nn.forward(input_data[i%classes], inputs); //csv_write(i, nn.loss(x, output_data[i%classes]), "loss.csv"); total_loss += nn.loss(x, output_data[i%classes]); - if (i % classes == 0) { + if (i % classes == 0 && i) { cout << i << ":" << total_loss/classes << endl; total_loss = 0; } nn.backprop(output_data[i%classes]); - if (i % classes * 100 && !i) + if (!(i % (classes * 100)) && i) nn.update_lr(); delete[] x; } From 11753b73b9e40be2637fe0b01e344ceef9a257e2 Mon Sep 17 00:00:00 2001 From: Vaibhav Arcot Date: Tue, 17 Sep 2019 12:54:38 -0400 Subject: [PATCH 22/34] Changed reset buffer to only clear end of array (improve performance) --- .../character_recognition/mlp.cu | 63 +++++++------------ .../character_recognition/mlp.h | 1 + 2 files changed, 23 insertions(+), 41 deletions(-) diff --git a/Project2-Character-Recognition/character_recognition/mlp.cu b/Project2-Character-Recognition/character_recognition/mlp.cu index 5c33fb0..951aa43 100644 --- a/Project2-Character-Recognition/character_recognition/mlp.cu +++ b/Project2-Character-Recognition/character_recognition/mlp.cu @@ -122,11 +122,11 @@ namespace CharacterRecognition { /*From Stream compaction part of this assignment*/ __global__ void reduce_kern(int n, double *data, int d) { - unsigned long long int tmp_d = 1 << (d + 1); - unsigned long long int index = (blockDim.x * blockIdx.x + threadIdx.x)*tmp_d; + int tmp_d = 1 << (d + 1); + int index = (blockDim.x * blockIdx.x + threadIdx.x)*tmp_d; if (index >= n) return; - double tmp_data = data[index + (tmp_d >> 1) - 1]; + double tmp_data = data[index + (tmp_d >> 1) - 1]; // saves a read or write if (tmp_data == 0) return; data[index + tmp_d - 1] += tmp_data; @@ -151,6 +151,7 @@ namespace CharacterRecognition { // layers = {98, 52, 52} params.layer_count = layers.size(); params.input_size = n; + params.output_size = layers[params.layer_count - 1]; params.lr = lr; params.layer_sizes = layers; if (beta != -1) { @@ -161,8 +162,8 @@ namespace CharacterRecognition { momentum_grad = false; // init raw data holder cudaMalloc((void**)&dev_data, n * sizeof(double)); - cudaMalloc((void**)&dev_y, layers[params.layer_count - 1] * sizeof(double)); - cudaMalloc((void**)&dev_reduction_pow2, 1<<(ilog2ceil(layers[params.layer_count - 1])) * sizeof(double)); + cudaMalloc((void**)&dev_y, params.output_size * sizeof(double)); + cudaMalloc((void**)&dev_reduction_pow2, 1<<(ilog2ceil(params.output_size)) * sizeof(double)); // add input layer to front layers.insert(layers.begin(), n); double *dev_w, *dev_b, *dev_z, *dev_a, *dev_da; @@ -224,10 +225,6 @@ namespace CharacterRecognition { } // initilizaton cublas handle cublasCreate(&handle); - /*for (int i = 0; i < params.layer_count; i++) { - printCuda(w[i], (layers[i] * layers[i + 1]), "INIT W" + to_string(i)); - printCuda(b[i], (layers[i + 1]), "INIT B" + to_string(i)); - }*/ // set read_dev_y flag to false (i.e not read data) read_dev_y = false; } @@ -250,13 +247,13 @@ namespace CharacterRecognition { } double* Net::forward(double *data, int n) { - double *res = new double[params.layer_sizes[params.layer_count - 1]](); + double *res = new double[params.output_size](); assert(n == params.input_size); // copy over data to process cudaMemcpy(dev_data, data, n * sizeof(double), cudaMemcpyHostToDevice); checkCUDAErrorWithLine("Cuda memcpy failed!"); // reset reduction buffer - cudaMemset(dev_reduction_pow2, 0, 1 << (ilog2ceil(params.layer_sizes[params.layer_count - 1])) * sizeof(double)); + cudaMemset(dev_reduction_pow2 + params.output_size - 1, 0, ((1 << ilog2ceil(params.output_size)) - params.output_size + 1) * sizeof(double)); for (int i = 0; i < params.layer_count; i++) { blocks = ceil((params.layer_sizes[i] + params.block_size - 1) / params.block_size); // clear g, a for this layer @@ -282,24 +279,15 @@ namespace CharacterRecognition { checkCUDAErrorWithLine("relu failed!"); } else { - exp_copy << > > (params.layer_sizes[i], a[i], z[i]); // why do this anymore lol + exp_copy << > > (params.layer_sizes[i], a[i], z[i]); checkCUDAErrorWithLine("exp copy failed!"); cudaMemcpy(dev_reduction_pow2, a[i],params.layer_sizes[i]* sizeof(double), cudaMemcpyDeviceToDevice); checkCUDAErrorWithLine("dev to dev copy failed!"); + // modified scan to get the exponential sum of all elements (P1 of assignment used) reduction(1 << ilog2ceil(params.layer_sizes[i]), dev_reduction_pow2); double exp_sum; cudaMemcpy(&exp_sum, dev_reduction_pow2 + (1 << ilog2ceil((params.layer_sizes[i]))) - 1, sizeof(double), cudaMemcpyDeviceToHost); // copy last value to cpu checkCUDAErrorWithLine("Cuda memcpy failed!"); - //// todo move this to the gpu this later - //double *tmp = new double[params.layer_sizes[i]]; - //double exp_sum = 0; - //cudaMemcpy(tmp, z[i], params.layer_sizes[i] * sizeof(double), cudaMemcpyDeviceToHost); // used to be a[i] - //checkCUDAErrorWithLine("Cuda memcpy failed!"); - //for (int pos = 0; pos < params.layer_sizes[i]; pos++) - // exp_sum += exp(tmp[pos]); - //delete[] tmp; - //cout << exp_sum << endl; - // modified scan to get the exponential sum of all elements (P1 of assignment used!!) // softmax activation softmax_activation <<>> (params.layer_sizes[i], z[i], a[i], exp_sum); checkCUDAErrorWithLine("softmax failed!"); @@ -307,7 +295,8 @@ namespace CharacterRecognition { } cudaMemcpy(res, a[params.layer_count - 1], params.layer_sizes[params.layer_count - 1] * sizeof(double), cudaMemcpyDeviceToHost); checkCUDAErrorWithLine("Cuda res memcpy failed!"); - cudaMemset(dev_reduction_pow2, 0, 1 << (ilog2ceil(params.layer_sizes[params.layer_count - 1])) * sizeof(double)); + // reset reduction buffer (we need to zero only the last part of the array + cudaMemset(dev_reduction_pow2 + params.output_size - 1, 0, ((1 << ilog2ceil(params.output_size)) - params.output_size + 1) * sizeof(double)); return res; } @@ -322,36 +311,29 @@ namespace CharacterRecognition { for (int i = params.layer_count - 1; i >= 0; i--) { n = params.layer_sizes[i]; blocks = ceil((n + params.block_size - 1) / params.block_size); - if (i == params.layer_count - 1) { // softmax - //printCuda(a[i], n, "A" + to_string(i)); + if (i == params.layer_count - 1) { // softmax grad bias_addition << > > (n, a[i], dev_y, dL_dz[i], -1); // y_hat - y checkCUDAErrorWithLine("bias addition failed!"); } - else { // relu - //printCuda(z[i], n, "z"+to_string(i)); + else { // relu grad relu_grad<< > > (n, z[i], d_relu[i]); // relu grad checkCUDAErrorWithLine("relu grad failed!"); - /*printCuda(d_relu[i], n, "d_relu" + to_string(i)); - printCuda(dL_da[i], n, "dA" + to_string(i));*/ element_mult << > > (n, d_relu[i], dL_da[i], dL_dz[i]); // dz = da * a' checkCUDAErrorWithLine("element wise mult failed!"); } - if (i != 0) { - //printCuda(dL_dz[i], params.layer_sizes[i], "dL_dz" + to_string(i)); + if (i != 0) { // a[i-1] exists + we need to calculate dL_da[i-1] gpu_blas_mmul(dL_dz[i], a[i-1], dL_dw[i], params.layer_sizes[i], 1, params.layer_sizes[i-1], false, true); // dw checkCUDAErrorWithLine("Matrix mult failed!"); - //printCuda(dL_dw[i], params.layer_sizes[i] * params.layer_sizes[i - 1], "dL_dw" + to_string(i)); - //printCuda(dL_da[i - 1], params.layer_sizes[i - 2], "dA" + to_string(i - 1) + " Prv loop"); gpu_blas_mmul(w[i], dL_dz[i], dL_da[i - 1], params.layer_sizes[i - 1], params.layer_sizes[i], 1, true, false); // da checkCUDAErrorWithLine("Matrix mult failed!"); - //printCuda(dL_da[i-1], params.layer_sizes[i-2], "dA" + to_string(i - 1) + " Prv loop"); checkCUDAErrorWithLine(("Print error failed! " + to_string(i)).c_str()); } - else { + else { // just need tp calculate dL_dw[i] gpu_blas_mmul(dL_dz[i], dev_data, dL_dw[i], params.layer_sizes[i], 1, params.input_size, false, true); // dw checkCUDAErrorWithLine("Matrix mult failed!"); } } + // update weights in inverse order for (int i = 0; i < params.layer_count; i++) { int layer_im1; if (i != 0) @@ -398,17 +380,16 @@ namespace CharacterRecognition { } double Net::loss(double *y_pred, double *y) { double loss = 0; - int n = params.layer_sizes[params.layer_count - 1]; if (!read_dev_y) { - cudaMemcpy(dev_y, y, params.layer_sizes[params.layer_count - 1] * sizeof(double), cudaMemcpyHostToDevice); + cudaMemcpy(dev_y, y, params.output_size * sizeof(double), cudaMemcpyHostToDevice); checkCUDAErrorWithLine("Cuda memcpy failed!"); read_dev_y = true; } - blocks = ceil((n + params.block_size - 1) / params.block_size); - cross_entropy_kernal <<< blocks, params.block_size>>> (n, dev_y, a[params.layer_count - 1], dev_reduction_pow2); + blocks = ceil((params.output_size + params.block_size - 1) / params.block_size); + cross_entropy_kernal <<< blocks, params.block_size>>> (params.output_size, dev_y, a[params.layer_count - 1], dev_reduction_pow2); // reduction to get sum - reduction(1 << ilog2ceil(n), dev_reduction_pow2); - cudaMemcpy(&loss, dev_reduction_pow2 + (1 << ilog2ceil(n)) - 1, sizeof(double), cudaMemcpyDeviceToHost); + reduction(1 << ilog2ceil(params.output_size), dev_reduction_pow2); + cudaMemcpy(&loss, dev_reduction_pow2 + (1 << ilog2ceil(params.output_size)) - 1, sizeof(double), cudaMemcpyDeviceToHost); return -loss; } diff --git a/Project2-Character-Recognition/character_recognition/mlp.h b/Project2-Character-Recognition/character_recognition/mlp.h index cb72237..88ff2ce 100644 --- a/Project2-Character-Recognition/character_recognition/mlp.h +++ b/Project2-Character-Recognition/character_recognition/mlp.h @@ -12,6 +12,7 @@ namespace CharacterRecognition { struct Params { vector layer_sizes; int layer_count, input_size; + int output_size; double lr, beta; const static int block_size = 128; }; From 62662ef819144d2e6c522d2771a31067ccd7ecab Mon Sep 17 00:00:00 2001 From: Vaibhav Arcot Date: Tue, 17 Sep 2019 17:25:51 -0400 Subject: [PATCH 23/34] Added random rotations and achieved 100% acc on both kinds of data; Added weights.csv --- Project2-Character-Recognition/README.md | 138 +- .../character_recognition/mlp.cu | 48 +- .../character_recognition/mlp.h | 89 +- Project2-Character-Recognition/img/SGD.png | Bin 0 -> 5098 bytes Project2-Character-Recognition/img/bp.png | Bin 0 -> 94538 bytes Project2-Character-Recognition/img/fp.png | Bin 0 -> 133898 bytes .../img/gradient_decent.png | Bin 0 -> 5420 bytes .../img/loss_vs_epoch.PNG | Bin 0 -> 73194 bytes .../img/loss_vs_epoch_rand.PNG | Bin 0 -> 35762 bytes Project2-Character-Recognition/img/relu.jpeg | Bin 0 -> 17289 bytes .../img/rotation_matrix_acc.PNG | Bin 0 -> 5313 bytes .../img/sample_network.PNG | Bin 0 -> 138277 bytes .../img/softmax.png | Bin 0 -> 15286 bytes Project2-Character-Recognition/src/main.cpp | 91 +- Project2-Character-Recognition/weights.csv | 37388 ++++++++++++++++ 15 files changed, 37731 insertions(+), 23 deletions(-) create mode 100644 Project2-Character-Recognition/img/SGD.png create mode 100644 Project2-Character-Recognition/img/bp.png create mode 100644 Project2-Character-Recognition/img/fp.png create mode 100644 Project2-Character-Recognition/img/gradient_decent.png create mode 100644 Project2-Character-Recognition/img/loss_vs_epoch.PNG create mode 100644 Project2-Character-Recognition/img/loss_vs_epoch_rand.PNG create mode 100644 Project2-Character-Recognition/img/relu.jpeg create mode 100644 Project2-Character-Recognition/img/rotation_matrix_acc.PNG create mode 100644 Project2-Character-Recognition/img/sample_network.PNG create mode 100644 Project2-Character-Recognition/img/softmax.png create mode 100644 Project2-Character-Recognition/weights.csv diff --git a/Project2-Character-Recognition/README.md b/Project2-Character-Recognition/README.md index 4503fac..864f523 100644 --- a/Project2-Character-Recognition/README.md +++ b/Project2-Character-Recognition/README.md @@ -3,12 +3,138 @@ CUDA Character Recognition **University of Pennsylvania, CIS 565: GPU Programming and Architecture, Project 2** -* (TODO) YOUR NAME HERE - * (TODO) [LinkedIn](), [personal website](), [twitter](), etc. -* Tested on: (TODO) Windows 22, i7-2222 @ 2.22GHz 22GB, GTX 222 222MB (Moore 2222 Lab) +* Name: Vaibhav Arcot + + * [LinkedIn](https://www.linkedin.com/in/vaibhav-arcot-129829167/) + +* Tested on: Windows 10, i7-7700HQ @ 2.8GHz (3.8 Boost) 32GB, External GTX 1080Ti, 11G (My personal laptop) -### (TODO: Your README) +### Overview +This code creates a fully connected neural network in **CUDA** which can identify the character from the image. For training this network, 52 images (1 for each letter case) were used along with random rotations (± 10°) were used. The results show that the network was able to identify the character with a 100% accuracy. -Include analysis, etc. (Remember, this is public, so don't put -anything here that you don't want to share with the world.) +![Sample Network](.\img\sample_network.PNG) + +### Architecture + +The code was created to allow the addition of any number of hidden layers (while keeping the last layer as a softmax layer). For the toy problem, the network takes in 225 inputs (15x15) as a column vector and outputs a 52x1 array with the probability of each class. The structure, the weight matrix dimensions for the hidden layers are 98x65, 65x50, 30x25, 25x40, while the input layers weight matrix has dimensions 225x98 and the output layer has dimensions 40x52. + +Between the layers, ReLu was the activation function used and softmax as the final layer and the loss function used was cross entropy loss. + +### Dependencies +* OpenCV (to read images) +* CUDA 10 +* Cublas (matrix multiplication) +* Curand (random GPU initialization) +### Neural Network overview + +Neural networks are multi-layer networks of neurons (the blue and magenta nodes in the chart below) that we use to classify things, make predictions, etc. Each neuron activates on features, and the cascading of said neurons allows the network to activate on more complex representations of the input data. In a neural network, the final layer does the job of a support vector machine, which draws a hyperplane to classify the data (if that is the task). +![Neural Network](.\img\MLP.png) + +#### Neuron +A neuron is the building block of a neural network. It takes in a value and returns a nonlinear transformation of the input. We define a layer as a stack of neurons. The nonlinearity is the crucial part because you can show that any linear combination of layers can be simplified down to just 1 layer. +![Forward pass](.\img\Weighting.png) + +#### Activation functions + +For the hidden layers, ReLu was the activation function of choice. This was because The function and its derivative both are monotonic. This is a nice property to have for the gradients. The only issue is the gradient blow up at zero (which can be solved using leaky ReLu) + +For the final layer, I decided to use a softmax activation function because we are performing a multi class classification task. This way, we get a probability distribution over all possibilities. We can just take the max to get the prediction. + +#### Forward propagation + +To use the network for inference, the forward pass through the network is used. Input data is passed into the network and at each layer, the weight matrix (w) and the bias is added (b). The equations for the forward prop are shown below: + +![](.\img\fp.png) + +#### Back propagation + +To actually train the network, we need to update the weights and biases. This is done using gradient decent on each of the parameters with respect to the final loss. To find these gradients, the chain rule is used. + +The gradients are shown below: + +![Back Prop gradients](.\img\bp.png) + +Once we have the gradients, we use the following equation to update the weights and biases +![Gradient decent equation](.\img\gradient_decent.png) + +### Modifications + +Besides getting the base neural network to work, listed below are some of the modifications I ended up doing in the quest for better performance + +#### Stochastic Gradient Descent with momentum (SGD) + +Regular gradient decent has a tendency of pulling the value rather quickly. This can result in loss curves being jagged. To combat this, SGD was implemented. The idea is that while updating the weights and biases. This changes the update equation to weight the last update along with the new update. This adds another hyper parameter β + +![SGD](.\img\SGD.png) + +#### Adaptive learning rate + +During gradient decent, the learning rate has a huge impact on the training performance. If the value is too high, the loss oscillates around the optimal value (near the end). Too slow and it takes too long to converge. To combat this, an adaptive learning rate was used. The learning rate starts out at a value, and every X epochs (hyper parameter), the learning rate is halved. This allows the neural network to learn rapidly initially and slow down near the end. + +#### Reduction on GPU + +For the softmax layer, the equation for the layer is given by + +![Softmax](.\img\softmax.png) + +The denominator of this involves a sum over all the elements in the array. To do this, I used the upsweep phase of the work efficient scan I implemented as part of this assignment to allow for the sum to be calculated on the GPU (rather than actually copying it over to the CPU). The same function is also used to calculate the cross entropy loss (which also has a summation inside it). + +#### Random rotations + +Once the neural network was able to learn all the characters, to test the network, I started training the network using the same images but rotating them by a random angle (± 10°). The training data is using the rotated images while the testing was done using only the unrotated images. The results show that the network is kind of resilient to rotation (I did not push the limits). + +#### Initializations + +To initialize the weights, I decided to go with a modified version glorot initialization ([link](https://jamesmccaffrey.wordpress.com/2017/06/21/neural-network-glorot-initialization/)). Weights are drawn from a normal distribution, with 0 mean and +$$ +Var = \frac{2}{inputs} +$$ + +#### Vectorized entire code + +Another optimization done to the code was that all equations for the gradient propagation were done using matrix math. This made it faster to train and infer. This also made it such that no math was done on the CPU for the forward and back propagation. + +#### Hyper Parameters + +Here are the list of hyper parameters that had the network working at 100% accuracy (Weights for these parameters were given) + +| Parameter Name | Value | +| --------------------------- | -------------------------------- | +| Learning Rate | 0.0038 | +| SGD β | 0.65 | +| Adaptive learning rate | 52*100 epochs half learning rate | +| epochs | 40000 (batch size 1) | +| Random rotation limits | ± 10° | +| Number of hidden layers | 5 | +| Dimensions of hidden layers | {98, 65, 50, 30, 25, 40} | + + + +### Results + +#### Loss vs Epochs + +![Loss vs Epoch](.\img\loss_vs_epoch.png) + +In this plot, it is clear that the loss with momentum and decay performed the best. The kink in the middle (I believe) was due to suboptimal tuning of the decay rate. With a little more tuning the rate would decay slightly faster to allow for the drop but not the oscillation. The raw data is also uploaded. One important thing to mention was that with the pure learning rate approach, the max correct it got (for this run) was 51 out of 52 characters. This is not always the case (I have seen it getting a full but it requires more time). For the speed, the code can run 1 forward pass in **1.13577 ms** and 1 backward pass in and **0.505299 ms** average (with the architecture mentioned above). + + Try diff architectures + +### Rotation loss plots (given more iterations) + +![Loss vs Epochs for random rotations](.\img\loss_vs_epoch_rand.PNG) + +For the above plot, a random rotation of ± 10° was given to the training data. The performance of this was 52 out of 52 cases (shown below), which is amazing considering it took the same number of iterations! + +![Rot acc](.\img\rotation_matrix_acc.PNG) + +### Observations + +#### Neural network occasionally struggle with "L" and "h" + +For some reason, with just gradient decent my network had a hard time distinguishing between L and h. This was kind of resolved by reducing the learning rate and giving it more time, but fully resolved when using SGD and adaptive learning rate fixes. + +#### Cublas API + +Cublas API isn't well documented. It took me a long long time to get matrix multiplication along with transpose working. diff --git a/Project2-Character-Recognition/character_recognition/mlp.cu b/Project2-Character-Recognition/character_recognition/mlp.cu index 951aa43..c2f7d80 100644 --- a/Project2-Character-Recognition/character_recognition/mlp.cu +++ b/Project2-Character-Recognition/character_recognition/mlp.cu @@ -8,8 +8,8 @@ #include #include #include +#include -// kernals namespace CharacterRecognition { #define enable_debug true using Common::PerformanceTimer; @@ -18,7 +18,9 @@ namespace CharacterRecognition { static PerformanceTimer timer; return timer; } - + ////////////////////////////// + /* DEBUGGING */ + ////////////////////////////// void printCuda(double *a1, int n, string name) { if (!enable_debug) return; @@ -174,7 +176,7 @@ namespace CharacterRecognition { cudaMalloc((void**)&dev_b, (layers[i + 1]) * sizeof(double)); checkCUDAErrorWithLine("Cuda malloc failed!"); // initilize w, b using gaussian distribution - GPU_fill_rand(dev_w, layers[i] * layers[i + 1], 2.0 / layers[i]); // uniform random initilization + GPU_fill_rand(dev_w, layers[i] * layers[i + 1], 2.0 / (layers[i])); // uniform random initilization // memset dev_b blocks = (layers[i + 1] + params.block_size - 1) / params.block_size; memset << > > (layers[i + 1], dev_b, 0.1); @@ -247,6 +249,7 @@ namespace CharacterRecognition { } double* Net::forward(double *data, int n) { + timer().startGpuTimer(); double *res = new double[params.output_size](); assert(n == params.input_size); // copy over data to process @@ -279,7 +282,7 @@ namespace CharacterRecognition { checkCUDAErrorWithLine("relu failed!"); } else { - exp_copy << > > (params.layer_sizes[i], a[i], z[i]); + exp_copy <<>> (params.layer_sizes[i], a[i], z[i]); checkCUDAErrorWithLine("exp copy failed!"); cudaMemcpy(dev_reduction_pow2, a[i],params.layer_sizes[i]* sizeof(double), cudaMemcpyDeviceToDevice); checkCUDAErrorWithLine("dev to dev copy failed!"); @@ -297,10 +300,12 @@ namespace CharacterRecognition { checkCUDAErrorWithLine("Cuda res memcpy failed!"); // reset reduction buffer (we need to zero only the last part of the array cudaMemset(dev_reduction_pow2 + params.output_size - 1, 0, ((1 << ilog2ceil(params.output_size)) - params.output_size + 1) * sizeof(double)); + timer().endGpuTimer(); return res; } void Net::backprop(double *y) { + timer().startGpuTimer(); // calculate loss grad int n = -1; if (!read_dev_y) { @@ -368,7 +373,9 @@ namespace CharacterRecognition { } } read_dev_y = false; // for next cycle + timer().endGpuTimer(); } + void Net::reduction(int n, double *dev_odata) { // reduce phase for (int d = 0; d <= ilog2ceil(n) - 1; d++) { @@ -378,6 +385,7 @@ namespace CharacterRecognition { checkCUDAErrorWithLine("reduce phase failed!"); } } + double Net::loss(double *y_pred, double *y) { double loss = 0; if (!read_dev_y) { @@ -397,6 +405,38 @@ namespace CharacterRecognition { params.lr /= 2; } + void Net::dump_weights(string path) { + std::ofstream outfile; + outfile.open(path, std::ios_base::app); + for (int i = 0; i < params.layer_count; i++) { + int lmi; + if (i != 0) + lmi = params.layer_sizes[i - 1]; + else + lmi = params.input_size; + int n = params.layer_sizes[i] * lmi; + double *print_a = new double[n]; + outfile << "W["+to_string(i) + "]" << endl; + outfile << "-----" << endl; + cudaMemcpy(print_a, w[i], n * sizeof(double), cudaMemcpyDeviceToHost); + for (int i = 0; i < n; i++) { + outfile << print_a[i] << endl; + } + delete[] print_a; + } + for (int i = 0; i < params.layer_count; i++) { + int n = params.layer_sizes[i]; + double *print_a = new double[n]; + outfile << "b[" + to_string(i) + "]" << endl; + outfile << "-----" << endl; + cudaMemcpy(print_a, w[i], n * sizeof(double), cudaMemcpyDeviceToHost); + for (int i = 0; i < n; i++) { + outfile << print_a[i] << endl; + } + delete[] print_a; + } + } + Net::~Net() { // free weights and biases for (auto x : w) diff --git a/Project2-Character-Recognition/character_recognition/mlp.h b/Project2-Character-Recognition/character_recognition/mlp.h index 88ff2ce..c7f2457 100644 --- a/Project2-Character-Recognition/character_recognition/mlp.h +++ b/Project2-Character-Recognition/character_recognition/mlp.h @@ -6,7 +6,93 @@ #include using namespace std; #define checkCUDAErrorWithLine(msg) checkCUDAError(msg, __LINE__) - +//namespace Timer { +// class PerformanceTimer +// { +// public: +// PerformanceTimer() +// { +// cudaEventCreate(&event_start); +// cudaEventCreate(&event_end); +// } +// +// ~PerformanceTimer() +// { +// cudaEventDestroy(event_start); +// cudaEventDestroy(event_end); +// } +// +// void startCpuTimer() +// { +// if (cpu_timer_started) { throw std::runtime_error("CPU timer already started"); } +// cpu_timer_started = true; +// +// time_start_cpu = std::chrono::high_resolution_clock::now(); +// } +// +// void endCpuTimer() +// { +// time_end_cpu = std::chrono::high_resolution_clock::now(); +// +// if (!cpu_timer_started) { throw std::runtime_error("CPU timer not started"); } +// +// std::chrono::duration duro = time_end_cpu - time_start_cpu; +// prev_elapsed_time_cpu_milliseconds = +// static_cast(duro.count()); +// +// cpu_timer_started = false; +// } +// +// void startGpuTimer() +// { +// if (gpu_timer_started) { throw std::runtime_error("GPU timer already started"); } +// gpu_timer_started = true; +// +// cudaEventRecord(event_start); +// } +// +// void endGpuTimer() +// { +// cudaEventRecord(event_end); +// cudaEventSynchronize(event_end); +// +// if (!gpu_timer_started) { throw std::runtime_error("GPU timer not started"); } +// +// cudaEventElapsedTime(&prev_elapsed_time_gpu_milliseconds, event_start, event_end); +// gpu_timer_started = false; +// } +// +// float getCpuElapsedTimeForPreviousOperation() //noexcept //(damn I need VS 2015 +// { +// return prev_elapsed_time_cpu_milliseconds; +// } +// +// float getGpuElapsedTimeForPreviousOperation() //noexcept +// { +// return prev_elapsed_time_gpu_milliseconds; +// } +// +// // remove copy and move functions +// PerformanceTimer(const PerformanceTimer&) = delete; +// PerformanceTimer(PerformanceTimer&&) = delete; +// PerformanceTimer& operator=(const PerformanceTimer&) = delete; +// PerformanceTimer& operator=(PerformanceTimer&&) = delete; +// +// private: +// cudaEvent_t event_start = nullptr; +// cudaEvent_t event_end = nullptr; +// +// using time_point_t = std::chrono::high_resolution_clock::time_point; +// time_point_t time_start_cpu; +// time_point_t time_end_cpu; +// +// bool cpu_timer_started = false; +// bool gpu_timer_started = false; +// +// float prev_elapsed_time_cpu_milliseconds = 0.f; +// float prev_elapsed_time_gpu_milliseconds = 0.f; +// }; +//} namespace CharacterRecognition { Common::PerformanceTimer& timer(); struct Params { @@ -55,6 +141,7 @@ namespace CharacterRecognition { void backprop(double *y); double Net::loss(double *y_pred, double *y); void update_lr(); // halfs learning rate every x iterations + void dump_weights(string path); ~Net(); // to delete the weights }; } diff --git a/Project2-Character-Recognition/img/SGD.png b/Project2-Character-Recognition/img/SGD.png new file mode 100644 index 0000000000000000000000000000000000000000..6492b358ce3bddd9595ac417443e1d6df7937cfe GIT binary patch literal 5098 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 z%0D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 bSh~V#jc1j#jgS701O8~M>#J2GZKD1Uf*aNb literal 0 HcmV?d00001 diff --git a/Project2-Character-Recognition/img/fp.png b/Project2-Character-Recognition/img/fp.png new file mode 100644 index 0000000000000000000000000000000000000000..ca8750fda32374667e738d382cd14abfd88567f3 GIT binary patch literal 133898 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

a^ata7uz1)yPEk;i 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 literal 0 HcmV?d00001 diff --git a/Project2-Character-Recognition/img/relu.jpeg b/Project2-Character-Recognition/img/relu.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..276e4d512d74fc26700633cc6278c9b2d6997181 GIT binary patch literal 17289 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 F|1XI76(s-w literal 0 HcmV?d00001 diff --git a/Project2-Character-Recognition/img/rotation_matrix_acc.PNG b/Project2-Character-Recognition/img/rotation_matrix_acc.PNG new file mode 100644 index 0000000000000000000000000000000000000000..7973b1e41cd004e820b3b6bb37d301e8cbae3075 GIT binary patch literal 5313 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 AfdBvi literal 0 HcmV?d00001 diff --git a/Project2-Character-Recognition/img/sample_network.PNG b/Project2-Character-Recognition/img/sample_network.PNG new file mode 100644 index 0000000000000000000000000000000000000000..e65846240970d3c0d493d4a040e5838b37855bd9 GIT binary patch literal 138277 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%0DSh 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

b3J$+w;kD)?LpzTZh49Pi>mq(yd=IKVx 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 Yj{b}M`7;Lof^M8PId`(;#HCyR1vC{{SpWb4 literal 0 HcmV?d00001 diff --git a/Project2-Character-Recognition/img/softmax.png b/Project2-Character-Recognition/img/softmax.png new file mode 100644 index 0000000000000000000000000000000000000000..37728abd4265636727324180c8dda07a4c1f42c2 GIT binary patch literal 15286 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 literal 0 HcmV?d00001 diff --git a/Project2-Character-Recognition/src/main.cpp b/Project2-Character-Recognition/src/main.cpp index 2bde07a..60739ea 100644 --- a/Project2-Character-Recognition/src/main.cpp +++ b/Project2-Character-Recognition/src/main.cpp @@ -16,6 +16,7 @@ #include #include #include +#include #define classes 52 #define epochs 40000 @@ -24,6 +25,7 @@ #define lr 0.0038 #define beta 0.65 using namespace std; +float avg_time_forward = 0, avg_time_backward = 0; int image_read(string path, vector &data) { cv::Mat image = cv::imread(path.c_str(), 0); @@ -38,6 +40,24 @@ int image_read(string path, vector &data) { data[data.size() - 1][i] = (double)image.data[i]; return 1; } + +double * image_read_rot(string path, int rot) { + cv::Mat image = cv::imread(path.c_str(), 0); + if (!image.data) // Check for invalid input + { + cout << "Could not open or find the image" << std::endl; + return 0; + } + double *data = new double[inputs]; + cv::Point2f pc(image.cols / 2., image.rows / 2.); + cv::Mat r = cv::getRotationMatrix2D(pc, rot, 1.0); + + cv::warpAffine(image, image, r, image.size()); // what size I should use? + cv::resize(image, image, cv::Size(in_dim, in_dim)); + for (int i = 0; i < inputs; i++) + data[i] = (double)image.data[i]; + return data; +} void csv_write(int iter, double loss, string file_name) { std::ofstream outfile; outfile.open(file_name, std::ios_base::app); @@ -64,6 +84,60 @@ void lable_read(string name, vector &data) { memset(data[data.size() - 1], 0, classes * sizeof(double)); data[data.size() - 1][value - 1] = 1; } +double * lable_read(string name) { + int value = stoi(name.substr(0, 2)); + double *data = new double[classes]; + memset(data, 0, classes * sizeof(double)); + data[value - 1] = 1; + return data; +} +int random_int(int min, int max) { + static std::random_device dev; + static std::mt19937 rng(dev()); + static std::uniform_int_distribution uint_dist(min, max); // distribution in range [1, 6] + return uint_dist(rng); +} + +void sequential_training(CharacterRecognition::Net &nn, vector &input_data, + vector &output_data, float &total_loss, int i) { + auto x = nn.forward(input_data[i%classes], inputs); + avg_time_forward += CharacterRecognition::timer().getGpuElapsedTimeForPreviousOperation(); + total_loss += nn.loss(x, output_data[i%classes]); + if (i % classes == 0 && i) { + cout << i << ":" << total_loss / classes << endl; + csv_write(i, total_loss / classes, "loss_momentum.csv"); + total_loss = 0; + } + if (!(i % (classes * 100)) && i) + nn.update_lr(); + nn.backprop(output_data[i%classes]); + avg_time_backward += CharacterRecognition::timer().getGpuElapsedTimeForPreviousOperation(); + delete[] x; +} + +void random_training(string path, CharacterRecognition::Net &nn, const vector &files, float &total_loss, int n) { + int i = random_int(0, classes - 1); + int rot = random_int(-10, 10);// +- 10 degree rotation + string name = path + string(files[i]); + auto input = image_read_rot(name, rot); + auto output = lable_read(files[i]); + auto x = nn.forward(input, inputs); + avg_time_forward += CharacterRecognition::timer().getGpuElapsedTimeForPreviousOperation(); + total_loss += nn.loss(x, output); + if (n % classes == 0 && n) { + cout << n << ":" << total_loss / classes << endl; + csv_write(n, total_loss / classes, "Rot_loss.csv"); + total_loss = 0; + } + if (!(n % (classes * 100)) && n) + nn.update_lr(); + nn.backprop(output); + avg_time_backward += CharacterRecognition::timer().getGpuElapsedTimeForPreviousOperation(); + delete[] input; + delete[] output; + delete[] x; +} + int main(int argc, char* argv[]) { // load image paths string path = R"(..\data-set\)"; @@ -74,24 +148,16 @@ int main(int argc, char* argv[]) { for (auto x : files) if (image_read(path + x, input_data)) lable_read(x, output_data); - // test forward pass + // forward pass CharacterRecognition::Net nn(inputs, {98, 65, 50, 30, 25, 40, classes}, lr, beta); int i; float total_loss = 0; for (i = 0; i < epochs; i++) { - auto x = nn.forward(input_data[i%classes], inputs); - //csv_write(i, nn.loss(x, output_data[i%classes]), "loss.csv"); - total_loss += nn.loss(x, output_data[i%classes]); - if (i % classes == 0 && i) { - cout << i << ":" << total_loss/classes << endl; - total_loss = 0; - } - nn.backprop(output_data[i%classes]); - if (!(i % (classes * 100)) && i) - nn.update_lr(); - delete[] x; + //random_training(path, nn, files, total_loss, i); + sequential_training(nn, input_data, output_data, total_loss, i); } + cout << " Avg forward = " << avg_time_forward / epochs << ", Avg backward = " << avg_time_backward / epochs << endl; int val = 0; for (int i = 0; i < classes; i++) { double* x = nn.forward(input_data[i], inputs); @@ -101,6 +167,7 @@ int main(int argc, char* argv[]) { delete[] x; } cout << "Passes " << val << " Out of "< Date: Tue, 17 Sep 2019 17:29:17 -0400 Subject: [PATCH 24/34] Finished README for Charecter Recognition --- .../img/regulat_acc.PNG | Bin 0 -> 4286 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 Project2-Character-Recognition/img/regulat_acc.PNG diff --git a/Project2-Character-Recognition/img/regulat_acc.PNG b/Project2-Character-Recognition/img/regulat_acc.PNG new file mode 100644 index 0000000000000000000000000000000000000000..15bab7b7aa41f4fd229922ba2ef0d9ea24d45435 GIT binary patch literal 4286 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 literal 0 HcmV?d00001 From a77046644cc342e86f6f06ad6f946057e6057ff5 Mon Sep 17 00:00:00 2001 From: Vaibhav Arcot Date: Tue, 17 Sep 2019 19:40:15 -0400 Subject: [PATCH 25/34] Updated Readme. Fixed typo in Stream compaction main file --- Project2-Character-Recognition/README.md | 32 ++--- Project2-Stream-Compaction/README.md | 118 ++++++++++++++++-- Project2-Stream-Compaction/img/downsweep.png | Bin 0 -> 13213 bytes Project2-Stream-Compaction/img/naive_scan.PNG | Bin 0 -> 36976 bytes .../img/pass_testcases.PNG | Bin 0 -> 53221 bytes Project2-Stream-Compaction/img/radix.PNG | Bin 0 -> 29693 bytes .../img/shared_mem_1.PNG | Bin 0 -> 18460 bytes .../img/shared_mem_2.PNG | Bin 0 -> 15377 bytes .../img/shared_mem_3.PNG | Bin 0 -> 31454 bytes .../img/stream_compaction_1.PNG | Bin 0 -> 7203 bytes .../img/stream_compaction_2.PNG | Bin 0 -> 11980 bytes .../img/stream_compaction_3.PNG | Bin 0 -> 15955 bytes Project2-Stream-Compaction/img/upsweep.png | Bin 0 -> 41056 bytes Project2-Stream-Compaction/src/main.cpp | 7 +- .../stream_compaction/naive.cu | 3 +- 15 files changed, 131 insertions(+), 29 deletions(-) create mode 100644 Project2-Stream-Compaction/img/downsweep.png create mode 100644 Project2-Stream-Compaction/img/naive_scan.PNG create mode 100644 Project2-Stream-Compaction/img/pass_testcases.PNG create mode 100644 Project2-Stream-Compaction/img/radix.PNG create mode 100644 Project2-Stream-Compaction/img/shared_mem_1.PNG create mode 100644 Project2-Stream-Compaction/img/shared_mem_2.PNG create mode 100644 Project2-Stream-Compaction/img/shared_mem_3.PNG create mode 100644 Project2-Stream-Compaction/img/stream_compaction_1.PNG create mode 100644 Project2-Stream-Compaction/img/stream_compaction_2.PNG create mode 100644 Project2-Stream-Compaction/img/stream_compaction_3.PNG create mode 100644 Project2-Stream-Compaction/img/upsweep.png diff --git a/Project2-Character-Recognition/README.md b/Project2-Character-Recognition/README.md index 864f523..8b45893 100644 --- a/Project2-Character-Recognition/README.md +++ b/Project2-Character-Recognition/README.md @@ -12,7 +12,7 @@ CUDA Character Recognition ### Overview This code creates a fully connected neural network in **CUDA** which can identify the character from the image. For training this network, 52 images (1 for each letter case) were used along with random rotations (± 10°) were used. The results show that the network was able to identify the character with a 100% accuracy. -![Sample Network](.\img\sample_network.PNG) +![Sample Network](./img/sample_network.PNG) ### Architecture @@ -28,11 +28,11 @@ Between the layers, ReLu was the activation function used and softmax as the fin ### Neural Network overview Neural networks are multi-layer networks of neurons (the blue and magenta nodes in the chart below) that we use to classify things, make predictions, etc. Each neuron activates on features, and the cascading of said neurons allows the network to activate on more complex representations of the input data. In a neural network, the final layer does the job of a support vector machine, which draws a hyperplane to classify the data (if that is the task). -![Neural Network](.\img\MLP.png) +![Neural Network](./img/MLP.png) #### Neuron A neuron is the building block of a neural network. It takes in a value and returns a nonlinear transformation of the input. We define a layer as a stack of neurons. The nonlinearity is the crucial part because you can show that any linear combination of layers can be simplified down to just 1 layer. -![Forward pass](.\img\Weighting.png) +![Forward pass](./img/Weighting.png) #### Activation functions @@ -44,7 +44,7 @@ For the final layer, I decided to use a softmax activation function because we a To use the network for inference, the forward pass through the network is used. Input data is passed into the network and at each layer, the weight matrix (w) and the bias is added (b). The equations for the forward prop are shown below: -![](.\img\fp.png) +![](./img/fp.png) #### Back propagation @@ -52,10 +52,10 @@ To actually train the network, we need to update the weights and biases. This is The gradients are shown below: -![Back Prop gradients](.\img\bp.png) +![Back Prop gradients](./img/bp.png) Once we have the gradients, we use the following equation to update the weights and biases -![Gradient decent equation](.\img\gradient_decent.png) +![Gradient decent equation](./img/gradient_decent.png) ### Modifications @@ -65,7 +65,7 @@ Besides getting the base neural network to work, listed below are some of the mo Regular gradient decent has a tendency of pulling the value rather quickly. This can result in loss curves being jagged. To combat this, SGD was implemented. The idea is that while updating the weights and biases. This changes the update equation to weight the last update along with the new update. This adds another hyper parameter β -![SGD](.\img\SGD.png) +![SGD](./img/SGD.png) #### Adaptive learning rate @@ -75,7 +75,7 @@ During gradient decent, the learning rate has a huge impact on the training perf For the softmax layer, the equation for the layer is given by -![Softmax](.\img\softmax.png) +![Softmax](./img/softmax.png) The denominator of this involves a sum over all the elements in the array. To do this, I used the upsweep phase of the work efficient scan I implemented as part of this assignment to allow for the sum to be calculated on the GPU (rather than actually copying it over to the CPU). The same function is also used to calculate the cross entropy loss (which also has a summation inside it). @@ -96,7 +96,7 @@ Another optimization done to the code was that all equations for the gradient pr #### Hyper Parameters -Here are the list of hyper parameters that had the network working at 100% accuracy (Weights for these parameters were given) +Here are the list of hyper parameters that had the network working at 100% accuracy (Weights and biases for these parameters were given in weights.csv) | Parameter Name | Value | | --------------------------- | -------------------------------- | @@ -114,19 +114,23 @@ Here are the list of hyper parameters that had the network working at 100% accur #### Loss vs Epochs -![Loss vs Epoch](.\img\loss_vs_epoch.png) +![Loss vs Epoch](./img/loss_vs_epoch.png) + +In this plot, it is clear that the loss with momentum and decay performed the best. The kink in the middle (I believe) was due to suboptimal tuning of the decay rate. With a little more tuning the rate would decay slightly faster to allow for the drop but not the oscillation. The raw data is also uploaded. One important thing to mention was that with the pure learning rate approach, the max correct it got (for this run) was 51 out of 52 characters. This is not always the case (I have seen it getting a full but it requires more time). The other methods achieve a 100% accuracy (shown below) on the dataset given. + +![Accuracy](./img/regulat_acc.PNG) + +For the speed, the code can run 1 forward pass in **1.13577 ms** and 1 backward pass in and **0.505299 ms** average (with the architecture mentioned above). -In this plot, it is clear that the loss with momentum and decay performed the best. The kink in the middle (I believe) was due to suboptimal tuning of the decay rate. With a little more tuning the rate would decay slightly faster to allow for the drop but not the oscillation. The raw data is also uploaded. One important thing to mention was that with the pure learning rate approach, the max correct it got (for this run) was 51 out of 52 characters. This is not always the case (I have seen it getting a full but it requires more time). For the speed, the code can run 1 forward pass in **1.13577 ms** and 1 backward pass in and **0.505299 ms** average (with the architecture mentioned above). - Try diff architectures ### Rotation loss plots (given more iterations) -![Loss vs Epochs for random rotations](.\img\loss_vs_epoch_rand.PNG) +![Loss vs Epochs for random rotations](./img/loss_vs_epoch_rand.PNG) For the above plot, a random rotation of ± 10° was given to the training data. The performance of this was 52 out of 52 cases (shown below), which is amazing considering it took the same number of iterations! -![Rot acc](.\img\rotation_matrix_acc.PNG) +![Rot acc](./img/rotation_matrix_acc.PNG) ### Observations diff --git a/Project2-Stream-Compaction/README.md b/Project2-Stream-Compaction/README.md index 0e38ddb..7ec634a 100644 --- a/Project2-Stream-Compaction/README.md +++ b/Project2-Stream-Compaction/README.md @@ -1,14 +1,118 @@ CUDA Stream Compaction ====================== -**University of Pennsylvania, CIS 565: GPU Programming and Architecture, Project 2** +* **University of Pennsylvania, CIS 565: GPU Programming and Architecture, Project 2** + * Name: Vaibhav Arcot + + * [LinkedIn](https://www.linkedin.com/in/vaibhav-arcot-129829167/) + + * Tested on: Windows 10, i7-7700HQ @ 2.8GHz (3.8 Boost) 32GB, External GTX 1080Ti, 11G (My personal laptop) +### Overview +This repo constrains **CUDA** implementations for scans, stream compacts and sorts an array. +### Scan overview +Scanning is the process of taking a 1d array and returning a new array where each element has the sum of the elements before it. This algorithm is later used in the Character recognition part of the project as well the stream compaction component of this project. All scan versions mentioned in this repo are exclusive scans (zero padded at the front). -* (TODO) YOUR NAME HERE - * (TODO) [LinkedIn](), [personal website](), [twitter](), etc. -* Tested on: (TODO) Windows 22, i7-2222 @ 2.22GHz 22GB, GTX 222 222MB (Moore 2222 Lab) +#### CPU -### (TODO: Your README) + On a CPU, the simplest method for implementing this is to loop over the data and keep track of the sum and replace every cell with it. Besides this, there are ways to do this in parallel. Three methods were implemented here. -Include analysis, etc. (Remember, this is public, so don't put -anything here that you don't want to share with the world.) +#### Naïve Parallel Scan +This uses the "Naïve" algorithm from GPU Gems 3, Section 39.2.1. Example 39-1 but without the shared component. The idea of this algorithm is to have each thread perform sum up another cell n strides away. By changing n from 2 to max_value, increasing by powers of 2, we are left with the summed array. A pictorial representation is shown below. +![Naive scan](./img/naive_scan.png) +#### Work efficient Parallel Scan + +Work efficient Parallel scans are an optimization to the Naïve scan. Work is split into 2 phases. The upsweep phase and the down sweep phase. The upsweep phase is a simple parallel reduction (shown below). + +Downsweep + +For the down sweep phase, we take the array of partial sums and use the tree to compute the scan. This is done by first traverse back down tree using partial sums to build the scan in place. Then the root is set to zero. At each pass, a node passes its value to its left child, and sets the right child to the sum of the previous left child’s value and its value. This is shown below: + +![Upsweep phase](./img/upsweep.png) + + + +#### Share memory Parallel Scan + +After implementing the work efficient parallel scan, the next major bottleneck becomes the access speeds of global memory. Because we have a limit on the total amount of memory 1 block can have, we can't just load the entire array into 1 blocks shared memory. The idea is that we split the array over multiple blocks. Each block runs a scan on the part of the array each block should deal with (decided using the blockid). + +![Phase 3](.\img\shared_mem_1.PNG) + +Once each scan has finished, we then collect the sum of all the elements and store it in an auxiliary array. We then take that array and run a scan on it (I chose CPU because otherwise the problem becomes recursive). + +![Phase 3](.\img\shared_mem_2.PNG) + +Then using this scanned array, each block takes the appropriate value from the auxiliary array and adds that to all its elements in the array. + +![Phase 3](.\img\shared_mem_3.PNG) + +Besides the problem of using too much shared memory, there is the first problem of actually synchronizing the threads in a block to prevent them from overwriting each other in the shared memory. To do this, we spawn half the number of items each block needs to scan. Then each thread reads 2 values into shared memory. After that, each thread id can use its value to decide the offset (and wait for each level to finish) and add the result. A similar approach was taken for the down sweep phase. + +### Stream compaction overview + +Stream compaction is an algorithm used to remove zeros from an array. This is used for collision detection and ray tracing. + +#### Methods +In this repo, 2 methods were implemented. The first (which cannot be run in parallel) is just to run a naive loop over the data and copy it over to a second array if it isn't a zero. + +In order to parallise the copying of data, we head towards the second method. Here we create a mask array, where 1 indicates an element is non zero. +![Stream compaction 1](.\img\stream_compaction_1.PNG) +Then we can run a scan algorithm on the mask array. The resultant values tell the positions for the non zero elements. + +![Stream compaction 2](.\img\stream_compaction_2.PNG) + +We can then copy over the data (in parallel) because we now know where all the data should go, shown below + +![Stream compaction 3](.\img\stream_compaction_3.PNG) + + + +#### Different scans + +For the second version of this algorithm, different scans can be used. The work efficient scan as well as the shared memory scan was used. + +### Radix sort overview + +For the final algorithm implemented in this repo, we perform parallel sorting using radix sort. Parallel radix sort can be thought of in 5 phases: + +* Phase 1: We take the input array and extract the bit we are sorting around (in a buffer `b`) +* Phase 2: We take the not of each bit and put the data into another buffer `e` +* Phase 3: We run a scan on `e` to get `f`, which gives us the position of all the bits that are zero. We then take the sum of the final elements in `e` and `f` and call this `totalFalses` +* Phase 4: We use a formula (`t[i] = i – f[i] + totalFalses`) to compute the positions of the true matrix, we call this buffer `t`. +* Phase 5: We now know the positions of the true and false elements, so we can sort the array (around the current bit) using `t` and `f`, using `d[i] = b[i] ? t[i] : f[i]`, where `d[i]` is the destination array. + +![Radix](.\img\radix.PNG) + +These 5 phases are repeated for all the bits in the numbers to result in a sorted array. + +### Results + +For results, a LOT (32K) datapoints were collected for the various combinations. Due to time limitations, not all the data could be plotted (pretty), but all the data has been included in the repo. The results shown below were obtained using a linear interpolation on the data (ideally I would plot a curve with variance bands). + +### Observations & Optimizations + +#### Launching variable number of threads in the work efficient method + +I decided to launch the correct number of threads per level in the work efficient implementation. This meant the level loop came into the CPU code and for each iteration the CPU would compute the correct number of threads to spawn. For the shared memory, the loop had to be on the GPU because of the shared memory aspect. Though I don't have concrete results, it seemed like having the loop on the CPU side and spawning the ideal number of threads was more efficient. + +#### Data collection scripts +To allow for the large amount of data to be collected, a data collection sctipt was written. It automated the array generation and timed the various coponents of the code and write the resuts (per iteration to make it more robust) to a csv. This helped immensly in collecting the large amount of data I was able to generate. + +#### 1 less loop for the work efficient scan + +Because we are already setting the value of the root to zero, while implementing the upsweep phase, I decided to loop 1 less time. + +#### Overflow on int value for large sizes + +While pushing my code to the limits, I came across an issue where I would overshoot the max value of an int in my scan algorithm. This was an easy fix, but because of this, I have data for the speed when the code overflows (in the repo). The effect fixing this bug had was it didn't increase the time to perform a scan but limited my code to only being able to process array sizes of 2^28. This limit was due to the system running out of memory (explained again) + +#### Hitting the max value on malloc + +The scan and stream compaction code were able to go to 2^28 (2^31 with the overflow bug). This seems to be a limit a hw limit of using large arrays to store the data. + +#### Beating CPU performance +To beat the CPU (part of the extra credit), I was able to do it only if we don't consider the copying time to the GPU. If we do this, it is only fair to not include the malloc time for the CPU's buffers. If we do this then the GPU code outperforms the CPU code (plot shown below): + + +#### Thrust speed +From my experiments, thrust seems to perform comparable to my implementations of the algorithms (such as sorting or scanning). The difference is small but my code outperformed thrust for high values (could be statistically insignificant). \ No newline at end of file diff --git a/Project2-Stream-Compaction/img/downsweep.png b/Project2-Stream-Compaction/img/downsweep.png new file mode 100644 index 0000000000000000000000000000000000000000..d7e683290c68b3f9c723e70dbc687eee68009e28 GIT binary patch literal 13213 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 literal 0 HcmV?d00001 diff --git a/Project2-Stream-Compaction/img/pass_testcases.PNG b/Project2-Stream-Compaction/img/pass_testcases.PNG new file mode 100644 index 0000000000000000000000000000000000000000..b0e72371716f83801cb916fb0cb19663a249296e GIT binary patch literal 53221 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 dOQP6n5twbB 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 Wud7lOnj-QQnHgCb7VF=A{(k}NaYT{; literal 0 HcmV?d00001 diff --git a/Project2-Stream-Compaction/img/shared_mem_2.PNG b/Project2-Stream-Compaction/img/shared_mem_2.PNG new file mode 100644 index 0000000000000000000000000000000000000000..91d30d26d426b4e501320b06e7be99dc768b727e GIT binary patch literal 15377 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 literal 0 HcmV?d00001 diff --git a/Project2-Stream-Compaction/img/shared_mem_3.PNG b/Project2-Stream-Compaction/img/shared_mem_3.PNG new file mode 100644 index 0000000000000000000000000000000000000000..51f1b9244f5e199861240d5b1a5a97e0adb6dab8 GIT binary patch literal 31454 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 OYPq_&@1^cOef6K{Sl6Zi literal 0 HcmV?d00001 diff --git a/Project2-Stream-Compaction/img/stream_compaction_2.PNG b/Project2-Stream-Compaction/img/stream_compaction_2.PNG new file mode 100644 index 0000000000000000000000000000000000000000..accad93de2fea5aac7e8f9828354166329040740 GIT binary patch literal 11980 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 MKFD6$?o&Vh2c$C9+yDRo literal 0 HcmV?d00001 diff --git a/Project2-Stream-Compaction/img/stream_compaction_3.PNG b/Project2-Stream-Compaction/img/stream_compaction_3.PNG new file mode 100644 index 0000000000000000000000000000000000000000..cb404c5f492ce9f05181d4ad16c3ea2c9fa4f710 GIT binary patch literal 15955 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 literal 0 HcmV?d00001 diff --git a/Project2-Stream-Compaction/src/main.cpp b/Project2-Stream-Compaction/src/main.cpp index 0d113b5..2bd12da 100644 --- a/Project2-Stream-Compaction/src/main.cpp +++ b/Project2-Stream-Compaction/src/main.cpp @@ -25,7 +25,7 @@ long long *c = new long long[SIZE]; int main(int argc, char* argv[]) { // Scan tests - + std::cout << "Array Size:" << SIZE << std::endl; printf("\n"); printf("****************\n"); printf("** SCAN TESTS **\n"); @@ -127,7 +127,6 @@ int main(int argc, char* argv[]) { count = StreamCompaction::CPU::compactWithoutScan(SIZE, b, a); printElapsedTime(StreamCompaction::CPU::timer().getCpuElapsedTimeForPreviousOperation(), "(std::chrono Measured)"); expectedCount = count; - printArray(count, b, true); printCmpLenResult(count, expectedCount, b, b); zeroArray(SIZE, c); @@ -135,28 +134,24 @@ int main(int argc, char* argv[]) { count = StreamCompaction::CPU::compactWithoutScan(NPOT, c, a); printElapsedTime(StreamCompaction::CPU::timer().getCpuElapsedTimeForPreviousOperation(), "(std::chrono Measured)"); expectedNPOT = count; - printArray(count, c, true); printCmpLenResult(count, expectedNPOT, b, c); zeroArray(SIZE, c); printDesc("cpu compact with scan"); count = StreamCompaction::CPU::compactWithScan(SIZE, c, a); printElapsedTime(StreamCompaction::CPU::timer().getCpuElapsedTimeForPreviousOperation(), "(std::chrono Measured)"); - printArray(count, c, true); printCmpLenResult(count, expectedCount, b, c); zeroArray(SIZE, c); printDesc("work-efficient compact, power-of-two"); count = StreamCompaction::Efficient::compact(SIZE, c, a); printElapsedTime(StreamCompaction::Efficient::timer().getGpuElapsedTimeForPreviousOperation(), "(CUDA Measured)"); - //printArray(count, c, true); printCmpLenResult(count, expectedCount, b, c); zeroArray(SIZE, c); printDesc("work-efficient compact, non-power-of-two"); count = StreamCompaction::Efficient::compact(NPOT, c, a); printElapsedTime(StreamCompaction::Efficient::timer().getGpuElapsedTimeForPreviousOperation(), "(CUDA Measured)"); - //printArray(count, c, true); printCmpLenResult(count, expectedNPOT, b, c); printf("\n"); diff --git a/Project2-Stream-Compaction/stream_compaction/naive.cu b/Project2-Stream-Compaction/stream_compaction/naive.cu index bcfe064..1c878a6 100644 --- a/Project2-Stream-Compaction/stream_compaction/naive.cu +++ b/Project2-Stream-Compaction/stream_compaction/naive.cu @@ -14,13 +14,12 @@ namespace StreamCompaction { static PerformanceTimer timer; return timer; } - // TODO: __global__ __global__ void naive_parallel_scan(unsigned long long int n, long long *odata, const long long *idata, long d) { unsigned long long int index = blockDim.x * blockIdx.x + threadIdx.x; if (index >= n) return; if (index >= d) - odata[index] = idata[index - d] + idata[index]; // todo figure out why this doesnt work with non powers of 2 + odata[index] = idata[index - d] + idata[index]; else odata[index] = idata[index]; } From c269b2617dfc7af1242aa7dd7acefe6465faf3cf Mon Sep 17 00:00:00 2001 From: Vaibhav Arcot Date: Tue, 17 Sep 2019 19:41:34 -0400 Subject: [PATCH 26/34] Fixed images in README --- Project2-Stream-Compaction/README.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Project2-Stream-Compaction/README.md b/Project2-Stream-Compaction/README.md index 7ec634a..fb59e90 100644 --- a/Project2-Stream-Compaction/README.md +++ b/Project2-Stream-Compaction/README.md @@ -36,11 +36,11 @@ For the down sweep phase, we take the array of partial sums and use the tree to After implementing the work efficient parallel scan, the next major bottleneck becomes the access speeds of global memory. Because we have a limit on the total amount of memory 1 block can have, we can't just load the entire array into 1 blocks shared memory. The idea is that we split the array over multiple blocks. Each block runs a scan on the part of the array each block should deal with (decided using the blockid). -![Phase 3](.\img\shared_mem_1.PNG) +![Phase 3](./img/shared_mem_1.PNG) Once each scan has finished, we then collect the sum of all the elements and store it in an auxiliary array. We then take that array and run a scan on it (I chose CPU because otherwise the problem becomes recursive). -![Phase 3](.\img\shared_mem_2.PNG) +![Phase 3](./img/shared_mem_2.PNG) Then using this scanned array, each block takes the appropriate value from the auxiliary array and adds that to all its elements in the array. @@ -56,14 +56,14 @@ Stream compaction is an algorithm used to remove zeros from an array. This is us In this repo, 2 methods were implemented. The first (which cannot be run in parallel) is just to run a naive loop over the data and copy it over to a second array if it isn't a zero. In order to parallise the copying of data, we head towards the second method. Here we create a mask array, where 1 indicates an element is non zero. -![Stream compaction 1](.\img\stream_compaction_1.PNG) +![Stream compaction 1](./img/stream_compaction_1.PNG) Then we can run a scan algorithm on the mask array. The resultant values tell the positions for the non zero elements. -![Stream compaction 2](.\img\stream_compaction_2.PNG) +![Stream compaction 2](./img/stream_compaction_2.PNG) We can then copy over the data (in parallel) because we now know where all the data should go, shown below -![Stream compaction 3](.\img\stream_compaction_3.PNG) +![Stream compaction 3](./img/stream_compaction_3.PNG) @@ -81,7 +81,7 @@ For the final algorithm implemented in this repo, we perform parallel sorting us * Phase 4: We use a formula (`t[i] = i – f[i] + totalFalses`) to compute the positions of the true matrix, we call this buffer `t`. * Phase 5: We now know the positions of the true and false elements, so we can sort the array (around the current bit) using `t` and `f`, using `d[i] = b[i] ? t[i] : f[i]`, where `d[i]` is the destination array. -![Radix](.\img\radix.PNG) +![Radix](./img/radix.PNG) These 5 phases are repeated for all the bits in the numbers to result in a sorted array. @@ -115,4 +115,4 @@ To beat the CPU (part of the extra credit), I was able to do it only if we don't #### Thrust speed -From my experiments, thrust seems to perform comparable to my implementations of the algorithms (such as sorting or scanning). The difference is small but my code outperformed thrust for high values (could be statistically insignificant). \ No newline at end of file +From my experiments, thrust seems to perform comparable to my implementations of the algorithms (such as sorting or scanning). The difference is small but my code outperformed thrust for high values (could be statistically insignificant). From 5df67fdd37b4891b0293abcc3dcecf6c0fcee528 Mon Sep 17 00:00:00 2001 From: Raven Date: Tue, 17 Sep 2019 20:23:14 -0400 Subject: [PATCH 27/34] Added Plot images to repo --- Project2-Stream-Compaction/img/sc_nonpow2.png | Bin 0 -> 35382 bytes Project2-Stream-Compaction/img/sc_pow2.png | Bin 0 -> 33617 bytes Project2-Stream-Compaction/img/scan_nonpow2.png | Bin 0 -> 35118 bytes .../img/scan_nonpow2_faster.png | Bin 0 -> 28548 bytes Project2-Stream-Compaction/img/scan_pow2.png | Bin 0 -> 34938 bytes .../img/scan_pow2_faster.png | Bin 0 -> 30034 bytes Project2-Stream-Compaction/img/sort_nonpow2.png | Bin 0 -> 27173 bytes Project2-Stream-Compaction/img/sort_pow2.png | Bin 0 -> 28121 bytes 8 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 Project2-Stream-Compaction/img/sc_nonpow2.png create mode 100644 Project2-Stream-Compaction/img/sc_pow2.png create mode 100644 Project2-Stream-Compaction/img/scan_nonpow2.png create mode 100644 Project2-Stream-Compaction/img/scan_nonpow2_faster.png create mode 100644 Project2-Stream-Compaction/img/scan_pow2.png create mode 100644 Project2-Stream-Compaction/img/scan_pow2_faster.png create mode 100644 Project2-Stream-Compaction/img/sort_nonpow2.png create mode 100644 Project2-Stream-Compaction/img/sort_pow2.png diff --git a/Project2-Stream-Compaction/img/sc_nonpow2.png b/Project2-Stream-Compaction/img/sc_nonpow2.png new file mode 100644 index 0000000000000000000000000000000000000000..52672c5b0d4b23796981ce55f6221eb693556386 GIT binary patch literal 35382 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 literal 0 HcmV?d00001 diff --git a/Project2-Stream-Compaction/img/sc_pow2.png b/Project2-Stream-Compaction/img/sc_pow2.png new file mode 100644 index 0000000000000000000000000000000000000000..a78c38363255ad1ad704fd67b2b2afd102b4ded9 GIT binary patch literal 33617 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 literal 0 HcmV?d00001 diff --git a/Project2-Stream-Compaction/img/scan_nonpow2.png b/Project2-Stream-Compaction/img/scan_nonpow2.png new file mode 100644 index 0000000000000000000000000000000000000000..570d377f94f475d5f2f799e5e1398674621bee87 GIT binary patch literal 35118 zcmcfpWmHw$A2tkcKtfSaDJ2z9N2BDhba!v! znHxOkf1mfmJH|bpF`n~fACdXzdm~Oka(GYOC&KPBisCLMugSO z(fNL+z))sFP60n=cX@);(j^OcE(FSXDWQ%0A8%&d8@IvdG78oM@X?EQ7y0i=n2+?q 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 LEv1@A7GeJb3TIi^ literal 0 HcmV?d00001 diff --git a/Project2-Stream-Compaction/img/scan_pow2.png b/Project2-Stream-Compaction/img/scan_pow2.png new file mode 100644 index 0000000000000000000000000000000000000000..9ae5650d0148a4219dc635be0e212313dccdddf3 GIT binary patch literal 34938 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 z z3r?EpK<&ea(ols-I|z{k%H!_|!}kDULK}y$T*@kOg_o{;bXuDA%$y7%!>+o{$UL$n z(o;#G9j*4}Xqwqb{p^%!xD;cW5ZS)+#$0#z($Y2ra?1>N5h}7R$z~>AN_kvdQ7oS37~ZjItc;mKczC2#?qe-G}-Z{G^${yt5pWLDQ?-F*jv zD7WI`4=9mP(d-P<2(rb^p{@mWr-NZ_-uK$(mE)yZ|G4U7ElyO@= zVf4oIlOGgtjzsyNbMX(8CY{&=aSUzzA>gc!;oc2!OY`%Y+H_UY>Im){b+BjQT`8tB zqKCFku_?E1EL$dsO)Anjc&NR=yz0K&$L&^dEK*xgMs7Fxw!I0Z$#ymiGj8bRBq&M@)r4pabKm`$U{ba|U@oJa&b}RMipFG)x_p+TH-AfBU6U ztDIs$3pVmgyiNDw@JRLIVo}yd{V-|82m-K%k(XS ziH^D1*UV1wv+t*?E!JM#n-bDv>aK;^Wu^uWD|}0D?rTrOPMwMN=pLGuG+Yy6ZOGg8 z`6Ir7zn5XlAX{H?M{2!907ukP z5Q`<<6QN9ac`D1Iy<<0 zfU>6iLN5q9I-TuJS#}{ugVSSK2EWW`(jG}w$A9lRDM|@p+tNJn)zcfA>Xx|Y?B0r>i%+eJH70qWQIBLR=?5{K{G!EwI}a zVvQ9vm8OKPUU-x6GWSzP#d%H7$v}EWL1|5zw_PQe4&3y+z-g$5@1kYf+<#(j-|en` zK%iHdwrMl)2K#V_1`>(SW62QnX6ht!6&RdoOxsUgVn8sCVr zV7>dMX=9VTw@8vMwt2&c>FR{~0ZNX*_o28On0!@6sNZgjui^Rg zQFrVW_*@WTvvG3*9RXn8_w=pJ#-?hjx$a(PQpaxxIzrs7Q{Jv2{WsxHjVAtl17F5$ z3cvW2)&O2opXSP9{Ns;U{9LhY1rj|fWz7c{ht!3r=C6xp4Ga`}ul=tVry)1Z8sDc0 z|1M6DlrWq#IwYLie?p1*+;?^ozxzv;7+G)UJB(VZlKufhE+F%S4E-@ytaARpsyvS6 z%OvKLKiabL_`mb+sIG(lGrv9nHGurP;0Ih{0Srsw&mvj`+)gK+dPXd4nt_`p1&PEa z12cxk#H~Fgw6|%W)xpA{#M!L>`kKM^;OWwfU+;ZWV@#jjt2z*lxd=(A!woB?8tZrF z&gr-o0JARka_u$zW@&x8@~YUWAzKKAp4fO_KFK7x#r+B4sH>h#v^>gR8O9UByrc5_ zy!=oLDv$QI8L9pe6h-kK$|&4>!owK4vHiF)5tCnsFzH{uP5`OLW8~}9j}DAaVm@x< zm2mA&*VY5Wh`!QI>DxV}8G04*0&l7g~8&HF7%JP_r2r z*#q6Q>TkTtiI}V?{+b`-nz=aYjxp=Eg#?=8t(U3SDfO~jS_d*|QpDN5%3EEX_%D&p{XLB{jeAf*Z|7*DVN6C0BcLZa?8)~P2>R*He;&W*yn?4hVwcXRK17}2#L;P+(i8ku-S#OcFmPQ?F zUs?Vbgvj)vT-*Je;@cC_{o+9DPSO>M_xiWUhG#_g%nj%uvnKen+E}PkTz}Va(j&ZY zzr8I8p-@2RBW>xR*U`D3+4}Rd&Y9u-?$cApEe~GKh4Qi}iOQdCsgEu|T37IK1;>Ek zndMnuneJ3UeAmrg`GV)CYX#~e(^bH4ZeGzk2#bdoSO1r#Z36Ui4IF@KjZ#;FjW-fR zwUS90GE2okBMbk&tuQxc#FXocu33GrTX8WP^{#)RB${PT<2Sfh)@p8NOPz}Cro@zH zbp;p>*|GsGx-@?O%2EAgiL`!IUaq;kUOv|Dw#IBw^dt+0S5IMPs;~dt%`HBL5~O=_ z(p8XSng<`?rU|*Mw~sNl3v2O$8>}D!x>Xq986n!+ku2^G!eo{$P5paUtiSW3X3t(7 zU|bCRaVFQ(Ozy`}03}c^QbtqiDBnH0GP~K-B%YQ=v`S7kN*DX6Vg{ZiG}W+tND+r{ zINr3*N-qJUbWa~0v|J9eNOvkS_HaP0|2K53u@YEe$>S}{R~{O6)@-{!zBv*;ciDN? zcS{AJY!%T6AqYf0PG^a-+XfPUws{}huP-!oxV;w=wfNynJgvF>9|x_sXo3U9T^^DF zL6_;xhXrN3rI3N?vliH=ucQA=HA7l~`LSEvpN(g{`Ew-ABj~&&T~YN)X$lB?7DwLC zS3hhZwMviTO#u*$xf}a!m0U%-`QhwGb%frz2(q@_T&r-lQCZ3~8k-UGq$jy+Vfk6L zR2PjM^6}9sv#WvUsv!=B{I8%Jq7w5qf#Hhem02#ftOt8UZJ1AV!^7)q>NWdZ(kHfJ z9jaZCxUftmizSnAlp2#WBNq4wO7yYf)0%_r(GBF~?IIBsq-V8;42tA7wOFj&om~|m zNk&Y{Bf{vy*m`R}F!$yv8=I8Pm!$?6@a7KLW1G?-G&oQchT2&Kcpd22=|c@PqlR+V zm6Bi5e^jS+?_Ck0tO%<7oGxv#>Dvi`u-~v$eyB;9!b<2b7GORs)tsWy)qTrQXu4tU z-7;Bxdm1UOT z5QxS5e{(j=*>Ntf?bk>)pDP?!>lImWi@1=g& zPrGc>RuNH~AlEZ#6b*yRV&rmL-qe?6CGY2>Y!$yLhkh68_)MuGMJ3b6ov^r> zOxzyzc?s<#LI;8TV8^Z64r8nDP3Ap`(hxplH=I?N^FljO%`BdTiVN=^oq()I%)hKh z9WLup-e6f(VRM*(On=LudldrVg5X!4y43@l)J9;E4D&2KulQ|~40==gSP+{H2gKO# z!O-1AC&Jxl?N@!jCSvs|7XLbg6ms;9ddP=7pcuBCg$CrEDC6K!p8o z1U^#CO8XwBC~a~+hmrN^@ooeS4u3XSYJzx5S1h-#W7uX|Wq@%`e#DC+qx)T>D)=)H z|GPBccQHkhEu$tWW&84I=NTSg&Kee?yGoz84;9l{7Sq`vhQ_!WoZ<}ThkLmpxm%26CUVl!ih1+q&F9anKqg~)YAPkYBaFB_O0LTkU0$ADwtSDNU^)gh z)ttxXy=8WomitldcFKG8r0$R#9BwW57!i??OeqAAz_?-v=rbJ|9ArQL1xg@+EEW(D zynApcU=EpFLAuO1+pJW$zCG~RwexM)V!njLxUOU@w74ek01UUGfKN`B!@&&5-J~^L zbh5TCh>Lrwrbc%9Yi7pu`Sau2M&Y4?PL;K{yPAOYAsK!kux}u6_-?m@$Ere8isfXl z{>i)DkBeU`>Z!zqL0Dz6bG;Slh>YZGtZmTzBD$&icqgSRUX)fni;+r$P6{?%ZBKW) zj!hqwrBS3@)1-O-97`sG|M~7k&cODzHc-I%Rx2VRqFcVPs7Td89iAT8TiM0oe)wg0V6%@HCLpb7XV|1ziBVbrp#js-T5;NP}IiO)_t9f8SxEs(WT8 zvz|avMIs7_mVov^3%;W$4=1Oq(-(6%GTMPUqlw8hXj}&<@+#m0$w|LI1;j}}mnlQk zdc0-OMJFAdk*RuDpeovp1Pl zqTS0|0OJI$t`_eu;?(4OdwZ2?gRZJZ0d_@PEwD`B`0d_{q_eH94TPIjfZkn9RZ-#D zeSpIIz}J4y?pRe zztD>zpyk-h*EixIP+q0taV&)E++_z%C#S2gKLCWY#<~Zl0E_!OOD51JZTsTI%_%BH zRf(t^;5dQ2{bAIpN!-8go@hn{1es zf<;llF+h57QTw`P?p0K4A6!}-C}a&$h>|Xs1C2nCngLWdzh;T2 z|1o9Mv9 zZW?l_K&Sx9yx8>$hz$Vt{6)7|+Tj7Oqa9AM!(cClPJ7pn*MgPwrm|ENAhKM% zwLAPt9Yw)Bx3<HQz2Ds5U(Uw3 z+Lp%qrJIY(3s%w=PR3R?VM8uW2qCa4w=MyI2*Pt8_ZJm{3m~+;PxgP9idM+BWEKO^ ztO+=r3k73hllJ(Mn;Tqz#Bu|ekoz;Lg+3e!ad8!1+w=YXnsQkIhg)+%?pyf4>(M2% zKCJ`lO$~m z+dzfP%HDo@Xh=bBZ~5RK)n@hZ)cYaja|>%yEl1fl4|51P z7{Z6MJ0?_})6=J+Z2sH=0-V!sJD#`LsD)pO{E#z;0M03(^hG||O=7&0`V>SYekz}y z1L0%_`ExV@7?R+Jt8g(pTG+KnMHI*|H#9V?Kxp@0sY0N2PH#+adp|yiQ+*6pu|G>b zOYo+Jon3KpvASMQZ*O8kg5s?t5@=j-Q) z+lVL-IDv0(`%q;Q$QZ{yd8VgFyZP{ffkAFUlN~)1(*QW%K-dK^d>jM4OjNW`_cUl) z5x;j22qmkts&B5X-I`tjq-{b*Rbd!ndICUR0WG>pY2w1m|FyJp_+_9j+ULD_+$p0u?0%hA1BALEyK$q~S9?KAzeXbE#J{UhANZZy;}3ZN^SiR1|pk721!0^O@hULJ_m-tfWLl z>N^}od&O+00Oaxw4A5}KrV17+s#|_W#>P`4Be(p>Ak-J=&17~!1#Ug}#8Z8Jar+6; z>)p4Awg8z7Sa4Mrpd&XqKK|h<=bV~j17H&aozpExOH9LEG_2~kvbJ#>NNz8F?6wxr zTmqaKHLu4Xyf+S_0MXAeH4V*s)|JIYpsL;pG^BSiQc2rxR?;*x6_5()@ zf`vbS>OOsXcb(L1_~27Z${jB@Okh=&s9>`Ci_F(IW!;B&^BoT_K(v7s^X^*SRjmN( zBysfwkk0ED=SIY0vMg#16_q5mJd_`iiv f|NW6~=Oj1g%<3wA<(~ul3Q<+kR4jd97W6*=6y8mv literal 0 HcmV?d00001 diff --git a/Project2-Stream-Compaction/img/scan_pow2_faster.png b/Project2-Stream-Compaction/img/scan_pow2_faster.png new file mode 100644 index 0000000000000000000000000000000000000000..31b9f319e64c313cb5bd18fed4ad692143d70e4e GIT binary patch literal 30034 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òLrm`TS?X1Kou z%PuMMhY7eos%BrI`S9UG9UV@d6QKBf!&iH0sL(!uMxCw4GkwnR%)(1P{5!^ zAPIsbePo>-#1=r7R6xLNFdTx;EkthvDS~<)NM`zi)*ZIy`->t$_7? Date: Tue, 17 Sep 2019 20:34:16 -0400 Subject: [PATCH 28/34] Added plots to readme --- Project2-Stream-Compaction/README.md | 40 ++++++++++++++++++-- Project2-Stream-Compaction/img/data_gen.PNG | Bin 0 -> 46324 bytes 2 files changed, 37 insertions(+), 3 deletions(-) create mode 100644 Project2-Stream-Compaction/img/data_gen.PNG diff --git a/Project2-Stream-Compaction/README.md b/Project2-Stream-Compaction/README.md index fb59e90..c41c675 100644 --- a/Project2-Stream-Compaction/README.md +++ b/Project2-Stream-Compaction/README.md @@ -89,6 +89,32 @@ These 5 phases are repeated for all the bits in the numbers to result in a sorte For results, a LOT (32K) datapoints were collected for the various combinations. Due to time limitations, not all the data could be plotted (pretty), but all the data has been included in the repo. The results shown below were obtained using a linear interpolation on the data (ideally I would plot a curve with variance bands). +#### Scan Algorithms + +![Powers of 2](.\img\scan_pow2.png) + +The above figure is the time vs array size plots for the scan algorithms running powers of 2 while the picture below is the scan algorithm running for non powers of 2. + +![](.\img\scan_nonpow2.png) + +#### Stream compaction + +![](.\img\sc_pow2.png) + +The above figure is the time vs array size plots for the stream compaction algorithms running powers of 2 while the picture below is the stream compaction algorithm running for non powers of 2. + +![](.\img\sc_nonpow2.png) + +#### RADIX Sorting + +![](.\img\sort_pow2.png) + + + +The above figure is the time vs array size plots for the the sorting algorithm running powers of 2 while the picture below is the stream compaction algorithm running for non powers of 2. + +![sort_pow2](.\img\sort_nonpow2.png) + ### Observations & Optimizations #### Launching variable number of threads in the work efficient method @@ -96,7 +122,9 @@ For results, a LOT (32K) datapoints were collected for the various combinations. I decided to launch the correct number of threads per level in the work efficient implementation. This meant the level loop came into the CPU code and for each iteration the CPU would compute the correct number of threads to spawn. For the shared memory, the loop had to be on the GPU because of the shared memory aspect. Though I don't have concrete results, it seemed like having the loop on the CPU side and spawning the ideal number of threads was more efficient. #### Data collection scripts -To allow for the large amount of data to be collected, a data collection sctipt was written. It automated the array generation and timed the various coponents of the code and write the resuts (per iteration to make it more robust) to a csv. This helped immensly in collecting the large amount of data I was able to generate. +To allow for the large amount of data to be collected, a data collection script was written. It automated the array generation and timed the various components of the code and write the results (per iteration to make it more robust) to a csv. This helped immensely in collecting the large amount of data I was able to generate. A sample screenshot of the output is shown below + +![](.\img\data_gen.PNG) #### 1 less loop for the work efficient scan @@ -111,8 +139,14 @@ While pushing my code to the limits, I came across an issue where I would oversh The scan and stream compaction code were able to go to 2^28 (2^31 with the overflow bug). This seems to be a limit a hw limit of using large arrays to store the data. #### Beating CPU performance -To beat the CPU (part of the extra credit), I was able to do it only if we don't consider the copying time to the GPU. If we do this, it is only fair to not include the malloc time for the CPU's buffers. If we do this then the GPU code outperforms the CPU code (plot shown below): +To beat the CPU (part of the extra credit), I was able to do it if I don't consider the copying time to the GPU. If I do this, it is only fair to not include the malloc time for the CPU's buffers. If I do this then the GPU code outperforms the CPU code (plot shown below): + +![](.\img\scan_pow2_faster.png) + +![](.\img\scan_nonpow2_faster.png) + +It is clear that the code is faster (by a huge margin) if we remove the time to allocate large array sizes. #### Thrust speed -From my experiments, thrust seems to perform comparable to my implementations of the algorithms (such as sorting or scanning). The difference is small but my code outperformed thrust for high values (could be statistically insignificant). +From my experiments, thrust seems to perform comparable to my implementations of the algorithms (such as scans or scanning, not sorting). The difference is small but my code outperformed thrust for high values (could be statistically insignificant). diff --git a/Project2-Stream-Compaction/img/data_gen.PNG b/Project2-Stream-Compaction/img/data_gen.PNG new file mode 100644 index 0000000000000000000000000000000000000000..0dc3d2b6271894b78c8cbdcb1e52423a215c0961 GIT binary patch literal 46324 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 literal 0 HcmV?d00001 From 04f26b8cbcbce6633086029fccb4c3ad3df8583e Mon Sep 17 00:00:00 2001 From: Raven Date: Tue, 17 Sep 2019 20:40:42 -0400 Subject: [PATCH 29/34] Fixed sort plots legend --- .../img/sort_nonpow2.png | Bin 27173 -> 28683 bytes Project2-Stream-Compaction/img/sort_pow2.png | Bin 28121 -> 26465 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/Project2-Stream-Compaction/img/sort_nonpow2.png b/Project2-Stream-Compaction/img/sort_nonpow2.png index 48ee7e6b4e9d165c94603863b31bf4980c21d240..32605f34fc2c93175a9b0961a075a413b320b58d 100644 GIT binary patch literal 28683 zcma&ObwHF|_cc6-fP#QZO5Q5n(h}0$Ae~AMDN45@DlH=2okI>F-5}jHq$u6p@SXvm z`}e%x_kMBzHTQU3bDis)efC~!uXXTOR+PfVB*BD0AlNd};;InHEguL3W$w-`@J&^z zTqy)%Hz*@6^3ug%efqPZn)$5I_N?LdR9D#NdiM_Zz@hl0Fc0 z2!!p{Z8iwR=fOWd;GQ7J|LZN5>@iF{Jemm0rjpXq3a`whvh->BuRNgdZlVegiD zo7hw0;^X6=JbjwMNE{y;s?;7rZZ}gyUn|mgesN*m6H9F~@`!vw=<0kgQP6$xQqIm- zvy4;2-{0T3J*2F(l$71%XC$*OKBnIyEIl{3v#ZN$d#(|_+3+5fh}A&v)fvs#wseARRt znpZqBI_h=&>vJF>vs*Y5XTVUFk{Z?U*qEH1j~P6K08M^trdBDQS7dLPRw>cre5d_0 z4*B4^Fd>WHaWk&apQWWC_KSFK8wAg+$5SwhQ(vN6T1p6N9|uol8rYi)O zoR5=}^QG2!h25-qlBeWe&?64BsakjE;cOKLlatG{t**{at>1F4C@3h+pRm)4;$L{4 z?k)9kRXmOAA}1pg6&3xM=fK!gzVhZ|dEhCZ9%6EGC}4j*kvp|A(g&w!zdHNf(dKlk zCf3Ri$-M6P=i#FnJ%hGG@1sNJ(xgH&b#W;Kmgnb1c?No2TwMC$D~B7Ca5q=i$|63; zuVk4k{Yv3kp)XFe4ePzsGUZ)Q_vyK85pd}0a1LBp7tfG*c`yU3rz5)<4*%}8;)8;^ zd{m%S{2`If!gl+3=l4FTpC5#ME&{s2*SbxqAey~=N1XNMWVJV`b~qZUc1 zsHjlp)l&Q4lCLNxJgoNF1}NHETL)kf5fS^u8xy5c<9C7&BN#Q|FFKoM26=~kz+#=1 zg+gUz1M>119g~F*j*hZ$z7;=or=h0qN#NJ4S>4#UINPcZ)I@tK8I&xgRudZ$A<@iu zk7$EmYbRRiR(qC(B<({!DLQ+TU*0>gqt5i9r`L6O;a@BYB#I zg>|O^BymFO87S%A*r)tk18MC0M8m)! z`;GvGJU4{wxhR$cTLv>$u!CM2YX9ZM+1l#ra)WHOLiI~MJ^2T67)-I;8JU?SZN|01 z!NFhYhDCV)KyB5;F{Jp627dX6OgoUJKP4HuV>FP!?@agnAs!wyhDO(cDQ#A|U77EX zN;LG)B>3|{*i$LYF7TkVchILK7_soXiu~0 z9UA@2Wz_*Keq`x-0 zd}niQO|D|lSVT<9YJeRk(I_ScJ5V7kSBeqO8!EK8c$QI|TA#ErSpfpAbU(SD64l)? zAD(*oy$oOU+hI=}k6J_jB?bn@(!zrO#<2JC_OE@o&nEe_R42!3GYO?yXOa8S=H0%w zmPbWq5FX0DPoL0F)w0f{<1${RL98em_GuM{)K-Ok#Re3ACs%4C@R|D!aU7F9GYub~ zbFJ=vetbzPYu0devE@zgyfQOjEPI6|iowrceRi}pWS1hCo^`9ZxEL<4r1$ajw@YmA z(-m5Tm`<3J*7@gKsKOwD>EIgej0o|S9X&?zcbbj^Pk}N)B7r5^Jab zmFts9<1mMpI5(7{A&nm^?0vRT@!-J&hq=s^C^K&qYC3Y|Wj67y?`aO}nZN0+_+$e( zbPzVruINJjavqbftz=7ayo?nqZF^ew^>lyuJ&t@+i@w9*x^`z}t^1K`)fe|Cca8W~ z2hNX&bJW04#Vs&e{9ll#wfcuh-y=8;j!mGaU1lKX$w9ps)EtFUkr~jt`Q^bU;d>7K z=_vRmNnCa8N~L76W_QIN%lq6}`1rvwyo9n|X8t5^HtA9ZR-2IkZt z>r<8Q4%a90{iL+VUkIv-y03*om6h-N6}Ut=ML0#*viLxcENG)DEFGlPC(7C7O~Ed8zhkRpTKseOndRv8?+#r0nj*C}6k95?!6 zIJ|jaP?RBHP;ULmCVuhJ{ylvcTBV`E3^{t*Q=SyxkZl2<5Gw~4g6aVl73n)&4!6@? zm1gTag)a7oX1&gWpQuG!_BV!jVJXZ*y)q9r{(w9`81(hD|5;SX%K8W-v&i}F+lOYK z^LIv65RY~)zim!et1$%X8k3}mhQCGRFDf+E1n~89b4{Xsb3V49v`{jraY=D4qTy^# zTY47D`nIHvmS!)Bh)%$s8FGi8OKTGf;*wFg{m1Zw+oI3VA1% zZPUpemLIf#pPwBWQLmA0l>FVMgKdQ9cxK$zPZ_$s4kO^q$ds{+V$r9IvG}|~;mn-Rh*1+(<;ib>-Iji(p3lc(;pnMd^c=W!(9D~1 zj*0(g{&A3*J7;m4Of)YvS#M=H2hWkPV6Y}0nSQ5R(n=_7Yt(2PgfqfySD@zVT zk*|+El#MSP6i?b^O;OovxL;V33G)|`?h~TBrHdf33c_^b7E{t&-el7I@zur;PX)AVT=y~; z?;W2WtnJGy?mZ(|CT@UpS>hkPnyzyEc70Xvw zPl&eD^O0ckfFijb$Xa*2oE92O*#jWJ${mR_c?_x3+F>b|N>$#E0|ViiSfT}A=(4A# zrY!pMa&s4Z;*L(1lB{Mr4X`6R!fCDQMx;8ZR+43`AVW>_t$|##Wf@d>GpM!{#PjN- za4wKZ*LHrl&s**4R7h@M;E)|}H{*ij$fNVZd6TS_c%!C>9u`_+VyEjZ4}cjR;^N}M zFUpdBfX8;~rw%b@Z24efzb_q>Xuww@{I@?IEoO!;XE|Kc^K?HYA>~XoTzW^)DAv9= zNhpcSUH3gj%fZ@M=@=T@^z4JDlKI-DpPbHqHGke;dVHdkQjZ;5^U2R|fPEt|mGOOwA{KArd2dQVd1SfJF0H>mjXFLw^bTMJ0JJy>462=& z6(;;}j39rPgioPWs0!cQbsN-U6r@ z%bZ`l?~fA;yUj)(k&QYn%R$ShqvHKb-*WVro!u0j+_!~50)FKnWkH}5#x6gPynSnN|j$8(v+X)Bd0z_V1|4iUD6kO%G>Gk*MkByf>r z4H6O(=6#8^;0{kf_B>PbQ(B;EHfhutY{3#z;2W`&sW3^EE~e)`D<@yr$OdT{z?U1c z(YtrEx`)D$m)*g}xcEK;zU?pIeTac%hTECE58H)N;$vdy%*y_?T9yoW#F;oW;u~ z4)fmq?d>mtfoaJEbvQx&FSU-{%CJefzs!0|4NV!;y4^K=&Tc!!n}RAMFQ0z0V@2D@ zjE#ZT9Zsu6A=*VDVtIlung&gpkDGrB@}{gUkvFc`}_Md;Xn#MR!#u=gC`Ifu;MW$76B8%fznWk3 zDq^Q9Gg^A7In;Yyd}O_4k^F%(Up3YY{9WAIyJ<&li0g z#ByqCDmpI3`ohA(;v%>ArN>TYa&j^V&7mfcv=!rdAD8#V@$^kk3$n6?ZbqAlMEd$R z$8eapu7O7`a?EXSzuC#v(E03}N`#V+bq^onvk9kBT)X$60q~lzu(0_NIGhvF z1weUVtA@$%w%~d9hS$XekA%F=0g;7LjHXH9rjP{IPPjMNbVf{lv)uan*(vb><&V$( zN;;W@P+F{!%=fn-MQ?TRvK&9%nd5ifbXXmx7ZNi3;dZ*e0+=ry3rhj0{PXU`;WP@V z_soLT`wI#RMAMYf$SEoNNb-^^Y^NFEv@|rT6np9-Yl)1-D}D)tejY`1e}u4D?ht{e zSVlRGG&cER3E7F4UMame5!dSN>LTTHpqnO#Zk11#n999*Qv{EA=9W4%D2G;R*3M_u_fh0AcED;6-HuwU8yFY>xnQ>1nU#z0`SYF_4qC8o|NPT1I;wF@ z_C`?=$B(h>P7|5AD^CLR&Xbw0DyC}JRs&0X1K=i2Y{OTtIO&i0W{F>$8!mA8{EQ%IVS`WnX!mfYk$VV4<4s<9i zL9T><{r(*gG+N9#kVO?@*d=~ok@DE$zfjy*U3J_2BlC*j{q{rn8%$eR-d8ZjUeG6b z#~c=diUu(vL>&1t_dpfmM<4r?amW(DMiSfB+@uHRQa=@Mt<2{Q5AeiOKV z;m`rG7!N@GJp2Z5+%)|XI(jkZ9^ZxO?rg;9K3m*)tl1e{yD;yj8Z z(z)z)K10wq*pwkgD3+uqU44T0OUw7>`<-La*vuL>l-Az-qv`MwWQ%uEv4)oupYlXI zRW}i?lH*KRRxd7E-T(WNy$of#!*+8gYla$h$1e>#O)K1dY*g8R+GG{`~Ij?e*p5<@I%sgH`pN(aug;clWcEp)9NX6azoL zP~vB=0kFr$#-3N`OA;!~&Q4Z1IXer?b8&SYkfci5jObbboz~KAztD%Krlz3X2ff@- zwIKyFXPjsCweX%7o#LDNSPyL3J zED@ksgMKbma4Oh@XUE6VB$Hq{AZ?Kb%D><$>UJYgdubzibOnL*gngNt=iiE5Q5_8! zK<1GG*CMmnLGj4c?~7&gF#LG1Rh*rj0d~t7r|VePt*`~yM&YMsPuvGz-?M`?A_|I` zdT;L?&hRI((>P?jMMcUdFQgO|dq3XAlME&~Scozl^w3#WR#OvGLi>pGL?3MQhHQMy z)?aJd2}GYUSJr-9b~aD3LuoIDu6I|(Kd)C9-x>B`l}WispREbI2u`%N`pv&t?oYvo z144#pD=RIXtZnV+==l0|YH+ZEib~jz05gcDy1I&-s;cTtF zNkfG%r!yC;gVm&e7_u+iIfqB9_=QL1lG&g}OUuc@0pE}%GM$Nm3AXI|C`?y2V0UQtl%9R#PJ&ATTvF6wWt< z?k7n}Nf}EP=o!6<%tLP+v3J!UxSvcY=X26Isp7WN4bS2H!GW^Qk5Qx&D9rOhiJq2uE_ z%`2>X7zvsaRjzwxqsIjuAUawKS<@39c%?~?fo#B*AM^opN#U93zLOq)$zE>C8Vvq- z6@-PhP^{3mK~U2%9c@fX?df+A5rRqeXOCbnF&=9FibU)Hx_0X9?1BCkogQc$CWM7O zE~vJdIW`Cvui>sgd17iUZh3dBA0|eT zRQ~4F$*(adkT` zYa55RAvwdk&fqK$&WLA;fHK8%+!jE z`Okbni<{1uQnU-~PSDE=Sz(0`tNO~{*M)kVU4t9wQ$8G#Nn z7{L}MRED(oAjx*xta)`)ZVKvl3l!^=HdP=r%My8YwC#Yl=Ht)n$e%Si$oAOt^QpdK zCrj8Nn=6^WFOs6A(dXq{9sIN@p0V^&R#k`PjOjvK!+4Rx99u|Sj0CF3%L9$_u4dM$ zp||BP-ZlRHCpdbHhvy&T;+fSrpJTnfoQlDKr}jwc&PaJeLOrdb6?5RM&V4&Fn=__6 zeia6vmnK7MdBnXj{C!nCBf8Iz4eG)(E;nD6w*CFZkGrv_&!x7$9B5n#dQ}VxfYAPX z)ADpr_x$@j^#cv=uBJX}K`>|U{*GSoTL%FtYi8XNAyfL+*yQiG0U3tEwkUro;puLE z`l;0wFL<}1)|Xh>{|+*lXes<{wR`p|481UU_!qbi1{F1YZYH>4#Xxc8etj3n0Y`WE9r>jY&6aQej$NKb)4DpIWmGp9;l{jX zngI{z`Xx<k@Q)0L$QbGuNP=rvdav)wHN6O(|^9ce>A)B;@TiUi6Bao14R| zn~p)XHY{104y57J!wor7?OL}oz01?1!{?uXOlz>_3hi;`pZ8n#>|=IOI8H;i%DsLg zz>~fwfb@3(T0UxOYIt~fLMMOlKmxVA0?H!jI$*}W)MTs=eojyCpLzs1HDG~wH1g4W zj=4o)4GqE=7#KQ&FJ2_7dLYYry(nYIFF*rE{b+=?D)qo-Y*-o$rq$52%OH@NCw}5H zG&BUQz{JAx%j0a!xSioA;)~we(o!=RQS7?6$gEW)j3hp50C74waWku(CJMN!S_r*c z?CwtyYgN~2LK6M{Z@E>U{AjoQ4>am2>hv{ig0I6Mg%c;Xe!s2?50de66#Zl$4~D;73IRC)D@cnfDu4xE?PA_AMy_M?WpMVzr!;X*qJ$ z=iaT5mS^G+t8ZNkvmSdr;Jtx7C|5cu5lA>7Fy7j_0EQ@v(YeT|S@7keJ?K#>fXATI zQf1u4-<}RMzycr|`cK2>iE$v1uV1?e_zO&GwhD49PTzKwW%+67-^>S}kEe%++y3&- z@s6?V6adc{=;)d0>Fcxg^#F?iwPpA{$?xC4TQ31^ovd=Sdj0yz^fN!v$DFDGL+Y0J z)zDVtge0#>X!m^7znklp=SOtjq->V~!jYKM$J5iZ+F|7(Az>Q{W2vmHY)hPgpde79 z<*`7?{@(55yfvc`J`E`J*o+c#)gUS@z8;gAZh2laM0kUSvhKooU=s8oYAvd#20z}2 zxQV3!JrOX<;)sCN zAukr_SAY8SDS(-j+xm^8BS9gHLCrBxBVPfoyt%n4nr248NxcL50Ur+mqZ}H^RM%}m zzS{Ob71rYj3$SywUPr<)IGe+G0R;z2UF;cv1qSCoS!HBpQ>AChtTZ(=MnNm1%6ZG{ z?9gUaUZ~n}%?VWSU+)@*G8OQ+AKt&u1~$=0NjOq_)AahxP1cM8G3xpAwzVLd7O?$0 zD`zK*(X?nF-Q2wnReFAYZm|u}L11BF5p>%>UN7xyYHn`51T*LW*mzl4!t-}#_V&g7 zbm1KuFr5(~XViI~ot~WdqiMtDkPDx8kXmE*dhP&B>D)*P{Q))rf)*&(KOXF7%nO0! z4`qD!;P1Nw>RN7KF*H|=_I=1r(lQ#cTs4*JqY6CG5Tg8{t*TDDak~(_Ju<mk5m(u+2d;k8TBW9uypFD-eR@(6CMRvR(YmIpmq7*yOg z`#X#d1C8O!qN7juYqyww%sF0)kgvk_|0YSowa(ukW*DFN?O(i+Fp;->566Im7`%SB zWCVK5(h0`v+L6$+hk+o-m2NV15hs+jQ)u#ydVU3h@(TYzJkxg|K~;N&}%Te zU$8aRRP0Re|GnkDM1-TzrX2nnEHbG&)Q!;>q+3wue5k+3Fs~22v>O3@s`EF|AVu=u zhp^cJ5E;>k3(8A}dqI7Ec7)R{!QVGGJ(6S1euDtuauv>NqO^`TtosP9!&0%!2>g;!*zE}}qxkiBW7g?rO4x9fFd6l^+re_$t4Pmr z4ePFS|0M`(q<>#DCoNepGJ4w7KX+y|+;IT+t%}_UVb|3YZ2cZAg%7jDH!m%(1698W z@~r?+jyfycYLzrSA(;@Q+5R;76t#Hu}4dSkGXpBf1l=lHxCZMjiTS z{Glq*4_Qsla4qWdj&9F;6?Eit@E*BSqf%K)?A)cF zAInSb`F9PUuJcTrgb1kvN0yaZ?MP7>cr&?-1Yt&PLAmi>j~NxI^?|#cIYrX0G)$pw z9ItApUBCyYm@~}35zQc*x90uaLpQ(Tt&n43CeDEdpEBKe^PaUatK!Ul4`vqIQ-<0T|P89w9T@!5f6U4UE7Was5 z@Z_T;5U2XzO^We^veU-S4A&8oqsp`!W`9GPEi*q#-O$!1x8g1CPN@M=D5N`Q*W8BLUp_#oObDF4I^tEnwBoS!+KbD1)|joCF( z&y~#+D#fZV&3yvp8Ty;J#CY9#D%`~xvoO+PrpKn}6q}AWe?Feb>KG&Q2K?iL! zKi;IWQ+1We?a5+(kXmYztHHJl6K$mUT-@V1JW%b)=1#)6Vdi!-bIDQ_r2!bQ5D>G> zSh$L!wd!5F-^LAyz}jteehZ0tnW4`3_evu6%GW~@j8}@y2xgegDPlFO-dj&50 zUqTPO*H?8k>=YNEH0&G2M-Mvw0Ei)9Vjow=f6fIOg`8-(?8; z2q>AI)hSDD#rCfEzM_eetBxVPS?(J87`@_yw>qCebt^1yT_jAK$&D!ya5DQ;HE6jY zqy=ZqtN8lJ6POH3A{BWwn~JGOG~vR-oxXb z-@GBD{;RtyU=4ozj0d-Wd?pchX)PYqmhGgjnsX^Pt(3|BG$Xz7?u?eW$ zB3Z4Pwl3?2$-*FOvCYNEfLzzgz~GC>4^Qm@%mwWQ&^TWm%IX8&KTVj9x^CV%Vc>sj zO;2cOB-hDEN%`OYktQXL1KO-AWw9q{%fPE(Fj!oiu49?v)}uG~Fd#lGn+xA@4yu{N z?VLl4I4Y84+_fstF*;)kss?kPR(tl}Vu0xY(&dJ0j1`}`Sb!asYq16*4> zJ3A?oL_|@Q@0K#NvOp^%;WaOhrZ$VT5dCYQS?BDnPn0GkBoGACKE}erDy^sp4F~}E z?d{vQI&~hE`(qZ(NNfZP?;@B?8=7_21o>fxFi!0y^@d4L=U&9t7Ry;0gPZ2LuY_wU zUl-+*kd^^=fZ_&U5D*e#YJ$d|65hm*AH0}|T!s-bQMF$Raoht*tpA5|kh21a z8F%mAg$rEkRw?*dC&et`M#z+H(YiMnYtR21l);0rP}A&+ha>7G%OjmF>gqZdVF@uE z35k7iLVna;L2`VG_Lqce$O~Y9;v@{ zTBj7Jq@;i@FYq`LR+oK5rhJ`;PFJpd3m~7MyojEY+9KntSatlor` zLbh6)^ZIH31=Ixv1(&*Go|aScIsEMC@F$Eq0oYcx%_Bt zjFpN?yaw^``qc`m6c?RV6SeFP*1{$UxWF#?W*=iinjA6%^VCLALn#?SYC*>~LiU!r zUU;34_w?9+Hp^>wW#xV#oIzg!CPu3me}5AA&6YMd6QiP}j$}*!>1u5J1=^eQBazo} zBfeWY7&-0T#Iv+4K^q#DGKmO4J=0>7G*w40L($*U+?{$6*{A^tdZ)16|Mzrp2 zp`iMR)X?R{6fugZ+m*2a%J_6xmwrUEl(Eiw;VPFArg)W~?@{hX=5PE3GE?LF4$wa_ zF|pRjA3uHo*>hw#yUyAbm<+x*<`-ikfUU;@KQ|e08Es>NebDgpJ8WqY?=*fXg6eY# zYX8>4qsQrX-dl1!iK#QPCm(!vb@4`>RO%ONw%$dCqUMA2v@Cc{9-FGXE>3S@v&VFI zbU=Z|1e*82_gY?F-n8WN?(JJTy&Q>SvZBDi!0qQov3!#g6B3e=fQ$XBY{7p4WM1_4 zU!sCL&5&0R?o=YGR8X?v3o?F2=)~Q)bTG!xRM{PS1?Yn_XqXp{$o#}S+ekh!Cbk3?+jQIezOs?dQ{?t zW3%HDN*cP4H_(G`D$MAnglkWF!Z)g%SHS)n2| zwTRh8Easc6s#PXOf8qq19h9)D=&w7fi00g%3rs7#x?>6#v3rSO>nDOx9*a-cS=A^5 z@DB>}ExFe4E=bvJ0u!`KmS7Y2o>Q}0oItj<`BVL3% zp-$fvy8PA!B#Qy$VWWEYwO-Y#dnYVJv~d%y_+WaZ@HvK8+uJSaY7yO=tCHzqDI`@2rO3$`c4vQ-6S^-4J<|ku$hzLs<85 zEuCxXoWnTK(6Sp*?t0Dh%&vHF)my9IMC0{zQsp4- z%`~G`#p?9C`{mB$_67WmhTnqX24*Q2on?)qlLD0a)}+tiN@2C(^UYXPfI4Nc1c*3b zIZVY(Zh7l#)=O`|;=xUE`_cww3vXsO^67@e3E)P4%NsSk`$is_BO|&5g0I^3xfo!V z&GQ#A`34AV1nD(4Xn3gHPa*$v9j>KrC-E%)vZ-?wmK&%Y&A;a%M^FnF*0hq%m=+eg z`C+rd?2^rPPk*p%fU`Mbj{;7m+&*7HPg_0Ta&&x@PbG)I-uJ&5>`Xxhf!7aJpxwAj z{E27>*JdaeVVFnQ?F0-|zvJzyq~Ab4y;%%4P0k*Dg7fVJKTsCv-EHyJhh_P-*)S0e zN+Sc+GoJ)`ePtPqZwOU%#=l*69kLRk%^U*oa^?&|y^NBDNA=oMgbP>$Mgli+$ss1< z{>M#YsWnCPl&_%vTcjPAVUi}2E?B+Pxwz&EABt~UjomUb>eKtEJbud=f$bB204s%u zOMDwC{RmmO8{g``1-Jq(`FrTiB1Z@R*pC9+jZVCg-gGF{i@KDR6@#MFl#NK%FF>5pnkhOhs4G`bDtB zfxap^k>7gdVGF}5Otxg)pAxxftpzsV%8tKRvS1>N{U`JzIY)G1fnMiRn5!^LS?zR; zJr7-i+ODgn4@>m*s`uq@m|KH*gvLl8uY+8Eg^pVrxYXoe{S>GCRR5sm=%;f&ofraJ z9`_~`@TpB|*2ln_c5%$B%GSX@`>D{4r`<2Ftl)D){Zy3i0_9;-znR$~Ro3t`KS6-b zXf|c(=nBJ}O4ur$#}mUqdKe3y#uCklaQ(YpU%R6s46Q3^#J50`|CTX3Q_V~+=jVj@ z+>jadE0bqy+P;qXF1my_+d(EdS>B$F0KJHiEoW%qkBwTxF~a1Nq#>oLEfy?B8nTV^dg8Wwpk!LTP8SJS-3Q*23j%H_T z-8B)2Kfu!o{3_qdNl4q@Kzv@sSMKGXA+-h}gLfw)wmI<6rr9tf6~>8x`aDKhZ{Mp3 zKQKp^ybq{nC9puqQyY)o*x0~=gL{DCIUpe5^k@sP1$N{#?my1@ zVHs2pS{t56a~lIIZ!23zbR&e!&CN-xR&bLzt2Bj1rwwdOgP){}2lGnVUzKbA5g z4>XnoKLdh8T+4}C=LzbbM#%N7zO58^^5iuD*VSCof2V+F9|$;W8}>l!c!M=V5@Dut zps{eWK2^9Xn@8Ynu9Byv9|0%Tq6}$)>Ozor0ty5WR#Lyoe2f2}B8@NDd2%$;%Qg$5Yw0Hl;#$m@rYT)*)7gn3fL_vjuq9VBeS0j&bDa~7)eBWiO`7BVCXAH>1V&5w@Cy794C_2b=1(* z;EGV zXZlO@6i0{Lkv2~Y(M$$lexB8M=am`&S(nK=zmNgTw(#1KYiUgmc(j1=G5rD$ z^%xw8!o72c&fqGP8j)FQ%w!OyPo16tEt0|NtKY6r&&p)rF;;2fFg8PF9z;gB;F3?iAH&nUGJ zBY9P3&P?ai^(p

AG&a$ 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 V;fwW>zY9haQCHPgDNwcw{x5Yu*iZlf literal 27173 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 ArT_o{ literal 28121 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òLrm`TS?X1Kou z%PuMMhY7eos%BrI`S9UG9UV@d6QKBf!&iH0sL(!uMxCw4GkwnR%)(1P{5!^ zAPIsbePo>-#1=r7R6xLNFdTx;EkthvDS~<)NM`zi)*ZIy`->t$_7? Date: Tue, 17 Sep 2019 20:42:52 -0400 Subject: [PATCH 30/34] Update README.md --- Project2-Stream-Compaction/README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/Project2-Stream-Compaction/README.md b/Project2-Stream-Compaction/README.md index c41c675..756ce24 100644 --- a/Project2-Stream-Compaction/README.md +++ b/Project2-Stream-Compaction/README.md @@ -91,29 +91,29 @@ For results, a LOT (32K) datapoints were collected for the various combinations. #### Scan Algorithms -![Powers of 2](.\img\scan_pow2.png) +![Powers of 2](./img/scan_pow2.png) The above figure is the time vs array size plots for the scan algorithms running powers of 2 while the picture below is the scan algorithm running for non powers of 2. -![](.\img\scan_nonpow2.png) +![](./img/scan_nonpow2.png) #### Stream compaction -![](.\img\sc_pow2.png) +![](./img/sc_pow2.png) The above figure is the time vs array size plots for the stream compaction algorithms running powers of 2 while the picture below is the stream compaction algorithm running for non powers of 2. -![](.\img\sc_nonpow2.png) +![](./img/sc_nonpow2.png) #### RADIX Sorting -![](.\img\sort_pow2.png) +![](./img/sort_pow2.png) The above figure is the time vs array size plots for the the sorting algorithm running powers of 2 while the picture below is the stream compaction algorithm running for non powers of 2. -![sort_pow2](.\img\sort_nonpow2.png) +![sort_pow2](./img/sort_nonpow2.png) ### Observations & Optimizations @@ -124,7 +124,7 @@ I decided to launch the correct number of threads per level in the work efficien #### Data collection scripts To allow for the large amount of data to be collected, a data collection script was written. It automated the array generation and timed the various components of the code and write the results (per iteration to make it more robust) to a csv. This helped immensely in collecting the large amount of data I was able to generate. A sample screenshot of the output is shown below -![](.\img\data_gen.PNG) +![](./img/data_gen.PNG) #### 1 less loop for the work efficient scan @@ -141,12 +141,12 @@ The scan and stream compaction code were able to go to 2^28 (2^31 with the overf #### Beating CPU performance To beat the CPU (part of the extra credit), I was able to do it if I don't consider the copying time to the GPU. If I do this, it is only fair to not include the malloc time for the CPU's buffers. If I do this then the GPU code outperforms the CPU code (plot shown below): -![](.\img\scan_pow2_faster.png) +![](./img/scan_pow2_faster.png) -![](.\img\scan_nonpow2_faster.png) +![](./img/scan_nonpow2_faster.png) It is clear that the code is faster (by a huge margin) if we remove the time to allocate large array sizes. #### Thrust speed -From my experiments, thrust seems to perform comparable to my implementations of the algorithms (such as scans or scanning, not sorting). The difference is small but my code outperformed thrust for high values (could be statistically insignificant). +From my experiments, thrust seems to perform comparable to my implementations of the algorithms (such as scans or scanning). The difference is small but my code outperformed thrust for high values (could be statistically insignificant). For sorting, thrust performs extriemly poorly. From 2db6a2d64287d710a542b1002234304e1f873a62 Mon Sep 17 00:00:00 2001 From: Vaibhav Arcot Date: Tue, 17 Sep 2019 20:43:55 -0400 Subject: [PATCH 31/34] Update README.md --- Project2-Stream-Compaction/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project2-Stream-Compaction/README.md b/Project2-Stream-Compaction/README.md index 756ce24..4e3c2df 100644 --- a/Project2-Stream-Compaction/README.md +++ b/Project2-Stream-Compaction/README.md @@ -111,7 +111,7 @@ The above figure is the time vs array size plots for the stream compaction algor -The above figure is the time vs array size plots for the the sorting algorithm running powers of 2 while the picture below is the stream compaction algorithm running for non powers of 2. +The above figure is the time vs array size plots for the the sorting algorithm running powers of 2 while the picture below is the sorting algorithm running for non powers of 2. ![sort_pow2](./img/sort_nonpow2.png) From f099406820292beec6b5f71eb21d6089b2f266be Mon Sep 17 00:00:00 2001 From: Vaibhav Arcot Date: Tue, 17 Sep 2019 20:47:35 -0400 Subject: [PATCH 32/34] Update README.md --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 3a0b2fe..94613cb 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,16 @@ CUDA Number Algorithms ====================== -**University of Pennsylvania, CIS 565: GPU Programming and Architecture, Project 2** +* **University of Pennsylvania, CIS 565: GPU Programming and Architecture, Project 2** + * Name: Vaibhav Arcot + + * [LinkedIn](https://www.linkedin.com/in/vaibhav-arcot-129829167/) + + * Tested on: Windows 10, i7-7700HQ @ 2.8GHz (3.8 Boost) 32GB, External GTX 1080Ti, 11G (My personal laptop) + +### Stream compression and Charecter recognition -* (TODO) YOUR NAME HERE - * (TODO) [LinkedIn](), [personal website](), [twitter](), etc. -* Tested on: (TODO) Windows 22, i7-2222 @ 2.22GHz 22GB, GTX 222 222MB (Moore 2222 Lab) +[Link](./Project2-Stream-Compaction/) to the stream compaction readme. -### (TODO: Your README) - -Link to the readmes of the other two subprojects. - -Add anything else you think is relevant up to this point. -(Remember, this is public, so don't put anything here that you don't want to share with the world.) +[Link](./Project2-Character-Recognition/) to the charecter recognition readme From 671211ae5d0341b058539c96149ce186ae60f78c Mon Sep 17 00:00:00 2001 From: Vaibhav Arcot Date: Tue, 17 Sep 2019 23:45:24 -0400 Subject: [PATCH 33/34] Added 74k Code to main; Added loss plot for same --- Project2-Character-Recognition/README.md | 9 +- .../data/74k_loss_momentum.csv | 15385 ++++++++++++++++ .../data/Rot_loss(51_outof_52).csv | 769 + .../data/Rot_loss.csv | 770 + .../data/loss_50_outof_52.csv | 769 + .../data/loss_cumulative.csv | 770 + .../data/loss_decay.csv | 769 + .../data/loss_momentum.csv | 769 + .../data/loss_momentum_decay.csv | 770 + .../img/loss_vs_epoch_74k.PNG | Bin 0 -> 59587 bytes Project2-Character-Recognition/src/main.cpp | 107 +- 11 files changed, 20864 insertions(+), 23 deletions(-) create mode 100644 Project2-Character-Recognition/data/74k_loss_momentum.csv create mode 100644 Project2-Character-Recognition/data/Rot_loss(51_outof_52).csv create mode 100644 Project2-Character-Recognition/data/Rot_loss.csv create mode 100644 Project2-Character-Recognition/data/loss_50_outof_52.csv create mode 100644 Project2-Character-Recognition/data/loss_cumulative.csv create mode 100644 Project2-Character-Recognition/data/loss_decay.csv create mode 100644 Project2-Character-Recognition/data/loss_momentum.csv create mode 100644 Project2-Character-Recognition/data/loss_momentum_decay.csv create mode 100644 Project2-Character-Recognition/img/loss_vs_epoch_74k.PNG diff --git a/Project2-Character-Recognition/README.md b/Project2-Character-Recognition/README.md index 8b45893..4b3b2c0 100644 --- a/Project2-Character-Recognition/README.md +++ b/Project2-Character-Recognition/README.md @@ -132,7 +132,7 @@ For the above plot, a random rotation of ± 10° was given to the training data ![Rot acc](./img/rotation_matrix_acc.PNG) -### Observations +### Observations & Random Thoughts #### Neural network occasionally struggle with "L" and "h" @@ -142,3 +142,10 @@ For some reason, with just gradient decent my network had a hard time distinguis Cublas API isn't well documented. It took me a long long time to get matrix multiplication along with transpose working. +#### 74K Character dataset Attempt + +With 1 hour left, I decided to run my network on a subset of the 74K Character dataset ([link](http://www.ee.surrey.ac.uk/CVSSP/demos/chars74k/)), which is a dataset with hand written characters. For this dataset, the training and testing data were sperate. For testing, each class has 54 examples and 1 testing example. With 400,000 epochs (10x more than was previously used), the neural network was able to identify 3 out of 26 (upper case hand written characters) + +Possible reasons for such a poor performance is due to the network not being deep enough, not enough training examples per class, not using batches (batch normalization) to train the network (group multiple inputs and compute the gradients at the same time). Whatever the case, the network didn't perform very well, and the loss plot is shown below. + +![74k Fail](./img/loss_vs_epoch_74k.PNG) \ No newline at end of file diff --git a/Project2-Character-Recognition/data/74k_loss_momentum.csv b/Project2-Character-Recognition/data/74k_loss_momentum.csv new file mode 100644 index 0000000..039c82d --- /dev/null +++ b/Project2-Character-Recognition/data/74k_loss_momentum.csv @@ -0,0 +1,15385 @@ +Epoch,Loss +26,4.87255 +52,4.6957 +78,4.69557 +104,4.68792 +130,4.72312 +156,4.70932 +182,4.70526 +208,4.69707 +234,4.69291 +260,4.70966 +286,4.70252 +312,4.70115 +338,4.69832 +364,4.70869 +390,4.70099 +416,4.68945 +442,4.70697 +468,4.68889 +494,4.69976 +520,4.71316 +546,4.70753 +572,4.70302 +598,4.69626 +624,4.71675 +650,4.69566 +676,4.71614 +702,4.69866 +728,4.69995 +754,4.69522 +780,4.69683 +806,4.69862 +832,4.69822 +858,4.6872 +884,4.6943 +910,4.70795 +936,4.70434 +962,4.70309 +988,4.70216 +1014,4.72206 +1040,4.70869 +1066,4.69637 +1092,4.714 +1118,4.68482 +1144,4.719 +1170,4.6999 +1196,4.69629 +1222,4.68023 +1248,4.70046 +1274,4.71078 +1300,4.69627 +1326,4.71446 +1352,4.7123 +1378,4.68604 +1404,4.72178 +1430,4.70847 +1456,4.69165 +1482,4.69944 +1508,4.72174 +1534,4.7208 +1560,4.7236 +1586,4.69864 +1612,4.70353 +1638,4.72392 +1664,4.70834 +1690,4.68209 +1716,4.70086 +1742,4.69539 +1768,4.71168 +1794,4.71056 +1820,4.69611 +1846,4.6951 +1872,4.67808 +1898,4.70734 +1924,4.70935 +1950,4.7191 +1976,4.71169 +2002,4.71678 +2028,4.70209 +2054,4.70965 +2080,4.69846 +2106,4.70797 +2132,4.71132 +2158,4.69929 +2184,4.68876 +2210,4.69371 +2236,4.70054 +2262,4.69932 +2288,4.70316 +2314,4.69526 +2340,4.68499 +2366,4.70886 +2392,4.70146 +2418,4.70984 +2444,4.70143 +2470,4.70409 +2496,4.71304 +2522,4.68825 +2548,4.6792 +2574,4.7072 +2600,4.71987 +2626,4.72349 +2652,4.69977 +2678,4.69411 +2704,4.71068 +2730,4.69842 +2756,4.71364 +2782,4.69521 +2808,4.70606 +2834,4.69289 +2860,4.70723 +2886,4.70143 +2912,4.69014 +2938,4.7128 +2964,4.70894 +2990,4.69255 +3016,4.6872 +3042,4.68986 +3068,4.71726 +3094,4.69518 +3120,4.70298 +3146,4.70597 +3172,4.70121 +3198,4.71202 +3224,4.7216 +3250,4.68164 +3276,4.70273 +3302,4.69546 +3328,4.69173 +3354,4.70449 +3380,4.68503 +3406,4.68603 +3432,4.70841 +3458,4.7066 +3484,4.68979 +3510,4.66643 +3536,4.70333 +3562,4.70151 +3588,4.71114 +3614,4.70366 +3640,4.74081 +3666,4.69524 +3692,4.69589 +3718,4.69517 +3744,4.7014 +3770,4.68604 +3796,4.70757 +3822,4.71108 +3848,4.71354 +3874,4.70175 +3900,4.70178 +3926,4.70277 +3952,4.71578 +3978,4.71971 +4004,4.70744 +4030,4.68041 +4056,4.70072 +4082,4.71014 +4108,4.72496 +4134,4.70173 +4160,4.71362 +4186,4.69789 +4212,4.70731 +4238,4.71396 +4264,4.6981 +4290,4.69332 +4316,4.69116 +4342,4.71292 +4368,4.6999 +4394,4.70358 +4420,4.70899 +4446,4.70472 +4472,4.68379 +4498,4.68232 +4524,4.71013 +4550,4.69919 +4576,4.71671 +4602,4.68996 +4628,4.69779 +4654,4.72065 +4680,4.69717 +4706,4.68944 +4732,4.71139 +4758,4.72729 +4784,4.7085 +4810,4.68706 +4836,4.6812 +4862,4.67814 +4888,4.71914 +4914,4.67769 +4940,4.67393 +4966,4.68366 +4992,4.71313 +5018,4.6989 +5044,4.70752 +5070,4.69495 +5096,4.70139 +5122,4.69061 +5148,4.73248 +5174,4.71038 +5200,4.709 +5226,4.70261 +5252,4.6775 +5278,4.70334 +5304,4.72121 +5330,4.70686 +5356,4.71297 +5382,4.69376 +5408,4.69673 +5434,4.71718 +5460,4.70907 +5486,4.70874 +5512,4.6924 +5538,4.6837 +5564,4.7092 +5590,4.71889 +5616,4.70196 +5642,4.72437 +5668,4.70303 +5694,4.72816 +5720,4.68862 +5746,4.71011 +5772,4.69564 +5798,4.70043 +5824,4.66439 +5850,4.68734 +5876,4.7027 +5902,4.69172 +5928,4.71804 +5954,4.70833 +5980,4.71888 +6006,4.71125 +6032,4.7003 +6058,4.68435 +6084,4.72273 +6110,4.69894 +6136,4.70903 +6162,4.68877 +6188,4.69717 +6214,4.72716 +6240,4.68953 +6266,4.69057 +6292,4.70098 +6318,4.71347 +6344,4.67898 +6370,4.71093 +6396,4.70563 +6422,4.74174 +6448,4.68683 +6474,4.69912 +6500,4.71812 +6526,4.71051 +6552,4.70499 +6578,4.68801 +6604,4.67923 +6630,4.6845 +6656,4.68617 +6682,4.71491 +6708,4.69032 +6734,4.67601 +6760,4.6827 +6786,4.70986 +6812,4.70936 +6838,4.69243 +6864,4.71416 +6890,4.71738 +6916,4.69769 +6942,4.7256 +6968,4.68322 +6994,4.70439 +7020,4.69696 +7046,4.72939 +7072,4.68394 +7098,4.70554 +7124,4.71563 +7150,4.6769 +7176,4.69701 +7202,4.68824 +7228,4.69409 +7254,4.72136 +7280,4.70823 +7306,4.70954 +7332,4.70304 +7358,4.69476 +7384,4.66473 +7410,4.72878 +7436,4.69593 +7462,4.71867 +7488,4.70836 +7514,4.74297 +7540,4.69831 +7566,4.69272 +7592,4.70916 +7618,4.70696 +7644,4.67723 +7670,4.71324 +7696,4.70418 +7722,4.69449 +7748,4.69375 +7774,4.71243 +7800,4.69654 +7826,4.70586 +7852,4.69382 +7878,4.70821 +7904,4.71287 +7930,4.70116 +7956,4.69189 +7982,4.68496 +8008,4.71017 +8034,4.71869 +8060,4.72096 +8086,4.69339 +8112,4.68956 +8138,4.72074 +8164,4.71696 +8190,4.68858 +8216,4.66927 +8242,4.69745 +8268,4.70857 +8294,4.69269 +8320,4.71519 +8346,4.70066 +8372,4.71729 +8398,4.70784 +8424,4.73592 +8450,4.68626 +8476,4.71488 +8502,4.69821 +8528,4.72137 +8554,4.6875 +8580,4.6931 +8606,4.70729 +8632,4.7185 +8658,4.72177 +8684,4.70316 +8710,4.68798 +8736,4.73473 +8762,4.72675 +8788,4.70682 +8814,4.69325 +8840,4.71418 +8866,4.69583 +8892,4.72354 +8918,4.68877 +8944,4.69008 +8970,4.7042 +8996,4.68775 +9022,4.70099 +9048,4.68699 +9074,4.7031 +9100,4.71681 +9126,4.69456 +9152,4.72316 +9178,4.69675 +9204,4.69694 +9230,4.67541 +9256,4.66825 +9282,4.72875 +9308,4.71511 +9334,4.69493 +9360,4.70852 +9386,4.71742 +9412,4.69845 +9438,4.67615 +9464,4.71235 +9490,4.70903 +9516,4.70995 +9542,4.69607 +9568,4.7109 +9594,4.68067 +9620,4.68108 +9646,4.71735 +9672,4.6817 +9698,4.67553 +9724,4.7244 +9750,4.69723 +9776,4.69079 +9802,4.71801 +9828,4.70302 +9854,4.72058 +9880,4.66823 +9906,4.6995 +9932,4.6683 +9958,4.68618 +9984,4.6928 +10010,4.69042 +10036,4.68377 +10062,4.70998 +10088,4.71047 +10114,4.67979 +10140,4.72278 +10166,4.70892 +10192,4.70608 +10218,4.70029 +10244,4.70625 +10270,4.70365 +10296,4.72366 +10322,4.69699 +10348,4.67713 +10374,4.71111 +10400,4.69604 +10426,4.69515 +10452,4.70686 +10478,4.70776 +10504,4.69141 +10530,4.69607 +10556,4.7123 +10582,4.67557 +10608,4.70441 +10634,4.71962 +10660,4.69368 +10686,4.7149 +10712,4.70741 +10738,4.68846 +10764,4.70529 +10790,4.68632 +10816,4.70818 +10842,4.69459 +10868,4.69206 +10894,4.69184 +10920,4.72111 +10946,4.68604 +10972,4.69131 +10998,4.67961 +11024,4.68656 +11050,4.72451 +11076,4.68471 +11102,4.72299 +11128,4.65351 +11154,4.71827 +11180,4.68462 +11206,4.71102 +11232,4.68817 +11258,4.69256 +11284,4.70815 +11310,4.70024 +11336,4.64406 +11362,4.68952 +11388,4.70296 +11414,4.72966 +11440,4.68957 +11466,4.69555 +11492,4.68601 +11518,4.73551 +11544,4.70714 +11570,4.71015 +11596,4.69352 +11622,4.71048 +11648,4.69562 +11674,4.70503 +11700,4.72046 +11726,4.71166 +11752,4.6616 +11778,4.67337 +11804,4.67073 +11830,4.72495 +11856,4.69006 +11882,4.71773 +11908,4.70862 +11934,4.69333 +11960,4.68277 +11986,4.74539 +12012,4.71493 +12038,4.70307 +12064,4.69509 +12090,4.69887 +12116,4.72801 +12142,4.70415 +12168,4.67195 +12194,4.69914 +12220,4.69784 +12246,4.70898 +12272,4.68835 +12298,4.68921 +12324,4.67177 +12350,4.72261 +12376,4.69782 +12402,4.67979 +12428,4.7087 +12454,4.70201 +12480,4.71294 +12506,4.69171 +12532,4.68706 +12558,4.70952 +12584,4.70758 +12610,4.69134 +12636,4.7098 +12662,4.69183 +12688,4.70119 +12714,4.70771 +12740,4.67172 +12766,4.68437 +12792,4.69084 +12818,4.69778 +12844,4.6813 +12870,4.69088 +12896,4.71178 +12922,4.66595 +12948,4.70609 +12974,4.73264 +13000,4.75032 +13026,4.71855 +13052,4.70379 +13078,4.6924 +13104,4.7144 +13130,4.72553 +13156,4.72178 +13182,4.69816 +13208,4.72084 +13234,4.69155 +13260,4.6712 +13286,4.69833 +13312,4.71103 +13338,4.69402 +13364,4.70944 +13390,4.68638 +13416,4.72231 +13442,4.7222 +13468,4.71837 +13494,4.70234 +13520,4.73407 +13546,4.68962 +13572,4.67388 +13598,4.70236 +13624,4.70938 +13650,4.67512 +13676,4.70866 +13702,4.71887 +13728,4.72032 +13754,4.70106 +13780,4.7073 +13806,4.68889 +13832,4.73713 +13858,4.69975 +13884,4.72043 +13910,4.6903 +13936,4.69322 +13962,4.69832 +13988,4.70478 +14014,4.70465 +14040,4.71756 +14066,4.7033 +14092,4.6806 +14118,4.699 +14144,4.70695 +14170,4.70438 +14196,4.68056 +14222,4.72172 +14248,4.70705 +14274,4.72826 +14300,4.7009 +14326,4.69028 +14352,4.67564 +14378,4.72357 +14404,4.69391 +14430,4.69627 +14456,4.72711 +14482,4.70597 +14508,4.71303 +14534,4.70919 +14560,4.6936 +14586,4.68713 +14612,4.71617 +14638,4.69541 +14664,4.70679 +14690,4.72254 +14716,4.71337 +14742,4.70257 +14768,4.73448 +14794,4.71465 +14820,4.70304 +14846,4.70375 +14872,4.72284 +14898,4.68449 +14924,4.72581 +14950,4.70716 +14976,4.67468 +15002,4.73902 +15028,4.71489 +15054,4.683 +15080,4.68566 +15106,4.71818 +15132,4.69873 +15158,4.71351 +15184,4.70761 +15210,4.70085 +15236,4.71869 +15262,4.68529 +15288,4.69795 +15314,4.69936 +15340,4.70824 +15366,4.70725 +15392,4.70974 +15418,4.68771 +15444,4.68063 +15470,4.71436 +15496,4.70988 +15522,4.69966 +15548,4.70956 +15574,4.68426 +15600,4.71223 +15626,4.69226 +15652,4.70959 +15678,4.72749 +15704,4.7191 +15730,4.69969 +15756,4.68539 +15782,4.69944 +15808,4.7083 +15834,4.69677 +15860,4.70427 +15886,4.72551 +15912,4.69167 +15938,4.70429 +15964,4.72241 +15990,4.69838 +16016,4.68944 +16042,4.6911 +16068,4.70618 +16094,4.71811 +16120,4.71045 +16146,4.71064 +16172,4.68394 +16198,4.7108 +16224,4.68602 +16250,4.73448 +16276,4.69531 +16302,4.70551 +16328,4.69946 +16354,4.71957 +16380,4.71793 +16406,4.70962 +16432,4.70587 +16458,4.70411 +16484,4.7041 +16510,4.70634 +16536,4.70033 +16562,4.69829 +16588,4.6977 +16614,4.70344 +16640,4.70348 +16666,4.70083 +16692,4.69854 +16718,4.70671 +16744,4.6975 +16770,4.68948 +16796,4.68914 +16822,4.69155 +16848,4.69817 +16874,4.71845 +16900,4.6905 +16926,4.70422 +16952,4.6918 +16978,4.69403 +17004,4.68841 +17030,4.69376 +17056,4.71818 +17082,4.70461 +17108,4.69845 +17134,4.69517 +17160,4.70159 +17186,4.69892 +17212,4.70307 +17238,4.70397 +17264,4.72123 +17290,4.70238 +17316,4.69476 +17342,4.70369 +17368,4.70233 +17394,4.70486 +17420,4.68211 +17446,4.68941 +17472,4.69792 +17498,4.70264 +17524,4.72718 +17550,4.68726 +17576,4.72087 +17602,4.68437 +17628,4.70206 +17654,4.69333 +17680,4.72342 +17706,4.70274 +17732,4.70133 +17758,4.69234 +17784,4.71984 +17810,4.69048 +17836,4.68872 +17862,4.71773 +17888,4.70454 +17914,4.68961 +17940,4.71025 +17966,4.71395 +17992,4.69902 +18018,4.6854 +18044,4.70923 +18070,4.69816 +18096,4.68624 +18122,4.72487 +18148,4.72666 +18174,4.68692 +18200,4.70678 +18226,4.70654 +18252,4.69286 +18278,4.70115 +18304,4.70287 +18330,4.67394 +18356,4.71031 +18382,4.71754 +18408,4.69999 +18434,4.70587 +18460,4.70347 +18486,4.69254 +18512,4.71518 +18538,4.67363 +18564,4.71781 +18590,4.7031 +18616,4.69013 +18642,4.70116 +18668,4.72508 +18694,4.71064 +18720,4.69462 +18746,4.68538 +18772,4.70379 +18798,4.70107 +18824,4.69139 +18850,4.72892 +18876,4.69793 +18902,4.70672 +18928,4.69526 +18954,4.7097 +18980,4.70923 +19006,4.71835 +19032,4.7131 +19058,4.69144 +19084,4.70135 +19110,4.71379 +19136,4.72104 +19162,4.69489 +19188,4.69507 +19214,4.71565 +19240,4.6859 +19266,4.68868 +19292,4.71264 +19318,4.70701 +19344,4.70932 +19370,4.71091 +19396,4.7039 +19422,4.709 +19448,4.68704 +19474,4.68869 +19500,4.69394 +19526,4.6929 +19552,4.68964 +19578,4.71442 +19604,4.70691 +19630,4.71765 +19656,4.70942 +19682,4.71035 +19708,4.71054 +19734,4.71179 +19760,4.7061 +19786,4.7171 +19812,4.68467 +19838,4.68482 +19864,4.71878 +19890,4.70874 +19916,4.69673 +19942,4.69717 +19968,4.70366 +19994,4.70889 +20020,4.70404 +20046,4.71985 +20072,4.71951 +20098,4.70676 +20124,4.69629 +20150,4.6959 +20176,4.7188 +20202,4.70114 +20228,4.69032 +20254,4.70954 +20280,4.70173 +20306,4.70799 +20332,4.71149 +20358,4.7007 +20384,4.70086 +20410,4.70589 +20436,4.71113 +20462,4.67947 +20488,4.71453 +20514,4.69099 +20540,4.6945 +20566,4.69538 +20592,4.71013 +20618,4.69869 +20644,4.67482 +20670,4.70523 +20696,4.68114 +20722,4.71181 +20748,4.71791 +20774,4.72505 +20800,4.6934 +20826,4.71359 +20852,4.71082 +20878,4.70652 +20904,4.70271 +20930,4.69549 +20956,4.70748 +20982,4.69086 +21008,4.70983 +21034,4.71647 +21060,4.71249 +21086,4.70851 +21112,4.69916 +21138,4.7044 +21164,4.70271 +21190,4.70963 +21216,4.7035 +21242,4.70911 +21268,4.68093 +21294,4.71516 +21320,4.70228 +21346,4.68852 +21372,4.71507 +21398,4.70984 +21424,4.70608 +21450,4.69688 +21476,4.70202 +21502,4.70407 +21528,4.68448 +21554,4.71447 +21580,4.68626 +21606,4.69516 +21632,4.67309 +21658,4.71056 +21684,4.68619 +21710,4.69714 +21736,4.70409 +21762,4.68503 +21788,4.69739 +21814,4.70701 +21840,4.70072 +21866,4.70912 +21892,4.70592 +21918,4.68632 +21944,4.68888 +21970,4.69705 +21996,4.69785 +22022,4.68291 +22048,4.68496 +22074,4.70582 +22100,4.70852 +22126,4.68172 +22152,4.71266 +22178,4.72629 +22204,4.70293 +22230,4.6987 +22256,4.70718 +22282,4.73961 +22308,4.72834 +22334,4.72709 +22360,4.70136 +22386,4.71111 +22412,4.69383 +22438,4.70993 +22464,4.69818 +22490,4.70982 +22516,4.71098 +22542,4.7013 +22568,4.71672 +22594,4.70485 +22620,4.70267 +22646,4.68971 +22672,4.70529 +22698,4.70624 +22724,4.70694 +22750,4.70002 +22776,4.67878 +22802,4.70456 +22828,4.69313 +22854,4.69856 +22880,4.70565 +22906,4.6684 +22932,4.71337 +22958,4.70903 +22984,4.70893 +23010,4.68695 +23036,4.71531 +23062,4.69807 +23088,4.6879 +23114,4.71271 +23140,4.70037 +23166,4.70268 +23192,4.69137 +23218,4.70492 +23244,4.7035 +23270,4.71705 +23296,4.6844 +23322,4.70243 +23348,4.718 +23374,4.69927 +23400,4.70066 +23426,4.68753 +23452,4.6843 +23478,4.72709 +23504,4.68384 +23530,4.69021 +23556,4.71525 +23582,4.7361 +23608,4.70604 +23634,4.69958 +23660,4.69429 +23686,4.70954 +23712,4.69417 +23738,4.71256 +23764,4.71888 +23790,4.69902 +23816,4.70359 +23842,4.70537 +23868,4.69911 +23894,4.71055 +23920,4.69069 +23946,4.7097 +23972,4.7082 +23998,4.68875 +24024,4.69919 +24050,4.69769 +24076,4.67271 +24102,4.69905 +24128,4.68304 +24154,4.68044 +24180,4.69694 +24206,4.69821 +24232,4.67251 +24258,4.71378 +24284,4.70171 +24310,4.70108 +24336,4.71265 +24362,4.68124 +24388,4.68006 +24414,4.7336 +24440,4.72476 +24466,4.70087 +24492,4.71512 +24518,4.70948 +24544,4.68609 +24570,4.70326 +24596,4.69408 +24622,4.69435 +24648,4.71053 +24674,4.70632 +24700,4.68666 +24726,4.70869 +24752,4.6903 +24778,4.70307 +24804,4.70312 +24830,4.70145 +24856,4.71623 +24882,4.68051 +24908,4.7034 +24934,4.71307 +24960,4.73633 +24986,4.69508 +25012,4.73908 +25038,4.72638 +25064,4.69236 +25090,4.71678 +25116,4.68903 +25142,4.70666 +25168,4.69098 +25194,4.70376 +25220,4.71146 +25246,4.7205 +25272,4.70466 +25298,4.70543 +25324,4.70903 +25350,4.68985 +25376,4.70153 +25402,4.68426 +25428,4.69172 +25454,4.69993 +25480,4.71982 +25506,4.68206 +25532,4.71263 +25558,4.69308 +25584,4.69778 +25610,4.69601 +25636,4.68007 +25662,4.7047 +25688,4.69338 +25714,4.7183 +25740,4.69832 +25766,4.70085 +25792,4.69874 +25818,4.69921 +25844,4.71029 +25870,4.69684 +25896,4.7029 +25922,4.70028 +25948,4.7142 +25974,4.70099 +26000,4.70736 +26026,4.71014 +26052,4.69866 +26078,4.69009 +26104,4.70092 +26130,4.67373 +26156,4.71201 +26182,4.71768 +26208,4.69926 +26234,4.68505 +26260,4.70269 +26286,4.68563 +26312,4.70378 +26338,4.71972 +26364,4.73346 +26390,4.6859 +26416,4.71349 +26442,4.69302 +26468,4.6998 +26494,4.70139 +26520,4.73614 +26546,4.72399 +26572,4.68869 +26598,4.69215 +26624,4.68392 +26650,4.70151 +26676,4.72665 +26702,4.70407 +26728,4.71049 +26754,4.69667 +26780,4.7143 +26806,4.68559 +26832,4.70211 +26858,4.69325 +26884,4.70289 +26910,4.6798 +26936,4.7398 +26962,4.68202 +26988,4.71268 +27014,4.69397 +27040,4.71328 +27066,4.71657 +27092,4.67935 +27118,4.69364 +27144,4.6959 +27170,4.70639 +27196,4.71249 +27222,4.66919 +27248,4.66533 +27274,4.67947 +27300,4.7107 +27326,4.67889 +27352,4.6941 +27378,4.68412 +27404,4.71151 +27430,4.67957 +27456,4.71167 +27482,4.71109 +27508,4.7295 +27534,4.69709 +27560,4.69808 +27586,4.71116 +27612,4.67856 +27638,4.70585 +27664,4.69302 +27690,4.71819 +27716,4.68573 +27742,4.71656 +27768,4.6884 +27794,4.7006 +27820,4.69781 +27846,4.72541 +27872,4.70379 +27898,4.7141 +27924,4.70804 +27950,4.73486 +27976,4.7198 +28002,4.70099 +28028,4.73069 +28054,4.71429 +28080,4.71811 +28106,4.7109 +28132,4.70818 +28158,4.70547 +28184,4.70417 +28210,4.68498 +28236,4.68515 +28262,4.699 +28288,4.7035 +28314,4.68595 +28340,4.67891 +28366,4.68261 +28392,4.71241 +28418,4.70501 +28444,4.71518 +28470,4.70818 +28496,4.69091 +28522,4.72062 +28548,4.71694 +28574,4.69381 +28600,4.68438 +28626,4.67218 +28652,4.69555 +28678,4.70754 +28704,4.70083 +28730,4.72754 +28756,4.68202 +28782,4.71891 +28808,4.72373 +28834,4.70863 +28860,4.70587 +28886,4.70103 +28912,4.68886 +28938,4.70499 +28964,4.72175 +28990,4.68515 +29016,4.71976 +29042,4.68103 +29068,4.69598 +29094,4.71384 +29120,4.71769 +29146,4.66522 +29172,4.69461 +29198,4.70229 +29224,4.70778 +29250,4.69608 +29276,4.70714 +29302,4.68773 +29328,4.67256 +29354,4.71091 +29380,4.69927 +29406,4.70951 +29432,4.67901 +29458,4.71559 +29484,4.68821 +29510,4.71106 +29536,4.71586 +29562,4.70695 +29588,4.68509 +29614,4.68454 +29640,4.71636 +29666,4.69424 +29692,4.6989 +29718,4.73057 +29744,4.7119 +29770,4.69642 +29796,4.71028 +29822,4.69876 +29848,4.69059 +29874,4.70763 +29900,4.69787 +29926,4.69554 +29952,4.71698 +29978,4.73266 +30004,4.68462 +30030,4.69277 +30056,4.7016 +30082,4.6969 +30108,4.68866 +30134,4.67686 +30160,4.68982 +30186,4.68131 +30212,4.67947 +30238,4.6921 +30264,4.68336 +30290,4.69974 +30316,4.67965 +30342,4.68618 +30368,4.67829 +30394,4.69405 +30420,4.68643 +30446,4.66344 +30472,4.72438 +30498,4.70945 +30524,4.68352 +30550,4.70203 +30576,4.68923 +30602,4.69214 +30628,4.67935 +30654,4.71193 +30680,4.71631 +30706,4.66615 +30732,4.7054 +30758,4.66765 +30784,4.72041 +30810,4.69754 +30836,4.70586 +30862,4.71013 +30888,4.68141 +30914,4.73643 +30940,4.71142 +30966,4.69379 +30992,4.68915 +31018,4.69539 +31044,4.68897 +31070,4.70449 +31096,4.69749 +31122,4.74155 +31148,4.72966 +31174,4.69078 +31200,4.68973 +31226,4.71493 +31252,4.69609 +31278,4.70607 +31304,4.70128 +31330,4.69852 +31356,4.71616 +31382,4.67081 +31408,4.66125 +31434,4.69558 +31460,4.72973 +31486,4.6913 +31512,4.72785 +31538,4.71618 +31564,4.72787 +31590,4.72309 +31616,4.6867 +31642,4.68404 +31668,4.69244 +31694,4.71801 +31720,4.71214 +31746,4.6791 +31772,4.70061 +31798,4.73076 +31824,4.70752 +31850,4.72026 +31876,4.68109 +31902,4.70924 +31928,4.66406 +31954,4.69781 +31980,4.66303 +32006,4.71997 +32032,4.71111 +32058,4.68144 +32084,4.66211 +32110,4.72428 +32136,4.68694 +32162,4.66746 +32188,4.73438 +32214,4.7165 +32240,4.66841 +32266,4.72499 +32292,4.69582 +32318,4.7037 +32344,4.71989 +32370,4.70447 +32396,4.67898 +32422,4.67461 +32448,4.71511 +32474,4.70776 +32500,4.73242 +32526,4.71381 +32552,4.6993 +32578,4.71648 +32604,4.69534 +32630,4.72051 +32656,4.71836 +32682,4.69426 +32708,4.71263 +32734,4.69972 +32760,4.70439 +32786,4.68433 +32812,4.69448 +32838,4.70186 +32864,4.66927 +32890,4.69964 +32916,4.72593 +32942,4.71288 +32968,4.70196 +32994,4.69636 +33020,4.71935 +33046,4.70557 +33072,4.69364 +33098,4.7236 +33124,4.68126 +33150,4.70898 +33176,4.73176 +33202,4.70602 +33228,4.68864 +33254,4.70057 +33280,4.71949 +33306,4.71034 +33332,4.69414 +33358,4.7008 +33384,4.7136 +33410,4.69096 +33436,4.71772 +33462,4.67198 +33488,4.69623 +33514,4.70489 +33540,4.67553 +33566,4.71351 +33592,4.70105 +33618,4.71691 +33644,4.73254 +33670,4.71212 +33696,4.71953 +33722,4.68528 +33748,4.69541 +33774,4.71449 +33800,4.71081 +33826,4.71972 +33852,4.71915 +33878,4.71373 +33904,4.70113 +33930,4.73942 +33956,4.71324 +33982,4.69361 +34008,4.68826 +34034,4.70598 +34060,4.70053 +34086,4.69891 +34112,4.6858 +34138,4.69629 +34164,4.70391 +34190,4.69375 +34216,4.72528 +34242,4.70807 +34268,4.70252 +34294,4.704 +34320,4.70448 +34346,4.7257 +34372,4.69225 +34398,4.71286 +34424,4.70051 +34450,4.70792 +34476,4.6898 +34502,4.70853 +34528,4.68629 +34554,4.69077 +34580,4.68871 +34606,4.71647 +34632,4.70956 +34658,4.71651 +34684,4.7147 +34710,4.70184 +34736,4.72316 +34762,4.69562 +34788,4.71348 +34814,4.7055 +34840,4.69258 +34866,4.6906 +34892,4.7004 +34918,4.69403 +34944,4.69423 +34970,4.70415 +34996,4.70224 +35022,4.66708 +35048,4.7158 +35074,4.71344 +35100,4.70427 +35126,4.68916 +35152,4.69639 +35178,4.72124 +35204,4.69081 +35230,4.68105 +35256,4.68697 +35282,4.70246 +35308,4.71247 +35334,4.71675 +35360,4.71741 +35386,4.7009 +35412,4.69358 +35438,4.71183 +35464,4.72131 +35490,4.69242 +35516,4.6995 +35542,4.70263 +35568,4.69863 +35594,4.69166 +35620,4.69586 +35646,4.70252 +35672,4.70921 +35698,4.68143 +35724,4.71711 +35750,4.69349 +35776,4.69726 +35802,4.70821 +35828,4.70659 +35854,4.68722 +35880,4.71902 +35906,4.70036 +35932,4.70583 +35958,4.68095 +35984,4.71634 +36010,4.69113 +36036,4.69391 +36062,4.71133 +36088,4.68824 +36114,4.69392 +36140,4.71295 +36166,4.70286 +36192,4.69257 +36218,4.70882 +36244,4.70944 +36270,4.71727 +36296,4.67872 +36322,4.69703 +36348,4.6935 +36374,4.71256 +36400,4.69576 +36426,4.71756 +36452,4.70398 +36478,4.71997 +36504,4.69898 +36530,4.70457 +36556,4.70577 +36582,4.69994 +36608,4.69353 +36634,4.68708 +36660,4.70177 +36686,4.70103 +36712,4.70553 +36738,4.71047 +36764,4.67838 +36790,4.7083 +36816,4.68868 +36842,4.70659 +36868,4.71388 +36894,4.71781 +36920,4.70005 +36946,4.71015 +36972,4.70397 +36998,4.69302 +37024,4.69967 +37050,4.67601 +37076,4.71407 +37102,4.68591 +37128,4.70899 +37154,4.68096 +37180,4.68727 +37206,4.70105 +37232,4.70054 +37258,4.69285 +37284,4.6938 +37310,4.71054 +37336,4.6752 +37362,4.68897 +37388,4.70749 +37414,4.69423 +37440,4.6945 +37466,4.69494 +37492,4.72277 +37518,4.72318 +37544,4.7019 +37570,4.68985 +37596,4.71514 +37622,4.6763 +37648,4.7042 +37674,4.68461 +37700,4.69951 +37726,4.70336 +37752,4.68702 +37778,4.69441 +37804,4.69805 +37830,4.70492 +37856,4.69311 +37882,4.70983 +37908,4.7288 +37934,4.69694 +37960,4.69475 +37986,4.68437 +38012,4.69212 +38038,4.71152 +38064,4.69133 +38090,4.70782 +38116,4.70538 +38142,4.69748 +38168,4.6904 +38194,4.69705 +38220,4.73361 +38246,4.71495 +38272,4.70567 +38298,4.71236 +38324,4.68284 +38350,4.70574 +38376,4.67396 +38402,4.7138 +38428,4.69851 +38454,4.67321 +38480,4.68493 +38506,4.711 +38532,4.71063 +38558,4.71603 +38584,4.66444 +38610,4.65431 +38636,4.7209 +38662,4.72404 +38688,4.7075 +38714,4.71737 +38740,4.68959 +38766,4.70348 +38792,4.72244 +38818,4.70073 +38844,4.6937 +38870,4.70496 +38896,4.70134 +38922,4.72318 +38948,4.72725 +38974,4.70498 +39000,4.70624 +39026,4.7244 +39052,4.71798 +39078,4.68847 +39104,4.70321 +39130,4.68757 +39156,4.71159 +39182,4.69715 +39208,4.71516 +39234,4.69298 +39260,4.69319 +39286,4.69697 +39312,4.70233 +39338,4.69873 +39364,4.68967 +39390,4.70684 +39416,4.72919 +39442,4.69552 +39468,4.68479 +39494,4.72167 +39520,4.73236 +39546,4.70161 +39572,4.71172 +39598,4.71224 +39624,4.7173 +39650,4.71421 +39676,4.70256 +39702,4.69786 +39728,4.71384 +39754,4.71408 +39780,4.69412 +39806,4.68639 +39832,4.69304 +39858,4.69331 +39884,4.69761 +39910,4.70057 +39936,4.69501 +39962,4.71234 +39988,4.70103 +40014,4.70715 +40040,4.7027 +40066,4.70415 +40092,4.68775 +40118,4.69563 +40144,4.71617 +40170,4.70576 +40196,4.70915 +40222,4.69699 +40248,4.69464 +40274,4.69176 +40300,4.70196 +40326,4.69215 +40352,4.68615 +40378,4.68805 +40404,4.70525 +40430,4.68802 +40456,4.7026 +40482,4.71211 +40508,4.69934 +40534,4.70216 +40560,4.69404 +40586,4.68459 +40612,4.69433 +40638,4.69023 +40664,4.69849 +40690,4.69353 +40716,4.68107 +40742,4.68291 +40768,4.70029 +40794,4.70752 +40820,4.71163 +40846,4.68921 +40872,4.69007 +40898,4.69259 +40924,4.69645 +40950,4.70246 +40976,4.67946 +41002,4.67941 +41028,4.71752 +41054,4.70758 +41080,4.68373 +41106,4.71813 +41132,4.70725 +41158,4.71556 +41184,4.69908 +41210,4.68462 +41236,4.6844 +41262,4.70545 +41288,4.70909 +41314,4.69224 +41340,4.71201 +41366,4.69611 +41392,4.6962 +41418,4.71667 +41444,4.68495 +41470,4.70906 +41496,4.71254 +41522,4.70815 +41548,4.72803 +41574,4.70007 +41600,4.69334 +41626,4.69768 +41652,4.68404 +41678,4.69168 +41704,4.70023 +41730,4.70907 +41756,4.69498 +41782,4.70635 +41808,4.68017 +41834,4.69793 +41860,4.68146 +41886,4.71191 +41912,4.68975 +41938,4.69904 +41964,4.69962 +41990,4.67427 +42016,4.70688 +42042,4.696 +42068,4.68941 +42094,4.70049 +42120,4.66783 +42146,4.6798 +42172,4.69335 +42198,4.68206 +42224,4.68217 +42250,4.69717 +42276,4.70003 +42302,4.72831 +42328,4.69562 +42354,4.70189 +42380,4.70099 +42406,4.71279 +42432,4.6942 +42458,4.70315 +42484,4.70253 +42510,4.70959 +42536,4.6938 +42562,4.70085 +42588,4.70544 +42614,4.69397 +42640,4.70072 +42666,4.71718 +42692,4.69798 +42718,4.69273 +42744,4.69897 +42770,4.70972 +42796,4.70317 +42822,4.69299 +42848,4.66464 +42874,4.69605 +42900,4.69706 +42926,4.71257 +42952,4.70104 +42978,4.67667 +43004,4.70598 +43030,4.68743 +43056,4.71391 +43082,4.69112 +43108,4.68212 +43134,4.70718 +43160,4.69583 +43186,4.71007 +43212,4.70231 +43238,4.71609 +43264,4.70167 +43290,4.69842 +43316,4.69007 +43342,4.69307 +43368,4.68879 +43394,4.66503 +43420,4.71022 +43446,4.66787 +43472,4.69223 +43498,4.68625 +43524,4.67757 +43550,4.66845 +43576,4.68725 +43602,4.67778 +43628,4.69241 +43654,4.70467 +43680,4.69479 +43706,4.68768 +43732,4.6714 +43758,4.69306 +43784,4.68668 +43810,4.69091 +43836,4.69198 +43862,4.71033 +43888,4.67086 +43914,4.711 +43940,4.68842 +43966,4.71074 +43992,4.67484 +44018,4.70757 +44044,4.67448 +44070,4.69173 +44096,4.69842 +44122,4.69575 +44148,4.68709 +44174,4.68356 +44200,4.68076 +44226,4.68564 +44252,4.66219 +44278,4.68138 +44304,4.71305 +44330,4.66528 +44356,4.66983 +44382,4.68087 +44408,4.67239 +44434,4.7019 +44460,4.70174 +44486,4.6899 +44512,4.69397 +44538,4.69903 +44564,4.67019 +44590,4.6878 +44616,4.68162 +44642,4.68802 +44668,4.68776 +44694,4.70511 +44720,4.64609 +44746,4.70633 +44772,4.67879 +44798,4.67869 +44824,4.67157 +44850,4.67579 +44876,4.67092 +44902,4.71589 +44928,4.68136 +44954,4.694 +44980,4.68605 +45006,4.69935 +45032,4.67494 +45058,4.67287 +45084,4.67494 +45110,4.66267 +45136,4.65657 +45162,4.70951 +45188,4.68379 +45214,4.65648 +45240,4.67078 +45266,4.6877 +45292,4.70168 +45318,4.6994 +45344,4.67898 +45370,4.69827 +45396,4.65368 +45422,4.66005 +45448,4.66957 +45474,4.70365 +45500,4.64036 +45526,4.6535 +45552,4.63259 +45578,4.65623 +45604,4.66196 +45630,4.63056 +45656,4.69257 +45682,4.62651 +45708,4.68782 +45734,4.6326 +45760,4.63529 +45786,4.6505 +45812,4.65941 +45838,4.71012 +45864,4.72393 +45890,4.67272 +45916,4.67345 +45942,4.63948 +45968,4.60795 +45994,4.72549 +46020,4.65423 +46046,4.68144 +46072,4.64545 +46098,4.65887 +46124,4.59332 +46150,4.68851 +46176,4.59862 +46202,4.59551 +46228,4.69098 +46254,4.629 +46280,4.72011 +46306,4.67198 +46332,4.64819 +46358,4.52114 +46384,4.58669 +46410,4.66364 +46436,4.662 +46462,4.61407 +46488,4.73415 +46514,4.61629 +46540,4.61328 +46566,4.40629 +46592,4.52321 +46618,4.61218 +46644,4.62049 +46670,4.598 +46696,4.50694 +46722,4.58845 +46748,4.5934 +46774,4.62125 +46800,4.54901 +46826,4.69068 +46852,4.63996 +46878,4.58272 +46904,4.69012 +46930,4.53841 +46956,4.61279 +46982,4.73341 +47008,4.63578 +47034,4.66223 +47060,4.73476 +47086,4.73548 +47112,4.63817 +47138,4.66489 +47164,4.64197 +47190,4.56952 +47216,4.57058 +47242,4.55935 +47268,4.70431 +47294,4.64549 +47320,4.62236 +47346,4.51901 +47372,4.567 +47398,4.49218 +47424,4.5855 +47450,4.4413 +47476,4.71463 +47502,4.52472 +47528,4.67395 +47554,4.60942 +47580,4.78627 +47606,4.57087 +47632,4.62489 +47658,4.68853 +47684,4.54258 +47710,4.59467 +47736,4.4865 +47762,4.54357 +47788,4.4848 +47814,4.46416 +47840,4.62006 +47866,4.45392 +47892,4.70656 +47918,4.73347 +47944,4.60511 +47970,4.52256 +47996,4.52252 +48022,4.7074 +48048,4.63447 +48074,4.40682 +48100,4.44443 +48126,4.35695 +48152,4.77169 +48178,4.49799 +48204,4.46571 +48230,4.98124 +48256,4.70103 +48282,4.62104 +48308,4.57703 +48334,4.49947 +48360,4.60793 +48386,4.68139 +48412,4.65702 +48438,4.70155 +48464,4.63395 +48490,4.672 +48516,4.6912 +48542,4.5888 +48568,4.57447 +48594,4.63648 +48620,4.65493 +48646,4.6597 +48672,4.68745 +48698,4.62178 +48724,4.61991 +48750,4.49606 +48776,4.39011 +48802,4.38596 +48828,4.86597 +48854,4.72946 +48880,4.62651 +48906,4.67425 +48932,4.55083 +48958,4.64425 +48984,4.5908 +49010,4.58855 +49036,4.50661 +49062,4.55261 +49088,4.57057 +49114,4.4479 +49140,4.75845 +49166,4.68922 +49192,4.64063 +49218,4.67085 +49244,4.66516 +49270,4.7051 +49296,4.50111 +49322,4.54675 +49348,4.61793 +49374,4.57944 +49400,4.55347 +49426,4.73424 +49452,4.7517 +49478,4.41936 +49504,4.62316 +49530,4.64334 +49556,4.82136 +49582,4.67468 +49608,4.63842 +49634,4.5584 +49660,4.48833 +49686,4.60484 +49712,4.4416 +49738,4.42479 +49764,4.6592 +49790,4.57394 +49816,4.7622 +49842,4.55793 +49868,4.55932 +49894,4.52764 +49920,4.34354 +49946,4.64201 +49972,4.51794 +49998,4.34792 +50024,4.47937 +50050,4.61001 +50076,4.6627 +50102,4.6136 +50128,4.7435 +50154,4.62582 +50180,4.61183 +50206,4.58254 +50232,4.58037 +50258,4.68206 +50284,4.48246 +50310,4.64106 +50336,4.63197 +50362,4.57603 +50388,4.4706 +50414,4.48543 +50440,4.55076 +50466,4.41226 +50492,4.52603 +50518,4.31548 +50544,4.8494 +50570,4.53326 +50596,4.55132 +50622,4.47341 +50648,4.50222 +50674,4.54301 +50700,4.53384 +50726,4.38559 +50752,4.46362 +50778,4.48848 +50804,4.34653 +50830,4.6122 +50856,4.61132 +50882,4.51344 +50908,4.39192 +50934,4.25447 +50960,4.48819 +50986,4.88515 +51012,4.6352 +51038,4.59827 +51064,4.67201 +51090,4.68825 +51116,4.62767 +51142,4.38073 +51168,4.47744 +51194,4.58177 +51220,4.68504 +51246,4.63163 +51272,4.44369 +51298,4.52433 +51324,4.63294 +51350,4.45613 +51376,4.30222 +51402,4.5325 +51428,4.38303 +51454,4.89809 +51480,4.7728 +51506,4.65515 +51532,4.70608 +51558,4.58859 +51584,4.65509 +51610,4.41802 +51636,4.42476 +51662,4.46287 +51688,4.76494 +51714,4.4912 +51740,4.5208 +51766,4.76225 +51792,4.49987 +51818,4.57183 +51844,4.29661 +51870,4.49709 +51896,4.48344 +51922,4.48359 +51948,4.59608 +51974,4.39574 +52000,4.35121 +52026,4.53634 +52052,4.55303 +52078,4.67619 +52104,4.31587 +52130,4.38738 +52156,4.60291 +52182,4.63638 +52208,4.44787 +52234,4.18535 +52260,4.65579 +52286,4.52716 +52312,4.6099 +52338,4.46815 +52364,4.53472 +52390,4.41237 +52416,4.60179 +52442,4.53505 +52468,4.47922 +52494,4.78199 +52520,4.26378 +52546,4.63906 +52572,4.12339 +52598,4.34958 +52624,4.23958 +52650,4.16329 +52676,4.27684 +52702,4.88281 +52728,4.52162 +52754,4.3725 +52780,4.59029 +52806,4.3705 +52832,4.37641 +52858,4.22369 +52884,4.41233 +52910,4.42551 +52936,4.41885 +52962,4.81726 +52988,4.49167 +53014,4.3902 +53040,4.58056 +53066,4.41824 +53092,4.69762 +53118,4.45082 +53144,4.39437 +53170,4.42122 +53196,4.377 +53222,4.59378 +53248,4.44261 +53274,4.44873 +53300,4.39932 +53326,4.55319 +53352,4.34965 +53378,4.46242 +53404,4.44535 +53430,4.41064 +53456,4.14258 +53482,4.68228 +53508,4.52718 +53534,4.26773 +53560,4.36316 +53586,4.62362 +53612,4.23135 +53638,4.2897 +53664,3.97109 +53690,4.5953 +53716,4.28293 +53742,4.48011 +53768,4.36025 +53794,4.2991 +53820,4.38268 +53846,4.39119 +53872,4.2465 +53898,4.4955 +53924,3.97609 +53950,4.496 +53976,4.34802 +54002,4.54293 +54028,4.55344 +54054,4.17868 +54080,4.28948 +54106,4.31769 +54132,4.44642 +54158,4.33493 +54184,4.44711 +54210,4.19772 +54236,4.11543 +54262,4.17902 +54288,4.45254 +54314,3.925 +54340,4.46596 +54366,4.33361 +54392,4.16324 +54418,4.71715 +54444,4.25986 +54470,4.47052 +54496,4.41634 +54522,4.17802 +54548,4.28909 +54574,4.58431 +54600,4.2261 +54626,4.15342 +54652,4.15886 +54678,4.46102 +54704,4.41562 +54730,4.39331 +54756,4.03874 +54782,4.52619 +54808,4.34676 +54834,4.26095 +54860,4.27752 +54886,4.3409 +54912,4.29998 +54938,4.54324 +54964,4.39158 +54990,4.29603 +55016,4.27965 +55042,4.19889 +55068,4.32403 +55094,4.40229 +55120,4.26795 +55146,4.41326 +55172,4.15343 +55198,3.98925 +55224,4.41934 +55250,4.13947 +55276,4.54076 +55302,4.22609 +55328,4.42201 +55354,4.35102 +55380,4.08355 +55406,3.98227 +55432,4.42541 +55458,4.36944 +55484,4.37026 +55510,4.1669 +55536,4.55989 +55562,4.41906 +55588,4.46641 +55614,4.01215 +55640,4.35218 +55666,4.15561 +55692,4.26721 +55718,4.2294 +55744,4.28192 +55770,4.08069 +55796,4.38244 +55822,4.18663 +55848,4.30769 +55874,4.32713 +55900,4.14252 +55926,4.31455 +55952,4.40701 +55978,4.20797 +56004,4.22352 +56030,4.3193 +56056,4.13387 +56082,4.37216 +56108,4.18231 +56134,4.32878 +56160,4.59611 +56186,4.26986 +56212,4.21659 +56238,4.32924 +56264,4.30462 +56290,4.38245 +56316,4.08483 +56342,4.36012 +56368,4.13156 +56394,4.02774 +56420,4.29494 +56446,4.38688 +56472,4.04424 +56498,4.42742 +56524,4.24266 +56550,4.19484 +56576,4.5747 +56602,4.54994 +56628,4.15052 +56654,4.2942 +56680,4.27866 +56706,4.60789 +56732,4.56758 +56758,4.39619 +56784,4.21124 +56810,4.25095 +56836,4.42161 +56862,4.36093 +56888,4.29775 +56914,4.0712 +56940,4.05809 +56966,4.37263 +56992,4.23117 +57018,4.32713 +57044,4.21095 +57070,4.30595 +57096,4.41158 +57122,4.16063 +57148,4.3952 +57174,4.50312 +57200,4.34193 +57226,4.35914 +57252,4.25131 +57278,4.21273 +57304,4.30114 +57330,3.90653 +57356,4.15005 +57382,4.48659 +57408,4.47248 +57434,4.25168 +57460,4.26522 +57486,4.42725 +57512,4.11434 +57538,4.43711 +57564,3.88422 +57590,4.11331 +57616,4.26498 +57642,4.3358 +57668,4.24974 +57694,4.41317 +57720,3.98046 +57746,4.19109 +57772,4.32508 +57798,4.42296 +57824,4.24105 +57850,4.54989 +57876,4.38577 +57902,3.93074 +57928,4.0145 +57954,4.02141 +57980,4.3146 +58006,4.1045 +58032,4.56497 +58058,4.36767 +58084,4.27525 +58110,4.49887 +58136,4.00037 +58162,4.23321 +58188,4.13772 +58214,4.26182 +58240,4.41477 +58266,4.29863 +58292,4.09562 +58318,4.31471 +58344,4.0543 +58370,4.26041 +58396,4.4425 +58422,4.25133 +58448,4.34683 +58474,4.04964 +58500,4.28792 +58526,4.0957 +58552,4.36021 +58578,4.18353 +58604,4.19826 +58630,4.15569 +58656,4.25529 +58682,4.09363 +58708,4.22178 +58734,4.45696 +58760,4.25443 +58786,3.9639 +58812,4.0287 +58838,4.53935 +58864,4.3156 +58890,4.22127 +58916,4.04376 +58942,4.09232 +58968,4.58822 +58994,4.05704 +59020,4.23818 +59046,4.20981 +59072,4.5026 +59098,4.47269 +59124,4.11144 +59150,4.56835 +59176,4.5212 +59202,4.16228 +59228,4.43758 +59254,4.16179 +59280,4.46721 +59306,4.41311 +59332,4.21872 +59358,4.05759 +59384,4.36876 +59410,4.204 +59436,4.22875 +59462,4.20237 +59488,4.23635 +59514,4.01735 +59540,4.4043 +59566,4.0646 +59592,4.23283 +59618,4.22962 +59644,4.14763 +59670,4.32052 +59696,3.99159 +59722,4.26853 +59748,3.92796 +59774,4.39654 +59800,4.23306 +59826,4.40498 +59852,4.0851 +59878,4.41225 +59904,4.30513 +59930,4.32786 +59956,4.12193 +59982,3.92463 +60008,4.42259 +60034,4.28229 +60060,4.31411 +60086,4.62715 +60112,4.0161 +60138,4.10557 +60164,4.30451 +60190,4.40884 +60216,3.93496 +60242,4.50687 +60268,3.78169 +60294,3.72153 +60320,4.14908 +60346,4.26163 +60372,4.26317 +60398,4.04305 +60424,4.39767 +60450,4.2168 +60476,4.05702 +60502,4.22983 +60528,4.03399 +60554,4.29976 +60580,3.94674 +60606,3.97974 +60632,4.2961 +60658,4.34566 +60684,4.17536 +60710,4.26058 +60736,4.05516 +60762,4.27096 +60788,4.3808 +60814,4.08165 +60840,4.31767 +60866,4.37259 +60892,4.003 +60918,4.09512 +60944,4.07188 +60970,4.38131 +60996,4.12347 +61022,4.12322 +61048,4.47874 +61074,4.57266 +61100,4.40323 +61126,4.36613 +61152,3.97839 +61178,4.42047 +61204,4.16088 +61230,3.95268 +61256,4.2219 +61282,4.30244 +61308,4.53268 +61334,4.3782 +61360,4.31438 +61386,4.17689 +61412,4.09664 +61438,4.23218 +61464,4.02209 +61490,4.18261 +61516,4.42935 +61542,4.01124 +61568,4.16935 +61594,4.16818 +61620,4.38864 +61646,4.29651 +61672,4.0112 +61698,4.29913 +61724,4.34062 +61750,4.17803 +61776,3.90516 +61802,4.19371 +61828,4.01165 +61854,4.32485 +61880,4.34471 +61906,4.11465 +61932,4.08282 +61958,4.0814 +61984,4.16996 +62010,4.1703 +62036,4.72534 +62062,4.40062 +62088,4.13598 +62114,4.30713 +62140,4.17254 +62166,4.03269 +62192,4.42223 +62218,3.74086 +62244,3.89613 +62270,4.63796 +62296,4.52848 +62322,4.15747 +62348,4.30941 +62374,4.17646 +62400,4.06085 +62426,4.27685 +62452,4.29307 +62478,4.30552 +62504,4.13557 +62530,4.35209 +62556,4.44939 +62582,4.0811 +62608,4.21502 +62634,4.30823 +62660,4.22568 +62686,4.08686 +62712,4.4351 +62738,4.20415 +62764,3.96634 +62790,4.06137 +62816,4.19813 +62842,4.23507 +62868,4.19174 +62894,4.10754 +62920,4.29016 +62946,4.12986 +62972,4.22096 +62998,4.31146 +63024,3.92578 +63050,4.16071 +63076,4.09437 +63102,4.04494 +63128,4.47093 +63154,4.03289 +63180,4.19105 +63206,4.73739 +63232,4.38762 +63258,4.3844 +63284,4.21053 +63310,4.47701 +63336,4.17069 +63362,4.13041 +63388,4.42042 +63414,4.1361 +63440,4.37458 +63466,4.13188 +63492,4.04361 +63518,4.29232 +63544,4.42815 +63570,4.30435 +63596,3.94924 +63622,4.12805 +63648,3.86891 +63674,4.28214 +63700,4.44943 +63726,4.3655 +63752,4.28324 +63778,4.26046 +63804,4.0983 +63830,4.08508 +63856,4.32173 +63882,4.27603 +63908,4.28264 +63934,4.20107 +63960,3.87635 +63986,4.24748 +64012,4.15449 +64038,4.38473 +64064,4.09786 +64090,4.03739 +64116,4.40828 +64142,4.29473 +64168,4.20188 +64194,4.2787 +64220,4.1155 +64246,4.14424 +64272,4.14474 +64298,4.28615 +64324,4.1423 +64350,4.17949 +64376,4.20326 +64402,4.0123 +64428,3.98052 +64454,4.23904 +64480,4.29894 +64506,4.45332 +64532,4.19964 +64558,4.18599 +64584,3.98989 +64610,4.10997 +64636,4.43328 +64662,4.32489 +64688,4.17412 +64714,4.21335 +64740,4.12567 +64766,4.16387 +64792,4.18277 +64818,4.19653 +64844,4.24631 +64870,4.16259 +64896,4.37795 +64922,3.91133 +64948,4.53594 +64974,4.09627 +65000,3.92865 +65026,4.15736 +65052,4.23953 +65078,4.21324 +65104,4.28557 +65130,4.0315 +65156,4.33498 +65182,3.98646 +65208,4.34333 +65234,4.06537 +65260,4.37427 +65286,4.13271 +65312,4.16208 +65338,4.25842 +65364,4.042 +65390,4.38098 +65416,4.31225 +65442,3.9361 +65468,4.30631 +65494,4.03362 +65520,3.98093 +65546,3.94106 +65572,3.92922 +65598,4.02505 +65624,4.2261 +65650,3.94775 +65676,3.90818 +65702,3.97797 +65728,4.28425 +65754,3.80046 +65780,3.64624 +65806,4.45988 +65832,4.16654 +65858,4.45257 +65884,3.87828 +65910,4.20793 +65936,4.18705 +65962,4.16436 +65988,4.1792 +66014,4.16297 +66040,3.80237 +66066,4.06856 +66092,4.25854 +66118,4.12962 +66144,4.31739 +66170,4.54505 +66196,4.22435 +66222,4.16112 +66248,3.7153 +66274,4.30845 +66300,3.94087 +66326,3.70957 +66352,4.51792 +66378,4.27958 +66404,4.25662 +66430,4.14602 +66456,3.92816 +66482,4.19266 +66508,4.19685 +66534,4.35603 +66560,4.04168 +66586,4.27086 +66612,4.06107 +66638,3.91768 +66664,4.24087 +66690,4.0172 +66716,4.07149 +66742,4.42332 +66768,4.35363 +66794,3.94667 +66820,4.00533 +66846,4.21818 +66872,3.84024 +66898,4.09353 +66924,4.68235 +66950,4.27931 +66976,3.97051 +67002,4.25999 +67028,4.30551 +67054,4.20347 +67080,4.23284 +67106,3.98879 +67132,4.42856 +67158,4.30921 +67184,4.00685 +67210,4.392 +67236,4.2553 +67262,3.78798 +67288,4.38698 +67314,4.25893 +67340,4.18747 +67366,4.03912 +67392,4.20678 +67418,4.40097 +67444,4.15844 +67470,3.96862 +67496,4.20964 +67522,4.15432 +67548,4.52747 +67574,4.19718 +67600,3.89607 +67626,4.15334 +67652,4.08692 +67678,4.25942 +67704,3.96353 +67730,3.67972 +67756,4.48678 +67782,4.04083 +67808,4.05152 +67834,4.12181 +67860,3.95834 +67886,4.17672 +67912,3.99376 +67938,4.19142 +67964,4.10468 +67990,4.01789 +68016,4.40022 +68042,4.18709 +68068,4.10875 +68094,4.5895 +68120,4.08839 +68146,4.22929 +68172,4.40439 +68198,4.32071 +68224,4.41497 +68250,4.23645 +68276,3.99078 +68302,3.93027 +68328,4.18555 +68354,4.43529 +68380,4.37046 +68406,3.71759 +68432,4.29137 +68458,4.30157 +68484,4.20001 +68510,3.9569 +68536,4.14826 +68562,4.26059 +68588,4.21444 +68614,3.86006 +68640,4.06678 +68666,4.18682 +68692,4.10325 +68718,4.17801 +68744,4.07406 +68770,3.90477 +68796,4.35982 +68822,4.35203 +68848,4.26953 +68874,4.24069 +68900,4.13844 +68926,4.2308 +68952,4.24695 +68978,4.26288 +69004,4.33314 +69030,4.20537 +69056,3.9793 +69082,4.07066 +69108,4.06158 +69134,3.86904 +69160,4.43447 +69186,4.1985 +69212,3.90778 +69238,3.85051 +69264,4.25548 +69290,4.01333 +69316,4.01897 +69342,3.83409 +69368,4.39222 +69394,3.83165 +69420,3.93136 +69446,4.27123 +69472,3.81937 +69498,4.03242 +69524,4.01651 +69550,3.97463 +69576,3.99898 +69602,3.82883 +69628,4.37892 +69654,4.2704 +69680,4.08239 +69706,4.27115 +69732,3.98499 +69758,4.40786 +69784,4.4122 +69810,4.05718 +69836,4.14285 +69862,4.1663 +69888,4.05439 +69914,4.22195 +69940,4.26532 +69966,4.20479 +69992,4.2202 +70018,4.21301 +70044,3.93253 +70070,4.12072 +70096,4.34817 +70122,4.01917 +70148,4.06195 +70174,4.12199 +70200,4.18161 +70226,4.15561 +70252,4.54485 +70278,4.38073 +70304,4.06355 +70330,3.91147 +70356,4.06494 +70382,4.08727 +70408,3.88304 +70434,4.19707 +70460,4.27671 +70486,4.29273 +70512,4.35084 +70538,4.30578 +70564,4.36828 +70590,4.11964 +70616,3.99289 +70642,4.14202 +70668,4.19884 +70694,4.08777 +70720,4.263 +70746,4.24451 +70772,4.03648 +70798,4.07594 +70824,4.23167 +70850,4.32009 +70876,4.16173 +70902,4.09908 +70928,3.9726 +70954,3.64282 +70980,3.70224 +71006,4.27904 +71032,4.02822 +71058,3.81199 +71084,3.99499 +71110,3.98181 +71136,4.01835 +71162,4.25481 +71188,3.6712 +71214,4.21616 +71240,4.0063 +71266,4.27102 +71292,4.11995 +71318,4.03791 +71344,3.9278 +71370,3.96629 +71396,4.17935 +71422,3.65849 +71448,3.51069 +71474,3.99321 +71500,3.88393 +71526,4.27666 +71552,3.93996 +71578,3.92494 +71604,4.251 +71630,4.7397 +71656,4.44102 +71682,4.21433 +71708,4.17151 +71734,4.38933 +71760,3.97531 +71786,3.56214 +71812,3.94098 +71838,3.94958 +71864,4.16753 +71890,4.26575 +71916,4.14852 +71942,3.80127 +71968,4.06216 +71994,4.253 +72020,4.11191 +72046,4.18198 +72072,4.32738 +72098,3.81521 +72124,4.10182 +72150,4.14319 +72176,4.17323 +72202,4.26633 +72228,3.83546 +72254,3.96331 +72280,4.40393 +72306,4.36083 +72332,4.20015 +72358,4.30721 +72384,4.231 +72410,4.18282 +72436,3.99918 +72462,3.85984 +72488,4.17724 +72514,3.98835 +72540,4.25269 +72566,4.18407 +72592,4.19679 +72618,4.16303 +72644,4.0492 +72670,4.02391 +72696,3.84039 +72722,4.13323 +72748,3.67206 +72774,4.58994 +72800,4.0199 +72826,4.19779 +72852,4.14542 +72878,4.24091 +72904,3.70089 +72930,4.14937 +72956,3.80463 +72982,4.19511 +73008,4.35041 +73034,4.06224 +73060,4.05842 +73086,4.26406 +73112,4.17944 +73138,4.1913 +73164,4.42621 +73190,4.32809 +73216,3.98527 +73242,3.73034 +73268,4.19928 +73294,3.97307 +73320,4.10039 +73346,4.27084 +73372,4.32612 +73398,3.90478 +73424,4.15906 +73450,3.80203 +73476,4.08271 +73502,4.06971 +73528,3.69764 +73554,3.85701 +73580,4.23222 +73606,3.85569 +73632,3.94579 +73658,4.01511 +73684,3.92845 +73710,4.38812 +73736,3.8888 +73762,4.08685 +73788,3.99185 +73814,4.06766 +73840,4.23806 +73866,3.94086 +73892,4.354 +73918,3.89898 +73944,3.92885 +73970,3.80034 +73996,4.2361 +74022,3.8205 +74048,4.10416 +74074,4.2999 +74100,4.05432 +74126,4.43011 +74152,4.07798 +74178,3.73105 +74204,3.99422 +74230,4.1944 +74256,3.92109 +74282,4.07777 +74308,4.23153 +74334,4.18772 +74360,3.7557 +74386,4.06333 +74412,4.10917 +74438,4.4847 +74464,3.93866 +74490,4.13985 +74516,4.15707 +74542,3.8904 +74568,4.04574 +74594,4.16684 +74620,3.62028 +74646,3.88832 +74672,4.19485 +74698,4.19767 +74724,4.10897 +74750,4.07018 +74776,4.07264 +74802,3.9508 +74828,4.1998 +74854,4.17226 +74880,3.89694 +74906,4.26423 +74932,4.51784 +74958,4.07282 +74984,3.81535 +75010,3.94166 +75036,4.44795 +75062,4.29164 +75088,4.05196 +75114,4.0789 +75140,4.09492 +75166,4.03072 +75192,4.0104 +75218,4.0536 +75244,4.21482 +75270,3.94492 +75296,3.91042 +75322,4.02572 +75348,3.97872 +75374,4.15131 +75400,3.71548 +75426,4.34142 +75452,3.96177 +75478,4.09616 +75504,4.05713 +75530,4.07127 +75556,3.87574 +75582,4.05854 +75608,4.0344 +75634,3.81123 +75660,3.89235 +75686,3.93341 +75712,3.97496 +75738,3.94473 +75764,4.22192 +75790,4.2214 +75816,3.87993 +75842,3.91353 +75868,4.09272 +75894,4.28055 +75920,4.53853 +75946,3.93406 +75972,3.9109 +75998,4.02359 +76024,3.94405 +76050,4.28785 +76076,3.97369 +76102,3.93839 +76128,3.96785 +76154,4.06432 +76180,3.93408 +76206,3.72949 +76232,3.9523 +76258,4.19094 +76284,4.25783 +76310,3.85375 +76336,3.60278 +76362,4.03688 +76388,4.25297 +76414,3.99987 +76440,3.75038 +76466,4.0419 +76492,3.99391 +76518,3.91819 +76544,3.78567 +76570,3.88766 +76596,4.01658 +76622,4.20661 +76648,3.95303 +76674,4.39177 +76700,4.17064 +76726,3.79536 +76752,4.20164 +76778,3.97354 +76804,4.08088 +76830,4.07492 +76856,3.90128 +76882,4.05421 +76908,4.23224 +76934,4.28648 +76960,4.15548 +76986,4.08558 +77012,3.85325 +77038,4.29366 +77064,4.1031 +77090,3.83874 +77116,4.27576 +77142,3.97462 +77168,4.00077 +77194,3.93278 +77220,4.27168 +77246,3.748 +77272,4.13931 +77298,4.12099 +77324,4.06356 +77350,4.05762 +77376,4.09875 +77402,4.11333 +77428,4.00347 +77454,3.93549 +77480,3.86586 +77506,4.15942 +77532,3.925 +77558,3.754 +77584,3.83175 +77610,4.1189 +77636,4.29757 +77662,4.1985 +77688,4.11913 +77714,4.06802 +77740,3.99582 +77766,4.17244 +77792,3.75277 +77818,3.8824 +77844,4.31187 +77870,4.17745 +77896,3.98485 +77922,3.87318 +77948,4.1422 +77974,4.22125 +78000,4.0676 +78026,3.955 +78052,3.86504 +78078,4.0626 +78104,3.99269 +78130,4.05687 +78156,4.07911 +78182,4.59424 +78208,3.96974 +78234,4.24548 +78260,4.26276 +78286,3.98268 +78312,3.92811 +78338,4.1852 +78364,3.89954 +78390,3.89402 +78416,3.97205 +78442,4.00903 +78468,3.89494 +78494,4.05617 +78520,4.38477 +78546,3.77077 +78572,4.34202 +78598,3.97093 +78624,4.40166 +78650,3.94526 +78676,4.11418 +78702,3.91581 +78728,4.02392 +78754,4.05912 +78780,4.03737 +78806,4.23076 +78832,4.03508 +78858,3.45312 +78884,4.19853 +78910,4.068 +78936,3.98397 +78962,3.91785 +78988,3.9628 +79014,4.47768 +79040,4.19159 +79066,4.33351 +79092,3.85661 +79118,4.10327 +79144,4.31104 +79170,4.20961 +79196,4.03 +79222,4.17524 +79248,3.79531 +79274,4.20293 +79300,3.87203 +79326,4.26142 +79352,3.95596 +79378,3.4348 +79404,4.5451 +79430,4.15384 +79456,4.07342 +79482,4.03021 +79508,4.38937 +79534,4.14979 +79560,4.12253 +79586,3.965 +79612,4.46585 +79638,4.22168 +79664,4.0019 +79690,4.21504 +79716,4.00167 +79742,4.44765 +79768,4.16455 +79794,3.74059 +79820,3.97241 +79846,4.42164 +79872,4.1393 +79898,4.01194 +79924,4.0798 +79950,3.91091 +79976,4.03625 +80002,3.85901 +80028,3.81692 +80054,3.96519 +80080,4.08946 +80106,4.18425 +80132,4.19503 +80158,3.93712 +80184,3.98058 +80210,4.54897 +80236,3.75947 +80262,4.05515 +80288,4.44249 +80314,4.66767 +80340,3.88192 +80366,4.19809 +80392,3.8507 +80418,4.13759 +80444,3.94934 +80470,3.69881 +80496,4.14575 +80522,4.10015 +80548,3.87465 +80574,3.92399 +80600,3.87241 +80626,3.50043 +80652,3.64289 +80678,4.32594 +80704,4.08796 +80730,3.85868 +80756,4.27435 +80782,4.20119 +80808,4.20489 +80834,4.06361 +80860,4.17379 +80886,3.9968 +80912,3.81801 +80938,3.95298 +80964,4.0064 +80990,3.94806 +81016,4.0528 +81042,4.13758 +81068,3.75864 +81094,4.16677 +81120,4.53034 +81146,3.87896 +81172,3.85414 +81198,4.05043 +81224,3.95371 +81250,4.33084 +81276,3.9371 +81302,4.0034 +81328,3.95842 +81354,4.22313 +81380,4.03517 +81406,4.24813 +81432,3.68476 +81458,4.32186 +81484,4.13104 +81510,4.19344 +81536,4.0235 +81562,4.5439 +81588,3.91917 +81614,3.96098 +81640,3.99256 +81666,4.22964 +81692,4.06014 +81718,4.01681 +81744,3.7894 +81770,4.02202 +81796,4.15618 +81822,4.12361 +81848,4.12524 +81874,4.00469 +81900,3.94416 +81926,4.0256 +81952,3.66934 +81978,4.20697 +82004,3.81195 +82030,3.98265 +82056,4.10153 +82082,3.94464 +82108,4.19911 +82134,4.56675 +82160,3.93558 +82186,4.056 +82212,4.14796 +82238,4.01671 +82264,4.02837 +82290,4.06719 +82316,4.20667 +82342,3.90087 +82368,3.95366 +82394,4.25007 +82420,3.7561 +82446,4.26807 +82472,4.06163 +82498,4.13639 +82524,3.69804 +82550,3.8004 +82576,4.23311 +82602,4.10927 +82628,4.35284 +82654,4.21033 +82680,3.70841 +82706,4.18769 +82732,4.11933 +82758,4.34426 +82784,3.75796 +82810,4.22809 +82836,3.92567 +82862,4.02343 +82888,4.3063 +82914,3.93259 +82940,4.09023 +82966,4.28964 +82992,4.60855 +83018,3.89306 +83044,3.93975 +83070,3.87852 +83096,4.31951 +83122,4.33534 +83148,3.90026 +83174,3.67844 +83200,4.29102 +83226,4.03338 +83252,4.19593 +83278,3.46773 +83304,4.4028 +83330,4.25403 +83356,3.88905 +83382,4.11045 +83408,3.78167 +83434,3.97903 +83460,3.83781 +83486,3.64368 +83512,4.34221 +83538,4.23937 +83564,3.88165 +83590,4.20665 +83616,3.78918 +83642,4.2875 +83668,4.37386 +83694,3.98819 +83720,4.09829 +83746,3.87908 +83772,4.10476 +83798,4.08096 +83824,3.86395 +83850,3.81317 +83876,3.78147 +83902,3.82299 +83928,4.00998 +83954,4.01938 +83980,3.8839 +84006,3.99414 +84032,4.04604 +84058,3.9053 +84084,4.35792 +84110,4.2874 +84136,4.48453 +84162,4.10846 +84188,3.81678 +84214,4.20235 +84240,4.23102 +84266,4.11865 +84292,4.04435 +84318,4.11933 +84344,4.00563 +84370,4.28649 +84396,4.26135 +84422,3.95227 +84448,4.16913 +84474,3.68357 +84500,3.91985 +84526,4.19744 +84552,3.82363 +84578,4.16243 +84604,4.23382 +84630,4.20986 +84656,3.88345 +84682,3.89983 +84708,4.66558 +84734,4.06627 +84760,3.84413 +84786,3.92156 +84812,4.48424 +84838,3.91604 +84864,3.9521 +84890,4.24761 +84916,4.26757 +84942,4.10306 +84968,3.6953 +84994,4.01819 +85020,4.125 +85046,4.12428 +85072,4.02083 +85098,4.2427 +85124,3.9023 +85150,3.93128 +85176,4.28041 +85202,3.80909 +85228,4.03982 +85254,4.46449 +85280,3.95466 +85306,4.06559 +85332,4.09804 +85358,4.22776 +85384,3.77794 +85410,4.09943 +85436,4.06913 +85462,4.07471 +85488,4.1053 +85514,3.93218 +85540,3.69464 +85566,3.87666 +85592,4.17787 +85618,4.3329 +85644,4.15154 +85670,3.90465 +85696,4.32452 +85722,3.51588 +85748,3.99979 +85774,4.29131 +85800,4.24132 +85826,4.23287 +85852,3.8834 +85878,3.81319 +85904,3.77609 +85930,4.31419 +85956,4.16336 +85982,4.12237 +86008,4.18726 +86034,4.05006 +86060,3.81654 +86086,4.29074 +86112,4.00835 +86138,3.74126 +86164,3.7509 +86190,3.71119 +86216,3.84372 +86242,4.19964 +86268,3.90846 +86294,3.80554 +86320,3.62975 +86346,3.78335 +86372,4.25337 +86398,4.41135 +86424,4.25482 +86450,4.10619 +86476,3.83756 +86502,4.18867 +86528,3.42051 +86554,3.90526 +86580,3.92249 +86606,4.03218 +86632,3.73761 +86658,4.19845 +86684,4.24806 +86710,4.19533 +86736,3.78678 +86762,4.32146 +86788,4.07979 +86814,4.24422 +86840,3.98741 +86866,3.87332 +86892,3.84299 +86918,4.07154 +86944,4.01124 +86970,4.15272 +86996,4.08347 +87022,4.23557 +87048,4.08787 +87074,4.06634 +87100,3.59784 +87126,4.12611 +87152,3.96124 +87178,4.4012 +87204,4.12103 +87230,3.9005 +87256,4.14628 +87282,3.90261 +87308,4.03704 +87334,4.33683 +87360,3.78022 +87386,4.17042 +87412,4.11567 +87438,3.9075 +87464,4.29517 +87490,4.11018 +87516,3.90234 +87542,3.87674 +87568,3.65823 +87594,4.0663 +87620,4.1509 +87646,4.20178 +87672,3.96409 +87698,3.90121 +87724,3.99072 +87750,4.0806 +87776,3.83617 +87802,4.37794 +87828,4.08893 +87854,4.19861 +87880,3.78415 +87906,4.13394 +87932,3.97357 +87958,3.63654 +87984,4.35913 +88010,4.14996 +88036,4.11489 +88062,4.70251 +88088,3.91191 +88114,4.15119 +88140,3.71381 +88166,3.91182 +88192,3.90702 +88218,3.89185 +88244,3.97693 +88270,4.06809 +88296,4.26635 +88322,3.74948 +88348,4.13529 +88374,3.86693 +88400,4.05351 +88426,3.7999 +88452,4.45066 +88478,3.89335 +88504,4.3397 +88530,4.10914 +88556,3.59234 +88582,4.13408 +88608,4.31147 +88634,3.93074 +88660,4.02299 +88686,3.96364 +88712,4.24405 +88738,3.5096 +88764,3.98496 +88790,3.87358 +88816,3.90977 +88842,3.83149 +88868,4.15904 +88894,4.15961 +88920,4.21614 +88946,3.57203 +88972,3.90078 +88998,4.11847 +89024,4.06009 +89050,3.85946 +89076,3.82975 +89102,4.02585 +89128,4.25786 +89154,4.07171 +89180,4.32206 +89206,4.2537 +89232,3.93405 +89258,3.66999 +89284,3.54288 +89310,3.85249 +89336,4.22694 +89362,4.12372 +89388,4.27224 +89414,4.08874 +89440,3.85168 +89466,4.05892 +89492,4.34973 +89518,3.82713 +89544,3.89755 +89570,4.13578 +89596,4.31059 +89622,4.53342 +89648,3.98705 +89674,3.76955 +89700,3.74364 +89726,3.9781 +89752,4.3411 +89778,4.07217 +89804,4.09864 +89830,4.40726 +89856,4.03365 +89882,4.14011 +89908,4.0854 +89934,3.83358 +89960,4.24577 +89986,4.06982 +90012,4.12343 +90038,4.0178 +90064,4.01631 +90090,4.06583 +90116,3.42607 +90142,4.18317 +90168,4.02057 +90194,3.63874 +90220,3.90694 +90246,4.2238 +90272,3.90858 +90298,3.76682 +90324,4.15532 +90350,3.87969 +90376,4.31982 +90402,3.99244 +90428,4.01049 +90454,3.89734 +90480,3.94741 +90506,3.74399 +90532,4.04408 +90558,3.71738 +90584,4.20843 +90610,3.91308 +90636,4.23334 +90662,4.10952 +90688,4.12563 +90714,4.06507 +90740,4.22339 +90766,3.8196 +90792,4.13008 +90818,4.29956 +90844,3.96654 +90870,3.72947 +90896,3.91764 +90922,3.70078 +90948,4.23035 +90974,3.84361 +91000,3.94501 +91026,4.11274 +91052,3.89493 +91078,4.03229 +91104,3.9274 +91130,3.94002 +91156,3.75374 +91182,4.18887 +91208,4.19856 +91234,4.25529 +91260,3.82199 +91286,4.66708 +91312,3.98353 +91338,4.1238 +91364,3.93187 +91390,4.08558 +91416,4.01199 +91442,3.72686 +91468,4.09908 +91494,4.40586 +91520,3.73042 +91546,4.05237 +91572,3.90307 +91598,3.65058 +91624,4.09658 +91650,4.28166 +91676,4.06768 +91702,4.02118 +91728,4.01759 +91754,3.887 +91780,3.65698 +91806,3.91189 +91832,4.26269 +91858,3.94415 +91884,4.0543 +91910,4.35033 +91936,3.88894 +91962,4.14585 +91988,3.99487 +92014,3.8164 +92040,3.88396 +92066,3.83471 +92092,3.85095 +92118,3.60233 +92144,4.11021 +92170,3.95967 +92196,3.77618 +92222,3.91905 +92248,4.28725 +92274,3.7864 +92300,4.53528 +92326,3.70953 +92352,4.06203 +92378,4.54297 +92404,4.01976 +92430,3.65457 +92456,4.02387 +92482,3.76448 +92508,4.11381 +92534,3.79922 +92560,4.16717 +92586,4.10296 +92612,4.08129 +92638,4.12344 +92664,4.12224 +92690,3.99376 +92716,4.16102 +92742,4.24465 +92768,4.19837 +92794,4.11998 +92820,3.78339 +92846,3.85568 +92872,4.04781 +92898,4.27865 +92924,4.05407 +92950,4.14551 +92976,3.93287 +93002,4.04283 +93028,4.37523 +93054,4.03909 +93080,3.67639 +93106,3.78367 +93132,3.86467 +93158,3.77297 +93184,4.17093 +93210,4.20602 +93236,4.13545 +93262,3.65948 +93288,4.04005 +93314,4.10952 +93340,4.17628 +93366,3.70913 +93392,4.14651 +93418,3.85341 +93444,4.11044 +93470,3.91275 +93496,4.32826 +93522,4.40177 +93548,4.22789 +93574,4.08431 +93600,4.05001 +93626,4.14881 +93652,3.80849 +93678,4.05241 +93704,4.40233 +93730,3.83975 +93756,3.98116 +93782,3.90036 +93808,4.15814 +93834,4.18503 +93860,3.76042 +93886,3.77724 +93912,4.03769 +93938,4.11152 +93964,4.09547 +93990,4.17121 +94016,3.75866 +94042,4.52178 +94068,3.88979 +94094,4.02315 +94120,3.83609 +94146,3.94993 +94172,3.8245 +94198,3.59151 +94224,4.01155 +94250,3.70842 +94276,3.9514 +94302,3.98615 +94328,3.71345 +94354,3.94489 +94380,3.81305 +94406,3.98144 +94432,4.24185 +94458,3.82528 +94484,3.84086 +94510,4.02509 +94536,3.95097 +94562,4.31413 +94588,4.26026 +94614,4.16005 +94640,4.15753 +94666,4.04187 +94692,4.04188 +94718,4.22029 +94744,3.89812 +94770,3.65637 +94796,4.45489 +94822,3.88012 +94848,4.01863 +94874,3.70564 +94900,3.76449 +94926,4.19736 +94952,3.94259 +94978,3.60945 +95004,3.85544 +95030,3.80671 +95056,3.7183 +95082,3.80125 +95108,3.83227 +95134,3.53896 +95160,3.73934 +95186,3.96033 +95212,4.05425 +95238,3.86758 +95264,3.89047 +95290,4.08727 +95316,4.00058 +95342,3.87083 +95368,4.25419 +95394,3.79948 +95420,3.83444 +95446,4.01277 +95472,4.23615 +95498,4.08559 +95524,3.99665 +95550,3.6996 +95576,4.03147 +95602,4.13377 +95628,4.07659 +95654,3.64978 +95680,4.07505 +95706,3.86186 +95732,3.87941 +95758,4.31469 +95784,3.81993 +95810,3.96133 +95836,3.90457 +95862,3.95981 +95888,3.54142 +95914,3.86507 +95940,4.16875 +95966,3.87567 +95992,3.97508 +96018,4.4699 +96044,3.76518 +96070,4.13077 +96096,3.85125 +96122,3.81164 +96148,3.85112 +96174,3.91885 +96200,3.98411 +96226,3.69612 +96252,3.53316 +96278,4.01245 +96304,4.12229 +96330,3.88797 +96356,3.61852 +96382,4.15834 +96408,4.15433 +96434,4.1203 +96460,4.25495 +96486,4.05161 +96512,3.85322 +96538,4.43373 +96564,4.19021 +96590,3.91135 +96616,4.2954 +96642,3.98975 +96668,4.008 +96694,3.98697 +96720,4.13182 +96746,4.03464 +96772,4.0221 +96798,3.73758 +96824,3.9226 +96850,3.92891 +96876,4.04301 +96902,3.9972 +96928,4.18898 +96954,3.68462 +96980,3.63846 +97006,3.75905 +97032,3.98811 +97058,4.01571 +97084,4.02317 +97110,3.68497 +97136,3.94526 +97162,3.78272 +97188,3.68601 +97214,3.85632 +97240,4.41198 +97266,3.79789 +97292,4.28626 +97318,4.1916 +97344,3.84996 +97370,4.00346 +97396,3.66742 +97422,4.08791 +97448,3.89892 +97474,3.87679 +97500,3.52406 +97526,3.82427 +97552,4.16504 +97578,3.87388 +97604,4.1703 +97630,4.17199 +97656,3.83652 +97682,3.78306 +97708,4.31638 +97734,4.18465 +97760,3.9336 +97786,3.74851 +97812,3.75001 +97838,3.65674 +97864,3.99106 +97890,3.91993 +97916,4.12932 +97942,3.6709 +97968,4.16895 +97994,4.17907 +98020,4.28954 +98046,3.62479 +98072,4.12886 +98098,3.98196 +98124,4.3532 +98150,3.85411 +98176,3.61335 +98202,4.01658 +98228,4.03948 +98254,4.03052 +98280,4.23752 +98306,3.71274 +98332,4.0503 +98358,4.17848 +98384,3.79536 +98410,4.23625 +98436,4.14147 +98462,4.02942 +98488,3.8449 +98514,4.11365 +98540,3.78031 +98566,3.70364 +98592,3.87593 +98618,3.96081 +98644,4.48177 +98670,4.16677 +98696,3.91034 +98722,4.13154 +98748,3.88475 +98774,4.03162 +98800,3.99233 +98826,3.94898 +98852,4.00829 +98878,4.05063 +98904,3.67622 +98930,3.94989 +98956,3.82847 +98982,4.31631 +99008,4.39609 +99034,3.94099 +99060,4.18211 +99086,4.03382 +99112,3.98114 +99138,4.37127 +99164,3.93422 +99190,4.3421 +99216,4.28291 +99242,3.65469 +99268,3.58334 +99294,4.24045 +99320,4.1025 +99346,3.82345 +99372,3.65355 +99398,4.28472 +99424,3.85571 +99450,3.72088 +99476,3.86196 +99502,4.08929 +99528,4.1173 +99554,3.77285 +99580,3.95283 +99606,4.10853 +99632,3.80437 +99658,3.49527 +99684,3.91244 +99710,3.96796 +99736,4.08288 +99762,3.95229 +99788,3.65398 +99814,3.98109 +99840,3.68489 +99866,4.00004 +99892,3.88335 +99918,3.79357 +99944,4.10714 +99970,3.7977 +99996,4.23773 +100022,4.19267 +100048,4.24449 +100074,3.74104 +100100,3.92381 +100126,3.68727 +100152,3.97241 +100178,4.07784 +100204,3.9475 +100230,3.90419 +100256,3.77534 +100282,3.59373 +100308,3.79917 +100334,3.77897 +100360,3.74667 +100386,3.62711 +100412,3.99248 +100438,3.69967 +100464,3.98958 +100490,4.23542 +100516,3.81349 +100542,3.79273 +100568,4.03593 +100594,3.90181 +100620,3.95823 +100646,4.03027 +100672,3.77039 +100698,4.10709 +100724,3.76498 +100750,3.8137 +100776,4.10336 +100802,3.80944 +100828,4.02821 +100854,3.96971 +100880,4.72853 +100906,3.96711 +100932,3.8803 +100958,4.40446 +100984,4.23241 +101010,4.06533 +101036,3.81541 +101062,4.00474 +101088,3.74766 +101114,4.01242 +101140,3.97725 +101166,3.61623 +101192,4.15452 +101218,4.35509 +101244,3.95236 +101270,4.02721 +101296,4.08644 +101322,4.09492 +101348,3.94561 +101374,3.86706 +101400,3.64403 +101426,3.73955 +101452,4.45869 +101478,4.53493 +101504,4.03907 +101530,3.83872 +101556,4.17399 +101582,4.03588 +101608,3.88218 +101634,4.19261 +101660,4.1617 +101686,3.89427 +101712,3.84224 +101738,4.37221 +101764,3.82066 +101790,3.74326 +101816,3.84995 +101842,4.23559 +101868,4.40812 +101894,4.1585 +101920,4.2024 +101946,3.84189 +101972,4.14831 +101998,3.92614 +102024,4.02027 +102050,3.71313 +102076,3.94282 +102102,4.27912 +102128,3.93906 +102154,3.99793 +102180,4.01649 +102206,4.00289 +102232,3.92423 +102258,4.1388 +102284,3.69556 +102310,3.91542 +102336,3.55464 +102362,3.80149 +102388,3.85424 +102414,3.75603 +102440,4.26181 +102466,3.89282 +102492,3.62618 +102518,3.74601 +102544,4.0221 +102570,3.64076 +102596,4.01203 +102622,3.89391 +102648,3.41561 +102674,3.45909 +102700,3.84414 +102726,3.83654 +102752,3.94612 +102778,3.9059 +102804,3.84698 +102830,4.17115 +102856,4.62084 +102882,3.99596 +102908,3.80764 +102934,3.96595 +102960,4.15079 +102986,4.02613 +103012,3.57363 +103038,4.12856 +103064,4.28391 +103090,3.86015 +103116,3.89982 +103142,3.99905 +103168,3.5607 +103194,3.90077 +103220,3.99941 +103246,4.1285 +103272,3.69966 +103298,3.96838 +103324,4.35661 +103350,3.86442 +103376,3.72666 +103402,4.2086 +103428,3.88432 +103454,4.28169 +103480,4.0648 +103506,3.79401 +103532,3.45963 +103558,4.04395 +103584,4.17833 +103610,4.08035 +103636,3.7672 +103662,4.09742 +103688,4.1818 +103714,3.92463 +103740,4.8521 +103766,3.7212 +103792,4.355 +103818,3.85396 +103844,3.98398 +103870,3.93382 +103896,3.82255 +103922,4.23004 +103948,4.01659 +103974,4.12963 +104000,3.67674 +104026,4.23045 +104052,4.05751 +104078,3.9306 +104104,4.00512 +104130,3.68448 +104156,3.85868 +104182,4.00212 +104208,3.34701 +104234,4.11372 +104260,3.97509 +104286,3.62757 +104312,3.89164 +104338,4.08946 +104364,3.78148 +104390,3.80506 +104416,3.98502 +104442,3.87891 +104468,4.05029 +104494,4.1237 +104520,4.01845 +104546,4.272 +104572,4.04629 +104598,3.82584 +104624,3.60344 +104650,4.04057 +104676,3.92539 +104702,3.67248 +104728,4.2426 +104754,3.82825 +104780,4.10122 +104806,4.31666 +104832,3.74527 +104858,3.5435 +104884,4.19067 +104910,3.9845 +104936,4.47668 +104962,3.87062 +104988,3.82256 +105014,3.95933 +105040,3.87816 +105066,4.09049 +105092,4.24406 +105118,3.89062 +105144,3.85186 +105170,4.47825 +105196,3.71265 +105222,3.86157 +105248,3.75888 +105274,4.14372 +105300,3.78456 +105326,4.26899 +105352,4.38794 +105378,4.21366 +105404,4.14923 +105430,4.01885 +105456,4.2096 +105482,3.81047 +105508,4.35851 +105534,4.15811 +105560,3.90993 +105586,3.69327 +105612,4.27601 +105638,4.08666 +105664,3.64767 +105690,4.06988 +105716,4.00052 +105742,4.0211 +105768,4.18023 +105794,3.47723 +105820,3.80626 +105846,4.61186 +105872,3.84829 +105898,4.16177 +105924,4.21541 +105950,3.7233 +105976,4.25125 +106002,3.84947 +106028,3.46679 +106054,3.45859 +106080,3.79602 +106106,3.88232 +106132,3.94865 +106158,4.15919 +106184,3.6888 +106210,3.62222 +106236,3.94947 +106262,4.06195 +106288,3.89601 +106314,4.20432 +106340,3.9696 +106366,3.74565 +106392,3.61877 +106418,4.15995 +106444,3.83901 +106470,4.07931 +106496,4.31116 +106522,3.67729 +106548,3.64717 +106574,3.74116 +106600,3.63364 +106626,3.98626 +106652,3.99803 +106678,3.47669 +106704,4.04033 +106730,3.99588 +106756,3.9866 +106782,3.61111 +106808,3.79352 +106834,3.96583 +106860,4.01747 +106886,3.91614 +106912,3.71283 +106938,4.17475 +106964,4.22356 +106990,4.37237 +107016,3.98786 +107042,3.98639 +107068,3.81442 +107094,3.83016 +107120,3.51253 +107146,4.19174 +107172,3.59476 +107198,3.9453 +107224,3.73794 +107250,4.16264 +107276,3.71091 +107302,3.87051 +107328,3.5127 +107354,3.88597 +107380,3.83143 +107406,3.68254 +107432,3.5026 +107458,4.29694 +107484,3.79914 +107510,4.09681 +107536,3.83664 +107562,3.74791 +107588,3.87123 +107614,3.91819 +107640,4.31365 +107666,3.87232 +107692,4.24862 +107718,4.22199 +107744,4.04865 +107770,3.71654 +107796,3.96272 +107822,3.72354 +107848,4.38602 +107874,3.7772 +107900,4.24515 +107926,3.72775 +107952,3.95505 +107978,3.77015 +108004,4.10364 +108030,3.86665 +108056,4.21148 +108082,4.09972 +108108,3.87781 +108134,3.64993 +108160,4.14466 +108186,3.52677 +108212,4.01177 +108238,3.73798 +108264,3.95222 +108290,4.21209 +108316,3.99777 +108342,4.16959 +108368,3.7843 +108394,4.25566 +108420,3.7404 +108446,3.57041 +108472,4.15192 +108498,3.79749 +108524,4.13543 +108550,3.91926 +108576,4.27075 +108602,3.79089 +108628,3.91146 +108654,4.00129 +108680,3.79597 +108706,3.56126 +108732,4.42653 +108758,3.67278 +108784,3.42932 +108810,3.63576 +108836,4.33785 +108862,4.16368 +108888,4.12192 +108914,4.10395 +108940,3.76436 +108966,3.61226 +108992,3.94081 +109018,4.101 +109044,4.06174 +109070,3.90956 +109096,4.06064 +109122,4.53714 +109148,4.60815 +109174,4.29126 +109200,4.38388 +109226,4.07214 +109252,4.11123 +109278,3.96496 +109304,3.96816 +109330,4.08292 +109356,3.96766 +109382,4.85481 +109408,4.15635 +109434,4.44711 +109460,3.90359 +109486,4.01385 +109512,3.58809 +109538,4.22133 +109564,3.68684 +109590,4.05742 +109616,3.71065 +109642,3.8312 +109668,4.2293 +109694,4.20096 +109720,3.77704 +109746,3.71637 +109772,3.98729 +109798,3.85219 +109824,3.56326 +109850,3.82398 +109876,3.81071 +109902,3.77396 +109928,4.11092 +109954,4.2418 +109980,4.11403 +110006,4.1828 +110032,3.831 +110058,3.71197 +110084,4.08235 +110110,4.03302 +110136,3.91159 +110162,4.08849 +110188,3.99876 +110214,3.91966 +110240,3.60202 +110266,3.89222 +110292,4.0332 +110318,3.95986 +110344,3.91201 +110370,4.09509 +110396,3.97601 +110422,3.83899 +110448,3.8832 +110474,4.37957 +110500,3.7948 +110526,4.0788 +110552,3.70497 +110578,4.0738 +110604,4.97358 +110630,4.2096 +110656,4.02087 +110682,3.84517 +110708,3.70525 +110734,3.77962 +110760,3.76 +110786,3.50688 +110812,3.9597 +110838,4.89259 +110864,4.4531 +110890,3.88824 +110916,4.06738 +110942,3.70575 +110968,3.91659 +110994,3.84606 +111020,4.48842 +111046,4.37471 +111072,3.99878 +111098,4.06896 +111124,4.06283 +111150,4.20972 +111176,3.75615 +111202,3.80498 +111228,4.03602 +111254,4.02563 +111280,4.63058 +111306,5.02478 +111332,4.61686 +111358,4.4548 +111384,4.43888 +111410,4.32013 +111436,4.29351 +111462,4.23188 +111488,3.90166 +111514,3.9804 +111540,3.66105 +111566,3.93979 +111592,4.09342 +111618,3.94539 +111644,3.61832 +111670,4.27032 +111696,4.33054 +111722,3.80176 +111748,3.66998 +111774,3.9529 +111800,4.09861 +111826,3.62313 +111852,3.53444 +111878,3.7649 +111904,3.70614 +111930,3.70667 +111956,4.25416 +111982,3.93512 +112008,4.13011 +112034,4.46196 +112060,3.78902 +112086,3.80886 +112112,3.95575 +112138,3.5632 +112164,4.09551 +112190,3.97834 +112216,3.72606 +112242,3.88862 +112268,3.6335 +112294,3.64777 +112320,3.89457 +112346,3.89808 +112372,3.897 +112398,4.02637 +112424,3.79129 +112450,3.82328 +112476,4.21074 +112502,3.96049 +112528,3.82426 +112554,3.70297 +112580,3.90382 +112606,3.59523 +112632,3.69648 +112658,3.85695 +112684,3.90295 +112710,3.96284 +112736,3.87022 +112762,4.12615 +112788,4.20727 +112814,3.77088 +112840,3.72858 +112866,4.03944 +112892,3.70375 +112918,3.8072 +112944,3.50639 +112970,3.66782 +112996,4.11521 +113022,3.97166 +113048,3.55751 +113074,3.98232 +113100,3.76229 +113126,4.43404 +113152,3.74765 +113178,4.17753 +113204,3.79672 +113230,4.16796 +113256,3.83487 +113282,3.99571 +113308,4.02162 +113334,3.59278 +113360,3.19785 +113386,3.81531 +113412,4.07848 +113438,4.29321 +113464,3.86982 +113490,3.68894 +113516,3.52533 +113542,3.94341 +113568,3.99736 +113594,3.96037 +113620,4.6614 +113646,4.27735 +113672,3.88785 +113698,3.94783 +113724,3.59749 +113750,4.26815 +113776,3.61911 +113802,3.67446 +113828,3.84973 +113854,4.72302 +113880,4.10587 +113906,3.78882 +113932,4.11769 +113958,3.81762 +113984,4.64076 +114010,3.84733 +114036,3.59475 +114062,3.66868 +114088,3.86547 +114114,4.23464 +114140,3.90004 +114166,4.08826 +114192,3.90208 +114218,3.59262 +114244,3.43452 +114270,4.17188 +114296,3.56295 +114322,3.7753 +114348,4.31022 +114374,4.10659 +114400,4.23723 +114426,3.95082 +114452,4.08755 +114478,4.27217 +114504,4.00943 +114530,3.89048 +114556,3.68535 +114582,3.78286 +114608,3.65725 +114634,3.86049 +114660,4.16031 +114686,4.40615 +114712,3.97754 +114738,3.42005 +114764,3.77224 +114790,3.96827 +114816,4.06679 +114842,3.88859 +114868,4.1429 +114894,4.00185 +114920,4.20882 +114946,3.86195 +114972,3.98894 +114998,3.89466 +115024,4.48016 +115050,3.84357 +115076,4.00824 +115102,4.15991 +115128,4.08552 +115154,3.71005 +115180,4.10887 +115206,4.05973 +115232,4.00463 +115258,4.33791 +115284,3.65319 +115310,4.16178 +115336,3.69027 +115362,4.2212 +115388,4.01486 +115414,4.20916 +115440,3.96264 +115466,3.76907 +115492,4.02274 +115518,4.37181 +115544,3.87402 +115570,3.60575 +115596,3.92511 +115622,3.61782 +115648,3.71524 +115674,3.51361 +115700,3.62089 +115726,3.68341 +115752,4.51061 +115778,3.65901 +115804,4.08824 +115830,3.81436 +115856,4.21183 +115882,4.06879 +115908,4.17147 +115934,4.05552 +115960,3.611 +115986,3.86535 +116012,3.50849 +116038,3.58025 +116064,3.61765 +116090,3.94243 +116116,4.09681 +116142,4.08499 +116168,4.36568 +116194,4.12716 +116220,3.60608 +116246,4.02046 +116272,4.07451 +116298,3.78155 +116324,3.90131 +116350,3.62001 +116376,4.13933 +116402,4.13544 +116428,4.10287 +116454,3.97005 +116480,4.14881 +116506,4.01419 +116532,3.76463 +116558,4.2276 +116584,4.18198 +116610,3.86476 +116636,3.94664 +116662,3.54083 +116688,3.85871 +116714,4.11047 +116740,4.14285 +116766,3.87205 +116792,3.56513 +116818,3.77259 +116844,4.18593 +116870,3.53056 +116896,4.09009 +116922,3.78923 +116948,4.07187 +116974,3.95981 +117000,4.149 +117026,4.36012 +117052,3.90597 +117078,3.76359 +117104,3.33424 +117130,4.071 +117156,4.07821 +117182,3.90071 +117208,3.39472 +117234,3.94379 +117260,3.86539 +117286,3.91565 +117312,3.74124 +117338,3.89603 +117364,3.99212 +117390,3.78856 +117416,3.98347 +117442,4.06202 +117468,4.23102 +117494,3.49091 +117520,3.96646 +117546,3.72915 +117572,4.05824 +117598,4.00584 +117624,3.93653 +117650,3.80796 +117676,4.29581 +117702,3.83939 +117728,4.19525 +117754,4.27238 +117780,3.97281 +117806,4.56516 +117832,3.9189 +117858,4.01857 +117884,3.76189 +117910,3.90737 +117936,3.90287 +117962,3.86911 +117988,3.77878 +118014,3.92642 +118040,3.47516 +118066,3.83266 +118092,4.07145 +118118,3.76719 +118144,3.68273 +118170,3.97478 +118196,3.83783 +118222,4.01474 +118248,3.79923 +118274,3.65823 +118300,4.17734 +118326,3.7314 +118352,4.2451 +118378,4.12352 +118404,4.0614 +118430,4.30534 +118456,3.98595 +118482,3.86971 +118508,4.13057 +118534,4.22361 +118560,3.6266 +118586,4.31114 +118612,4.3135 +118638,3.7721 +118664,3.98636 +118690,4.01681 +118716,4.45468 +118742,3.85752 +118768,3.98989 +118794,4.32686 +118820,3.66176 +118846,3.99221 +118872,3.64187 +118898,3.74854 +118924,3.6474 +118950,3.82566 +118976,4.68123 +119002,4.39118 +119028,3.58498 +119054,4.03342 +119080,3.84697 +119106,3.78898 +119132,4.09538 +119158,3.65322 +119184,3.96491 +119210,4.07484 +119236,4.18204 +119262,3.942 +119288,3.47401 +119314,4.19911 +119340,4.21215 +119366,4.02889 +119392,3.74443 +119418,4.03802 +119444,3.93542 +119470,3.86148 +119496,4.07829 +119522,3.54606 +119548,3.57895 +119574,3.36726 +119600,3.93362 +119626,4.08087 +119652,4.84171 +119678,4.45453 +119704,3.78398 +119730,4.32974 +119756,4.18036 +119782,4.12268 +119808,3.91941 +119834,4.11748 +119860,4.06063 +119886,3.96673 +119912,4.09644 +119938,3.95809 +119964,4.31241 +119990,3.97905 +120016,4.14258 +120042,4.22305 +120068,4.44071 +120094,3.68364 +120120,3.96735 +120146,4.44584 +120172,4.15833 +120198,4.16926 +120224,3.79586 +120250,3.83646 +120276,3.76792 +120302,4.09043 +120328,4.28764 +120354,3.80393 +120380,3.9531 +120406,3.91117 +120432,3.50052 +120458,3.87129 +120484,3.73531 +120510,4.03794 +120536,3.65916 +120562,4.02096 +120588,4.12433 +120614,4.31087 +120640,3.87727 +120666,4.37256 +120692,4.35135 +120718,4.34874 +120744,4.16698 +120770,4.28015 +120796,4.17039 +120822,3.86931 +120848,3.60221 +120874,3.19394 +120900,4.14639 +120926,4.40845 +120952,3.81836 +120978,3.87622 +121004,3.54499 +121030,4.36434 +121056,3.69159 +121082,4.09711 +121108,4.37675 +121134,4.12239 +121160,3.96034 +121186,3.81386 +121212,4.20836 +121238,4.09282 +121264,4.50721 +121290,4.02678 +121316,4.28364 +121342,3.93302 +121368,4.44429 +121394,4.35121 +121420,4.93709 +121446,4.36005 +121472,3.73552 +121498,3.3205 +121524,4.4375 +121550,3.55138 +121576,4.05622 +121602,3.78291 +121628,4.06007 +121654,4.16602 +121680,4.11922 +121706,3.64908 +121732,4.01324 +121758,4.19246 +121784,3.48363 +121810,3.92363 +121836,3.99109 +121862,3.81541 +121888,4.23607 +121914,4.34798 +121940,3.69065 +121966,3.76018 +121992,3.91738 +122018,3.98881 +122044,3.73541 +122070,3.73869 +122096,3.61955 +122122,4.31235 +122148,3.91618 +122174,3.92641 +122200,3.84574 +122226,4.23344 +122252,3.91654 +122278,3.6628 +122304,3.75025 +122330,4.03428 +122356,4.07348 +122382,4.17196 +122408,3.98564 +122434,4.01469 +122460,4.03969 +122486,4.02992 +122512,3.95225 +122538,3.76153 +122564,3.89935 +122590,3.92529 +122616,3.67463 +122642,3.64269 +122668,3.66374 +122694,3.91918 +122720,3.86251 +122746,4.87999 +122772,3.88656 +122798,3.97195 +122824,3.97489 +122850,4.02863 +122876,4.45112 +122902,4.34954 +122928,4.04604 +122954,3.85718 +122980,3.82352 +123006,3.88407 +123032,3.53939 +123058,4.16182 +123084,4.22776 +123110,4.16742 +123136,4.04692 +123162,3.73908 +123188,3.67396 +123214,3.56901 +123240,3.98866 +123266,4.28626 +123292,4.01515 +123318,4.08524 +123344,4.2565 +123370,3.60558 +123396,3.83906 +123422,3.86158 +123448,3.82013 +123474,4.23812 +123500,3.8657 +123526,4.22394 +123552,4.3063 +123578,4.40262 +123604,4.08392 +123630,5.23037 +123656,4.72998 +123682,4.55822 +123708,4.86144 +123734,4.40793 +123760,4.23734 +123786,4.36378 +123812,4.14551 +123838,4.35215 +123864,4.24599 +123890,4.37448 +123916,4.07764 +123942,3.81259 +123968,4.08158 +123994,3.9602 +124020,3.66767 +124046,3.99665 +124072,4.28806 +124098,3.92504 +124124,4.02615 +124150,4.17909 +124176,4.23332 +124202,3.84546 +124228,4.66998 +124254,3.9142 +124280,4.53593 +124306,4.16021 +124332,3.73962 +124358,4.20053 +124384,4.22826 +124410,4.23331 +124436,3.86825 +124462,3.83964 +124488,4.02962 +124514,4.00645 +124540,4.30663 +124566,4.20174 +124592,4.06155 +124618,3.96683 +124644,4.142 +124670,3.40881 +124696,4.11484 +124722,3.79131 +124748,4.04107 +124774,4.36427 +124800,3.96128 +124826,4.09648 +124852,3.80106 +124878,4.1083 +124904,4.04743 +124930,4.12633 +124956,3.80078 +124982,3.87095 +125008,3.7206 +125034,3.85434 +125060,3.76378 +125086,3.9647 +125112,3.30288 +125138,3.79983 +125164,4.28976 +125190,4.05559 +125216,4.16206 +125242,3.77485 +125268,3.68704 +125294,3.97794 +125320,4.0265 +125346,4.0186 +125372,4.27907 +125398,3.9959 +125424,4.21897 +125450,3.85239 +125476,4.11974 +125502,3.6421 +125528,3.6506 +125554,4.15612 +125580,4.09949 +125606,3.99388 +125632,3.73481 +125658,3.78516 +125684,4.25102 +125710,3.96222 +125736,3.95769 +125762,3.88281 +125788,3.23894 +125814,4.21037 +125840,4.42101 +125866,3.53942 +125892,3.96162 +125918,3.63366 +125944,3.76758 +125970,3.81368 +125996,3.7783 +126022,4.10724 +126048,3.9995 +126074,3.98678 +126100,3.99723 +126126,3.65899 +126152,3.91219 +126178,4.11939 +126204,3.70404 +126230,3.22097 +126256,3.93013 +126282,4.23934 +126308,3.78487 +126334,4.075 +126360,3.88042 +126386,4.34371 +126412,3.50257 +126438,4.38189 +126464,4.10713 +126490,4.0152 +126516,3.85913 +126542,4.09786 +126568,4.34973 +126594,3.73026 +126620,3.87613 +126646,3.75437 +126672,3.61248 +126698,3.53521 +126724,3.70694 +126750,3.84843 +126776,3.81322 +126802,3.83488 +126828,3.76029 +126854,4.26644 +126880,3.59953 +126906,3.56691 +126932,3.58058 +126958,3.73877 +126984,4.30083 +127010,3.82038 +127036,3.45681 +127062,3.87376 +127088,4.60904 +127114,3.60824 +127140,4.21637 +127166,3.89713 +127192,3.71723 +127218,3.74453 +127244,3.47058 +127270,3.94419 +127296,3.94667 +127322,3.6222 +127348,4.07851 +127374,4.47006 +127400,4.01306 +127426,3.40179 +127452,4.2573 +127478,3.98349 +127504,4.2706 +127530,3.68534 +127556,3.67517 +127582,3.55043 +127608,3.74592 +127634,3.74897 +127660,3.96857 +127686,4.34532 +127712,3.66214 +127738,3.97233 +127764,3.73454 +127790,3.93102 +127816,4.14213 +127842,4.34438 +127868,4.1619 +127894,3.9847 +127920,3.68174 +127946,4.02148 +127972,3.71276 +127998,4.07253 +128024,4.20059 +128050,3.64348 +128076,4.08277 +128102,3.95284 +128128,3.76875 +128154,3.69414 +128180,3.42493 +128206,3.51337 +128232,3.81867 +128258,3.80596 +128284,4.18119 +128310,3.92438 +128336,3.68613 +128362,3.57047 +128388,3.69122 +128414,3.72532 +128440,3.91137 +128466,4.16263 +128492,3.7732 +128518,4.25554 +128544,3.56343 +128570,3.63876 +128596,3.86261 +128622,3.60464 +128648,5.31228 +128674,4.64838 +128700,4.28984 +128726,4.31619 +128752,4.08013 +128778,4.18418 +128804,4.07644 +128830,4.03871 +128856,4.45781 +128882,4.12594 +128908,4.4473 +128934,3.98517 +128960,4.0115 +128986,3.84602 +129012,4.68329 +129038,4.25786 +129064,4.87573 +129090,4.71145 +129116,4.33471 +129142,4.16077 +129168,3.7026 +129194,4.14423 +129220,4.34017 +129246,3.92987 +129272,4.1671 +129298,3.92976 +129324,4.0706 +129350,4.14168 +129376,3.98122 +129402,3.60489 +129428,4.11187 +129454,3.7625 +129480,3.97579 +129506,3.91854 +129532,4.12994 +129558,4.10428 +129584,3.90973 +129610,3.84673 +129636,3.84408 +129662,3.98517 +129688,4.05972 +129714,4.3356 +129740,4.18967 +129766,3.97714 +129792,3.86397 +129818,4.28769 +129844,4.27186 +129870,3.87417 +129896,4.35747 +129922,3.83481 +129948,4.24275 +129974,4.06638 +130000,3.68257 +130026,4.17432 +130052,3.73859 +130078,3.95186 +130104,3.6913 +130130,3.99764 +130156,4.43882 +130182,3.79671 +130208,3.30829 +130234,4.04847 +130260,3.95356 +130286,3.63727 +130312,4.29804 +130338,3.91971 +130364,4.16673 +130390,3.70529 +130416,3.94925 +130442,3.86053 +130468,4.00139 +130494,3.73015 +130520,4.42859 +130546,4.17968 +130572,4.13225 +130598,4.10275 +130624,3.69121 +130650,3.53298 +130676,3.78802 +130702,4.17089 +130728,3.94869 +130754,3.5211 +130780,4.46125 +130806,3.88479 +130832,3.56023 +130858,3.99805 +130884,4.14952 +130910,3.90521 +130936,3.92057 +130962,3.81314 +130988,3.86995 +131014,3.93529 +131040,4.73952 +131066,3.80653 +131092,3.91459 +131118,4.0817 +131144,3.73283 +131170,4.08468 +131196,4.13326 +131222,3.50724 +131248,4.04684 +131274,3.59122 +131300,3.66648 +131326,4.0065 +131352,3.83627 +131378,3.93755 +131404,4.04143 +131430,3.78046 +131456,3.75728 +131482,4.11525 +131508,4.22559 +131534,3.8307 +131560,3.88785 +131586,4.08547 +131612,3.85765 +131638,3.83228 +131664,3.42371 +131690,3.72573 +131716,4.41578 +131742,4.21555 +131768,3.66977 +131794,3.87912 +131820,3.90354 +131846,4.08152 +131872,4.0595 +131898,3.65696 +131924,3.67854 +131950,4.12031 +131976,3.60925 +132002,4.28919 +132028,4.16572 +132054,4.0648 +132080,3.99908 +132106,3.56445 +132132,4.0349 +132158,3.87436 +132184,3.92719 +132210,3.85636 +132236,3.82473 +132262,4.09259 +132288,4.54382 +132314,4.48224 +132340,3.99917 +132366,4.0684 +132392,4.00869 +132418,4.22676 +132444,3.81515 +132470,3.61789 +132496,3.94188 +132522,3.81421 +132548,3.87476 +132574,4.17668 +132600,3.85211 +132626,3.78671 +132652,3.98157 +132678,4.08057 +132704,3.63553 +132730,4.10166 +132756,3.67608 +132782,4.05205 +132808,3.70071 +132834,3.6761 +132860,4.12463 +132886,4.09146 +132912,3.77309 +132938,3.80168 +132964,3.83652 +132990,4.02233 +133016,3.75771 +133042,3.48027 +133068,3.93687 +133094,4.0773 +133120,3.9437 +133146,3.48596 +133172,3.78305 +133198,3.80535 +133224,3.78427 +133250,4.0983 +133276,4.25503 +133302,4.70022 +133328,4.35671 +133354,3.70112 +133380,4.32771 +133406,4.09909 +133432,3.95319 +133458,4.11163 +133484,4.86039 +133510,4.28163 +133536,4.00267 +133562,3.57206 +133588,3.78984 +133614,3.79465 +133640,3.68078 +133666,3.85365 +133692,3.97427 +133718,3.69232 +133744,3.77063 +133770,3.85752 +133796,3.24569 +133822,3.90472 +133848,3.96807 +133874,4.185 +133900,3.81835 +133926,4.29141 +133952,3.8886 +133978,3.89943 +134004,3.97663 +134030,3.98569 +134056,3.79902 +134082,3.75749 +134108,4.0991 +134134,3.819 +134160,3.89536 +134186,3.73735 +134212,4.02366 +134238,4.10387 +134264,3.9958 +134290,4.15363 +134316,3.75884 +134342,3.66836 +134368,3.68664 +134394,3.44949 +134420,4.21879 +134446,4.19817 +134472,3.93973 +134498,3.7238 +134524,3.83364 +134550,4.05931 +134576,4.17704 +134602,4.01823 +134628,3.85539 +134654,3.53477 +134680,4.00291 +134706,3.88394 +134732,4.2465 +134758,3.81304 +134784,4.20295 +134810,3.96615 +134836,3.47971 +134862,3.60213 +134888,3.35149 +134914,4.04039 +134940,3.77417 +134966,3.84672 +134992,5.18648 +135018,4.30329 +135044,4.50287 +135070,4.00242 +135096,3.85152 +135122,3.56779 +135148,3.77439 +135174,3.75404 +135200,4.33131 +135226,3.92579 +135252,3.80946 +135278,3.70079 +135304,4.18817 +135330,3.81266 +135356,4.20467 +135382,3.93149 +135408,3.91917 +135434,3.48232 +135460,3.9508 +135486,4.13391 +135512,3.8292 +135538,3.38335 +135564,3.86934 +135590,4.31366 +135616,4.12995 +135642,3.90847 +135668,3.79968 +135694,3.85421 +135720,4.02328 +135746,4.17277 +135772,4.051 +135798,4.43351 +135824,3.81442 +135850,3.87849 +135876,3.79635 +135902,3.9348 +135928,4.06934 +135954,3.95114 +135980,3.64559 +136006,3.81501 +136032,4.13905 +136058,3.76668 +136084,3.86558 +136110,3.98378 +136136,3.72173 +136162,3.96551 +136188,3.73878 +136214,3.5712 +136240,3.60227 +136266,3.58431 +136292,3.85343 +136318,3.50795 +136344,4.29832 +136370,3.7525 +136396,3.99912 +136422,3.699 +136448,3.95835 +136474,3.71979 +136500,4.05487 +136526,3.65165 +136552,4.37408 +136578,4.37528 +136604,3.70985 +136630,4.46201 +136656,4.02285 +136682,4.3274 +136708,3.78114 +136734,3.92028 +136760,4.06916 +136786,3.84399 +136812,3.9856 +136838,3.71508 +136864,3.44509 +136890,3.55299 +136916,3.69716 +136942,3.75037 +136968,4.37057 +136994,4.28385 +137020,3.39697 +137046,3.98312 +137072,3.85055 +137098,3.82411 +137124,4.20672 +137150,4.12994 +137176,3.7518 +137202,4.10257 +137228,3.79526 +137254,4.30597 +137280,3.77343 +137306,3.99182 +137332,3.78863 +137358,4.24988 +137384,4.02866 +137410,3.44994 +137436,3.80412 +137462,4.29843 +137488,4.22236 +137514,3.41826 +137540,3.60073 +137566,3.84492 +137592,4.01361 +137618,3.9529 +137644,4.16772 +137670,4.05145 +137696,4.10733 +137722,3.71967 +137748,3.88987 +137774,3.19184 +137800,3.97961 +137826,3.64943 +137852,4.48365 +137878,3.28361 +137904,3.99342 +137930,3.59551 +137956,3.47755 +137982,3.80515 +138008,4.01136 +138034,3.65172 +138060,3.91786 +138086,3.82044 +138112,3.65648 +138138,3.6282 +138164,3.73858 +138190,4.36807 +138216,3.85291 +138242,4.03754 +138268,3.63269 +138294,3.8102 +138320,3.82675 +138346,3.72102 +138372,3.53907 +138398,3.68889 +138424,4.05616 +138450,4.09273 +138476,3.41224 +138502,3.63588 +138528,3.58191 +138554,3.73204 +138580,3.65783 +138606,4.25411 +138632,3.56357 +138658,3.70496 +138684,4.25969 +138710,3.65184 +138736,3.77062 +138762,3.37602 +138788,3.71258 +138814,4.01501 +138840,3.90849 +138866,3.71784 +138892,3.93642 +138918,3.80696 +138944,3.93702 +138970,3.95249 +138996,3.93016 +139022,4.04792 +139048,3.89977 +139074,3.76531 +139100,3.71391 +139126,3.46397 +139152,4.77487 +139178,3.82104 +139204,3.72942 +139230,3.65255 +139256,3.80617 +139282,3.64134 +139308,3.91166 +139334,3.60502 +139360,4.02135 +139386,3.83165 +139412,3.77829 +139438,3.69133 +139464,3.41061 +139490,3.61815 +139516,3.83452 +139542,3.89337 +139568,4.18964 +139594,4.3019 +139620,3.51685 +139646,3.72415 +139672,3.46057 +139698,3.55089 +139724,4.27082 +139750,3.76028 +139776,3.62617 +139802,3.98599 +139828,3.70411 +139854,3.54748 +139880,3.86306 +139906,3.74422 +139932,4.82237 +139958,4.0797 +139984,3.59824 +140010,3.92085 +140036,3.92176 +140062,4.06714 +140088,4.01103 +140114,4.14828 +140140,3.72669 +140166,3.5193 +140192,3.68715 +140218,3.79596 +140244,3.43882 +140270,3.33479 +140296,3.74085 +140322,3.52343 +140348,3.90955 +140374,3.86391 +140400,3.85778 +140426,4.2675 +140452,4.00339 +140478,4.14568 +140504,3.99131 +140530,3.47018 +140556,3.8303 +140582,4.03553 +140608,3.99862 +140634,3.9358 +140660,3.61141 +140686,3.78758 +140712,3.60659 +140738,4.08401 +140764,3.43884 +140790,4.02823 +140816,3.9715 +140842,3.59688 +140868,4.02135 +140894,3.83739 +140920,3.94685 +140946,3.54319 +140972,3.50511 +140998,3.50448 +141024,3.74121 +141050,3.35461 +141076,3.92252 +141102,3.88836 +141128,3.8016 +141154,3.67635 +141180,3.73767 +141206,4.00107 +141232,4.0867 +141258,3.76107 +141284,3.90177 +141310,3.3674 +141336,3.85592 +141362,3.93909 +141388,3.52158 +141414,3.65853 +141440,3.95331 +141466,3.97454 +141492,3.37763 +141518,3.64038 +141544,4.04057 +141570,3.72627 +141596,3.79522 +141622,4.12716 +141648,3.47489 +141674,3.81999 +141700,3.85264 +141726,3.37824 +141752,3.61822 +141778,3.82353 +141804,3.85362 +141830,3.5375 +141856,3.7291 +141882,4.04422 +141908,4.20639 +141934,3.56372 +141960,3.93525 +141986,4.09532 +142012,3.90838 +142038,3.71828 +142064,3.94083 +142090,3.78762 +142116,3.54056 +142142,4.05216 +142168,3.95946 +142194,4.21731 +142220,3.46976 +142246,3.71543 +142272,3.83219 +142298,3.53591 +142324,3.78072 +142350,3.66306 +142376,4.48489 +142402,3.72076 +142428,4.02728 +142454,3.08979 +142480,4.15567 +142506,3.74059 +142532,3.76602 +142558,3.53784 +142584,3.91736 +142610,3.52653 +142636,3.84508 +142662,4.08776 +142688,3.86813 +142714,3.67756 +142740,3.46894 +142766,4.11596 +142792,3.83196 +142818,3.84812 +142844,3.49264 +142870,3.49659 +142896,3.94585 +142922,3.94616 +142948,3.85856 +142974,3.39698 +143000,4.02926 +143026,3.64044 +143052,3.67644 +143078,3.69923 +143104,4.23111 +143130,4.35503 +143156,3.70918 +143182,3.85798 +143208,3.7802 +143234,3.89578 +143260,3.63145 +143286,3.71411 +143312,4.07867 +143338,3.88534 +143364,3.54057 +143390,4.04516 +143416,3.8092 +143442,3.68399 +143468,3.71871 +143494,4.09643 +143520,3.63891 +143546,4.04919 +143572,3.83646 +143598,3.81762 +143624,3.95726 +143650,3.99581 +143676,3.61143 +143702,3.9111 +143728,3.3232 +143754,4.11831 +143780,3.8201 +143806,3.67172 +143832,3.7586 +143858,4.22807 +143884,3.37884 +143910,3.32839 +143936,4.22095 +143962,3.8688 +143988,3.59726 +144014,3.79851 +144040,3.50567 +144066,3.85302 +144092,3.79666 +144118,4.58757 +144144,3.93163 +144170,3.59441 +144196,4.13943 +144222,4.06384 +144248,3.6794 +144274,3.6987 +144300,3.53913 +144326,3.67321 +144352,3.66671 +144378,4.22236 +144404,3.72328 +144430,3.8256 +144456,3.51708 +144482,3.67206 +144508,3.68867 +144534,3.55514 +144560,3.90977 +144586,3.94065 +144612,3.81698 +144638,3.61477 +144664,3.53909 +144690,4.16015 +144716,3.79608 +144742,3.52081 +144768,3.78448 +144794,3.73965 +144820,3.44329 +144846,3.95572 +144872,4.07468 +144898,3.88308 +144924,3.58127 +144950,3.41852 +144976,3.77682 +145002,3.43296 +145028,3.6654 +145054,3.73601 +145080,4.02078 +145106,4.29975 +145132,3.68322 +145158,3.63872 +145184,3.67662 +145210,4.20427 +145236,3.81912 +145262,3.74148 +145288,3.54818 +145314,3.54939 +145340,3.50747 +145366,3.67127 +145392,3.88828 +145418,3.93307 +145444,3.74262 +145470,3.6338 +145496,3.82599 +145522,3.91871 +145548,3.96117 +145574,3.04309 +145600,4.07415 +145626,3.87022 +145652,4.08469 +145678,3.34646 +145704,4.26945 +145730,3.68451 +145756,3.97741 +145782,3.89478 +145808,3.75935 +145834,3.75483 +145860,3.87897 +145886,3.76223 +145912,4.06544 +145938,3.90501 +145964,4.15327 +145990,4.06193 +146016,3.56776 +146042,4.30459 +146068,3.47799 +146094,3.79354 +146120,3.61467 +146146,3.29346 +146172,4.38216 +146198,3.68042 +146224,4.07881 +146250,3.70395 +146276,3.6934 +146302,3.98914 +146328,3.6196 +146354,3.73367 +146380,3.71945 +146406,3.79189 +146432,3.77303 +146458,3.78679 +146484,3.78785 +146510,3.78165 +146536,3.26808 +146562,3.70186 +146588,4.03265 +146614,3.41357 +146640,4.00466 +146666,3.6716 +146692,3.67226 +146718,3.82065 +146744,3.83056 +146770,3.51619 +146796,3.67308 +146822,4.04346 +146848,3.96824 +146874,3.77853 +146900,3.89057 +146926,3.17963 +146952,3.65823 +146978,3.82756 +147004,3.86029 +147030,4.19712 +147056,3.27652 +147082,3.60193 +147108,3.63497 +147134,3.58024 +147160,3.79197 +147186,3.78424 +147212,3.59589 +147238,3.42735 +147264,4.0606 +147290,3.66538 +147316,3.55382 +147342,3.96135 +147368,3.78942 +147394,3.62094 +147420,3.63067 +147446,3.33194 +147472,3.44846 +147498,3.79128 +147524,3.86446 +147550,4.18922 +147576,4.13588 +147602,3.63457 +147628,3.69897 +147654,3.5171 +147680,3.52169 +147706,4.26507 +147732,3.3342 +147758,4.01592 +147784,3.55442 +147810,3.58156 +147836,4.00102 +147862,3.81029 +147888,3.64099 +147914,3.77493 +147940,3.86877 +147966,3.34753 +147992,4.01405 +148018,4.41256 +148044,3.9293 +148070,4.55247 +148096,3.9016 +148122,4.26769 +148148,4.1561 +148174,3.60672 +148200,3.74984 +148226,3.59945 +148252,3.86832 +148278,3.71601 +148304,3.63637 +148330,3.73634 +148356,3.57418 +148382,3.26333 +148408,3.53518 +148434,3.4784 +148460,4.22932 +148486,4.03716 +148512,3.36025 +148538,3.59722 +148564,4.20694 +148590,4.18269 +148616,3.61854 +148642,3.60564 +148668,4.38772 +148694,3.67337 +148720,3.65052 +148746,3.56673 +148772,3.87069 +148798,3.65197 +148824,3.96166 +148850,3.32094 +148876,3.80549 +148902,3.82913 +148928,3.55215 +148954,3.55339 +148980,3.49612 +149006,3.70879 +149032,3.7611 +149058,3.67443 +149084,3.78779 +149110,3.83872 +149136,3.77089 +149162,4.0463 +149188,3.55001 +149214,3.74829 +149240,3.37927 +149266,3.90847 +149292,4.22952 +149318,3.54502 +149344,3.71816 +149370,3.40155 +149396,4.08247 +149422,3.68608 +149448,3.99868 +149474,4.00047 +149500,3.68124 +149526,4.00216 +149552,3.50194 +149578,3.6816 +149604,3.78099 +149630,3.31116 +149656,3.4018 +149682,3.56684 +149708,3.90846 +149734,3.88783 +149760,3.29711 +149786,3.91621 +149812,3.37039 +149838,3.47084 +149864,3.71957 +149890,3.551 +149916,3.92262 +149942,3.64964 +149968,3.75257 +149994,3.90568 +150020,3.99605 +150046,3.5552 +150072,3.66822 +150098,4.26676 +150124,3.94246 +150150,3.54768 +150176,3.9796 +150202,3.75846 +150228,3.56065 +150254,3.79546 +150280,3.34038 +150306,3.74677 +150332,3.72673 +150358,3.56699 +150384,4.00622 +150410,3.73287 +150436,3.9363 +150462,3.48161 +150488,3.76727 +150514,3.35569 +150540,3.63764 +150566,3.77719 +150592,4.07885 +150618,3.45513 +150644,3.8196 +150670,3.99898 +150696,3.72694 +150722,3.27881 +150748,3.2327 +150774,3.85226 +150800,3.36201 +150826,3.95996 +150852,3.41594 +150878,3.58187 +150904,3.90786 +150930,4.5002 +150956,4.04696 +150982,3.61301 +151008,3.62063 +151034,3.8119 +151060,4.38877 +151086,3.2949 +151112,3.69168 +151138,3.59288 +151164,3.78953 +151190,3.59291 +151216,3.35379 +151242,3.80702 +151268,3.55187 +151294,3.2977 +151320,3.12637 +151346,3.88257 +151372,3.82794 +151398,3.36367 +151424,3.52767 +151450,4.09306 +151476,3.54142 +151502,3.65343 +151528,3.30709 +151554,3.76174 +151580,3.26124 +151606,3.9059 +151632,4.02632 +151658,3.73856 +151684,3.7808 +151710,3.34339 +151736,3.58031 +151762,3.12874 +151788,4.04771 +151814,3.8437 +151840,3.80356 +151866,3.58733 +151892,3.49227 +151918,3.48817 +151944,3.80965 +151970,3.71146 +151996,3.53084 +152022,4.00847 +152048,3.20748 +152074,4.18235 +152100,3.87484 +152126,3.65449 +152152,3.61567 +152178,3.70877 +152204,3.95523 +152230,3.72649 +152256,3.9449 +152282,4.19972 +152308,3.66982 +152334,3.90303 +152360,3.30254 +152386,3.95544 +152412,4.03552 +152438,3.2336 +152464,3.643 +152490,3.49339 +152516,3.58918 +152542,3.60602 +152568,4.10998 +152594,3.72441 +152620,3.88679 +152646,3.38133 +152672,4.4397 +152698,3.8449 +152724,3.79054 +152750,3.85801 +152776,3.53075 +152802,3.96284 +152828,3.48597 +152854,3.76261 +152880,3.54348 +152906,3.64465 +152932,4.26838 +152958,3.66558 +152984,3.46504 +153010,3.60672 +153036,3.41381 +153062,3.82349 +153088,3.51199 +153114,3.76694 +153140,3.61814 +153166,3.98309 +153192,3.75429 +153218,3.49705 +153244,3.29097 +153270,3.72662 +153296,3.89695 +153322,3.4968 +153348,3.92199 +153374,4.60115 +153400,3.73064 +153426,3.81511 +153452,4.3421 +153478,4.07507 +153504,3.62077 +153530,3.51859 +153556,3.63595 +153582,4.24084 +153608,3.71641 +153634,4.1631 +153660,4.04413 +153686,3.98525 +153712,3.62378 +153738,4.2281 +153764,3.53471 +153790,3.84879 +153816,3.74587 +153842,3.58059 +153868,3.93458 +153894,3.26072 +153920,3.66169 +153946,3.56374 +153972,3.50928 +153998,3.80987 +154024,3.77395 +154050,4.02611 +154076,3.99929 +154102,3.67412 +154128,3.82032 +154154,3.55465 +154180,3.71164 +154206,3.53544 +154232,3.72827 +154258,3.39723 +154284,3.90331 +154310,3.47793 +154336,4.52304 +154362,4.84029 +154388,3.96434 +154414,3.90912 +154440,4.07226 +154466,4.04245 +154492,3.38836 +154518,4.19531 +154544,3.99154 +154570,4.26492 +154596,4.19709 +154622,3.90796 +154648,3.59741 +154674,3.71 +154700,4.10068 +154726,3.85055 +154752,3.91913 +154778,4.09713 +154804,4.11384 +154830,4.23849 +154856,4.11473 +154882,3.80465 +154908,3.50165 +154934,3.27531 +154960,3.83161 +154986,4.03999 +155012,3.76254 +155038,3.83732 +155064,4.04349 +155090,3.76364 +155116,3.73077 +155142,4.4957 +155168,3.98753 +155194,3.86571 +155220,3.85629 +155246,3.48186 +155272,3.3953 +155298,3.64606 +155324,3.76236 +155350,3.41089 +155376,3.58381 +155402,4.11222 +155428,4.0229 +155454,3.33789 +155480,4.11142 +155506,3.8994 +155532,3.90392 +155558,3.66326 +155584,4.08265 +155610,3.86448 +155636,3.65108 +155662,3.53288 +155688,3.69227 +155714,3.91964 +155740,4.01627 +155766,3.67218 +155792,3.93189 +155818,3.77742 +155844,3.44497 +155870,3.47497 +155896,4.25983 +155922,3.82791 +155948,3.85536 +155974,4.18518 +156000,4.00844 +156026,3.72251 +156052,3.75737 +156078,3.62043 +156104,3.58832 +156130,3.7378 +156156,3.9255 +156182,3.77957 +156208,3.54156 +156234,4.22326 +156260,3.48181 +156286,3.7288 +156312,3.67173 +156338,3.85206 +156364,3.39596 +156390,3.7204 +156416,3.27687 +156442,3.89619 +156468,3.74484 +156494,3.89988 +156520,3.45716 +156546,3.61147 +156572,3.74779 +156598,3.40724 +156624,3.63648 +156650,3.39714 +156676,3.90641 +156702,3.77845 +156728,3.69367 +156754,3.57866 +156780,3.66054 +156806,3.53247 +156832,3.05953 +156858,4.10324 +156884,3.84533 +156910,3.71273 +156936,3.41808 +156962,3.46738 +156988,3.96178 +157014,3.5491 +157040,3.77937 +157066,3.93333 +157092,4.02544 +157118,4.03676 +157144,3.71561 +157170,3.38521 +157196,3.48737 +157222,3.94056 +157248,3.27367 +157274,3.97756 +157300,3.84359 +157326,3.63662 +157352,4.13366 +157378,3.63248 +157404,3.47437 +157430,3.39481 +157456,3.77551 +157482,3.50984 +157508,4.00565 +157534,3.44442 +157560,3.4468 +157586,3.97487 +157612,3.39236 +157638,3.73294 +157664,3.6141 +157690,3.61592 +157716,3.60936 +157742,3.61712 +157768,4.10619 +157794,3.31937 +157820,3.84559 +157846,3.52289 +157872,3.58824 +157898,3.56601 +157924,3.92791 +157950,3.64487 +157976,3.88603 +158002,3.80694 +158028,3.4758 +158054,3.68307 +158080,3.55867 +158106,3.70076 +158132,4.17064 +158158,3.75652 +158184,3.38377 +158210,3.40674 +158236,3.71375 +158262,3.29232 +158288,4.18088 +158314,3.60457 +158340,4.12474 +158366,4.20342 +158392,3.68828 +158418,3.69768 +158444,4.03391 +158470,3.78918 +158496,3.72847 +158522,3.51951 +158548,3.78846 +158574,3.52037 +158600,3.82496 +158626,3.52167 +158652,3.69238 +158678,3.7982 +158704,3.61299 +158730,3.83709 +158756,3.23393 +158782,3.31988 +158808,3.66908 +158834,3.54156 +158860,3.60005 +158886,3.45501 +158912,3.90048 +158938,3.40011 +158964,4.1492 +158990,3.76087 +159016,3.57308 +159042,3.03808 +159068,3.57478 +159094,3.17332 +159120,3.31113 +159146,3.70902 +159172,3.26232 +159198,3.41679 +159224,3.03427 +159250,3.0531 +159276,4.34084 +159302,3.72423 +159328,3.36328 +159354,3.78344 +159380,3.27062 +159406,4.25566 +159432,3.85092 +159458,3.66132 +159484,3.64821 +159510,3.7861 +159536,3.40296 +159562,3.58589 +159588,3.85236 +159614,3.33437 +159640,3.73712 +159666,4.11141 +159692,3.50194 +159718,4.23085 +159744,3.60276 +159770,3.42916 +159796,3.79899 +159822,3.27239 +159848,3.72256 +159874,3.49568 +159900,3.59733 +159926,3.78247 +159952,3.39378 +159978,3.80659 +160004,3.34738 +160030,3.74531 +160056,3.85393 +160082,3.7214 +160108,3.98537 +160134,3.6449 +160160,3.67617 +160186,3.71718 +160212,3.37948 +160238,3.48839 +160264,3.70302 +160290,3.61605 +160316,3.68445 +160342,3.81232 +160368,3.40224 +160394,3.46597 +160420,3.85525 +160446,3.1164 +160472,3.67559 +160498,3.08644 +160524,3.53266 +160550,3.59908 +160576,3.86248 +160602,4.1713 +160628,3.43221 +160654,3.46022 +160680,3.48025 +160706,4.20671 +160732,3.24632 +160758,3.5433 +160784,3.92382 +160810,3.82636 +160836,3.60579 +160862,3.67389 +160888,3.70052 +160914,3.42417 +160940,3.80655 +160966,3.58061 +160992,4.08912 +161018,3.77857 +161044,3.62819 +161070,3.42139 +161096,3.75339 +161122,3.11715 +161148,3.43863 +161174,3.35412 +161200,4.07243 +161226,3.53948 +161252,3.56613 +161278,3.64554 +161304,4.01181 +161330,3.7363 +161356,4.3698 +161382,3.39145 +161408,3.82932 +161434,3.72386 +161460,3.06558 +161486,3.58863 +161512,3.43702 +161538,3.10615 +161564,3.38056 +161590,3.4215 +161616,3.74498 +161642,3.53381 +161668,3.68881 +161694,4.38927 +161720,3.66228 +161746,3.72836 +161772,3.61741 +161798,3.58158 +161824,4.16695 +161850,4.10016 +161876,3.58869 +161902,3.51828 +161928,3.79098 +161954,3.9253 +161980,3.49315 +162006,2.95667 +162032,3.41641 +162058,3.24931 +162084,3.92723 +162110,3.74511 +162136,2.88783 +162162,3.42848 +162188,3.99583 +162214,3.37319 +162240,3.33694 +162266,3.4883 +162292,3.67037 +162318,3.45461 +162344,3.45944 +162370,3.74292 +162396,3.68989 +162422,3.55719 +162448,3.82215 +162474,3.57263 +162500,4.12823 +162526,3.33304 +162552,3.76463 +162578,4.07705 +162604,3.67913 +162630,3.99809 +162656,4.33073 +162682,4.22265 +162708,4.12007 +162734,4.44888 +162760,3.83269 +162786,3.65721 +162812,3.82745 +162838,4.30602 +162864,3.78471 +162890,3.48239 +162916,3.4035 +162942,3.09259 +162968,3.26103 +162994,3.91857 +163020,3.58235 +163046,3.70585 +163072,3.83551 +163098,3.38272 +163124,3.94294 +163150,3.55031 +163176,3.39553 +163202,3.79811 +163228,3.66951 +163254,3.46108 +163280,3.71153 +163306,3.14397 +163332,3.70997 +163358,3.10724 +163384,3.85626 +163410,3.52942 +163436,3.10916 +163462,3.44387 +163488,3.60042 +163514,3.87156 +163540,4.25263 +163566,2.90575 +163592,3.67515 +163618,3.73017 +163644,3.59481 +163670,3.14222 +163696,3.64303 +163722,3.65888 +163748,3.69226 +163774,3.37496 +163800,3.54405 +163826,3.85783 +163852,3.67562 +163878,3.43646 +163904,3.59471 +163930,3.61033 +163956,3.89943 +163982,3.57075 +164008,3.63366 +164034,3.06301 +164060,3.22134 +164086,3.86784 +164112,3.84975 +164138,3.65967 +164164,3.03928 +164190,3.51465 +164216,3.68793 +164242,3.44948 +164268,3.07001 +164294,3.63674 +164320,3.62638 +164346,3.53342 +164372,3.63197 +164398,3.95389 +164424,3.90611 +164450,3.295 +164476,3.68054 +164502,3.28332 +164528,3.66067 +164554,3.65144 +164580,3.10471 +164606,3.82232 +164632,3.43202 +164658,3.05275 +164684,3.81609 +164710,3.44562 +164736,3.94121 +164762,3.51896 +164788,4.13447 +164814,3.77823 +164840,3.52706 +164866,3.60162 +164892,3.33166 +164918,3.82984 +164944,3.38981 +164970,3.52793 +164996,3.95298 +165022,3.35352 +165048,3.59712 +165074,3.1107 +165100,3.817 +165126,3.77797 +165152,3.27582 +165178,3.69661 +165204,3.0537 +165230,3.77845 +165256,3.59494 +165282,3.09988 +165308,4.61237 +165334,3.43196 +165360,3.70347 +165386,3.64154 +165412,3.39848 +165438,3.37725 +165464,3.74234 +165490,3.777 +165516,3.87001 +165542,3.70436 +165568,3.3875 +165594,3.81776 +165620,3.49334 +165646,3.43528 +165672,3.49176 +165698,3.62221 +165724,3.89861 +165750,3.80454 +165776,3.51496 +165802,3.34638 +165828,3.81501 +165854,3.50601 +165880,3.89235 +165906,3.52023 +165932,2.89852 +165958,3.59906 +165984,4.08095 +166010,3.30455 +166036,3.47575 +166062,3.58553 +166088,4.07692 +166114,3.67049 +166140,3.59241 +166166,4.13737 +166192,3.41302 +166218,4.08639 +166244,3.63387 +166270,3.3522 +166296,3.94596 +166322,3.68643 +166348,3.63808 +166374,3.71235 +166400,4.46248 +166426,3.21768 +166452,3.27003 +166478,3.90791 +166504,3.92212 +166530,3.71052 +166556,3.63061 +166582,4.40476 +166608,3.11909 +166634,4.10998 +166660,3.82163 +166686,3.90256 +166712,3.95673 +166738,3.53075 +166764,3.50307 +166790,3.66258 +166816,3.38508 +166842,3.77523 +166868,3.56146 +166894,3.58824 +166920,3.54461 +166946,3.50449 +166972,3.16737 +166998,3.70259 +167024,4.07335 +167050,4.29973 +167076,4.15225 +167102,3.53237 +167128,3.74942 +167154,3.05006 +167180,3.30123 +167206,3.48523 +167232,3.86279 +167258,3.955 +167284,3.46273 +167310,3.48382 +167336,4.31079 +167362,3.44969 +167388,3.56626 +167414,3.49131 +167440,3.47989 +167466,3.32636 +167492,3.29134 +167518,3.37736 +167544,3.49263 +167570,3.49256 +167596,3.65807 +167622,3.11464 +167648,3.6708 +167674,3.69904 +167700,4.02047 +167726,3.60658 +167752,3.58325 +167778,3.67982 +167804,3.8423 +167830,3.68538 +167856,3.51465 +167882,3.75672 +167908,3.66443 +167934,3.01556 +167960,3.37812 +167986,3.72688 +168012,3.32332 +168038,3.92159 +168064,3.19098 +168090,3.53693 +168116,2.96988 +168142,3.27228 +168168,3.49538 +168194,3.32966 +168220,3.65692 +168246,3.39918 +168272,4.02285 +168298,3.77904 +168324,3.88511 +168350,3.45705 +168376,3.42676 +168402,3.41564 +168428,3.65322 +168454,3.51075 +168480,3.87016 +168506,3.41527 +168532,3.73545 +168558,3.49335 +168584,3.37534 +168610,3.67898 +168636,3.67175 +168662,3.62687 +168688,3.2404 +168714,3.13195 +168740,3.47133 +168766,3.88008 +168792,3.53089 +168818,3.09195 +168844,3.66062 +168870,3.53476 +168896,3.31882 +168922,4.48303 +168948,3.31617 +168974,3.16346 +169000,3.90327 +169026,4.16104 +169052,3.11713 +169078,3.40087 +169104,3.02004 +169130,3.47129 +169156,3.57326 +169182,3.79035 +169208,3.53549 +169234,3.13072 +169260,3.8416 +169286,3.48728 +169312,3.58188 +169338,3.88132 +169364,3.2219 +169390,3.59981 +169416,3.25046 +169442,3.47546 +169468,3.30838 +169494,3.71242 +169520,3.37206 +169546,3.55079 +169572,3.47099 +169598,3.38769 +169624,3.81611 +169650,3.36514 +169676,3.44893 +169702,3.71264 +169728,3.39991 +169754,3.30629 +169780,3.81814 +169806,3.2895 +169832,3.28133 +169858,2.92898 +169884,3.37253 +169910,3.42059 +169936,3.11508 +169962,3.33684 +169988,3.81993 +170014,3.86725 +170040,3.05791 +170066,3.59976 +170092,3.41884 +170118,3.32973 +170144,3.73572 +170170,3.32616 +170196,3.51501 +170222,3.46202 +170248,3.6 +170274,3.88856 +170300,3.55621 +170326,3.11583 +170352,3.66523 +170378,3.19345 +170404,3.3747 +170430,3.8179 +170456,3.56007 +170482,2.87602 +170508,3.83692 +170534,3.71308 +170560,3.93398 +170586,3.35723 +170612,3.35235 +170638,3.64617 +170664,4.22169 +170690,3.9368 +170716,3.40908 +170742,3.35184 +170768,3.62843 +170794,3.17782 +170820,3.65706 +170846,3.48804 +170872,3.57067 +170898,3.32549 +170924,3.58145 +170950,2.87745 +170976,3.43974 +171002,3.88803 +171028,3.68666 +171054,3.30754 +171080,3.50869 +171106,3.01419 +171132,4.02786 +171158,4.06673 +171184,3.66824 +171210,4.10689 +171236,3.77116 +171262,3.64028 +171288,3.85698 +171314,3.64681 +171340,3.26602 +171366,3.32453 +171392,2.66921 +171418,3.50028 +171444,3.78027 +171470,3.50157 +171496,3.66203 +171522,3.48609 +171548,3.27115 +171574,3.6732 +171600,3.66233 +171626,3.52949 +171652,3.48471 +171678,3.36066 +171704,3.46744 +171730,3.63396 +171756,3.50934 +171782,3.0729 +171808,3.53164 +171834,3.27581 +171860,3.55322 +171886,3.43981 +171912,3.37105 +171938,3.82128 +171964,3.43954 +171990,3.45834 +172016,2.9321 +172042,3.66269 +172068,3.54988 +172094,3.32598 +172120,3.11066 +172146,4.03428 +172172,3.39819 +172198,3.97889 +172224,3.63348 +172250,3.2068 +172276,3.96338 +172302,3.66685 +172328,3.00246 +172354,4.36297 +172380,3.33042 +172406,3.82044 +172432,3.91607 +172458,3.52572 +172484,3.21479 +172510,3.77818 +172536,3.81358 +172562,3.78322 +172588,3.25312 +172614,3.50573 +172640,3.41644 +172666,3.62436 +172692,3.66304 +172718,3.2959 +172744,3.83808 +172770,3.48395 +172796,3.90126 +172822,3.88536 +172848,3.17789 +172874,4.10515 +172900,3.55622 +172926,3.59828 +172952,3.88159 +172978,3.44341 +173004,3.65121 +173030,3.54821 +173056,3.31199 +173082,3.11583 +173108,3.40592 +173134,2.90096 +173160,3.42846 +173186,3.48221 +173212,3.35819 +173238,3.9958 +173264,3.34147 +173290,3.75085 +173316,3.65768 +173342,3.40473 +173368,3.65591 +173394,3.24157 +173420,3.10899 +173446,3.43059 +173472,3.6744 +173498,3.10134 +173524,3.23586 +173550,3.44295 +173576,3.76096 +173602,3.69753 +173628,3.43931 +173654,3.73145 +173680,3.37242 +173706,3.24073 +173732,3.53728 +173758,3.28226 +173784,3.60059 +173810,3.58136 +173836,3.42614 +173862,3.54156 +173888,3.42776 +173914,3.57903 +173940,3.13871 +173966,3.85929 +173992,3.4099 +174018,3.33319 +174044,3.71443 +174070,3.44998 +174096,3.39021 +174122,3.42041 +174148,4.04874 +174174,3.25019 +174200,3.30413 +174226,3.47574 +174252,3.32229 +174278,3.36264 +174304,3.51209 +174330,3.73038 +174356,3.40549 +174382,3.86508 +174408,3.37526 +174434,3.43433 +174460,3.19308 +174486,3.33726 +174512,3.26311 +174538,3.78186 +174564,3.2406 +174590,3.45337 +174616,3.43136 +174642,3.86633 +174668,3.78204 +174694,3.241 +174720,3.26007 +174746,3.595 +174772,3.80457 +174798,4.18453 +174824,3.58112 +174850,2.72701 +174876,3.16448 +174902,3.09677 +174928,3.80245 +174954,3.7223 +174980,3.35628 +175006,3.50779 +175032,3.11962 +175058,3.61809 +175084,3.59492 +175110,2.72015 +175136,3.36999 +175162,3.60538 +175188,3.2035 +175214,3.83429 +175240,3.71433 +175266,3.47195 +175292,3.59433 +175318,3.3072 +175344,3.40626 +175370,4.06368 +175396,3.72763 +175422,3.70687 +175448,3.43916 +175474,3.41162 +175500,3.44378 +175526,3.35302 +175552,3.73367 +175578,3.51263 +175604,3.85804 +175630,4.31735 +175656,3.27165 +175682,3.37882 +175708,3.91261 +175734,2.86462 +175760,3.54925 +175786,3.81348 +175812,3.26026 +175838,3.46918 +175864,3.98344 +175890,3.63846 +175916,3.28884 +175942,3.51272 +175968,3.50164 +175994,3.64197 +176020,3.48298 +176046,3.54586 +176072,3.53332 +176098,3.67453 +176124,3.27365 +176150,3.52934 +176176,3.50715 +176202,3.37245 +176228,3.38575 +176254,3.11491 +176280,3.65766 +176306,3.93204 +176332,3.54168 +176358,3.4378 +176384,3.52235 +176410,3.58266 +176436,3.95589 +176462,3.36281 +176488,3.1715 +176514,3.39101 +176540,3.25321 +176566,3.52226 +176592,4.13964 +176618,3.63269 +176644,3.49414 +176670,2.98494 +176696,3.7488 +176722,3.33554 +176748,3.42282 +176774,3.51545 +176800,3.19389 +176826,3.68064 +176852,3.1478 +176878,3.34287 +176904,3.20285 +176930,3.57136 +176956,3.25291 +176982,3.32384 +177008,3.92787 +177034,3.19464 +177060,3.80955 +177086,3.34078 +177112,3.25802 +177138,3.36925 +177164,3.33886 +177190,3.50303 +177216,3.62103 +177242,3.70683 +177268,3.3548 +177294,3.69955 +177320,3.23025 +177346,3.62238 +177372,3.44301 +177398,3.66201 +177424,3.46471 +177450,3.47193 +177476,3.32179 +177502,3.98265 +177528,3.25338 +177554,3.54099 +177580,3.71066 +177606,3.66434 +177632,3.19704 +177658,3.32984 +177684,3.33062 +177710,3.15416 +177736,3.2048 +177762,4.53344 +177788,3.53136 +177814,3.31489 +177840,3.96735 +177866,3.3558 +177892,3.90042 +177918,3.43206 +177944,3.23412 +177970,3.91763 +177996,4.12454 +178022,3.53369 +178048,3.77344 +178074,3.60207 +178100,3.42405 +178126,3.11528 +178152,3.246 +178178,3.14426 +178204,3.53914 +178230,3.67231 +178256,3.43009 +178282,3.32227 +178308,3.13907 +178334,3.26085 +178360,2.88302 +178386,3.50102 +178412,3.27375 +178438,3.82245 +178464,3.70109 +178490,3.27298 +178516,3.64655 +178542,3.7516 +178568,4.31233 +178594,3.78629 +178620,3.35387 +178646,3.26078 +178672,3.43302 +178698,3.62223 +178724,3.38395 +178750,3.43633 +178776,3.82599 +178802,3.2672 +178828,3.3064 +178854,3.28394 +178880,3.7558 +178906,3.24554 +178932,3.51136 +178958,3.7299 +178984,3.25924 +179010,3.7234 +179036,3.41748 +179062,3.49728 +179088,2.871 +179114,3.15727 +179140,3.72128 +179166,3.1985 +179192,3.23494 +179218,3.28013 +179244,3.46211 +179270,3.16727 +179296,2.8868 +179322,3.25071 +179348,2.89949 +179374,3.75484 +179400,3.32077 +179426,3.96229 +179452,4.03438 +179478,3.93853 +179504,3.21054 +179530,3.29508 +179556,3.30703 +179582,3.05382 +179608,3.91497 +179634,3.55346 +179660,3.01468 +179686,3.45339 +179712,3.69036 +179738,3.1864 +179764,3.10668 +179790,3.45822 +179816,3.22792 +179842,3.15969 +179868,3.21586 +179894,3.6853 +179920,3.37582 +179946,3.42626 +179972,4.44487 +179998,4.09226 +180024,3.79293 +180050,3.96581 +180076,3.71639 +180102,3.55677 +180128,3.5567 +180154,4.0375 +180180,3.61017 +180206,3.30615 +180232,3.52166 +180258,3.84508 +180284,3.14641 +180310,3.45962 +180336,3.29802 +180362,3.45055 +180388,3.45272 +180414,3.47404 +180440,3.59588 +180466,3.24936 +180492,3.13374 +180518,4.02759 +180544,3.17521 +180570,3.53842 +180596,3.00591 +180622,2.97966 +180648,3.87267 +180674,3.22908 +180700,3.68887 +180726,3.32414 +180752,3.28558 +180778,3.18592 +180804,3.64314 +180830,3.30163 +180856,3.14917 +180882,3.42075 +180908,3.71464 +180934,3.2117 +180960,3.25758 +180986,3.65977 +181012,3.57115 +181038,3.2447 +181064,3.68641 +181090,3.41658 +181116,3.95339 +181142,3.33327 +181168,3.64812 +181194,3.7554 +181220,3.31189 +181246,3.40824 +181272,3.2814 +181298,4.00738 +181324,4.06152 +181350,3.44182 +181376,3.77322 +181402,3.80921 +181428,3.39049 +181454,3.1191 +181480,3.55815 +181506,3.68721 +181532,3.04705 +181558,3.57786 +181584,3.4621 +181610,3.98233 +181636,3.52439 +181662,3.56463 +181688,3.74056 +181714,4.54398 +181740,4.02092 +181766,3.36057 +181792,3.73396 +181818,3.70879 +181844,3.76625 +181870,3.38164 +181896,3.93054 +181922,3.91067 +181948,3.34732 +181974,3.31214 +182000,3.55013 +182026,3.66529 +182052,3.10133 +182078,3.16452 +182104,2.9993 +182130,2.76388 +182156,3.50735 +182182,3.36331 +182208,4.06656 +182234,3.52583 +182260,3.24782 +182286,3.00505 +182312,3.37728 +182338,3.24494 +182364,3.79981 +182390,3.28069 +182416,3.0978 +182442,3.04253 +182468,3.61085 +182494,3.46998 +182520,3.44321 +182546,3.52421 +182572,4.18665 +182598,3.74801 +182624,3.1151 +182650,3.67789 +182676,3.20671 +182702,3.42093 +182728,3.22311 +182754,3.5476 +182780,3.20883 +182806,3.46719 +182832,3.34987 +182858,3.2818 +182884,3.32009 +182910,3.35065 +182936,4.0156 +182962,3.28031 +182988,3.47045 +183014,3.26706 +183040,3.81973 +183066,3.62476 +183092,3.17699 +183118,3.18365 +183144,3.55728 +183170,4.14067 +183196,3.79033 +183222,3.54653 +183248,3.94024 +183274,3.24465 +183300,2.95068 +183326,3.39354 +183352,3.82146 +183378,4.103 +183404,3.34127 +183430,3.21015 +183456,3.04766 +183482,3.67162 +183508,3.37275 +183534,3.5195 +183560,3.18621 +183586,3.77982 +183612,3.22279 +183638,4.1182 +183664,3.21971 +183690,3.28969 +183716,3.13219 +183742,3.4792 +183768,2.71435 +183794,3.91069 +183820,3.47994 +183846,3.47616 +183872,3.47357 +183898,3.38984 +183924,3.17078 +183950,3.27446 +183976,3.37813 +184002,3.35057 +184028,3.43335 +184054,3.16313 +184080,3.3691 +184106,3.5126 +184132,2.85431 +184158,3.3146 +184184,3.1737 +184210,3.2984 +184236,3.13019 +184262,3.29719 +184288,4.01139 +184314,3.52348 +184340,4.08873 +184366,4.51673 +184392,3.99282 +184418,4.14313 +184444,3.73807 +184470,3.21842 +184496,3.40016 +184522,3.74177 +184548,3.55588 +184574,3.0042 +184600,3.66323 +184626,3.06534 +184652,3.24842 +184678,3.9825 +184704,3.13921 +184730,3.21383 +184756,3.59516 +184782,3.38421 +184808,3.74569 +184834,3.91143 +184860,3.34614 +184886,3.35196 +184912,2.94651 +184938,3.79916 +184964,3.08496 +184990,3.91499 +185016,3.92535 +185042,3.49869 +185068,3.38586 +185094,3.32119 +185120,3.52401 +185146,3.39926 +185172,3.42408 +185198,3.71635 +185224,3.61369 +185250,3.94644 +185276,3.52419 +185302,2.96902 +185328,3.48826 +185354,3.18132 +185380,3.24239 +185406,3.43375 +185432,3.2385 +185458,3.18874 +185484,3.09425 +185510,3.58898 +185536,4.07368 +185562,3.71879 +185588,3.6385 +185614,3.32404 +185640,3.59458 +185666,3.48363 +185692,3.38713 +185718,3.36109 +185744,3.59651 +185770,3.32017 +185796,3.09575 +185822,2.88623 +185848,3.64303 +185874,3.30185 +185900,3.39987 +185926,3.98802 +185952,3.79179 +185978,3.65007 +186004,3.27846 +186030,3.5899 +186056,3.36255 +186082,3.55975 +186108,3.16873 +186134,3.42097 +186160,3.40349 +186186,3.15716 +186212,3.56898 +186238,3.09484 +186264,3.13876 +186290,4.04195 +186316,3.4313 +186342,3.81143 +186368,3.57346 +186394,3.10426 +186420,3.78101 +186446,4.13845 +186472,3.67211 +186498,3.83013 +186524,3.63345 +186550,3.3595 +186576,3.29826 +186602,3.86632 +186628,3.49625 +186654,3.93222 +186680,3.42973 +186706,3.72468 +186732,3.04441 +186758,3.99948 +186784,3.51923 +186810,3.66797 +186836,3.95126 +186862,3.49723 +186888,3.73649 +186914,3.76801 +186940,3.42318 +186966,3.44979 +186992,3.53432 +187018,2.90179 +187044,3.54764 +187070,3.67823 +187096,3.21212 +187122,3.78637 +187148,2.84597 +187174,3.16015 +187200,3.13061 +187226,2.97018 +187252,3.28848 +187278,3.37315 +187304,3.56821 +187330,3.47756 +187356,3.24181 +187382,3.09442 +187408,3.84388 +187434,4.08338 +187460,2.86302 +187486,3.29718 +187512,3.08314 +187538,3.00667 +187564,3.36943 +187590,3.94049 +187616,3.69085 +187642,3.92899 +187668,3.49487 +187694,3.11849 +187720,3.0566 +187746,3.3241 +187772,3.92832 +187798,3.76196 +187824,3.64645 +187850,3.76758 +187876,3.44107 +187902,3.45556 +187928,3.95532 +187954,3.03571 +187980,3.40826 +188006,3.10528 +188032,3.29595 +188058,3.44885 +188084,3.68285 +188110,2.78374 +188136,3.77552 +188162,3.47285 +188188,3.44761 +188214,3.32901 +188240,2.89771 +188266,3.05765 +188292,3.99437 +188318,3.47055 +188344,3.88835 +188370,3.19692 +188396,3.42772 +188422,3.50246 +188448,3.45225 +188474,3.80537 +188500,3.05007 +188526,3.16139 +188552,2.78442 +188578,3.51386 +188604,3.16115 +188630,3.06821 +188656,3.27689 +188682,3.4505 +188708,3.30088 +188734,3.66308 +188760,3.57206 +188786,3.32008 +188812,3.38797 +188838,3.20747 +188864,2.98589 +188890,3.68481 +188916,4.04831 +188942,3.89724 +188968,3.33248 +188994,3.52898 +189020,3.1007 +189046,2.94697 +189072,3.55898 +189098,3.53115 +189124,3.24078 +189150,3.60391 +189176,3.04508 +189202,3.11599 +189228,3.2051 +189254,3.58646 +189280,3.02136 +189306,3.37541 +189332,3.6261 +189358,3.05093 +189384,3.08608 +189410,3.51393 +189436,3.01762 +189462,2.94915 +189488,3.17844 +189514,3.44304 +189540,4.0689 +189566,3.27253 +189592,3.59624 +189618,3.07866 +189644,3.2696 +189670,3.42937 +189696,3.33914 +189722,3.27871 +189748,2.67552 +189774,2.74625 +189800,3.83564 +189826,3.80833 +189852,3.23821 +189878,3.6303 +189904,3.26893 +189930,3.76646 +189956,3.0675 +189982,3.50269 +190008,3.16613 +190034,3.70121 +190060,3.14716 +190086,3.35093 +190112,2.93942 +190138,3.28627 +190164,3.21966 +190190,3.34943 +190216,3.09529 +190242,3.13616 +190268,2.69209 +190294,3.59926 +190320,3.16805 +190346,3.95068 +190372,3.42651 +190398,3.79794 +190424,3.89586 +190450,3.92992 +190476,3.30046 +190502,3.13568 +190528,2.91563 +190554,3.85208 +190580,3.261 +190606,3.07077 +190632,3.7866 +190658,3.47985 +190684,2.95507 +190710,3.54756 +190736,2.86067 +190762,4.06781 +190788,4.56922 +190814,3.69015 +190840,3.21977 +190866,3.61501 +190892,3.63802 +190918,3.11416 +190944,2.89266 +190970,2.96362 +190996,3.31919 +191022,3.24946 +191048,3.07444 +191074,3.60874 +191100,3.40744 +191126,3.33887 +191152,3.53525 +191178,3.74754 +191204,3.45586 +191230,3.25695 +191256,3.60369 +191282,3.43468 +191308,3.75012 +191334,3.58784 +191360,3.18642 +191386,3.23511 +191412,2.95534 +191438,3.4779 +191464,3.14926 +191490,2.82557 +191516,4.48093 +191542,3.69053 +191568,3.38491 +191594,3.12324 +191620,3.25507 +191646,3.29568 +191672,3.41768 +191698,3.22497 +191724,3.15587 +191750,2.80178 +191776,4.02033 +191802,3.77731 +191828,3.0956 +191854,3.74925 +191880,3.55212 +191906,3.47612 +191932,3.8253 +191958,2.69081 +191984,3.459 +192010,3.08627 +192036,3.46938 +192062,3.31828 +192088,3.68784 +192114,3.4335 +192140,2.73783 +192166,3.33511 +192192,3.76605 +192218,3.96645 +192244,3.39267 +192270,3.25975 +192296,3.07691 +192322,3.1745 +192348,3.43421 +192374,3.5377 +192400,3.62039 +192426,3.43466 +192452,3.51666 +192478,3.20233 +192504,3.75152 +192530,3.72007 +192556,4.26536 +192582,3.39834 +192608,2.97847 +192634,3.35967 +192660,3.33801 +192686,3.55624 +192712,3.3996 +192738,3.2961 +192764,3.16707 +192790,3.53127 +192816,3.33833 +192842,3.26612 +192868,3.53503 +192894,3.47742 +192920,2.73276 +192946,3.14232 +192972,3.3031 +192998,3.24777 +193024,3.67711 +193050,2.93165 +193076,3.51197 +193102,2.68995 +193128,3.23482 +193154,3.03673 +193180,3.49354 +193206,3.64795 +193232,3.56568 +193258,3.70295 +193284,2.995 +193310,3.4205 +193336,4.18641 +193362,3.44293 +193388,3.14213 +193414,3.04475 +193440,3.41976 +193466,3.09771 +193492,3.62092 +193518,4.00265 +193544,3.87219 +193570,3.92269 +193596,3.91333 +193622,3.80814 +193648,3.86276 +193674,3.69032 +193700,3.42385 +193726,3.239 +193752,3.64156 +193778,3.38465 +193804,3.34912 +193830,3.0924 +193856,3.07963 +193882,3.16249 +193908,3.8457 +193934,3.04034 +193960,3.23073 +193986,3.24151 +194012,3.20787 +194038,3.29083 +194064,3.11493 +194090,3.3366 +194116,4.19045 +194142,3.28773 +194168,3.19823 +194194,3.09305 +194220,3.54452 +194246,4.33563 +194272,3.32483 +194298,3.52921 +194324,3.73833 +194350,3.89399 +194376,3.39556 +194402,2.90767 +194428,3.45817 +194454,3.59544 +194480,3.38404 +194506,2.87776 +194532,3.07787 +194558,2.99951 +194584,2.99841 +194610,3.96434 +194636,3.55786 +194662,3.90521 +194688,3.22618 +194714,3.40258 +194740,2.79676 +194766,3.45276 +194792,3.59232 +194818,3.7812 +194844,3.23015 +194870,3.05105 +194896,3.53783 +194922,3.66609 +194948,3.74035 +194974,2.97405 +195000,3.64792 +195026,2.86531 +195052,2.78955 +195078,2.79635 +195104,3.10098 +195130,3.91389 +195156,3.97693 +195182,3.29435 +195208,2.98276 +195234,3.96092 +195260,3.15704 +195286,3.00596 +195312,3.36311 +195338,3.80833 +195364,3.38412 +195390,3.37947 +195416,3.71754 +195442,2.93912 +195468,3.87449 +195494,3.28957 +195520,3.2274 +195546,2.91292 +195572,3.69396 +195598,3.79101 +195624,3.58075 +195650,3.2557 +195676,3.09688 +195702,3.01662 +195728,3.35125 +195754,3.31308 +195780,3.8611 +195806,3.18213 +195832,3.30465 +195858,3.28967 +195884,3.17516 +195910,3.3214 +195936,3.45144 +195962,3.09972 +195988,3.56058 +196014,3.04173 +196040,3.7397 +196066,3.74343 +196092,2.97567 +196118,3.01982 +196144,2.7704 +196170,3.00183 +196196,3.19812 +196222,3.48531 +196248,3.49473 +196274,3.17892 +196300,3.64556 +196326,3.16059 +196352,3.58806 +196378,3.48219 +196404,3.53235 +196430,3.59342 +196456,3.01448 +196482,2.93298 +196508,3.28128 +196534,3.64971 +196560,3.02511 +196586,2.96065 +196612,3.20908 +196638,2.88699 +196664,3.05293 +196690,3.35207 +196716,3.44531 +196742,3.44095 +196768,3.15561 +196794,2.83396 +196820,3.33563 +196846,2.97526 +196872,2.8672 +196898,3.14525 +196924,3.10177 +196950,4.16814 +196976,4.17541 +197002,3.99116 +197028,4.21013 +197054,3.53803 +197080,3.65245 +197106,3.75022 +197132,3.34536 +197158,3.43489 +197184,3.66704 +197210,3.53871 +197236,3.47365 +197262,3.1823 +197288,3.10427 +197314,3.05242 +197340,3.46106 +197366,3.30502 +197392,2.94284 +197418,3.5685 +197444,3.04483 +197470,2.95323 +197496,3.68391 +197522,3.40574 +197548,3.50085 +197574,3.5335 +197600,3.05177 +197626,3.83762 +197652,3.95889 +197678,3.36208 +197704,3.82173 +197730,3.45459 +197756,3.46637 +197782,3.15457 +197808,3.50229 +197834,3.50391 +197860,4.19794 +197886,3.84501 +197912,4.12531 +197938,3.89387 +197964,3.64971 +197990,3.40518 +198016,3.47429 +198042,3.66269 +198068,3.34268 +198094,3.77115 +198120,3.47455 +198146,3.62878 +198172,3.41685 +198198,3.65305 +198224,3.15504 +198250,3.50201 +198276,3.3777 +198302,3.34066 +198328,3.80536 +198354,3.70473 +198380,3.66486 +198406,3.25678 +198432,3.69428 +198458,3.37225 +198484,3.69784 +198510,3.16721 +198536,3.80371 +198562,3.63206 +198588,3.46924 +198614,3.70709 +198640,3.2452 +198666,3.80992 +198692,3.87537 +198718,3.54241 +198744,3.05825 +198770,2.96815 +198796,3.36073 +198822,3.14215 +198848,3.55528 +198874,3.22163 +198900,2.67155 +198926,3.27048 +198952,3.53932 +198978,3.36097 +199004,3.71775 +199030,3.12368 +199056,3.48597 +199082,3.11228 +199108,3.19814 +199134,3.51263 +199160,3.11023 +199186,3.00784 +199212,4.6165 +199238,3.32754 +199264,3.25404 +199290,2.70256 +199316,3.15763 +199342,3.07364 +199368,3.06477 +199394,3.7451 +199420,3.58119 +199446,3.75003 +199472,3.73756 +199498,3.24897 +199524,3.31142 +199550,3.67673 +199576,3.79813 +199602,3.07527 +199628,3.22944 +199654,3.57298 +199680,3.50996 +199706,3.84641 +199732,3.4803 +199758,2.93103 +199784,3.50508 +199810,3.59614 +199836,3.33391 +199862,2.79228 +199888,2.80025 +199914,3.20276 +199940,3.4917 +199966,3.03554 +199992,3.04441 +200018,2.96185 +200044,3.10181 +200070,3.20319 +200096,3.41217 +200122,3.29495 +200148,2.95278 +200174,3.21366 +200200,3.47902 +200226,3.22922 +200252,3.01747 +200278,3.60537 +200304,3.11776 +200330,3.48158 +200356,3.14325 +200382,3.43988 +200408,2.86298 +200434,3.50558 +200460,3.5664 +200486,3.08205 +200512,2.93625 +200538,3.26084 +200564,2.88948 +200590,3.12673 +200616,3.07282 +200642,3.82127 +200668,3.14267 +200694,3.1655 +200720,2.90067 +200746,3.40043 +200772,3.21928 +200798,3.45677 +200824,3.37414 +200850,2.92686 +200876,3.03507 +200902,3.40049 +200928,3.24849 +200954,3.2854 +200980,3.16653 +201006,3.3363 +201032,3.69736 +201058,3.55212 +201084,2.9578 +201110,3.25965 +201136,3.78623 +201162,2.96554 +201188,3.62393 +201214,4.02612 +201240,3.32024 +201266,2.96455 +201292,3.07667 +201318,3.5145 +201344,3.12392 +201370,3.26494 +201396,3.1155 +201422,3.49808 +201448,3.84105 +201474,3.12732 +201500,3.22241 +201526,2.78991 +201552,3.51018 +201578,3.48835 +201604,3.54176 +201630,2.99574 +201656,4.09807 +201682,3.84145 +201708,3.22229 +201734,3.26685 +201760,3.3114 +201786,3.56553 +201812,3.16897 +201838,3.0227 +201864,3.69621 +201890,3.12431 +201916,3.02372 +201942,2.85573 +201968,3.4348 +201994,3.46142 +202020,3.02506 +202046,2.69614 +202072,3.53853 +202098,2.75917 +202124,3.17358 +202150,3.47841 +202176,2.72816 +202202,3.0762 +202228,3.50225 +202254,3.58757 +202280,3.18697 +202306,3.36468 +202332,3.24373 +202358,3.17457 +202384,3.16831 +202410,3.20722 +202436,3.18517 +202462,4.2165 +202488,3.94291 +202514,3.16123 +202540,3.37621 +202566,3.79526 +202592,3.26407 +202618,2.90294 +202644,3.24941 +202670,3.67198 +202696,3.25308 +202722,2.55433 +202748,2.92848 +202774,2.74323 +202800,2.98407 +202826,3.50589 +202852,3.31198 +202878,2.70261 +202904,3.03624 +202930,3.36371 +202956,3.58259 +202982,2.81115 +203008,3.55202 +203034,3.79627 +203060,2.79972 +203086,3.13083 +203112,2.97209 +203138,2.51782 +203164,3.23498 +203190,3.56574 +203216,3.21704 +203242,3.06373 +203268,3.34411 +203294,2.91098 +203320,3.38546 +203346,2.90714 +203372,3.96908 +203398,3.68086 +203424,3.0205 +203450,3.46108 +203476,2.92636 +203502,3.56542 +203528,3.07897 +203554,3.25137 +203580,3.71682 +203606,3.63309 +203632,3.53471 +203658,3.23708 +203684,3.21186 +203710,3.6844 +203736,4.02626 +203762,3.50675 +203788,3.50515 +203814,3.19213 +203840,3.22554 +203866,3.64286 +203892,3.05545 +203918,3.59973 +203944,3.07827 +203970,2.68769 +203996,3.51668 +204022,3.51159 +204048,2.88016 +204074,3.13584 +204100,3.68566 +204126,3.4426 +204152,3.52851 +204178,4.09532 +204204,3.45147 +204230,2.98022 +204256,3.48366 +204282,4.02975 +204308,2.9443 +204334,3.78236 +204360,3.2677 +204386,3.38944 +204412,3.87001 +204438,4.20386 +204464,3.22303 +204490,2.93321 +204516,3.36935 +204542,2.96562 +204568,3.07787 +204594,3.2393 +204620,3.52189 +204646,2.83419 +204672,2.81614 +204698,3.10955 +204724,3.22078 +204750,3.34391 +204776,3.03626 +204802,2.87489 +204828,3.47965 +204854,3.83033 +204880,3.65003 +204906,2.32314 +204932,3.43736 +204958,3.79424 +204984,2.83188 +205010,3.16657 +205036,3.62594 +205062,3.00368 +205088,3.64039 +205114,3.1855 +205140,3.25844 +205166,3.16137 +205192,3.15246 +205218,3.09408 +205244,3.26921 +205270,3.66967 +205296,3.25559 +205322,3.61313 +205348,2.44896 +205374,3.68142 +205400,3.1953 +205426,3.51027 +205452,2.81126 +205478,3.26949 +205504,3.59951 +205530,3.61115 +205556,3.08454 +205582,3.36513 +205608,3.14748 +205634,2.91511 +205660,3.41425 +205686,3.41089 +205712,2.86075 +205738,2.58754 +205764,3.31376 +205790,3.48266 +205816,3.45554 +205842,3.22923 +205868,2.80142 +205894,2.86953 +205920,3.14111 +205946,3.40886 +205972,3.53707 +205998,4.15256 +206024,3.43131 +206050,3.16366 +206076,3.78709 +206102,3.29043 +206128,3.39003 +206154,3.50345 +206180,2.93861 +206206,3.25072 +206232,3.45574 +206258,3.1183 +206284,3.63291 +206310,3.17183 +206336,3.49892 +206362,3.08371 +206388,3.36559 +206414,3.20825 +206440,3.5869 +206466,3.14897 +206492,2.5739 +206518,2.55107 +206544,2.64963 +206570,3.12621 +206596,3.59508 +206622,3.32035 +206648,3.40196 +206674,3.06321 +206700,3.27645 +206726,3.40127 +206752,3.51975 +206778,3.42572 +206804,2.98558 +206830,3.20257 +206856,2.80242 +206882,3.00148 +206908,4.22878 +206934,3.61338 +206960,3.02326 +206986,3.32396 +207012,3.81915 +207038,2.93517 +207064,3.42065 +207090,3.67191 +207116,3.83303 +207142,3.91389 +207168,4.75141 +207194,3.59412 +207220,3.20159 +207246,3.91481 +207272,3.42573 +207298,3.24253 +207324,3.20844 +207350,3.16066 +207376,3.2593 +207402,2.86513 +207428,2.90257 +207454,3.17147 +207480,2.97548 +207506,3.82812 +207532,3.44328 +207558,3.22236 +207584,2.98321 +207610,3.03122 +207636,3.20238 +207662,3.7304 +207688,3.38727 +207714,3.47731 +207740,3.0265 +207766,3.30632 +207792,3.67386 +207818,2.52987 +207844,3.57341 +207870,3.05314 +207896,3.39767 +207922,2.78827 +207948,3.34306 +207974,3.06354 +208000,3.05506 +208026,3.70278 +208052,3.02654 +208078,3.05285 +208104,3.2391 +208130,3.52792 +208156,3.08034 +208182,3.43183 +208208,3.08455 +208234,3.088 +208260,2.47447 +208286,2.51246 +208312,3.67499 +208338,3.86774 +208364,2.93629 +208390,2.78742 +208416,2.92889 +208442,2.9067 +208468,3.36552 +208494,3.05596 +208520,3.37178 +208546,3.11762 +208572,3.29097 +208598,3.25149 +208624,3.38781 +208650,3.17743 +208676,3.41736 +208702,3.19856 +208728,3.20003 +208754,2.73478 +208780,3.31621 +208806,2.9618 +208832,3.61652 +208858,3.40582 +208884,3.4904 +208910,2.80097 +208936,3.41907 +208962,3.54556 +208988,3.89753 +209014,3.44976 +209040,3.5487 +209066,3.62783 +209092,3.55821 +209118,3.4976 +209144,3.22938 +209170,3.33029 +209196,2.92605 +209222,2.97226 +209248,2.60904 +209274,2.7247 +209300,2.74085 +209326,3.98029 +209352,3.14568 +209378,3.18463 +209404,3.52318 +209430,3.20056 +209456,3.53103 +209482,3.69064 +209508,4.30257 +209534,3.90146 +209560,3.83704 +209586,3.23153 +209612,3.83085 +209638,3.95525 +209664,3.39113 +209690,3.20441 +209716,2.72969 +209742,3.12763 +209768,3.69977 +209794,4.29204 +209820,3.06801 +209846,3.08734 +209872,4.06468 +209898,3.08191 +209924,2.85526 +209950,3.27759 +209976,2.59556 +210002,3.67356 +210028,3.50754 +210054,3.4888 +210080,3.27468 +210106,2.90107 +210132,2.59698 +210158,3.38148 +210184,3.0315 +210210,3.47786 +210236,3.55771 +210262,3.47922 +210288,3.15601 +210314,3.07017 +210340,3.59727 +210366,3.16194 +210392,3.25352 +210418,2.60174 +210444,2.85623 +210470,2.93115 +210496,3.28822 +210522,3.51881 +210548,3.29328 +210574,2.8318 +210600,3.53224 +210626,3.97826 +210652,2.77341 +210678,4.00286 +210704,3.26828 +210730,3.24992 +210756,3.58292 +210782,2.96255 +210808,3.07259 +210834,3.25713 +210860,3.37885 +210886,3.16646 +210912,3.04346 +210938,3.88026 +210964,3.40379 +210990,2.63081 +211016,3.19202 +211042,2.74999 +211068,3.36451 +211094,3.45557 +211120,3.17879 +211146,3.36537 +211172,3.35287 +211198,3.24845 +211224,3.43713 +211250,3.36655 +211276,2.80221 +211302,3.15827 +211328,3.89992 +211354,3.19311 +211380,3.83512 +211406,3.59138 +211432,2.94091 +211458,3.5597 +211484,3.18027 +211510,3.26314 +211536,3.249 +211562,3.51156 +211588,3.36297 +211614,2.71218 +211640,3.09192 +211666,3.46466 +211692,3.23033 +211718,3.14626 +211744,3.26701 +211770,2.99796 +211796,3.48216 +211822,2.95007 +211848,2.79203 +211874,2.72581 +211900,3.1671 +211926,3.91575 +211952,2.68593 +211978,2.77862 +212004,3.2599 +212030,2.8015 +212056,3.1526 +212082,3.30998 +212108,3.57392 +212134,3.5537 +212160,3.32639 +212186,2.6667 +212212,3.15338 +212238,3.73705 +212264,3.77272 +212290,3.19024 +212316,2.68827 +212342,3.07926 +212368,3.5365 +212394,2.82375 +212420,3.06309 +212446,2.68649 +212472,3.12089 +212498,4.2158 +212524,3.54507 +212550,2.99645 +212576,3.5534 +212602,2.9741 +212628,3.67988 +212654,3.74943 +212680,3.46413 +212706,3.60387 +212732,3.34294 +212758,3.02523 +212784,3.05297 +212810,2.63178 +212836,3.21598 +212862,2.88821 +212888,3.11703 +212914,3.40845 +212940,3.81804 +212966,3.4306 +212992,3.15727 +213018,2.97261 +213044,3.55532 +213070,3.77975 +213096,3.59919 +213122,3.22535 +213148,3.89974 +213174,3.26405 +213200,3.17019 +213226,2.67675 +213252,3.5193 +213278,3.44407 +213304,2.80504 +213330,3.45266 +213356,3.29163 +213382,3.07529 +213408,2.56469 +213434,3.37012 +213460,3.73142 +213486,3.34955 +213512,3.11644 +213538,4.02995 +213564,3.34969 +213590,3.11798 +213616,3.12135 +213642,3.09805 +213668,2.83543 +213694,3.09424 +213720,3.64579 +213746,3.24527 +213772,2.82841 +213798,3.20276 +213824,2.91218 +213850,2.98684 +213876,3.33102 +213902,3.04545 +213928,2.59199 +213954,2.72948 +213980,3.09933 +214006,3.18 +214032,3.27756 +214058,3.19457 +214084,3.37446 +214110,2.80854 +214136,3.31519 +214162,2.88925 +214188,3.3528 +214214,3.62736 +214240,3.0044 +214266,3.53233 +214292,3.14794 +214318,3.24891 +214344,3.25166 +214370,3.48838 +214396,2.98514 +214422,3.23464 +214448,2.75822 +214474,3.7507 +214500,3.11822 +214526,4.7175 +214552,4.16828 +214578,4.17737 +214604,4.2475 +214630,4.62449 +214656,4.82393 +214682,4.05155 +214708,4.09524 +214734,3.58854 +214760,3.65129 +214786,4.31756 +214812,3.8265 +214838,3.53416 +214864,4.10402 +214890,3.34124 +214916,3.12801 +214942,4.06493 +214968,3.69545 +214994,3.41273 +215020,3.76546 +215046,3.28561 +215072,2.94694 +215098,3.5984 +215124,3.65196 +215150,3.8713 +215176,3.37857 +215202,2.94619 +215228,3.52769 +215254,3.5884 +215280,3.28894 +215306,3.18146 +215332,3.80191 +215358,3.08264 +215384,3.08641 +215410,3.32984 +215436,3.12483 +215462,3.40607 +215488,3.0082 +215514,3.25574 +215540,3.36695 +215566,3.52853 +215592,2.91673 +215618,2.59631 +215644,2.50222 +215670,3.47046 +215696,2.85039 +215722,3.19762 +215748,3.28077 +215774,2.71979 +215800,2.88962 +215826,3.08355 +215852,3.2345 +215878,3.79481 +215904,2.91807 +215930,2.92158 +215956,2.90439 +215982,3.83727 +216008,3.32889 +216034,3.00339 +216060,3.70612 +216086,3.00345 +216112,3.63233 +216138,3.14664 +216164,3.4135 +216190,2.85242 +216216,3.10866 +216242,3.48899 +216268,3.06814 +216294,2.47593 +216320,3.22275 +216346,2.76893 +216372,3.18433 +216398,3.13343 +216424,3.29222 +216450,2.76712 +216476,2.95346 +216502,3.07163 +216528,3.38782 +216554,3.20572 +216580,3.16166 +216606,3.735 +216632,3.26588 +216658,2.98884 +216684,3.33327 +216710,3.44198 +216736,3.50697 +216762,3.48117 +216788,2.67273 +216814,2.83428 +216840,2.98167 +216866,3.12103 +216892,3.61247 +216918,3.43161 +216944,3.14729 +216970,2.85897 +216996,3.10762 +217022,3.1366 +217048,3.00636 +217074,3.34652 +217100,3.35902 +217126,2.89426 +217152,3.28964 +217178,3.62407 +217204,3.6712 +217230,3.29 +217256,3.51779 +217282,3.21135 +217308,3.17766 +217334,5.18247 +217360,3.1014 +217386,2.96157 +217412,3.14044 +217438,3.48538 +217464,3.24231 +217490,3.54529 +217516,2.91066 +217542,3.47407 +217568,2.89306 +217594,2.68543 +217620,3.33628 +217646,2.89664 +217672,3.613 +217698,3.54328 +217724,3.5642 +217750,3.32458 +217776,3.48489 +217802,2.77278 +217828,2.82026 +217854,2.84301 +217880,2.90723 +217906,3.74697 +217932,4.04208 +217958,3.36364 +217984,3.06186 +218010,2.76934 +218036,3.43656 +218062,3.25083 +218088,3.0044 +218114,2.86704 +218140,3.32426 +218166,3.20691 +218192,3.59329 +218218,3.41304 +218244,2.95774 +218270,2.99671 +218296,3.03897 +218322,2.55523 +218348,3.7752 +218374,3.37174 +218400,3.30817 +218426,3.11913 +218452,3.96718 +218478,3.08719 +218504,3.18284 +218530,3.4497 +218556,2.64692 +218582,4.18869 +218608,3.58212 +218634,2.74667 +218660,3.08618 +218686,3.40866 +218712,2.85921 +218738,3.51098 +218764,3.13852 +218790,3.1637 +218816,2.5541 +218842,2.5294 +218868,3.83759 +218894,2.96935 +218920,2.91772 +218946,2.84916 +218972,2.71902 +218998,2.77903 +219024,3.17353 +219050,2.76003 +219076,3.39914 +219102,2.88595 +219128,2.5873 +219154,3.27533 +219180,3.0294 +219206,2.85661 +219232,3.51985 +219258,3.18497 +219284,3.37134 +219310,2.79257 +219336,3.29964 +219362,3.83244 +219388,3.00447 +219414,3.2236 +219440,3.63693 +219466,3.17457 +219492,3.35557 +219518,2.93251 +219544,3.2655 +219570,3.0229 +219596,2.64666 +219622,2.75694 +219648,3.14966 +219674,2.83366 +219700,2.72688 +219726,3.23238 +219752,3.11748 +219778,3.7066 +219804,3.03953 +219830,3.75129 +219856,3.39873 +219882,3.18302 +219908,3.03868 +219934,3.56004 +219960,2.71773 +219986,3.03529 +220012,2.71772 +220038,3.07233 +220064,3.16362 +220090,3.35189 +220116,2.97525 +220142,3.30073 +220168,2.96812 +220194,3.04985 +220220,3.09615 +220246,3.61956 +220272,3.20523 +220298,2.92533 +220324,3.69696 +220350,2.79548 +220376,2.51631 +220402,3.00424 +220428,3.28263 +220454,2.8304 +220480,3.33849 +220506,3.0999 +220532,3.05102 +220558,2.97387 +220584,2.7053 +220610,3.40467 +220636,3.28231 +220662,3.40008 +220688,2.94168 +220714,2.61971 +220740,2.77131 +220766,3.3976 +220792,2.80376 +220818,3.14494 +220844,2.97397 +220870,2.8833 +220896,3.03432 +220922,2.97411 +220948,2.95477 +220974,2.55111 +221000,2.81009 +221026,2.43573 +221052,3.45995 +221078,3.90853 +221104,3.13405 +221130,2.89701 +221156,3.34908 +221182,3.23377 +221208,3.05571 +221234,3.45635 +221260,3.6452 +221286,3.09732 +221312,3.14476 +221338,2.92201 +221364,2.92646 +221390,3.48215 +221416,3.34637 +221442,3.09101 +221468,3.74433 +221494,2.78095 +221520,2.92468 +221546,3.05692 +221572,3.73634 +221598,3.70903 +221624,3.26829 +221650,3.24292 +221676,3.38986 +221702,4.47707 +221728,4.99956 +221754,4.53003 +221780,4.26721 +221806,4.13332 +221832,3.25447 +221858,3.74014 +221884,3.43463 +221910,3.1055 +221936,4.46724 +221962,3.83386 +221988,3.41263 +222014,3.22028 +222040,3.73236 +222066,3.33991 +222092,3.50722 +222118,3.57453 +222144,3.97791 +222170,3.52196 +222196,3.38714 +222222,3.99235 +222248,3.3341 +222274,4.08034 +222300,2.83738 +222326,3.59093 +222352,3.23772 +222378,3.43722 +222404,3.42447 +222430,3.52743 +222456,3.40481 +222482,3.01205 +222508,3.89851 +222534,3.84817 +222560,4.2013 +222586,3.61547 +222612,3.17298 +222638,3.28381 +222664,2.90109 +222690,3.6749 +222716,3.45988 +222742,3.27142 +222768,3.4597 +222794,3.61616 +222820,3.13388 +222846,3.53776 +222872,3.17656 +222898,3.54106 +222924,3.37536 +222950,2.9431 +222976,3.65906 +223002,3.15878 +223028,2.92318 +223054,2.76849 +223080,3.1921 +223106,3.08986 +223132,3.16695 +223158,4.08948 +223184,3.88038 +223210,3.29844 +223236,4.22234 +223262,4.36584 +223288,3.00344 +223314,2.83276 +223340,3.22948 +223366,3.53949 +223392,3.4927 +223418,3.00955 +223444,3.23239 +223470,3.34121 +223496,2.98971 +223522,3.15632 +223548,3.06459 +223574,2.70192 +223600,3.29259 +223626,3.09958 +223652,3.15293 +223678,3.75079 +223704,3.59369 +223730,3.49495 +223756,3.15113 +223782,3.34128 +223808,3.36569 +223834,3.34952 +223860,2.85072 +223886,4.01529 +223912,2.93251 +223938,3.27663 +223964,3.32312 +223990,3.06505 +224016,2.63876 +224042,3.01464 +224068,2.78404 +224094,2.85563 +224120,2.62651 +224146,2.87496 +224172,3.41796 +224198,2.51695 +224224,3.26626 +224250,2.67975 +224276,3.19358 +224302,3.28869 +224328,3.25659 +224354,3.08806 +224380,2.75168 +224406,3.16985 +224432,2.97947 +224458,3.81091 +224484,3.64597 +224510,3.08626 +224536,2.49935 +224562,3.17996 +224588,3.48951 +224614,3.13369 +224640,3.036 +224666,3.20598 +224692,3.10069 +224718,2.68161 +224744,3.07719 +224770,2.65939 +224796,2.67336 +224822,3.88851 +224848,2.91683 +224874,2.89588 +224900,2.98147 +224926,2.88976 +224952,3.49147 +224978,2.95954 +225004,2.83717 +225030,4.0195 +225056,2.85094 +225082,2.90173 +225108,3.13649 +225134,2.68151 +225160,3.2892 +225186,3.04004 +225212,2.97416 +225238,2.96794 +225264,2.81535 +225290,3.58103 +225316,3.34097 +225342,2.57949 +225368,2.89355 +225394,3.78231 +225420,4.01953 +225446,2.9754 +225472,3.28136 +225498,3.32708 +225524,3.13205 +225550,3.51926 +225576,3.02174 +225602,3.01277 +225628,3.94825 +225654,3.04799 +225680,3.00234 +225706,3.27644 +225732,3.45132 +225758,2.7422 +225784,3.6984 +225810,3.25324 +225836,3.33825 +225862,3.92162 +225888,3.3989 +225914,3.27866 +225940,3.51492 +225966,2.80904 +225992,3.7863 +226018,2.9296 +226044,2.99997 +226070,3.3215 +226096,3.6603 +226122,3.42098 +226148,3.09723 +226174,2.95791 +226200,3.39436 +226226,3.7492 +226252,3.53291 +226278,2.74882 +226304,3.18148 +226330,4.27206 +226356,3.88039 +226382,4.49842 +226408,4.34896 +226434,3.52638 +226460,3.26117 +226486,3.19654 +226512,3.14996 +226538,3.36742 +226564,3.51136 +226590,3.64374 +226616,3.40121 +226642,2.94563 +226668,3.17264 +226694,2.63105 +226720,2.85548 +226746,2.85002 +226772,3.25977 +226798,3.61977 +226824,3.52148 +226850,3.21654 +226876,3.60533 +226902,3.35769 +226928,2.92078 +226954,2.99421 +226980,2.76708 +227006,3.0439 +227032,2.97184 +227058,4.03542 +227084,2.95084 +227110,3.10372 +227136,2.75434 +227162,3.3569 +227188,1.98937 +227214,3.77815 +227240,3.38738 +227266,3.033 +227292,3.06188 +227318,3.65156 +227344,2.8581 +227370,2.91027 +227396,2.87983 +227422,2.56776 +227448,3.57562 +227474,3.60192 +227500,3.06617 +227526,2.92498 +227552,2.61993 +227578,3.08113 +227604,3.56437 +227630,3.26805 +227656,3.16903 +227682,2.90011 +227708,3.0855 +227734,3.08467 +227760,3.37207 +227786,3.51997 +227812,2.82508 +227838,3.42446 +227864,2.83576 +227890,3.35952 +227916,3.4622 +227942,2.90923 +227968,3.65041 +227994,3.74086 +228020,3.38505 +228046,3.4582 +228072,3.74025 +228098,3.56206 +228124,2.92047 +228150,3.05763 +228176,3.86924 +228202,3.70848 +228228,3.63852 +228254,3.28578 +228280,2.90445 +228306,3.08688 +228332,3.21435 +228358,2.86405 +228384,3.42631 +228410,3.70264 +228436,2.72194 +228462,3.36952 +228488,3.13516 +228514,3.19616 +228540,3.43926 +228566,3.06674 +228592,2.99408 +228618,2.61331 +228644,3.22382 +228670,3.59275 +228696,3.21276 +228722,2.90294 +228748,2.77875 +228774,2.5587 +228800,3.01179 +228826,2.55656 +228852,3.23802 +228878,3.34795 +228904,3.48062 +228930,3.02051 +228956,3.29817 +228982,2.94335 +229008,3.03382 +229034,2.63588 +229060,3.00093 +229086,2.60592 +229112,3.97059 +229138,2.69762 +229164,3.02378 +229190,3.77924 +229216,2.96829 +229242,3.08762 +229268,3.79613 +229294,3.05791 +229320,3.75726 +229346,3.77525 +229372,3.45279 +229398,3.28693 +229424,3.18649 +229450,3.08183 +229476,3.10978 +229502,2.99109 +229528,2.86277 +229554,4.82969 +229580,4.36769 +229606,3.70789 +229632,3.61572 +229658,3.89118 +229684,3.34587 +229710,3.32801 +229736,3.81681 +229762,3.57825 +229788,3.50665 +229814,2.90558 +229840,3.15673 +229866,3.73542 +229892,3.73009 +229918,2.91772 +229944,3.36532 +229970,3.53932 +229996,3.54512 +230022,3.14408 +230048,3.37761 +230074,3.28311 +230100,3.34231 +230126,3.15921 +230152,3.3633 +230178,3.80213 +230204,3.07522 +230230,3.50621 +230256,3.13926 +230282,3.12154 +230308,3.43031 +230334,3.40207 +230360,3.38937 +230386,3.19998 +230412,3.3314 +230438,3.74659 +230464,3.04931 +230490,3.22233 +230516,2.8848 +230542,2.61412 +230568,3.48537 +230594,3.3806 +230620,2.91202 +230646,2.81433 +230672,3.9168 +230698,3.13937 +230724,3.55624 +230750,3.16739 +230776,3.17496 +230802,2.96155 +230828,3.39913 +230854,3.62672 +230880,3.86195 +230906,3.05456 +230932,3.50623 +230958,3.17699 +230984,3.75717 +231010,2.58199 +231036,3.32683 +231062,3.17686 +231088,3.86826 +231114,3.70103 +231140,3.407 +231166,2.89502 +231192,3.43054 +231218,3.59543 +231244,3.08943 +231270,3.339 +231296,3.2292 +231322,2.96939 +231348,3.04637 +231374,3.50674 +231400,3.2503 +231426,3.25259 +231452,3.50192 +231478,2.5215 +231504,3.33962 +231530,2.69138 +231556,3.50018 +231582,3.47915 +231608,3.06319 +231634,3.17048 +231660,3.82866 +231686,2.72522 +231712,3.25573 +231738,3.3123 +231764,3.11165 +231790,3.16557 +231816,2.96351 +231842,3.47388 +231868,2.92501 +231894,3.11361 +231920,3.08784 +231946,2.95517 +231972,3.35678 +231998,3.56561 +232024,3.30335 +232050,2.76887 +232076,3.29939 +232102,2.73827 +232128,2.86716 +232154,3.39573 +232180,3.17215 +232206,3.30233 +232232,3.1356 +232258,2.82313 +232284,3.226 +232310,3.78915 +232336,3.04401 +232362,3.35079 +232388,3.20419 +232414,3.02695 +232440,2.74824 +232466,3.3521 +232492,3.79589 +232518,3.77268 +232544,2.77184 +232570,3.07879 +232596,3.22305 +232622,3.09129 +232648,2.72653 +232674,2.90615 +232700,2.61019 +232726,2.79598 +232752,2.85928 +232778,2.96301 +232804,3.08335 +232830,3.90091 +232856,3.25477 +232882,3.25425 +232908,3.06432 +232934,3.43979 +232960,3.44026 +232986,2.69897 +233012,3.34063 +233038,2.75476 +233064,3.13751 +233090,3.58968 +233116,2.42012 +233142,2.97414 +233168,3.30686 +233194,3.14572 +233220,3.77369 +233246,3.68507 +233272,3.17889 +233298,2.79082 +233324,2.55138 +233350,3.05217 +233376,3.06453 +233402,2.54178 +233428,3.58387 +233454,3.2297 +233480,3.37282 +233506,2.43918 +233532,3.104 +233558,2.98217 +233584,3.37553 +233610,3.33273 +233636,2.75346 +233662,3.37614 +233688,3.43011 +233714,3.04723 +233740,3.08434 +233766,4.13982 +233792,3.75604 +233818,3.6413 +233844,3.2311 +233870,3.47359 +233896,3.63065 +233922,3.22228 +233948,3.2224 +233974,2.90474 +234000,3.56151 +234026,3.27382 +234052,3.12344 +234078,2.89924 +234104,3.21165 +234130,3.33233 +234156,3.46479 +234182,3.50866 +234208,3.2701 +234234,2.75964 +234260,3.52294 +234286,3.2456 +234312,3.00688 +234338,2.9255 +234364,2.84659 +234390,2.69455 +234416,2.82215 +234442,2.5526 +234468,3.40411 +234494,3.78741 +234520,2.71546 +234546,2.91698 +234572,3.70446 +234598,3.08539 +234624,3.27671 +234650,3.095 +234676,2.44309 +234702,3.42346 +234728,3.33066 +234754,2.73601 +234780,2.48764 +234806,2.97582 +234832,2.46024 +234858,3.44491 +234884,3.15268 +234910,3.53498 +234936,3.32626 +234962,2.88229 +234988,3.20729 +235014,3.46583 +235040,3.04858 +235066,3.34261 +235092,2.95955 +235118,3.20936 +235144,3.94908 +235170,3.44317 +235196,3.50609 +235222,3.48102 +235248,2.84195 +235274,2.8151 +235300,3.02024 +235326,2.95774 +235352,3.00751 +235378,3.1874 +235404,3.09876 +235430,3.08497 +235456,3.38572 +235482,3.75833 +235508,2.90157 +235534,4.529 +235560,2.93894 +235586,3.06316 +235612,3.00482 +235638,3.30933 +235664,3.48491 +235690,3.45992 +235716,2.88072 +235742,3.15194 +235768,2.8025 +235794,2.81275 +235820,3.20378 +235846,2.97066 +235872,3.58737 +235898,3.21223 +235924,2.96507 +235950,3.10308 +235976,3.20764 +236002,2.45338 +236028,3.50631 +236054,3.20464 +236080,3.73293 +236106,2.99046 +236132,2.42394 +236158,2.98691 +236184,2.93266 +236210,2.87848 +236236,3.36094 +236262,3.36365 +236288,3.268 +236314,3.11149 +236340,3.38389 +236366,2.88765 +236392,2.82567 +236418,3.76244 +236444,2.29361 +236470,2.45587 +236496,3.96655 +236522,2.71869 +236548,3.04102 +236574,2.92958 +236600,2.42432 +236626,3.59335 +236652,3.31955 +236678,3.45219 +236704,3.41765 +236730,3.95576 +236756,2.91393 +236782,3.11924 +236808,2.74999 +236834,3.19973 +236860,3.65149 +236886,2.82053 +236912,3.0188 +236938,2.8559 +236964,3.06695 +236990,3.36695 +237016,3.07355 +237042,2.75275 +237068,3.2671 +237094,3.35785 +237120,2.93105 +237146,3.15385 +237172,3.01257 +237198,2.69153 +237224,3.2025 +237250,3.06382 +237276,3.32513 +237302,3.31699 +237328,2.60483 +237354,2.75689 +237380,3.36978 +237406,2.3715 +237432,3.04282 +237458,2.81087 +237484,2.85563 +237510,3.31601 +237536,3.47718 +237562,2.28028 +237588,2.89031 +237614,3.60776 +237640,3.03114 +237666,3.3637 +237692,3.2817 +237718,3.93914 +237744,3.81185 +237770,3.40146 +237796,3.63579 +237822,3.54476 +237848,3.18312 +237874,3.37746 +237900,2.64418 +237926,3.31534 +237952,3.48527 +237978,3.48073 +238004,2.81171 +238030,3.05068 +238056,3.02998 +238082,3.22471 +238108,2.97915 +238134,2.5094 +238160,3.29062 +238186,3.89153 +238212,2.98317 +238238,3.60715 +238264,2.60147 +238290,3.39957 +238316,3.42862 +238342,3.08205 +238368,2.76878 +238394,2.86894 +238420,3.44454 +238446,2.6764 +238472,2.71738 +238498,2.86851 +238524,2.27641 +238550,3.2769 +238576,2.91757 +238602,3.66264 +238628,3.81256 +238654,3.09662 +238680,2.93083 +238706,2.42503 +238732,2.84537 +238758,3.44347 +238784,3.18339 +238810,4.65487 +238836,3.18687 +238862,3.04104 +238888,3.48245 +238914,2.83566 +238940,2.86979 +238966,2.99259 +238992,2.4566 +239018,2.97646 +239044,2.63751 +239070,2.99821 +239096,3.189 +239122,3.09827 +239148,2.48101 +239174,2.73913 +239200,3.01601 +239226,2.84054 +239252,3.31723 +239278,3.10432 +239304,3.08738 +239330,2.69957 +239356,2.37119 +239382,3.39683 +239408,3.39452 +239434,3.44843 +239460,2.50985 +239486,3.45433 +239512,3.34141 +239538,3.22975 +239564,3.12498 +239590,3.03748 +239616,3.43747 +239642,3.19387 +239668,3.00398 +239694,3.05891 +239720,3.31087 +239746,3.18651 +239772,3.0588 +239798,3.21704 +239824,3.19931 +239850,2.7752 +239876,3.779 +239902,3.56505 +239928,3.38393 +239954,3.35469 +239980,3.30809 +240006,2.92507 +240032,2.54582 +240058,3.89728 +240084,2.71653 +240110,2.71504 +240136,3.89426 +240162,3.33687 +240188,3.16765 +240214,2.73868 +240240,3.21921 +240266,2.99431 +240292,2.98415 +240318,4.20829 +240344,3.55894 +240370,3.91242 +240396,2.93123 +240422,2.77427 +240448,2.96367 +240474,3.81111 +240500,3.13774 +240526,3.15314 +240552,2.86631 +240578,2.9015 +240604,3.23099 +240630,3.45387 +240656,2.70642 +240682,3.15518 +240708,2.96903 +240734,2.99825 +240760,3.22309 +240786,2.96819 +240812,3.06497 +240838,3.08326 +240864,2.60875 +240890,2.60067 +240916,3.03608 +240942,3.08673 +240968,3.43003 +240994,2.17302 +241020,2.95882 +241046,4.13631 +241072,3.77195 +241098,3.03582 +241124,3.47509 +241150,2.29835 +241176,2.93222 +241202,3.70288 +241228,3.04132 +241254,2.8976 +241280,3.46883 +241306,2.59723 +241332,2.57838 +241358,2.71043 +241384,3.00512 +241410,3.27235 +241436,2.86346 +241462,2.97161 +241488,3.37136 +241514,3.15639 +241540,3.17553 +241566,3.48142 +241592,3.11103 +241618,3.14377 +241644,2.85618 +241670,3.39723 +241696,2.75887 +241722,2.34209 +241748,3.69634 +241774,3.35862 +241800,2.93502 +241826,3.13016 +241852,2.47114 +241878,3.13014 +241904,3.74445 +241930,3.13482 +241956,2.30706 +241982,3.37936 +242008,3.14294 +242034,3.0284 +242060,2.89885 +242086,2.58486 +242112,2.64872 +242138,3.48364 +242164,3.18214 +242190,2.95575 +242216,3.28704 +242242,3.81862 +242268,3.34882 +242294,3.41727 +242320,2.95759 +242346,2.96811 +242372,3.17742 +242398,2.54562 +242424,2.81195 +242450,3.15462 +242476,3.13163 +242502,3.30521 +242528,2.79969 +242554,2.65639 +242580,3.25817 +242606,3.23666 +242632,2.63872 +242658,2.40002 +242684,3.34322 +242710,3.05578 +242736,3.42827 +242762,3.5386 +242788,3.31076 +242814,2.65718 +242840,2.74804 +242866,3.34378 +242892,2.54779 +242918,3.21535 +242944,3.27744 +242970,3.36989 +242996,2.94119 +243022,2.89076 +243048,2.77539 +243074,2.9584 +243100,2.54293 +243126,2.81539 +243152,2.8259 +243178,2.77855 +243204,3.01406 +243230,3.26848 +243256,2.82302 +243282,3.33203 +243308,3.47236 +243334,2.72277 +243360,3.13486 +243386,2.9322 +243412,2.95171 +243438,2.90647 +243464,2.96761 +243490,3.43149 +243516,3.28135 +243542,3.61104 +243568,3.07536 +243594,2.4712 +243620,3.30852 +243646,2.8421 +243672,3.01241 +243698,2.44162 +243724,3.29836 +243750,3.41738 +243776,3.39085 +243802,3.20986 +243828,2.39725 +243854,3.47821 +243880,2.74079 +243906,3.14167 +243932,3.06151 +243958,3.00451 +243984,2.48605 +244010,2.64455 +244036,3.11207 +244062,2.58296 +244088,2.69384 +244114,2.45491 +244140,3.92712 +244166,3.54777 +244192,2.81288 +244218,3.14708 +244244,3.10421 +244270,2.89748 +244296,2.90296 +244322,2.81161 +244348,3.49158 +244374,2.90504 +244400,3.06793 +244426,3.26673 +244452,3.02217 +244478,3.24526 +244504,3.18429 +244530,2.83431 +244556,3.25983 +244582,2.91494 +244608,4.05829 +244634,3.49292 +244660,3.07434 +244686,3.56618 +244712,3.27917 +244738,2.84636 +244764,3.15757 +244790,3.01352 +244816,2.83458 +244842,3.03698 +244868,3.11885 +244894,3.30361 +244920,2.54797 +244946,3.25704 +244972,2.55242 +244998,2.62328 +245024,2.95883 +245050,2.86642 +245076,3.70827 +245102,3.15345 +245128,2.62244 +245154,2.57252 +245180,2.88954 +245206,2.59286 +245232,2.96989 +245258,2.91388 +245284,3.22544 +245310,2.7346 +245336,2.96457 +245362,2.6215 +245388,2.64637 +245414,2.87726 +245440,2.80993 +245466,3.07602 +245492,2.92226 +245518,3.52585 +245544,2.64252 +245570,4.11175 +245596,4.52747 +245622,4.25896 +245648,4.09276 +245674,3.87733 +245700,3.20532 +245726,3.82228 +245752,3.69466 +245778,3.17604 +245804,3.66689 +245830,2.90845 +245856,3.5469 +245882,3.18099 +245908,3.29115 +245934,3.97874 +245960,3.34735 +245986,3.13024 +246012,3.38447 +246038,3.35822 +246064,2.63682 +246090,3.27893 +246116,3.27638 +246142,3.03968 +246168,3.52881 +246194,3.55462 +246220,3.11371 +246246,3.47518 +246272,3.6119 +246298,3.19757 +246324,4.04807 +246350,3.37189 +246376,2.79119 +246402,3.48264 +246428,2.82194 +246454,2.65103 +246480,2.70095 +246506,3.27458 +246532,2.89736 +246558,2.81171 +246584,3.17207 +246610,2.31104 +246636,2.88525 +246662,2.81428 +246688,3.44914 +246714,3.51132 +246740,2.95821 +246766,2.91602 +246792,3.36239 +246818,2.9973 +246844,3.30271 +246870,3.2441 +246896,2.97063 +246922,2.78166 +246948,2.89429 +246974,4.92894 +247000,4.41065 +247026,4.56945 +247052,4.20768 +247078,3.69835 +247104,3.79366 +247130,3.68738 +247156,3.83772 +247182,3.95057 +247208,4.10218 +247234,3.49221 +247260,3.83958 +247286,3.7835 +247312,3.06899 +247338,3.78887 +247364,2.98583 +247390,3.35722 +247416,3.73987 +247442,3.96857 +247468,3.32938 +247494,3.62899 +247520,3.53773 +247546,2.79898 +247572,4.45384 +247598,3.60911 +247624,4.16562 +247650,4.56146 +247676,4.04021 +247702,3.70017 +247728,4.03294 +247754,4.02428 +247780,3.62308 +247806,3.50587 +247832,2.88356 +247858,3.30699 +247884,3.16987 +247910,3.59971 +247936,3.39189 +247962,3.70664 +247988,3.40272 +248014,3.74035 +248040,3.73604 +248066,3.31141 +248092,2.76801 +248118,3.29506 +248144,3.67201 +248170,3.07155 +248196,2.94495 +248222,3.64648 +248248,3.05315 +248274,3.92359 +248300,3.68933 +248326,3.07888 +248352,3.47774 +248378,3.29113 +248404,3.59172 +248430,3.25191 +248456,3.37806 +248482,3.08199 +248508,2.82559 +248534,3.13455 +248560,3.71069 +248586,3.88113 +248612,3.55831 +248638,4.7696 +248664,3.48456 +248690,3.60424 +248716,3.1458 +248742,3.00737 +248768,2.69163 +248794,3.20357 +248820,3.31448 +248846,3.10373 +248872,3.15336 +248898,3.76178 +248924,3.15994 +248950,4.06872 +248976,3.66263 +249002,4.19818 +249028,3.33848 +249054,3.27574 +249080,3.12423 +249106,4.33692 +249132,3.58729 +249158,2.73753 +249184,3.38849 +249210,3.78349 +249236,3.32546 +249262,3.13914 +249288,4.48648 +249314,3.88014 +249340,3.86508 +249366,3.52951 +249392,3.14375 +249418,3.7599 +249444,3.13046 +249470,3.62072 +249496,3.24235 +249522,3.10009 +249548,3.23233 +249574,3.09859 +249600,3.60653 +249626,3.64712 +249652,3.20061 +249678,4.02324 +249704,3.02401 +249730,3.31144 +249756,3.09563 +249782,3.17749 +249808,3.01233 +249834,2.82588 +249860,3.3457 +249886,2.29482 +249912,2.87568 +249938,3.11965 +249964,3.44194 +249990,3.50619 +250016,3.22512 +250042,3.36456 +250068,3.03492 +250094,3.62508 +250120,4.00625 +250146,3.64534 +250172,2.97619 +250198,2.86326 +250224,3.13876 +250250,3.49453 +250276,3.13682 +250302,3.18884 +250328,3.0088 +250354,3.30641 +250380,3.37802 +250406,3.72465 +250432,3.18317 +250458,3.3393 +250484,3.31479 +250510,2.62186 +250536,3.20156 +250562,3.64352 +250588,2.64274 +250614,3.54001 +250640,3.22566 +250666,3.21026 +250692,3.12434 +250718,3.15296 +250744,3.51694 +250770,2.70144 +250796,3.19707 +250822,2.43837 +250848,2.94504 +250874,3.15652 +250900,2.66253 +250926,3.50179 +250952,2.39694 +250978,2.93626 +251004,3.8007 +251030,3.09575 +251056,3.04307 +251082,3.25817 +251108,3.3145 +251134,3.00066 +251160,3.43892 +251186,3.0542 +251212,3.23885 +251238,2.60748 +251264,2.63256 +251290,2.6035 +251316,3.28187 +251342,2.98096 +251368,3.53872 +251394,3.01176 +251420,2.68001 +251446,3.67593 +251472,4.10743 +251498,3.28584 +251524,3.23755 +251550,2.64209 +251576,2.58362 +251602,2.6748 +251628,2.8742 +251654,3.44494 +251680,3.36872 +251706,2.20263 +251732,2.89194 +251758,2.94901 +251784,3.07677 +251810,3.81568 +251836,3.66566 +251862,3.62461 +251888,3.34173 +251914,3.33768 +251940,2.99035 +251966,4.41402 +251992,4.24706 +252018,3.73464 +252044,3.59904 +252070,3.2634 +252096,3.5502 +252122,3.95478 +252148,3.87833 +252174,4.1434 +252200,3.2774 +252226,3.05614 +252252,3.35238 +252278,3.15524 +252304,3.05956 +252330,3.4931 +252356,2.70605 +252382,3.18561 +252408,3.06145 +252434,2.86745 +252460,3.24499 +252486,3.9205 +252512,2.86827 +252538,3.67598 +252564,3.36733 +252590,2.7172 +252616,3.22492 +252642,2.9128 +252668,2.94047 +252694,3.06543 +252720,3.38122 +252746,3.35611 +252772,4.19919 +252798,3.8897 +252824,3.25491 +252850,3.00375 +252876,3.01672 +252902,3.02991 +252928,3.11616 +252954,2.84375 +252980,2.67193 +253006,3.10022 +253032,3.14432 +253058,3.22776 +253084,3.90369 +253110,3.35287 +253136,2.85736 +253162,2.83715 +253188,3.35465 +253214,3.33109 +253240,3.73865 +253266,3.40251 +253292,2.51513 +253318,2.95726 +253344,2.62442 +253370,3.00959 +253396,2.94589 +253422,2.44209 +253448,2.91329 +253474,2.77059 +253500,3.158 +253526,2.81935 +253552,3.00833 +253578,3.0993 +253604,3.62983 +253630,3.21081 +253656,3.25565 +253682,3.02827 +253708,3.36047 +253734,3.20898 +253760,3.89442 +253786,3.36091 +253812,3.09214 +253838,3.04841 +253864,2.99229 +253890,3.05751 +253916,3.06342 +253942,3.29746 +253968,3.77662 +253994,3.04419 +254020,3.27438 +254046,3.18436 +254072,2.86101 +254098,2.7679 +254124,2.884 +254150,2.20961 +254176,3.36202 +254202,3.10343 +254228,3.0669 +254254,2.73065 +254280,3.30385 +254306,3.39404 +254332,2.91993 +254358,2.62206 +254384,3.44768 +254410,3.47402 +254436,3.40516 +254462,2.70983 +254488,2.54548 +254514,2.69154 +254540,3.13766 +254566,2.92313 +254592,3.24928 +254618,3.64464 +254644,3.18366 +254670,3.80847 +254696,3.96184 +254722,4.1314 +254748,2.97746 +254774,2.82253 +254800,2.82288 +254826,2.35203 +254852,3.22321 +254878,3.03166 +254904,2.7264 +254930,3.24221 +254956,2.90675 +254982,3.73831 +255008,3.21477 +255034,2.49546 +255060,2.53479 +255086,3.48485 +255112,3.50815 +255138,2.86329 +255164,2.7901 +255190,3.02158 +255216,3.37429 +255242,3.32182 +255268,3.02799 +255294,3.57634 +255320,3.01568 +255346,2.8095 +255372,3.89081 +255398,3.03475 +255424,2.73811 +255450,3.27212 +255476,2.98588 +255502,2.8508 +255528,3.44982 +255554,3.27396 +255580,3.34241 +255606,3.60316 +255632,3.15316 +255658,3.18613 +255684,2.74576 +255710,3.3652 +255736,2.75783 +255762,2.94468 +255788,2.9387 +255814,3.68197 +255840,3.17385 +255866,3.11395 +255892,2.95318 +255918,3.05547 +255944,3.07548 +255970,3.66482 +255996,3.1249 +256022,2.99355 +256048,2.42745 +256074,3.33662 +256100,2.83132 +256126,2.61449 +256152,2.83135 +256178,2.19631 +256204,2.70971 +256230,3.58921 +256256,4.30836 +256282,3.78118 +256308,4.00194 +256334,3.51198 +256360,3.06573 +256386,3.25455 +256412,3.85481 +256438,3.01671 +256464,2.88279 +256490,2.71146 +256516,2.6021 +256542,3.81857 +256568,3.26023 +256594,3.55095 +256620,3.65348 +256646,3.30293 +256672,3.47186 +256698,3.4374 +256724,3.29781 +256750,3.09559 +256776,2.89701 +256802,3.07398 +256828,3.21624 +256854,3.20987 +256880,3.39157 +256906,3.18115 +256932,2.73061 +256958,3.84224 +256984,3.28328 +257010,3.20175 +257036,2.61429 +257062,3.22248 +257088,2.66126 +257114,2.76558 +257140,3.12474 +257166,3.7204 +257192,2.72603 +257218,2.95617 +257244,3.03172 +257270,3.14596 +257296,2.98232 +257322,3.03764 +257348,2.64045 +257374,3.52502 +257400,4.04541 +257426,3.56309 +257452,3.22224 +257478,3.48943 +257504,2.70243 +257530,3.02323 +257556,3.36391 +257582,2.81534 +257608,2.62129 +257634,2.66983 +257660,3.55612 +257686,2.80724 +257712,2.86891 +257738,2.73562 +257764,3.24162 +257790,2.80228 +257816,2.75455 +257842,2.5588 +257868,3.0274 +257894,2.07454 +257920,3.02908 +257946,3.13689 +257972,3.19794 +257998,2.81406 +258024,2.33968 +258050,2.49866 +258076,2.97761 +258102,2.74908 +258128,2.94957 +258154,2.69706 +258180,2.51849 +258206,2.74886 +258232,3.1452 +258258,2.65622 +258284,3.22703 +258310,3.46336 +258336,3.00125 +258362,2.7256 +258388,2.81046 +258414,2.98215 +258440,2.9085 +258466,3.4751 +258492,3.32924 +258518,2.99051 +258544,3.28079 +258570,3.22508 +258596,3.48532 +258622,2.84524 +258648,2.93483 +258674,2.95834 +258700,3.21454 +258726,1.95529 +258752,2.63561 +258778,3.38479 +258804,3.22515 +258830,3.3919 +258856,2.87158 +258882,3.67567 +258908,3.90032 +258934,3.51276 +258960,2.74547 +258986,2.77151 +259012,2.43411 +259038,2.9647 +259064,3.27672 +259090,3.33275 +259116,2.98345 +259142,2.81534 +259168,2.85689 +259194,2.34409 +259220,3.05576 +259246,4.17885 +259272,2.86429 +259298,3.37858 +259324,2.25935 +259350,2.35863 +259376,3.59772 +259402,2.95201 +259428,4.4619 +259454,3.76485 +259480,3.87787 +259506,3.03297 +259532,3.87806 +259558,3.2353 +259584,3.27723 +259610,2.94506 +259636,3.60639 +259662,2.7421 +259688,3.09286 +259714,2.99918 +259740,3.64591 +259766,2.74898 +259792,2.53203 +259818,3.11135 +259844,3.27743 +259870,3.00965 +259896,3.50001 +259922,3.00097 +259948,2.89295 +259974,3.15239 +260000,3.14329 +260026,2.78979 +260052,2.86904 +260078,2.92818 +260104,2.88795 +260130,3.52111 +260156,3.62187 +260182,3.41654 +260208,2.70058 +260234,2.86111 +260260,2.71244 +260286,2.76389 +260312,3.14661 +260338,2.92467 +260364,1.96672 +260390,2.65928 +260416,3.67584 +260442,2.91327 +260468,2.50489 +260494,2.94513 +260520,2.92777 +260546,2.86798 +260572,3.00631 +260598,3.60619 +260624,2.72902 +260650,3.57353 +260676,2.87362 +260702,3.04103 +260728,2.77228 +260754,3.66954 +260780,3.46031 +260806,3.44911 +260832,3.66653 +260858,3.04019 +260884,2.58042 +260910,3.14576 +260936,2.80485 +260962,3.6803 +260988,4.09409 +261014,3.80229 +261040,3.21465 +261066,3.03562 +261092,3.02429 +261118,2.25781 +261144,2.60092 +261170,3.81425 +261196,2.92533 +261222,3.25155 +261248,2.3519 +261274,2.71002 +261300,3.22712 +261326,2.65265 +261352,4.1039 +261378,4.81211 +261404,4.58351 +261430,5.27375 +261456,4.86416 +261482,4.94664 +261508,4.69737 +261534,3.73661 +261560,4.02491 +261586,3.85343 +261612,3.6621 +261638,3.92642 +261664,4.02388 +261690,3.19034 +261716,3.72536 +261742,3.41871 +261768,3.30094 +261794,3.60374 +261820,3.21114 +261846,2.95189 +261872,3.14948 +261898,3.26541 +261924,2.47514 +261950,2.95468 +261976,3.29808 +262002,2.66898 +262028,3.41505 +262054,3.01944 +262080,2.58695 +262106,2.7903 +262132,2.71583 +262158,3.29649 +262184,2.87112 +262210,2.33385 +262236,3.1778 +262262,3.01905 +262288,3.18446 +262314,4.31229 +262340,3.88175 +262366,3.64517 +262392,3.42234 +262418,3.21687 +262444,3.24896 +262470,3.81216 +262496,2.56442 +262522,3.7058 +262548,3.27179 +262574,3.46856 +262600,2.81724 +262626,3.04117 +262652,3.42422 +262678,2.74506 +262704,2.98692 +262730,3.30269 +262756,3.43111 +262782,4.27385 +262808,2.81414 +262834,2.41608 +262860,3.00433 +262886,2.81356 +262912,3.38266 +262938,2.81184 +262964,3.41875 +262990,2.67101 +263016,2.58294 +263042,3.0415 +263068,3.47685 +263094,2.9357 +263120,3.18634 +263146,3.21524 +263172,3.07805 +263198,2.80087 +263224,2.91026 +263250,2.8479 +263276,3.04311 +263302,3.41883 +263328,3.87358 +263354,2.96117 +263380,3.01774 +263406,3.38042 +263432,2.59487 +263458,2.60649 +263484,3.349 +263510,3.3726 +263536,2.82836 +263562,2.4725 +263588,3.14645 +263614,2.53363 +263640,3.43991 +263666,2.57503 +263692,2.98476 +263718,3.01863 +263744,3.28572 +263770,3.45888 +263796,3.35365 +263822,3.72622 +263848,2.75178 +263874,3.43577 +263900,3.39785 +263926,2.92945 +263952,2.52101 +263978,3.22273 +264004,3.00324 +264030,2.8782 +264056,3.40127 +264082,3.16077 +264108,3.7588 +264134,3.33232 +264160,3.94321 +264186,3.2096 +264212,3.63934 +264238,2.94819 +264264,3.01881 +264290,2.17228 +264316,2.75126 +264342,2.86026 +264368,3.05849 +264394,2.64651 +264420,2.8913 +264446,3.14118 +264472,2.98519 +264498,2.82664 +264524,3.13713 +264550,4.09872 +264576,2.81567 +264602,2.98861 +264628,3.0442 +264654,2.25561 +264680,3.62723 +264706,3.49382 +264732,3.03017 +264758,2.62931 +264784,3.41985 +264810,3.14568 +264836,2.39166 +264862,2.53264 +264888,2.73912 +264914,2.9496 +264940,2.88931 +264966,3.8269 +264992,3.29227 +265018,3.44313 +265044,3.23593 +265070,3.11406 +265096,2.63279 +265122,2.86048 +265148,2.40569 +265174,2.94476 +265200,2.92342 +265226,2.94528 +265252,2.29114 +265278,2.77904 +265304,3.45937 +265330,3.5902 +265356,3.07291 +265382,3.27254 +265408,2.81479 +265434,3.58899 +265460,3.48249 +265486,3.146 +265512,2.73968 +265538,2.60291 +265564,3.10352 +265590,2.73717 +265616,2.97066 +265642,3.18621 +265668,3.92653 +265694,2.71332 +265720,3.52437 +265746,2.75786 +265772,3.29674 +265798,2.98417 +265824,3.43313 +265850,2.53774 +265876,2.7776 +265902,2.78674 +265928,2.72808 +265954,3.46596 +265980,3.47742 +266006,3.16493 +266032,3.00137 +266058,2.71099 +266084,2.63323 +266110,2.63168 +266136,3.06 +266162,2.98917 +266188,2.95124 +266214,3.14806 +266240,3.45219 +266266,2.81446 +266292,2.97095 +266318,3.29207 +266344,3.19754 +266370,2.37309 +266396,2.96761 +266422,3.32649 +266448,3.48187 +266474,2.71472 +266500,2.22451 +266526,2.62976 +266552,2.69819 +266578,2.8781 +266604,3.62751 +266630,2.987 +266656,3.19665 +266682,2.94481 +266708,2.69832 +266734,3.07552 +266760,3.20956 +266786,2.63282 +266812,2.87594 +266838,3.84185 +266864,3.08292 +266890,4.26757 +266916,3.68327 +266942,3.07189 +266968,2.59315 +266994,2.5026 +267020,3.14685 +267046,3.54892 +267072,3.08415 +267098,3.35216 +267124,3.75958 +267150,2.88002 +267176,3.34952 +267202,3.34617 +267228,2.9038 +267254,3.46307 +267280,3.06125 +267306,3.30359 +267332,2.91364 +267358,2.7526 +267384,2.61516 +267410,3.23247 +267436,3.858 +267462,2.72224 +267488,3.38132 +267514,2.94814 +267540,3.15777 +267566,3.13837 +267592,3.95478 +267618,2.65553 +267644,2.88234 +267670,2.24829 +267696,2.91569 +267722,2.82994 +267748,4.44079 +267774,3.0831 +267800,3.42595 +267826,3.07558 +267852,2.66259 +267878,3.30418 +267904,3.70974 +267930,4.35051 +267956,3.16129 +267982,3.31373 +268008,2.82519 +268034,2.87786 +268060,3.27585 +268086,3.81477 +268112,3.39731 +268138,3.47705 +268164,3.99645 +268190,3.74282 +268216,3.07964 +268242,3.30346 +268268,3.65079 +268294,3.03211 +268320,3.27365 +268346,2.95781 +268372,3.02525 +268398,2.88489 +268424,2.92836 +268450,2.83729 +268476,2.43817 +268502,3.19979 +268528,3.39142 +268554,3.00131 +268580,2.65413 +268606,2.96466 +268632,2.81982 +268658,2.8928 +268684,3.88851 +268710,3.19593 +268736,2.94786 +268762,2.66445 +268788,3.50634 +268814,3.87198 +268840,2.78103 +268866,2.82281 +268892,2.79482 +268918,2.82956 +268944,2.36053 +268970,2.54327 +268996,2.59187 +269022,3.7402 +269048,3.68942 +269074,2.66238 +269100,3.20619 +269126,2.85202 +269152,3.46987 +269178,3.38675 +269204,2.99502 +269230,3.14952 +269256,2.762 +269282,2.62113 +269308,3.42371 +269334,2.32683 +269360,3.29214 +269386,3.05303 +269412,3.05236 +269438,2.62308 +269464,2.9892 +269490,3.72094 +269516,3.44993 +269542,3.00649 +269568,3.77818 +269594,2.33517 +269620,2.34507 +269646,3.14544 +269672,2.60403 +269698,2.95391 +269724,2.14682 +269750,2.62068 +269776,2.96233 +269802,3.16798 +269828,3.02221 +269854,2.85696 +269880,2.49399 +269906,2.8067 +269932,2.96027 +269958,2.56285 +269984,2.86216 +270010,3.69701 +270036,3.27237 +270062,2.88889 +270088,3.24928 +270114,3.67219 +270140,2.61431 +270166,2.7456 +270192,4.25518 +270218,3.57341 +270244,2.79958 +270270,2.68747 +270296,3.04203 +270322,3.55601 +270348,3.36749 +270374,3.3684 +270400,3.18285 +270426,2.99551 +270452,3.3336 +270478,3.28856 +270504,3.09174 +270530,2.82012 +270556,3.42155 +270582,2.54159 +270608,3.38393 +270634,2.77337 +270660,4.14869 +270686,3.30779 +270712,3.59291 +270738,2.99878 +270764,3.59084 +270790,3.3164 +270816,3.73048 +270842,3.50091 +270868,3.09625 +270894,3.4404 +270920,2.93367 +270946,3.77654 +270972,3.27366 +270998,2.71304 +271024,2.67321 +271050,2.98219 +271076,3.11702 +271102,3.21432 +271128,3.05878 +271154,3.80098 +271180,3.15248 +271206,2.98917 +271232,2.71394 +271258,3.51943 +271284,3.88563 +271310,3.96534 +271336,3.47347 +271362,2.72486 +271388,2.90297 +271414,2.61327 +271440,2.92784 +271466,2.71862 +271492,3.81578 +271518,2.87867 +271544,3.0866 +271570,3.13865 +271596,2.98967 +271622,2.93137 +271648,2.45783 +271674,2.51928 +271700,2.76343 +271726,3.44243 +271752,2.52204 +271778,3.4895 +271804,3.28713 +271830,2.86179 +271856,4.11639 +271882,3.07681 +271908,3.43591 +271934,3.46489 +271960,3.00559 +271986,2.87613 +272012,3.0857 +272038,2.90994 +272064,2.88549 +272090,2.84071 +272116,2.43282 +272142,3.06514 +272168,3.02243 +272194,1.97964 +272220,2.95839 +272246,2.76056 +272272,2.5744 +272298,2.90087 +272324,2.66209 +272350,3.33919 +272376,3.58527 +272402,3.03286 +272428,2.67705 +272454,3.42617 +272480,3.25616 +272506,2.95406 +272532,3.07629 +272558,2.74403 +272584,3.71304 +272610,3.48049 +272636,3.04402 +272662,2.97869 +272688,3.11827 +272714,3.22744 +272740,3.19407 +272766,2.93308 +272792,2.91742 +272818,2.67163 +272844,3.15902 +272870,2.90129 +272896,3.83408 +272922,3.29375 +272948,2.59839 +272974,2.07311 +273000,2.74166 +273026,3.74026 +273052,3.28767 +273078,2.87747 +273104,2.23849 +273130,3.28236 +273156,3.21709 +273182,3.32301 +273208,3.20528 +273234,2.87543 +273260,3.41727 +273286,3.35069 +273312,3.28071 +273338,3.48796 +273364,2.48445 +273390,3.20793 +273416,2.19684 +273442,3.341 +273468,3.03034 +273494,3.44479 +273520,2.90665 +273546,2.7422 +273572,2.54636 +273598,2.49202 +273624,2.91035 +273650,2.77862 +273676,2.46885 +273702,3.38718 +273728,2.34185 +273754,2.83559 +273780,2.78636 +273806,2.51279 +273832,3.16258 +273858,2.47289 +273884,2.04201 +273910,2.14089 +273936,3.83047 +273962,2.5533 +273988,2.82879 +274014,2.87397 +274040,2.17508 +274066,3.52531 +274092,2.66698 +274118,3.27794 +274144,3.21025 +274170,3.33226 +274196,2.68456 +274222,3.69197 +274248,3.43895 +274274,2.83053 +274300,2.80459 +274326,2.70866 +274352,2.38396 +274378,3.97628 +274404,2.42376 +274430,2.71258 +274456,2.91559 +274482,2.60177 +274508,3.25658 +274534,2.99407 +274560,2.32331 +274586,2.69934 +274612,2.83863 +274638,3.62755 +274664,2.7452 +274690,2.70962 +274716,3.21587 +274742,3.12125 +274768,3.00338 +274794,2.6831 +274820,2.99311 +274846,2.75038 +274872,3.40898 +274898,2.63474 +274924,2.91991 +274950,3.28805 +274976,2.9618 +275002,3.08844 +275028,2.59687 +275054,2.63018 +275080,2.67027 +275106,1.96289 +275132,3.63886 +275158,2.98164 +275184,2.72249 +275210,2.97163 +275236,3.63451 +275262,3.41786 +275288,3.87071 +275314,3.52046 +275340,3.43683 +275366,3.38447 +275392,3.69789 +275418,3.79111 +275444,3.21111 +275470,4.06322 +275496,2.55104 +275522,2.59846 +275548,3.38148 +275574,2.79735 +275600,3.30512 +275626,2.99043 +275652,3.67927 +275678,2.97524 +275704,2.95747 +275730,3.11316 +275756,2.62933 +275782,3.17196 +275808,2.69793 +275834,2.55102 +275860,2.50071 +275886,2.8478 +275912,3.52588 +275938,2.99336 +275964,4.24629 +275990,2.85839 +276016,3.4518 +276042,2.83945 +276068,2.57499 +276094,3.30466 +276120,2.85717 +276146,2.90641 +276172,2.85252 +276198,2.83328 +276224,3.66324 +276250,2.64608 +276276,2.94425 +276302,3.65168 +276328,3.17499 +276354,3.16945 +276380,3.29927 +276406,3.53579 +276432,2.95137 +276458,4.08143 +276484,2.75756 +276510,3.64582 +276536,3.54759 +276562,2.90132 +276588,3.34864 +276614,3.07931 +276640,2.54932 +276666,3.46326 +276692,2.72271 +276718,2.49265 +276744,2.55595 +276770,2.38432 +276796,3.19327 +276822,2.73165 +276848,3.01124 +276874,2.6516 +276900,2.96733 +276926,2.72367 +276952,3.03284 +276978,2.24955 +277004,2.81192 +277030,3.2185 +277056,2.71197 +277082,3.60801 +277108,3.18987 +277134,2.57103 +277160,2.96855 +277186,2.85994 +277212,2.62212 +277238,4.01882 +277264,2.46016 +277290,3.55435 +277316,2.44296 +277342,3.31155 +277368,3.69926 +277394,3.31786 +277420,3.00811 +277446,2.96218 +277472,2.66213 +277498,3.42514 +277524,3.21848 +277550,3.42176 +277576,3.23812 +277602,2.71549 +277628,2.57347 +277654,2.7279 +277680,2.08565 +277706,2.36857 +277732,3.40764 +277758,3.31587 +277784,2.86513 +277810,3.49262 +277836,2.55627 +277862,2.86398 +277888,2.63243 +277914,2.85953 +277940,2.5501 +277966,2.69551 +277992,3.64152 +278018,3.06551 +278044,2.51957 +278070,3.03317 +278096,3.40272 +278122,2.92774 +278148,2.93883 +278174,3.52289 +278200,3.10207 +278226,1.79743 +278252,2.92422 +278278,2.79812 +278304,2.27127 +278330,2.98251 +278356,3.15271 +278382,3.25422 +278408,3.37048 +278434,2.56041 +278460,2.31013 +278486,2.79024 +278512,3.83964 +278538,4.38098 +278564,4.47249 +278590,4.38787 +278616,4.23531 +278642,4.32558 +278668,4.0811 +278694,3.43901 +278720,3.52451 +278746,3.16999 +278772,3.10825 +278798,3.17948 +278824,3.5371 +278850,2.9298 +278876,3.37377 +278902,3.09733 +278928,3.49071 +278954,3.24349 +278980,2.762 +279006,3.45649 +279032,3.11326 +279058,3.20418 +279084,3.46224 +279110,2.93654 +279136,3.32041 +279162,3.71562 +279188,3.49692 +279214,2.87715 +279240,3.35944 +279266,3.87656 +279292,3.03541 +279318,2.63048 +279344,3.49765 +279370,2.45207 +279396,2.76044 +279422,3.48142 +279448,2.82128 +279474,2.96566 +279500,3.37542 +279526,3.11864 +279552,4.07007 +279578,2.78085 +279604,3.08658 +279630,2.58847 +279656,2.83892 +279682,3.21761 +279708,3.43516 +279734,2.74405 +279760,2.65113 +279786,2.76601 +279812,2.36434 +279838,3.043 +279864,3.00187 +279890,2.98906 +279916,2.58325 +279942,2.6796 +279968,2.62033 +279994,2.67258 +280020,2.50882 +280046,3.3061 +280072,3.71488 +280098,2.56287 +280124,2.87038 +280150,2.7658 +280176,2.27754 +280202,2.78648 +280228,2.81945 +280254,2.81417 +280280,2.33714 +280306,3.60319 +280332,2.99178 +280358,2.86715 +280384,2.83784 +280410,3.37784 +280436,3.35714 +280462,3.5517 +280488,3.15865 +280514,2.89068 +280540,3.77494 +280566,2.84329 +280592,2.98975 +280618,2.9047 +280644,2.49866 +280670,2.95645 +280696,3.79276 +280722,3.00571 +280748,3.00879 +280774,2.41079 +280800,3.23851 +280826,2.75861 +280852,3.01033 +280878,2.79766 +280904,3.18756 +280930,3.3389 +280956,2.84102 +280982,2.77015 +281008,2.29562 +281034,2.68756 +281060,2.53724 +281086,2.33132 +281112,2.24182 +281138,3.1545 +281164,3.43364 +281190,3.16869 +281216,3.26003 +281242,2.6966 +281268,2.91867 +281294,2.79804 +281320,2.42382 +281346,2.98192 +281372,2.88183 +281398,3.38917 +281424,2.96547 +281450,2.87482 +281476,3.06656 +281502,3.00326 +281528,2.31639 +281554,2.9217 +281580,2.53534 +281606,2.67233 +281632,3.33559 +281658,3.70705 +281684,2.52999 +281710,3.06067 +281736,3.50865 +281762,2.39705 +281788,2.38256 +281814,3.24404 +281840,3.08602 +281866,3.06192 +281892,2.97262 +281918,3.38113 +281944,3.08364 +281970,3.04681 +281996,3.09961 +282022,2.76732 +282048,2.4431 +282074,3.095 +282100,2.90803 +282126,3.2584 +282152,2.9907 +282178,2.65757 +282204,2.4382 +282230,2.69851 +282256,2.59288 +282282,3.70461 +282308,3.16772 +282334,2.69491 +282360,3.11978 +282386,2.72166 +282412,2.69659 +282438,2.42689 +282464,2.7377 +282490,2.83247 +282516,3.16138 +282542,2.60254 +282568,2.39208 +282594,2.59732 +282620,3.17074 +282646,3.03477 +282672,2.96043 +282698,2.27996 +282724,4.003 +282750,3.2091 +282776,2.95472 +282802,2.933 +282828,2.74809 +282854,2.68393 +282880,3.02362 +282906,3.52903 +282932,3.47784 +282958,3.18331 +282984,2.5543 +283010,2.67991 +283036,3.52126 +283062,3.70746 +283088,2.37248 +283114,3.32172 +283140,2.65763 +283166,3.45164 +283192,3.1489 +283218,2.76654 +283244,3.7439 +283270,3.7827 +283296,4.37004 +283322,3.71247 +283348,3.90835 +283374,3.4409 +283400,4.62861 +283426,3.9168 +283452,4.11374 +283478,4.38897 +283504,3.44155 +283530,3.53671 +283556,3.68545 +283582,3.1553 +283608,3.02169 +283634,2.84092 +283660,2.93094 +283686,2.67777 +283712,2.95052 +283738,3.02228 +283764,3.33033 +283790,3.03282 +283816,3.10035 +283842,3.24928 +283868,3.95248 +283894,3.60366 +283920,3.48043 +283946,3.107 +283972,2.95982 +283998,2.70139 +284024,2.99869 +284050,2.22997 +284076,3.30089 +284102,2.59098 +284128,3.00193 +284154,2.61841 +284180,3.11648 +284206,2.92436 +284232,3.32292 +284258,3.01995 +284284,2.99407 +284310,2.74829 +284336,3.00436 +284362,3.3707 +284388,3.0734 +284414,2.05281 +284440,2.73696 +284466,2.65138 +284492,3.09663 +284518,3.52886 +284544,2.95739 +284570,2.82708 +284596,2.94676 +284622,2.67539 +284648,2.60958 +284674,2.45606 +284700,2.44557 +284726,4.93658 +284752,3.87201 +284778,3.04061 +284804,3.33024 +284830,3.4957 +284856,3.65663 +284882,3.53594 +284908,3.21817 +284934,3.85315 +284960,3.11631 +284986,3.37746 +285012,3.49517 +285038,3.48898 +285064,3.00662 +285090,3.23181 +285116,3.17732 +285142,3.74461 +285168,2.6719 +285194,3.57306 +285220,3.27201 +285246,3.00597 +285272,2.82394 +285298,3.28224 +285324,2.90241 +285350,2.76768 +285376,3.1398 +285402,3.47017 +285428,3.28334 +285454,2.9275 +285480,3.23876 +285506,4.1887 +285532,4.00986 +285558,3.69478 +285584,3.88849 +285610,3.46886 +285636,2.8457 +285662,2.62393 +285688,3.44644 +285714,2.86298 +285740,3.20152 +285766,2.97166 +285792,3.11339 +285818,3.25769 +285844,3.73921 +285870,3.13787 +285896,3.47763 +285922,3.139 +285948,4.04263 +285974,3.80616 +286000,3.4893 +286026,3.89048 +286052,3.62802 +286078,2.7567 +286104,3.43879 +286130,3.4621 +286156,2.71681 +286182,3.48812 +286208,3.54999 +286234,3.36615 +286260,3.40499 +286286,2.91129 +286312,2.88536 +286338,2.73143 +286364,4.49378 +286390,3.29396 +286416,3.72409 +286442,3.62748 +286468,3.49053 +286494,3.4303 +286520,3.58166 +286546,3.12117 +286572,3.27794 +286598,3.28569 +286624,3.33398 +286650,3.08222 +286676,3.36603 +286702,3.41763 +286728,3.50218 +286754,2.83242 +286780,3.38967 +286806,3.002 +286832,3.79796 +286858,3.5597 +286884,2.78694 +286910,2.91828 +286936,3.36104 +286962,3.77095 +286988,3.8005 +287014,3.88454 +287040,4.13669 +287066,3.35612 +287092,3.10082 +287118,3.71724 +287144,3.31333 +287170,2.76433 +287196,3.03558 +287222,3.05246 +287248,3.37425 +287274,3.12879 +287300,3.81609 +287326,2.93147 +287352,3.66641 +287378,3.48765 +287404,3.48215 +287430,3.50949 +287456,2.78454 +287482,3.44302 +287508,3.57773 +287534,3.51049 +287560,3.75134 +287586,3.60682 +287612,2.69822 +287638,3.07619 +287664,2.80822 +287690,3.17604 +287716,3.30806 +287742,2.24447 +287768,2.96034 +287794,3.64496 +287820,2.59187 +287846,3.3267 +287872,3.83187 +287898,3.5277 +287924,3.24504 +287950,3.02397 +287976,3.40881 +288002,2.94889 +288028,2.59433 +288054,3.097 +288080,3.39426 +288106,3.50546 +288132,3.14394 +288158,3.08946 +288184,2.82405 +288210,2.39919 +288236,2.70298 +288262,2.5602 +288288,2.60789 +288314,4.08523 +288340,2.87709 +288366,2.98075 +288392,3.52935 +288418,3.13074 +288444,3.10946 +288470,2.82478 +288496,2.76256 +288522,2.9065 +288548,3.02704 +288574,3.14465 +288600,3.47496 +288626,3.06822 +288652,3.4652 +288678,3.03218 +288704,3.35142 +288730,2.47686 +288756,2.74391 +288782,2.81057 +288808,2.70543 +288834,2.88911 +288860,2.67603 +288886,3.93519 +288912,3.30075 +288938,4.27572 +288964,5.01842 +288990,4.11467 +289016,4.53061 +289042,4.31921 +289068,3.65433 +289094,3.81278 +289120,3.46692 +289146,3.76595 +289172,3.26996 +289198,4.18487 +289224,3.57385 +289250,3.59102 +289276,3.32225 +289302,3.72099 +289328,3.66403 +289354,2.99904 +289380,3.30367 +289406,3.05539 +289432,3.43084 +289458,2.92305 +289484,2.78697 +289510,3.16741 +289536,3.62487 +289562,3.50683 +289588,3.28311 +289614,3.05654 +289640,2.90728 +289666,3.54649 +289692,4.24145 +289718,3.18073 +289744,3.03977 +289770,3.14235 +289796,2.81019 +289822,3.10367 +289848,3.0245 +289874,2.89666 +289900,2.48098 +289926,2.8727 +289952,2.81337 +289978,2.94098 +290004,3.4351 +290030,2.48117 +290056,3.02319 +290082,3.00972 +290108,3.53685 +290134,2.93603 +290160,3.05306 +290186,2.92984 +290212,2.99628 +290238,3.60309 +290264,3.01303 +290290,2.81276 +290316,2.79205 +290342,3.32389 +290368,2.8292 +290394,2.66292 +290420,3.11104 +290446,2.36993 +290472,2.9032 +290498,3.05475 +290524,2.76612 +290550,2.71337 +290576,2.91354 +290602,3.00338 +290628,2.544 +290654,3.53526 +290680,3.19527 +290706,2.68025 +290732,3.14856 +290758,3.4707 +290784,3.06791 +290810,3.06257 +290836,2.82218 +290862,2.60912 +290888,3.41753 +290914,2.92795 +290940,2.60493 +290966,2.49668 +290992,2.80046 +291018,2.89403 +291044,2.95256 +291070,2.96231 +291096,2.63062 +291122,2.88288 +291148,2.87532 +291174,3.69029 +291200,2.95989 +291226,2.90312 +291252,2.81561 +291278,2.51296 +291304,3.00635 +291330,2.56638 +291356,3.29196 +291382,2.95014 +291408,3.28579 +291434,2.26989 +291460,2.64617 +291486,3.01172 +291512,3.34279 +291538,3.40289 +291564,2.8099 +291590,3.14366 +291616,3.03156 +291642,3.08727 +291668,2.85443 +291694,2.94414 +291720,3.15413 +291746,3.02306 +291772,3.39384 +291798,3.07592 +291824,3.31995 +291850,3.50649 +291876,3.16989 +291902,2.8492 +291928,3.01261 +291954,2.70191 +291980,3.12866 +292006,3.3256 +292032,2.98725 +292058,2.41309 +292084,2.59527 +292110,3.53128 +292136,2.52607 +292162,2.77223 +292188,2.36811 +292214,3.60593 +292240,2.42723 +292266,2.61914 +292292,3.67091 +292318,2.17504 +292344,3.20161 +292370,3.29362 +292396,4.484 +292422,3.9283 +292448,3.37865 +292474,3.31068 +292500,3.09955 +292526,2.82458 +292552,2.08477 +292578,2.69588 +292604,2.87345 +292630,2.62148 +292656,3.46159 +292682,2.93902 +292708,2.70984 +292734,2.75216 +292760,3.1959 +292786,2.85027 +292812,3.30399 +292838,3.38296 +292864,3.30561 +292890,3.28678 +292916,3.27022 +292942,3.18897 +292968,3.19221 +292994,2.55448 +293020,3.45324 +293046,2.96481 +293072,2.43846 +293098,3.03317 +293124,2.24599 +293150,2.80886 +293176,2.82997 +293202,2.31031 +293228,2.92749 +293254,4.20539 +293280,3.1474 +293306,3.29418 +293332,3.39574 +293358,2.90735 +293384,3.34225 +293410,2.9438 +293436,2.80479 +293462,2.69749 +293488,2.67798 +293514,3.09128 +293540,2.78425 +293566,2.37825 +293592,3.52015 +293618,3.3747 +293644,2.73151 +293670,2.98802 +293696,2.88472 +293722,3.77599 +293748,3.15193 +293774,2.94981 +293800,3.64912 +293826,3.66784 +293852,3.8391 +293878,3.35483 +293904,3.75273 +293930,2.98957 +293956,3.01353 +293982,2.9371 +294008,3.24307 +294034,3.62985 +294060,3.47426 +294086,3.47684 +294112,3.07048 +294138,2.77279 +294164,4.06515 +294190,3.46971 +294216,3.62059 +294242,4.05525 +294268,3.47118 +294294,3.60179 +294320,3.13257 +294346,3.2661 +294372,3.88968 +294398,3.28935 +294424,3.01456 +294450,2.87635 +294476,3.5427 +294502,3.32259 +294528,3.75452 +294554,3.48571 +294580,3.14043 +294606,3.52012 +294632,2.57573 +294658,3.23181 +294684,2.81904 +294710,2.85695 +294736,3.4403 +294762,3.34624 +294788,3.26926 +294814,3.30806 +294840,2.71458 +294866,2.93228 +294892,3.2793 +294918,3.50131 +294944,3.56949 +294970,3.63015 +294996,3.33929 +295022,3.8667 +295048,2.74975 +295074,3.4423 +295100,3.56677 +295126,3.10469 +295152,3.5694 +295178,2.58812 +295204,3.30789 +295230,3.48753 +295256,2.74563 +295282,2.45105 +295308,3.26559 +295334,3.36463 +295360,2.93304 +295386,3.13992 +295412,2.76182 +295438,3.12607 +295464,3.36659 +295490,3.10883 +295516,3.86381 +295542,3.27709 +295568,2.94293 +295594,3.60827 +295620,2.97532 +295646,2.36037 +295672,3.12393 +295698,2.29363 +295724,3.24747 +295750,3.64886 +295776,2.92434 +295802,2.48239 +295828,2.65686 +295854,3.59397 +295880,2.35931 +295906,3.27716 +295932,3.46263 +295958,3.33821 +295984,2.44108 +296010,3.36529 +296036,2.49592 +296062,2.85681 +296088,3.08811 +296114,2.84046 +296140,3.32652 +296166,2.72277 +296192,2.45281 +296218,2.74442 +296244,2.57196 +296270,2.57324 +296296,2.79097 +296322,2.76338 +296348,3.15834 +296374,3.22473 +296400,2.57899 +296426,4.03497 +296452,3.15403 +296478,2.79908 +296504,2.72781 +296530,2.72451 +296556,3.05312 +296582,4.08946 +296608,3.54134 +296634,3.25685 +296660,3.78634 +296686,3.63063 +296712,3.05221 +296738,4.12126 +296764,2.74213 +296790,3.79254 +296816,3.3717 +296842,2.92162 +296868,3.10932 +296894,3.23382 +296920,3.67362 +296946,3.66228 +296972,3.49823 +296998,3.48124 +297024,2.74091 +297050,3.4393 +297076,3.41183 +297102,2.87175 +297128,3.27047 +297154,3.12417 +297180,2.38778 +297206,3.11286 +297232,2.12655 +297258,3.72091 +297284,2.84697 +297310,3.08314 +297336,2.9049 +297362,3.26969 +297388,2.96899 +297414,2.57076 +297440,3.15474 +297466,3.35234 +297492,3.46457 +297518,3.82888 +297544,3.60923 +297570,2.65755 +297596,2.96784 +297622,2.75332 +297648,3.18265 +297674,3.26979 +297700,2.67929 +297726,3.43747 +297752,3.67279 +297778,3.78339 +297804,3.36344 +297830,3.01217 +297856,3.43082 +297882,3.90577 +297908,4.93851 +297934,4.40331 +297960,3.6218 +297986,4.32548 +298012,3.31547 +298038,3.72424 +298064,3.81499 +298090,3.71431 +298116,3.15859 +298142,3.65003 +298168,3.96229 +298194,3.80615 +298220,3.85744 +298246,4.18444 +298272,3.6767 +298298,3.81588 +298324,4.02036 +298350,4.18994 +298376,4.34413 +298402,3.63853 +298428,3.56746 +298454,3.08639 +298480,4.31773 +298506,3.58362 +298532,3.97169 +298558,3.5076 +298584,4.23791 +298610,4.07722 +298636,3.81302 +298662,3.35983 +298688,3.59472 +298714,3.63515 +298740,3.34158 +298766,3.71323 +298792,3.63331 +298818,3.37403 +298844,3.49839 +298870,3.60311 +298896,3.51809 +298922,3.30219 +298948,3.42391 +298974,4.20613 +299000,3.20338 +299026,2.40981 +299052,3.44667 +299078,3.66161 +299104,3.49997 +299130,2.63946 +299156,3.37781 +299182,4.01899 +299208,3.4219 +299234,3.4054 +299260,3.76613 +299286,3.05986 +299312,3.09486 +299338,3.6917 +299364,3.20476 +299390,3.07687 +299416,3.68156 +299442,3.14425 +299468,3.64527 +299494,2.72612 +299520,3.3393 +299546,3.32107 +299572,3.0932 +299598,3.19028 +299624,4.23601 +299650,4.18727 +299676,3.66008 +299702,3.45771 +299728,3.68498 +299754,3.28741 +299780,3.21392 +299806,3.40921 +299832,3.69326 +299858,3.68936 +299884,3.77283 +299910,2.9523 +299936,4.06369 +299962,3.75552 +299988,3.20872 +300014,4.02288 +300040,3.47702 +300066,3.26732 +300092,2.99062 +300118,2.97493 +300144,3.80654 +300170,3.88877 +300196,3.2106 +300222,3.41515 +300248,3.50154 +300274,3.64894 +300300,3.21653 +300326,3.37656 +300352,3.73625 +300378,3.58112 +300404,3.73184 +300430,3.73602 +300456,3.37888 +300482,3.23032 +300508,3.88044 +300534,3.76997 +300560,3.96719 +300586,3.81556 +300612,3.69166 +300638,3.23358 +300664,3.2939 +300690,3.90596 +300716,3.67175 +300742,3.73448 +300768,3.24541 +300794,3.09761 +300820,3.14088 +300846,2.61657 +300872,3.12117 +300898,2.96464 +300924,3.77659 +300950,3.20213 +300976,3.27382 +301002,2.83644 +301028,3.30143 +301054,3.35823 +301080,2.80534 +301106,3.34387 +301132,3.51004 +301158,3.15614 +301184,3.44457 +301210,2.88707 +301236,2.42934 +301262,3.55654 +301288,4.00162 +301314,3.34816 +301340,3.067 +301366,2.91573 +301392,3.11585 +301418,2.83491 +301444,2.66124 +301470,4.27906 +301496,3.56391 +301522,2.77422 +301548,2.72575 +301574,2.94731 +301600,3.00021 +301626,3.54203 +301652,3.19776 +301678,2.71014 +301704,3.24101 +301730,3.09849 +301756,2.37955 +301782,3.41067 +301808,3.37104 +301834,3.57319 +301860,3.06582 +301886,3.17774 +301912,3.39413 +301938,3.00998 +301964,3.33826 +301990,3.10852 +302016,3.51018 +302042,3.83183 +302068,3.38757 +302094,3.00459 +302120,2.70771 +302146,2.74612 +302172,3.29461 +302198,2.90279 +302224,2.65711 +302250,3.70367 +302276,3.01004 +302302,3.09072 +302328,3.74966 +302354,2.94201 +302380,3.03933 +302406,3.41337 +302432,3.24572 +302458,2.92757 +302484,3.56051 +302510,4.39221 +302536,2.84639 +302562,3.58013 +302588,3.19675 +302614,3.57739 +302640,4.14414 +302666,4.10205 +302692,3.1627 +302718,3.50619 +302744,3.40875 +302770,3.14234 +302796,2.95522 +302822,2.99656 +302848,3.81138 +302874,3.40989 +302900,3.62719 +302926,3.25055 +302952,3.87361 +302978,3.56784 +303004,3.38602 +303030,3.09983 +303056,3.36634 +303082,2.88149 +303108,2.81773 +303134,2.99337 +303160,3.42429 +303186,3.21731 +303212,3.80734 +303238,3.89759 +303264,3.15264 +303290,2.97896 +303316,3.30979 +303342,3.11186 +303368,3.43368 +303394,3.07694 +303420,3.60753 +303446,3.68943 +303472,2.76686 +303498,2.91572 +303524,3.19411 +303550,3.42374 +303576,3.65608 +303602,3.67109 +303628,3.20644 +303654,3.34987 +303680,3.3441 +303706,3.44241 +303732,3.39472 +303758,3.16839 +303784,3.42366 +303810,2.97851 +303836,3.50712 +303862,2.95241 +303888,2.78654 +303914,3.55774 +303940,4.34231 +303966,3.12998 +303992,3.17816 +304018,2.73729 +304044,3.43015 +304070,3.84588 +304096,3.46605 +304122,3.2277 +304148,3.38692 +304174,3.95191 +304200,3.08521 +304226,3.4474 +304252,3.47442 +304278,3.29625 +304304,3.43152 +304330,3.29921 +304356,2.50153 +304382,3.15104 +304408,3.20354 +304434,3.13198 +304460,2.89131 +304486,2.90386 +304512,3.22215 +304538,3.63142 +304564,3.59233 +304590,3.22779 +304616,4.07198 +304642,3.18411 +304668,3.32351 +304694,3.0855 +304720,2.73036 +304746,2.67903 +304772,3.52775 +304798,3.05474 +304824,3.06493 +304850,3.24893 +304876,2.60985 +304902,3.15179 +304928,3.06058 +304954,3.38205 +304980,3.24209 +305006,3.94897 +305032,3.36284 +305058,3.59779 +305084,2.96631 +305110,3.39801 +305136,2.58138 +305162,2.99697 +305188,2.4533 +305214,2.90068 +305240,3.42606 +305266,3.37165 +305292,2.94686 +305318,3.66405 +305344,3.60265 +305370,3.07838 +305396,3.1036 +305422,3.00829 +305448,3.31091 +305474,3.03539 +305500,3.52012 +305526,2.87512 +305552,3.36688 +305578,3.76456 +305604,3.05825 +305630,3.28928 +305656,3.52193 +305682,3.61493 +305708,3.18077 +305734,2.73643 +305760,3.4798 +305786,2.45542 +305812,2.521 +305838,2.68859 +305864,2.96168 +305890,3.0893 +305916,3.0698 +305942,2.81866 +305968,2.6669 +305994,2.82815 +306020,2.04782 +306046,2.51548 +306072,3.28602 +306098,3.27765 +306124,3.28899 +306150,3.19146 +306176,2.95117 +306202,2.8726 +306228,3.23404 +306254,3.06208 +306280,3.07358 +306306,3.39121 +306332,3.02916 +306358,2.72722 +306384,3.67196 +306410,3.02975 +306436,2.67682 +306462,2.99015 +306488,3.57243 +306514,2.99388 +306540,3.02286 +306566,2.83386 +306592,3.30573 +306618,3.1351 +306644,3.15048 +306670,2.95591 +306696,3.63693 +306722,4.64518 +306748,4.1272 +306774,4.15491 +306800,3.7876 +306826,3.7671 +306852,3.97364 +306878,3.85106 +306904,4.02237 +306930,4.5233 +306956,4.09056 +306982,3.22827 +307008,3.83052 +307034,4.09592 +307060,3.17115 +307086,3.11259 +307112,4.11985 +307138,3.45467 +307164,3.72945 +307190,3.33677 +307216,3.67411 +307242,3.1001 +307268,3.65061 +307294,3.70037 +307320,2.98352 +307346,3.61146 +307372,3.39806 +307398,2.73963 +307424,5.18588 +307450,3.88542 +307476,3.59109 +307502,3.7432 +307528,4.05991 +307554,3.48072 +307580,3.66622 +307606,3.75264 +307632,3.93001 +307658,4.24 +307684,3.69683 +307710,4.18342 +307736,4.57937 +307762,3.3392 +307788,3.24414 +307814,3.55308 +307840,3.52492 +307866,4.46681 +307892,4.04623 +307918,3.68563 +307944,3.93817 +307970,4.16107 +307996,3.93607 +308022,3.49356 +308048,4.49726 +308074,4.20487 +308100,3.80999 +308126,3.76474 +308152,3.29112 +308178,3.34814 +308204,3.70907 +308230,2.99691 +308256,3.40262 +308282,4.08897 +308308,3.06506 +308334,3.27762 +308360,3.31059 +308386,2.95765 +308412,3.70664 +308438,2.95842 +308464,4.34817 +308490,3.31776 +308516,3.52784 +308542,3.32138 +308568,3.41718 +308594,3.07303 +308620,3.16478 +308646,3.48228 +308672,3.68788 +308698,3.46236 +308724,3.48435 +308750,3.22959 +308776,4.1464 +308802,3.93952 +308828,3.25628 +308854,2.87738 +308880,2.45451 +308906,3.37406 +308932,3.66292 +308958,3.15335 +308984,3.57295 +309010,4.11546 +309036,3.33304 +309062,3.71075 +309088,3.00737 +309114,3.6079 +309140,2.97521 +309166,3.25889 +309192,3.23016 +309218,3.11423 +309244,3.54669 +309270,4.62107 +309296,4.14923 +309322,4.43571 +309348,3.74341 +309374,4.11284 +309400,3.86335 +309426,3.3034 +309452,4.14688 +309478,2.91667 +309504,3.86279 +309530,3.57981 +309556,3.06135 +309582,3.49082 +309608,3.71989 +309634,4.54042 +309660,3.79236 +309686,3.3187 +309712,2.74148 +309738,3.63832 +309764,3.37356 +309790,3.37206 +309816,3.55039 +309842,3.56517 +309868,3.96602 +309894,3.63222 +309920,3.56735 +309946,3.07626 +309972,3.37037 +309998,3.8253 +310024,3.55369 +310050,3.48771 +310076,3.82069 +310102,3.72127 +310128,3.26882 +310154,3.62328 +310180,2.81517 +310206,3.88286 +310232,4.11595 +310258,3.65194 +310284,3.25469 +310310,3.62179 +310336,3.49204 +310362,3.58347 +310388,3.9624 +310414,3.71141 +310440,3.13011 +310466,3.6921 +310492,3.36017 +310518,4.0799 +310544,3.58782 +310570,3.13895 +310596,3.34954 +310622,3.0499 +310648,3.14059 +310674,3.53767 +310700,3.42441 +310726,3.23475 +310752,2.78689 +310778,3.42028 +310804,2.7729 +310830,2.87242 +310856,2.77759 +310882,3.69973 +310908,3.0548 +310934,2.94008 +310960,3.63679 +310986,3.66131 +311012,2.84344 +311038,2.4145 +311064,2.35764 +311090,3.13207 +311116,3.14372 +311142,3.70395 +311168,2.56214 +311194,3.24853 +311220,3.18774 +311246,3.37654 +311272,2.37134 +311298,3.63681 +311324,3.21223 +311350,2.9697 +311376,3.06874 +311402,2.47027 +311428,3.24379 +311454,3.70993 +311480,3.38433 +311506,2.94019 +311532,2.97438 +311558,3.22512 +311584,4.10376 +311610,3.2642 +311636,3.44717 +311662,3.24523 +311688,3.6601 +311714,3.05087 +311740,3.84229 +311766,2.95976 +311792,3.37302 +311818,3.25122 +311844,2.80665 +311870,2.74715 +311896,2.86586 +311922,2.85387 +311948,2.58712 +311974,2.97313 +312000,2.9788 +312026,3.28431 +312052,3.34663 +312078,2.58123 +312104,2.72076 +312130,3.23037 +312156,2.65811 +312182,2.65974 +312208,3.02693 +312234,2.48254 +312260,3.99696 +312286,2.97284 +312312,3.30899 +312338,2.8631 +312364,3.07092 +312390,2.74307 +312416,2.7198 +312442,2.53888 +312468,2.79084 +312494,2.64006 +312520,2.64493 +312546,2.95099 +312572,2.69646 +312598,2.64645 +312624,3.33827 +312650,2.6453 +312676,2.84182 +312702,3.63339 +312728,3.37374 +312754,2.99726 +312780,3.23724 +312806,3.56055 +312832,4.23629 +312858,3.56585 +312884,3.38644 +312910,3.07866 +312936,3.55187 +312962,4.18061 +312988,3.12191 +313014,3.79571 +313040,4.26415 +313066,4.12046 +313092,4.07876 +313118,3.78674 +313144,3.44294 +313170,3.4568 +313196,4.75164 +313222,3.66747 +313248,4.56175 +313274,3.7604 +313300,3.17243 +313326,3.4705 +313352,4.08021 +313378,3.70044 +313404,3.176 +313430,3.47757 +313456,3.61448 +313482,3.61064 +313508,3.87426 +313534,3.26602 +313560,3.60076 +313586,3.62922 +313612,2.87828 +313638,3.80417 +313664,3.60336 +313690,3.6221 +313716,3.9239 +313742,3.63629 +313768,3.66074 +313794,3.31489 +313820,2.95521 +313846,3.32638 +313872,3.88389 +313898,4.81107 +313924,4.11965 +313950,3.90841 +313976,4.44623 +314002,4.76393 +314028,4.79022 +314054,4.8296 +314080,4.27111 +314106,4.30531 +314132,4.35771 +314158,4.04561 +314184,3.84915 +314210,3.35951 +314236,3.43577 +314262,3.7948 +314288,3.45469 +314314,3.6493 +314340,3.17667 +314366,3.59778 +314392,3.09036 +314418,4.4469 +314444,3.45721 +314470,3.57835 +314496,3.08857 +314522,2.88252 +314548,3.75122 +314574,3.54547 +314600,3.09054 +314626,3.91634 +314652,3.95427 +314678,4.02572 +314704,3.42332 +314730,2.92214 +314756,3.87222 +314782,4.12663 +314808,3.12593 +314834,3.42657 +314860,3.51557 +314886,3.34135 +314912,3.63182 +314938,4.03782 +314964,3.73476 +314990,3.18805 +315016,3.63006 +315042,3.15034 +315068,3.98983 +315094,2.86176 +315120,2.70006 +315146,3.09166 +315172,3.95993 +315198,2.40519 +315224,3.51386 +315250,3.2579 +315276,3.30791 +315302,3.44671 +315328,2.55585 +315354,2.93027 +315380,3.43702 +315406,2.59933 +315432,3.69639 +315458,3.59613 +315484,3.09773 +315510,3.40577 +315536,3.07278 +315562,4.09915 +315588,3.27416 +315614,3.41234 +315640,3.02264 +315666,2.9633 +315692,3.17577 +315718,3.33421 +315744,3.54371 +315770,3.40038 +315796,3.62869 +315822,2.68226 +315848,3.09627 +315874,3.05621 +315900,2.30753 +315926,3.33335 +315952,2.29765 +315978,3.24374 +316004,3.92294 +316030,2.54928 +316056,4.11694 +316082,3.43638 +316108,3.37661 +316134,3.07465 +316160,3.21537 +316186,3.11515 +316212,2.51219 +316238,2.80838 +316264,3.26491 +316290,3.03827 +316316,3.1201 +316342,2.9262 +316368,2.90174 +316394,3.36159 +316420,3.61643 +316446,2.83138 +316472,3.30729 +316498,3.32277 +316524,4.26932 +316550,2.85501 +316576,2.70246 +316602,3.00853 +316628,3.32382 +316654,3.47992 +316680,2.95015 +316706,3.17474 +316732,3.05308 +316758,3.28756 +316784,3.94612 +316810,3.6294 +316836,3.58652 +316862,3.48326 +316888,3.24936 +316914,2.95002 +316940,3.49523 +316966,4.18056 +316992,4.08427 +317018,3.49921 +317044,3.32486 +317070,3.81748 +317096,4.94405 +317122,4.0696 +317148,3.65237 +317174,3.4951 +317200,3.89586 +317226,5.48604 +317252,3.84977 +317278,3.13301 +317304,3.66877 +317330,3.6928 +317356,3.22585 +317382,4.17545 +317408,3.67357 +317434,3.13837 +317460,3.6666 +317486,3.28355 +317512,3.22112 +317538,2.87649 +317564,3.47652 +317590,2.99042 +317616,3.62791 +317642,2.86948 +317668,2.8512 +317694,3.08786 +317720,2.37445 +317746,3.28315 +317772,3.11188 +317798,2.77695 +317824,2.49052 +317850,3.32252 +317876,3.65746 +317902,3.33973 +317928,2.90429 +317954,2.80738 +317980,2.88615 +318006,2.84054 +318032,3.12965 +318058,2.62757 +318084,2.5497 +318110,3.44412 +318136,3.44006 +318162,3.14941 +318188,2.77955 +318214,3.14583 +318240,3.96136 +318266,2.44525 +318292,2.70366 +318318,3.34271 +318344,3.3048 +318370,2.76745 +318396,2.86774 +318422,2.48267 +318448,3.01528 +318474,3.19804 +318500,2.68087 +318526,3.09274 +318552,3.17981 +318578,3.00024 +318604,2.84771 +318630,2.25278 +318656,2.78499 +318682,2.55217 +318708,3.08079 +318734,2.44832 +318760,4.00977 +318786,3.4826 +318812,3.4427 +318838,2.62257 +318864,2.85771 +318890,2.7712 +318916,2.68573 +318942,4.27451 +318968,3.48246 +318994,3.14829 +319020,4.19441 +319046,4.9971 +319072,4.99037 +319098,4.81443 +319124,5.07617 +319150,5.11731 +319176,4.7976 +319202,4.83974 +319228,4.91718 +319254,4.52065 +319280,4.24211 +319306,4.60184 +319332,4.19187 +319358,4.5515 +319384,4.61071 +319410,4.54551 +319436,4.68437 +319462,4.72654 +319488,4.60834 +319514,4.50227 +319540,4.50094 +319566,3.97933 +319592,3.95854 +319618,3.82501 +319644,3.59607 +319670,3.85055 +319696,3.7028 +319722,3.97539 +319748,4.40296 +319774,4.01438 +319800,3.50227 +319826,3.55419 +319852,3.56938 +319878,3.32225 +319904,3.87624 +319930,4.02329 +319956,3.93074 +319982,3.61879 +320008,3.65547 +320034,3.7125 +320060,4.03727 +320086,3.99109 +320112,3.74185 +320138,3.97439 +320164,4.50767 +320190,3.90255 +320216,4.04134 +320242,3.87009 +320268,4.34491 +320294,4.16894 +320320,3.653 +320346,3.82168 +320372,4.26156 +320398,4.16981 +320424,3.8183 +320450,3.80978 +320476,4.29156 +320502,3.78231 +320528,3.74062 +320554,4.26747 +320580,3.73287 +320606,3.53994 +320632,3.42747 +320658,3.98239 +320684,3.3694 +320710,3.37568 +320736,3.25643 +320762,4.06111 +320788,3.53861 +320814,3.14513 +320840,3.24578 +320866,3.21648 +320892,3.27107 +320918,3.18914 +320944,3.31784 +320970,3.51208 +320996,3.31201 +321022,4.13301 +321048,3.42814 +321074,3.36494 +321100,3.73576 +321126,3.63354 +321152,3.60421 +321178,3.08654 +321204,3.76632 +321230,3.7772 +321256,3.52536 +321282,3.43829 +321308,3.6327 +321334,3.36888 +321360,3.55466 +321386,3.24425 +321412,3.81697 +321438,3.82236 +321464,3.64049 +321490,3.25191 +321516,3.13916 +321542,2.55458 +321568,3.09 +321594,3.05472 +321620,3.00308 +321646,4.09222 +321672,3.21994 +321698,2.98476 +321724,2.95909 +321750,3.40682 +321776,3.43345 +321802,3.4385 +321828,3.47155 +321854,3.25129 +321880,3.47874 +321906,3.12543 +321932,3.5201 +321958,4.42393 +321984,4.22297 +322010,3.87841 +322036,3.69623 +322062,4.05066 +322088,3.33524 +322114,4.07021 +322140,2.98586 +322166,3.14826 +322192,3.34609 +322218,3.04759 +322244,3.51932 +322270,3.37429 +322296,2.67056 +322322,4.19107 +322348,3.0843 +322374,3.2054 +322400,2.97124 +322426,3.41983 +322452,2.70647 +322478,2.47003 +322504,2.36342 +322530,3.28261 +322556,3.22796 +322582,3.10766 +322608,3.93533 +322634,2.69893 +322660,2.50977 +322686,3.01329 +322712,3.20452 +322738,4.16217 +322764,4.5664 +322790,3.97659 +322816,4.61303 +322842,5.1856 +322868,5.23776 +322894,5.07879 +322920,4.3603 +322946,4.07095 +322972,4.50843 +322998,4.37434 +323024,4.40829 +323050,4.60136 +323076,4.01796 +323102,3.92037 +323128,3.99311 +323154,3.94099 +323180,3.81518 +323206,4.10102 +323232,3.62983 +323258,3.86425 +323284,3.46852 +323310,2.94725 +323336,4.34094 +323362,5.01042 +323388,4.20958 +323414,4.29815 +323440,4.03844 +323466,4.03134 +323492,4.06892 +323518,4.24474 +323544,3.91617 +323570,3.40373 +323596,3.92195 +323622,4.30387 +323648,4.28347 +323674,3.52116 +323700,3.77312 +323726,3.57538 +323752,3.37526 +323778,3.50663 +323804,3.90218 +323830,3.8465 +323856,3.71739 +323882,3.92534 +323908,3.81601 +323934,3.24758 +323960,3.04809 +323986,3.06075 +324012,3.2239 +324038,3.15174 +324064,3.55928 +324090,3.46596 +324116,3.12071 +324142,3.98616 +324168,4.48765 +324194,3.36753 +324220,2.85745 +324246,3.54549 +324272,3.12173 +324298,3.59934 +324324,4.3802 +324350,3.99224 +324376,3.21239 +324402,4.40357 +324428,4.10392 +324454,3.92775 +324480,3.62507 +324506,4.08554 +324532,4.56039 +324558,4.95895 +324584,4.59022 +324610,4.45266 +324636,4.59626 +324662,4.23146 +324688,4.36895 +324714,4.08812 +324740,4.32063 +324766,4.82512 +324792,4.25613 +324818,4.4087 +324844,4.25231 +324870,4.53967 +324896,4.13683 +324922,4.3186 +324948,3.81943 +324974,5.05028 +325000,4.61711 +325026,4.52989 +325052,4.59791 +325078,4.63967 +325104,4.79956 +325130,4.54791 +325156,4.41746 +325182,4.18426 +325208,4.49103 +325234,4.44689 +325260,4.37156 +325286,4.00395 +325312,4.01425 +325338,4.25475 +325364,4.08367 +325390,4.48424 +325416,4.6147 +325442,4.38897 +325468,4.63529 +325494,4.54289 +325520,4.82233 +325546,4.48155 +325572,4.294 +325598,4.34503 +325624,4.11683 +325650,4.32542 +325676,4.43793 +325702,4.24523 +325728,3.89612 +325754,4.39574 +325780,4.06847 +325806,3.96547 +325832,3.9267 +325858,4.42954 +325884,3.88934 +325910,4.26197 +325936,3.81097 +325962,4.13637 +325988,4.23261 +326014,4.3917 +326040,4.2091 +326066,4.2691 +326092,3.72337 +326118,3.98283 +326144,3.59313 +326170,4.01159 +326196,3.48735 +326222,3.92871 +326248,3.6959 +326274,3.84641 +326300,3.31108 +326326,3.78637 +326352,4.12013 +326378,3.96686 +326404,4.4914 +326430,4.20643 +326456,4.34831 +326482,4.47297 +326508,4.27932 +326534,3.81716 +326560,4.20344 +326586,4.21261 +326612,3.70385 +326638,3.51873 +326664,3.36404 +326690,3.91864 +326716,4.08847 +326742,4.12932 +326768,3.99815 +326794,3.87771 +326820,3.70915 +326846,3.71262 +326872,3.91804 +326898,3.80905 +326924,3.53246 +326950,3.75097 +326976,3.36211 +327002,3.91792 +327028,4.188 +327054,4.03025 +327080,3.56636 +327106,3.7837 +327132,3.78035 +327158,4.31558 +327184,4.16878 +327210,3.86943 +327236,3.85195 +327262,3.6774 +327288,3.5425 +327314,3.99409 +327340,3.76077 +327366,2.97064 +327392,3.01148 +327418,3.48892 +327444,3.73226 +327470,3.41997 +327496,3.62839 +327522,3.37741 +327548,4.04912 +327574,3.31244 +327600,3.01762 +327626,3.4198 +327652,3.20264 +327678,3.10782 +327704,4.08316 +327730,4.15997 +327756,4.27601 +327782,4.48964 +327808,4.10609 +327834,4.57021 +327860,4.37958 +327886,3.72316 +327912,3.7414 +327938,4.83178 +327964,4.31345 +327990,4.00969 +328016,3.85659 +328042,4.37966 +328068,4.24497 +328094,3.48164 +328120,3.56678 +328146,3.29762 +328172,3.517 +328198,3.75667 +328224,3.48297 +328250,4.05599 +328276,3.47408 +328302,2.87518 +328328,3.17614 +328354,3.54877 +328380,3.45898 +328406,3.44343 +328432,3.76254 +328458,3.63075 +328484,2.69805 +328510,3.21289 +328536,3.62597 +328562,3.35293 +328588,3.23516 +328614,3.43934 +328640,3.39585 +328666,3.1928 +328692,3.30491 +328718,3.43285 +328744,4.21055 +328770,3.54154 +328796,3.32061 +328822,3.3666 +328848,3.0359 +328874,2.82279 +328900,3.99989 +328926,3.58706 +328952,3.16278 +328978,3.41065 +329004,3.21533 +329030,2.7298 +329056,3.49998 +329082,3.22019 +329108,3.67263 +329134,3.36814 +329160,3.82266 +329186,3.20677 +329212,3.00161 +329238,3.58108 +329264,3.51909 +329290,3.16046 +329316,3.25333 +329342,3.10378 +329368,2.81645 +329394,2.87576 +329420,3.1796 +329446,3.3417 +329472,3.38999 +329498,3.19414 +329524,3.82811 +329550,3.4422 +329576,3.27883 +329602,2.90577 +329628,3.24957 +329654,3.60311 +329680,2.87095 +329706,3.32329 +329732,3.25905 +329758,3.84887 +329784,4.01795 +329810,3.10808 +329836,3.73645 +329862,3.83924 +329888,3.45985 +329914,3.60675 +329940,3.42809 +329966,3.43677 +329992,3.0857 +330018,3.45391 +330044,3.75207 +330070,3.48123 +330096,3.90233 +330122,3.09148 +330148,2.96627 +330174,3.58579 +330200,3.71806 +330226,3.42248 +330252,4.1104 +330278,3.93673 +330304,3.95251 +330330,3.92231 +330356,3.76818 +330382,3.9843 +330408,3.22717 +330434,3.55583 +330460,3.41614 +330486,3.07353 +330512,3.1958 +330538,4.23034 +330564,4.6329 +330590,3.33105 +330616,4.01658 +330642,3.95674 +330668,3.99766 +330694,3.73959 +330720,3.31658 +330746,3.67074 +330772,3.95076 +330798,3.56619 +330824,3.47396 +330850,3.50115 +330876,4.18138 +330902,4.16592 +330928,3.87845 +330954,3.57714 +330980,3.66876 +331006,3.15877 +331032,3.89454 +331058,3.54121 +331084,3.20637 +331110,3.39681 +331136,3.54799 +331162,3.11433 +331188,3.38743 +331214,3.82936 +331240,3.96016 +331266,3.39925 +331292,3.63968 +331318,4.19627 +331344,3.91304 +331370,4.28799 +331396,3.11766 +331422,3.44558 +331448,3.55176 +331474,3.77247 +331500,3.97723 +331526,3.66236 +331552,3.89159 +331578,4.07774 +331604,3.25665 +331630,3.64176 +331656,3.17593 +331682,4.14519 +331708,4.02923 +331734,3.90772 +331760,3.91238 +331786,3.63812 +331812,3.99788 +331838,3.11072 +331864,3.98712 +331890,3.89059 +331916,3.52519 +331942,3.89111 +331968,3.84901 +331994,3.74014 +332020,3.5192 +332046,3.11267 +332072,4.18246 +332098,3.7003 +332124,3.53339 +332150,3.73207 +332176,2.99219 +332202,2.88456 +332228,3.91181 +332254,3.23382 +332280,2.936 +332306,3.3889 +332332,2.86143 +332358,4.35545 +332384,3.62279 +332410,3.4972 +332436,3.71574 +332462,4.16642 +332488,4.05992 +332514,3.45304 +332540,3.54918 +332566,3.11965 +332592,3.74614 +332618,3.93241 +332644,4.82463 +332670,4.73626 +332696,4.74396 +332722,4.92678 +332748,5.01996 +332774,4.39312 +332800,4.17056 +332826,4.50362 +332852,3.94059 +332878,3.67032 +332904,4.16546 +332930,3.88161 +332956,3.50387 +332982,4.19791 +333008,4.04953 +333034,3.78045 +333060,3.67562 +333086,4.73902 +333112,4.25753 +333138,4.30165 +333164,4.53059 +333190,4.42258 +333216,4.18558 +333242,4.62466 +333268,4.19063 +333294,4.20444 +333320,4.53979 +333346,4.03909 +333372,4.20386 +333398,3.78888 +333424,3.7843 +333450,4.01016 +333476,4.13918 +333502,3.63962 +333528,3.71917 +333554,3.78567 +333580,4.32117 +333606,5.25804 +333632,3.69417 +333658,4.13114 +333684,4.35246 +333710,4.30566 +333736,4.03855 +333762,4.10743 +333788,4.0445 +333814,4.21859 +333840,4.27055 +333866,4.00518 +333892,4.4785 +333918,5.0121 +333944,4.33347 +333970,4.27789 +333996,4.01992 +334022,4.44119 +334048,4.78325 +334074,4.48651 +334100,4.16081 +334126,4.16494 +334152,4.01497 +334178,3.97846 +334204,3.70989 +334230,3.66645 +334256,3.4334 +334282,3.78907 +334308,3.32084 +334334,3.65445 +334360,3.37025 +334386,3.88815 +334412,3.41596 +334438,4.0083 +334464,3.93758 +334490,3.37757 +334516,3.73628 +334542,3.5127 +334568,3.45711 +334594,3.60197 +334620,3.78955 +334646,3.96955 +334672,3.87917 +334698,3.51886 +334724,3.74725 +334750,3.86082 +334776,4.00192 +334802,3.38994 +334828,3.47695 +334854,3.42863 +334880,3.22747 +334906,3.62551 +334932,3.19936 +334958,3.70562 +334984,3.72209 +335010,3.65972 +335036,3.98906 +335062,3.53514 +335088,4.01698 +335114,4.00416 +335140,3.89288 +335166,4.5038 +335192,4.66232 +335218,4.1025 +335244,3.72689 +335270,3.82082 +335296,4.71 +335322,4.18175 +335348,4.31965 +335374,4.14531 +335400,3.99661 +335426,4.37711 +335452,3.37393 +335478,3.43053 +335504,3.65746 +335530,4.83184 +335556,5.04993 +335582,4.88265 +335608,4.88662 +335634,4.45412 +335660,4.3502 +335686,4.46406 +335712,3.80394 +335738,3.94191 +335764,3.81257 +335790,4.0146 +335816,4.68046 +335842,4.23739 +335868,3.83889 +335894,4.13381 +335920,3.89875 +335946,4.0558 +335972,3.54344 +335998,4.29251 +336024,3.76757 +336050,4.02865 +336076,3.62694 +336102,3.90615 +336128,3.50172 +336154,4.05237 +336180,3.9696 +336206,4.28585 +336232,4.35501 +336258,4.40872 +336284,4.01034 +336310,4.02915 +336336,4.0658 +336362,3.96761 +336388,4.13342 +336414,4.06671 +336440,3.72585 +336466,4.56428 +336492,4.44804 +336518,4.01763 +336544,4.11175 +336570,4.06794 +336596,4.06795 +336622,4.15961 +336648,3.59653 +336674,3.99842 +336700,3.81659 +336726,3.98941 +336752,3.70181 +336778,3.79267 +336804,3.5214 +336830,3.25025 +336856,3.75162 +336882,4.08797 +336908,4.12654 +336934,4.0222 +336960,4.30593 +336986,4.14235 +337012,3.64828 +337038,3.56543 +337064,3.71141 +337090,3.75042 +337116,4.71178 +337142,4.84628 +337168,4.39926 +337194,4.39867 +337220,4.10714 +337246,4.44409 +337272,4.26139 +337298,4.26884 +337324,4.67326 +337350,4.67211 +337376,4.67312 +337402,4.25562 +337428,3.92565 +337454,4.21559 +337480,4.24841 +337506,4.07046 +337532,4.08208 +337558,3.82521 +337584,4.06391 +337610,4.42543 +337636,4.47436 +337662,4.45021 +337688,4.29738 +337714,4.4984 +337740,3.77656 +337766,4.16222 +337792,3.95155 +337818,4.29405 +337844,4.1313 +337870,4.09119 +337896,3.78911 +337922,3.8513 +337948,3.86514 +337974,3.83944 +338000,4.17743 +338026,4.27681 +338052,4.05157 +338078,4.05535 +338104,4.16025 +338130,4.3564 +338156,4.12309 +338182,4.15648 +338208,3.66964 +338234,4.1576 +338260,4.16319 +338286,3.90711 +338312,4.28391 +338338,3.76553 +338364,4.44489 +338390,4.86869 +338416,4.43874 +338442,4.31898 +338468,3.94335 +338494,3.8032 +338520,4.13652 +338546,3.45521 +338572,4.05923 +338598,3.83025 +338624,4.42887 +338650,3.654 +338676,3.60259 +338702,3.81872 +338728,3.74243 +338754,3.97769 +338780,4.34032 +338806,4.01252 +338832,4.25692 +338858,4.63861 +338884,4.50119 +338910,4.22618 +338936,3.95343 +338962,3.87491 +338988,4.12707 +339014,4.10583 +339040,4.34167 +339066,4.16908 +339092,3.69474 +339118,3.97429 +339144,3.90571 +339170,4.30945 +339196,4.12332 +339222,4.29457 +339248,4.18683 +339274,4.28736 +339300,4.0102 +339326,4.23636 +339352,4.16271 +339378,3.91273 +339404,3.41268 +339430,3.84772 +339456,3.84672 +339482,3.83733 +339508,4.44091 +339534,4.48656 +339560,4.34933 +339586,4.03829 +339612,3.96019 +339638,3.58742 +339664,3.86019 +339690,3.58116 +339716,3.65872 +339742,3.69563 +339768,4.09723 +339794,3.91717 +339820,3.73427 +339846,3.57819 +339872,3.58606 +339898,3.56644 +339924,3.90772 +339950,3.51929 +339976,3.85669 +340002,2.89995 +340028,3.73587 +340054,3.47241 +340080,3.79656 +340106,3.88167 +340132,4.12362 +340158,4.09334 +340184,3.05863 +340210,3.73168 +340236,3.3536 +340262,3.67584 +340288,4.04401 +340314,3.43452 +340340,3.78051 +340366,3.72202 +340392,3.53855 +340418,3.84968 +340444,3.57791 +340470,4.20601 +340496,3.91039 +340522,4.31481 +340548,3.92316 +340574,3.59572 +340600,3.38309 +340626,3.80809 +340652,3.76984 +340678,4.10911 +340704,3.64043 +340730,3.43659 +340756,3.77903 +340782,3.43505 +340808,3.64621 +340834,3.89885 +340860,3.96375 +340886,3.56581 +340912,3.58725 +340938,4.21975 +340964,4.24781 +340990,3.87086 +341016,3.57945 +341042,3.5625 +341068,3.77959 +341094,3.33463 +341120,3.68161 +341146,3.74676 +341172,4.08618 +341198,3.78014 +341224,3.96067 +341250,3.61724 +341276,3.65661 +341302,4.13374 +341328,3.49569 +341354,3.60563 +341380,3.54656 +341406,4.12315 +341432,3.63272 +341458,3.93876 +341484,4.29347 +341510,3.89713 +341536,3.79049 +341562,3.80397 +341588,3.81222 +341614,3.73343 +341640,3.74444 +341666,3.21174 +341692,3.4233 +341718,3.7082 +341744,3.61632 +341770,4.06404 +341796,4.22003 +341822,4.19627 +341848,3.31306 +341874,3.59613 +341900,3.62169 +341926,3.28969 +341952,3.30429 +341978,3.86051 +342004,3.49804 +342030,3.58802 +342056,2.7938 +342082,3.4299 +342108,4.4526 +342134,4.09016 +342160,3.63821 +342186,3.70434 +342212,3.60078 +342238,4.14185 +342264,3.78249 +342290,3.3173 +342316,3.70373 +342342,3.4174 +342368,3.78804 +342394,3.21027 +342420,3.52655 +342446,3.547 +342472,3.58567 +342498,3.73722 +342524,3.27677 +342550,3.94315 +342576,3.69611 +342602,4.02498 +342628,3.12129 +342654,3.76885 +342680,3.35819 +342706,3.5612 +342732,3.52519 +342758,3.71294 +342784,3.03586 +342810,3.47971 +342836,3.55573 +342862,4.52706 +342888,3.50116 +342914,3.46399 +342940,4.11475 +342966,3.61021 +342992,3.58892 +343018,4.03769 +343044,3.34504 +343070,3.3987 +343096,3.68649 +343122,3.64793 +343148,3.79922 +343174,5.11536 +343200,3.953 +343226,3.78198 +343252,3.95284 +343278,3.84961 +343304,3.65566 +343330,3.86389 +343356,3.45377 +343382,3.53858 +343408,3.66673 +343434,3.4402 +343460,3.01706 +343486,3.42966 +343512,3.35957 +343538,3.32891 +343564,3.89748 +343590,3.29855 +343616,3.71214 +343642,3.24174 +343668,3.97485 +343694,3.14065 +343720,4.10372 +343746,3.48146 +343772,3.72558 +343798,4.27698 +343824,4.06626 +343850,3.72817 +343876,3.77392 +343902,3.68997 +343928,3.67014 +343954,3.58226 +343980,3.61688 +344006,3.15488 +344032,3.73579 +344058,3.59939 +344084,2.86173 +344110,2.86553 +344136,4.03945 +344162,3.34796 +344188,3.54175 +344214,3.69482 +344240,3.47136 +344266,3.58534 +344292,3.63525 +344318,3.95875 +344344,3.07461 +344370,3.73746 +344396,3.59904 +344422,3.43588 +344448,2.9357 +344474,3.47042 +344500,3.84472 +344526,3.61152 +344552,2.67707 +344578,3.20516 +344604,3.70778 +344630,3.43739 +344656,3.23672 +344682,3.98452 +344708,3.96659 +344734,3.69441 +344760,3.42905 +344786,3.95541 +344812,3.28251 +344838,3.08056 +344864,2.68198 +344890,3.57822 +344916,3.8851 +344942,3.26501 +344968,3.13696 +344994,3.87048 +345020,3.18028 +345046,3.09983 +345072,3.98281 +345098,3.51259 +345124,2.7601 +345150,3.75465 +345176,3.19728 +345202,3.2702 +345228,3.35845 +345254,3.88322 +345280,3.20966 +345306,3.62736 +345332,4.6898 +345358,4.02818 +345384,4.23143 +345410,4.65445 +345436,4.45265 +345462,4.32297 +345488,4.11669 +345514,4.91421 +345540,4.36945 +345566,4.24786 +345592,3.97075 +345618,4.35246 +345644,4.59563 +345670,4.87076 +345696,4.49698 +345722,4.25448 +345748,4.58387 +345774,4.48987 +345800,4.51605 +345826,4.5424 +345852,4.32121 +345878,4.60962 +345904,4.52203 +345930,4.65972 +345956,4.34669 +345982,4.30752 +346008,4.15922 +346034,4.82972 +346060,4.48893 +346086,4.76007 +346112,4.4612 +346138,4.29642 +346164,4.46019 +346190,4.34004 +346216,3.95133 +346242,4.81682 +346268,4.13555 +346294,4.29606 +346320,3.96868 +346346,4.40374 +346372,4.47618 +346398,4.24027 +346424,3.94526 +346450,4.11438 +346476,3.50794 +346502,4.35077 +346528,3.93873 +346554,4.09875 +346580,4.23673 +346606,4.31193 +346632,3.8513 +346658,4.06492 +346684,3.9729 +346710,4.00638 +346736,4.3376 +346762,4.00138 +346788,3.9844 +346814,4.03368 +346840,4.34738 +346866,3.94387 +346892,3.79245 +346918,3.88699 +346944,3.9609 +346970,3.9085 +346996,4.18791 +347022,3.87372 +347048,3.75213 +347074,4.53578 +347100,4.35996 +347126,4.89523 +347152,4.47191 +347178,4.34735 +347204,4.30455 +347230,4.19486 +347256,3.72753 +347282,4.19141 +347308,3.64108 +347334,3.88219 +347360,4.10145 +347386,4.16984 +347412,3.86698 +347438,4.23608 +347464,3.88671 +347490,3.96424 +347516,3.77447 +347542,4.22821 +347568,3.93775 +347594,3.86807 +347620,3.85387 +347646,4.08982 +347672,4.66878 +347698,4.60843 +347724,4.1005 +347750,4.33021 +347776,3.96886 +347802,4.24725 +347828,3.62479 +347854,3.94882 +347880,3.70522 +347906,3.81592 +347932,4.05831 +347958,3.75984 +347984,3.35914 +348010,3.99533 +348036,3.69192 +348062,3.54295 +348088,3.51778 +348114,3.4753 +348140,3.5451 +348166,3.84517 +348192,4.06647 +348218,3.98012 +348244,4.05958 +348270,3.65765 +348296,3.75714 +348322,3.34967 +348348,3.78114 +348374,3.64933 +348400,3.56803 +348426,3.49082 +348452,3.84397 +348478,2.8478 +348504,3.17205 +348530,4.192 +348556,3.76189 +348582,3.64764 +348608,4.17426 +348634,3.95315 +348660,3.59466 +348686,4.04634 +348712,3.47354 +348738,4.13987 +348764,3.92495 +348790,3.79306 +348816,3.00812 +348842,3.78108 +348868,3.49583 +348894,3.98705 +348920,3.77962 +348946,3.65456 +348972,3.48601 +348998,3.27811 +349024,4.51244 +349050,3.47847 +349076,4.03987 +349102,3.80293 +349128,4.1452 +349154,3.68678 +349180,3.70103 +349206,3.68317 +349232,4.00418 +349258,3.62813 +349284,3.7601 +349310,3.93798 +349336,3.72456 +349362,3.44709 +349388,4.02755 +349414,3.6771 +349440,4.10848 +349466,3.81279 +349492,3.5395 +349518,3.578 +349544,3.97829 +349570,3.81571 +349596,3.47238 +349622,3.78801 +349648,3.93298 +349674,3.74844 +349700,3.44194 +349726,3.67323 +349752,4.4676 +349778,3.51781 +349804,3.79316 +349830,3.40748 +349856,3.20684 +349882,3.84383 +349908,4.11247 +349934,4.05562 +349960,3.90065 +349986,3.42679 +350012,3.63425 +350038,3.71984 +350064,4.64414 +350090,3.58824 +350116,3.5524 +350142,3.52103 +350168,3.54882 +350194,3.59693 +350220,3.93566 +350246,3.86207 +350272,3.53601 +350298,3.46692 +350324,3.73223 +350350,3.71535 +350376,3.45596 +350402,4.08872 +350428,3.89346 +350454,3.57123 +350480,3.85424 +350506,4.14906 +350532,3.11157 +350558,3.85231 +350584,3.72217 +350610,3.29153 +350636,3.88174 +350662,3.22124 +350688,2.94088 +350714,3.22211 +350740,3.79429 +350766,3.20117 +350792,3.70478 +350818,3.65637 +350844,4.00906 +350870,3.77132 +350896,3.37466 +350922,3.47345 +350948,3.43218 +350974,3.26231 +351000,3.66187 +351026,3.40681 +351052,3.7462 +351078,3.69656 +351104,3.75828 +351130,3.18851 +351156,3.37167 +351182,3.10528 +351208,3.2475 +351234,3.30829 +351260,3.86096 +351286,3.40476 +351312,3.61618 +351338,3.02904 +351364,3.52758 +351390,3.89955 +351416,3.50814 +351442,3.35575 +351468,3.55119 +351494,3.59946 +351520,3.79338 +351546,3.56859 +351572,3.76742 +351598,3.25624 +351624,3.50938 +351650,3.09568 +351676,3.60326 +351702,3.91142 +351728,4.34374 +351754,4.17549 +351780,3.94698 +351806,3.9905 +351832,3.55668 +351858,3.58476 +351884,3.67501 +351910,3.3357 +351936,3.05024 +351962,3.74815 +351988,3.37452 +352014,3.38485 +352040,3.69075 +352066,3.85979 +352092,3.40584 +352118,3.88642 +352144,3.32146 +352170,3.2731 +352196,4.127 +352222,4.08534 +352248,4.10275 +352274,3.78503 +352300,3.81939 +352326,4.31332 +352352,3.31358 +352378,3.97414 +352404,4.08453 +352430,3.13765 +352456,3.21497 +352482,3.81051 +352508,3.74572 +352534,3.86031 +352560,3.75347 +352586,3.80718 +352612,3.28611 +352638,3.3722 +352664,4.47025 +352690,3.93264 +352716,4.10359 +352742,4.03847 +352768,3.819 +352794,3.60059 +352820,3.45517 +352846,3.88385 +352872,3.50404 +352898,3.62136 +352924,4.1823 +352950,4.12752 +352976,3.96433 +353002,3.66817 +353028,4.12773 +353054,3.1693 +353080,4.14564 +353106,3.94585 +353132,4.18468 +353158,3.53149 +353184,4.02578 +353210,3.98464 +353236,3.55195 +353262,3.71611 +353288,3.66244 +353314,3.4706 +353340,3.62061 +353366,3.49165 +353392,3.60329 +353418,3.68213 +353444,3.72728 +353470,3.27972 +353496,3.62713 +353522,3.54064 +353548,3.76986 +353574,3.605 +353600,2.94322 +353626,3.30996 +353652,3.33944 +353678,4.11228 +353704,3.61348 +353730,3.41436 +353756,3.26897 +353782,3.47787 +353808,3.72802 +353834,4.30843 +353860,3.73271 +353886,3.34284 +353912,3.469 +353938,3.62255 +353964,3.56452 +353990,3.77267 +354016,3.38862 +354042,3.17354 +354068,3.185 +354094,4.4456 +354120,2.97582 +354146,3.7056 +354172,3.19783 +354198,3.32553 +354224,3.80284 +354250,3.63598 +354276,3.15271 +354302,2.79583 +354328,2.897 +354354,3.50549 +354380,3.01556 +354406,3.53326 +354432,3.05163 +354458,3.06641 +354484,3.43033 +354510,3.31573 +354536,3.32421 +354562,3.76604 +354588,3.61309 +354614,2.88393 +354640,3.01406 +354666,3.3853 +354692,3.05755 +354718,3.12383 +354744,3.40563 +354770,3.4704 +354796,3.62918 +354822,3.53119 +354848,2.7901 +354874,3.50082 +354900,2.83452 +354926,2.86942 +354952,3.12218 +354978,3.39876 +355004,3.64389 +355030,3.86676 +355056,3.20844 +355082,4.32445 +355108,3.91545 +355134,3.16395 +355160,3.5495 +355186,3.96614 +355212,2.65975 +355238,3.28028 +355264,3.37823 +355290,3.1791 +355316,3.68861 +355342,3.38321 +355368,3.4938 +355394,3.84685 +355420,3.17087 +355446,2.78145 +355472,3.33354 +355498,3.13293 +355524,2.96774 +355550,3.43507 +355576,3.54214 +355602,3.7117 +355628,3.39051 +355654,3.3172 +355680,3.66827 +355706,3.55055 +355732,3.13664 +355758,3.4408 +355784,3.65711 +355810,3.73018 +355836,3.54371 +355862,3.5187 +355888,3.37999 +355914,3.60289 +355940,3.53772 +355966,3.61902 +355992,3.389 +356018,3.26975 +356044,3.67387 +356070,3.69092 +356096,3.004 +356122,3.25855 +356148,3.42059 +356174,3.73687 +356200,3.33436 +356226,3.31866 +356252,2.90205 +356278,3.97452 +356304,3.93742 +356330,3.58714 +356356,3.41521 +356382,4.08295 +356408,4.19558 +356434,3.50786 +356460,3.8155 +356486,3.10021 +356512,3.18422 +356538,3.80457 +356564,3.3824 +356590,3.38658 +356616,3.5976 +356642,3.65951 +356668,3.65936 +356694,3.25977 +356720,3.45843 +356746,3.70565 +356772,3.45163 +356798,3.14628 +356824,3.98091 +356850,3.61887 +356876,3.39016 +356902,3.30057 +356928,3.77847 +356954,3.48358 +356980,3.8625 +357006,3.48466 +357032,3.38204 +357058,3.51845 +357084,3.09269 +357110,3.58427 +357136,2.8901 +357162,2.89228 +357188,3.85306 +357214,3.70785 +357240,2.97436 +357266,3.04414 +357292,3.62428 +357318,3.74669 +357344,3.37845 +357370,3.35556 +357396,2.94432 +357422,3.19754 +357448,3.1586 +357474,3.54528 +357500,3.92369 +357526,2.97399 +357552,3.3481 +357578,3.46576 +357604,3.70039 +357630,3.60055 +357656,3.44395 +357682,3.01848 +357708,3.65043 +357734,3.55294 +357760,3.62149 +357786,2.99798 +357812,3.83726 +357838,2.82354 +357864,3.02823 +357890,3.61419 +357916,3.50311 +357942,3.85144 +357968,3.62754 +357994,3.41328 +358020,3.22715 +358046,2.99269 +358072,3.12947 +358098,3.01771 +358124,3.76624 +358150,3.67079 +358176,3.71985 +358202,3.45901 +358228,3.57357 +358254,3.56877 +358280,2.97594 +358306,3.02196 +358332,2.90138 +358358,3.19866 +358384,4.12152 +358410,3.55789 +358436,3.67723 +358462,3.58841 +358488,3.62466 +358514,3.4085 +358540,3.45147 +358566,3.77839 +358592,3.9088 +358618,3.0793 +358644,3.70441 +358670,3.18517 +358696,3.14274 +358722,3.85481 +358748,2.77277 +358774,2.87334 +358800,2.92611 +358826,2.96177 +358852,3.49059 +358878,3.7628 +358904,3.45803 +358930,3.21839 +358956,3.46174 +358982,3.53032 +359008,3.95683 +359034,3.61268 +359060,3.7239 +359086,4.09831 +359112,3.82558 +359138,3.69261 +359164,3.75051 +359190,3.81481 +359216,3.42691 +359242,3.40698 +359268,3.48083 +359294,3.58101 +359320,3.97201 +359346,3.47846 +359372,4.03846 +359398,4.16909 +359424,4.23976 +359450,3.81957 +359476,3.50966 +359502,3.89492 +359528,3.19497 +359554,3.48956 +359580,4.0247 +359606,3.82461 +359632,5.33583 +359658,4.22829 +359684,4.41145 +359710,4.40574 +359736,4.04554 +359762,4.75917 +359788,5.13766 +359814,4.14792 +359840,3.8169 +359866,4.04656 +359892,3.81883 +359918,3.73526 +359944,4.01514 +359970,3.45957 +359996,4.37036 +360022,3.72055 +360048,3.91952 +360074,3.79943 +360100,3.61542 +360126,3.50783 +360152,3.43175 +360178,3.34233 +360204,2.97063 +360230,3.56724 +360256,3.22534 +360282,3.46775 +360308,3.50603 +360334,4.44745 +360360,4.63178 +360386,4.51576 +360412,4.7574 +360438,4.74587 +360464,4.38636 +360490,4.28997 +360516,3.86319 +360542,3.9112 +360568,3.74953 +360594,3.95163 +360620,4.0638 +360646,3.30268 +360672,3.51319 +360698,3.54152 +360724,4.02864 +360750,4.01935 +360776,3.65356 +360802,3.73238 +360828,3.77921 +360854,4.01343 +360880,3.97667 +360906,4.66471 +360932,3.62065 +360958,4.00807 +360984,4.09304 +361010,4.04615 +361036,4.89306 +361062,4.20302 +361088,5.11864 +361114,4.24344 +361140,4.20564 +361166,3.94818 +361192,3.51205 +361218,3.78914 +361244,4.05024 +361270,4.03108 +361296,4.18988 +361322,4.27097 +361348,4.08679 +361374,3.76006 +361400,3.85997 +361426,3.8327 +361452,3.61307 +361478,3.21982 +361504,3.82298 +361530,3.78837 +361556,3.29782 +361582,3.23774 +361608,3.05872 +361634,4.1202 +361660,3.44114 +361686,3.49372 +361712,3.36352 +361738,3.43229 +361764,3.65978 +361790,3.61413 +361816,2.9149 +361842,4.08854 +361868,3.30664 +361894,3.57173 +361920,3.39512 +361946,3.78307 +361972,3.47812 +361998,3.49515 +362024,3.72193 +362050,3.68208 +362076,3.61105 +362102,3.91524 +362128,3.54183 +362154,3.66022 +362180,3.76303 +362206,3.35443 +362232,2.71679 +362258,3.38262 +362284,3.48653 +362310,3.56773 +362336,3.87789 +362362,3.40156 +362388,3.87269 +362414,3.89035 +362440,3.43231 +362466,3.43426 +362492,3.66323 +362518,3.06801 +362544,3.13902 +362570,3.64676 +362596,3.36907 +362622,3.17838 +362648,2.90843 +362674,3.55996 +362700,3.53307 +362726,3.1795 +362752,2.78839 +362778,3.11069 +362804,3.67037 +362830,5.04798 +362856,4.96608 +362882,4.58727 +362908,4.50996 +362934,4.10507 +362960,4.58235 +362986,3.85058 +363012,4.59741 +363038,3.98894 +363064,3.50379 +363090,3.93716 +363116,3.86898 +363142,4.0951 +363168,4.61189 +363194,4.2961 +363220,3.73755 +363246,4.00233 +363272,4.28018 +363298,4.454 +363324,4.00811 +363350,4.10295 +363376,3.90717 +363402,3.75181 +363428,4.71065 +363454,4.71136 +363480,4.16107 +363506,4.30761 +363532,4.06145 +363558,3.82277 +363584,4.2325 +363610,3.93379 +363636,3.99157 +363662,3.55542 +363688,4.08495 +363714,4.29657 +363740,3.70581 +363766,4.41184 +363792,4.37114 +363818,3.52416 +363844,3.80399 +363870,3.55837 +363896,3.25689 +363922,3.74076 +363948,4.21006 +363974,3.35858 +364000,3.73311 +364026,3.54151 +364052,3.28263 +364078,3.39041 +364104,3.72252 +364130,4.10489 +364156,3.16552 +364182,3.74594 +364208,3.55053 +364234,3.76827 +364260,3.56955 +364286,3.34008 +364312,3.44951 +364338,3.577 +364364,2.76294 +364390,2.99707 +364416,3.40574 +364442,3.13637 +364468,3.07551 +364494,3.85406 +364520,3.11078 +364546,3.28149 +364572,3.40514 +364598,3.42445 +364624,3.94747 +364650,4.03754 +364676,3.82648 +364702,3.81269 +364728,3.45779 +364754,3.78031 +364780,3.56251 +364806,3.40175 +364832,3.44647 +364858,3.65785 +364884,3.39911 +364910,3.72228 +364936,2.87734 +364962,3.2479 +364988,3.35781 +365014,3.87291 +365040,3.83551 +365066,3.05373 +365092,3.52467 +365118,3.82917 +365144,3.04185 +365170,3.40607 +365196,3.32605 +365222,3.66959 +365248,3.24278 +365274,3.30845 +365300,3.56254 +365326,3.42589 +365352,2.99305 +365378,3.47137 +365404,3.38151 +365430,3.25692 +365456,3.29794 +365482,3.01754 +365508,3.2076 +365534,3.36962 +365560,2.77273 +365586,3.49416 +365612,3.42194 +365638,3.38767 +365664,3.20945 +365690,3.2686 +365716,3.79348 +365742,2.95629 +365768,4.29303 +365794,3.77347 +365820,3.7642 +365846,3.70235 +365872,3.33156 +365898,3.51927 +365924,3.45512 +365950,4.24731 +365976,3.8574 +366002,3.49579 +366028,4.13537 +366054,3.69878 +366080,3.43201 +366106,3.65838 +366132,4.02918 +366158,3.7717 +366184,2.96392 +366210,3.80625 +366236,3.45754 +366262,2.97687 +366288,3.24344 +366314,3.65619 +366340,3.78734 +366366,3.55824 +366392,3.60473 +366418,3.13055 +366444,2.95592 +366470,2.79421 +366496,2.74416 +366522,3.77632 +366548,2.97468 +366574,3.2028 +366600,3.70474 +366626,3.4024 +366652,3.2717 +366678,3.75317 +366704,3.97123 +366730,4.2531 +366756,3.77923 +366782,3.22659 +366808,3.52215 +366834,3.33645 +366860,3.18894 +366886,2.86657 +366912,3.11507 +366938,3.01205 +366964,3.49453 +366990,2.90868 +367016,4.0593 +367042,4.17319 +367068,2.83379 +367094,4.28509 +367120,4.04195 +367146,3.53543 +367172,3.95461 +367198,3.89287 +367224,3.92003 +367250,3.25263 +367276,3.6484 +367302,3.18019 +367328,3.01402 +367354,3.57738 +367380,3.37537 +367406,3.51405 +367432,3.38188 +367458,3.3083 +367484,3.1421 +367510,3.52673 +367536,4.25513 +367562,3.26424 +367588,3.94088 +367614,3.17661 +367640,3.15977 +367666,3.37642 +367692,3.53202 +367718,3.00122 +367744,3.90221 +367770,3.68021 +367796,3.50217 +367822,3.43628 +367848,3.37996 +367874,3.86731 +367900,3.76244 +367926,3.18194 +367952,3.2258 +367978,3.1804 +368004,3.37896 +368030,4.07078 +368056,4.1386 +368082,3.63313 +368108,3.93806 +368134,3.35967 +368160,3.93251 +368186,3.62276 +368212,3.1892 +368238,3.90471 +368264,3.48123 +368290,3.79328 +368316,3.70527 +368342,3.53462 +368368,3.86563 +368394,3.52588 +368420,3.092 +368446,3.34608 +368472,3.16779 +368498,3.00598 +368524,3.86974 +368550,3.55391 +368576,3.11663 +368602,2.92028 +368628,2.97451 +368654,3.08649 +368680,3.28905 +368706,2.6912 +368732,4.34312 +368758,3.90813 +368784,4.30173 +368810,4.16201 +368836,3.84636 +368862,3.85094 +368888,3.71551 +368914,4.20411 +368940,3.54598 +368966,3.68251 +368992,3.35256 +369018,3.64737 +369044,3.46654 +369070,3.43395 +369096,3.82975 +369122,3.76393 +369148,3.77952 +369174,3.56732 +369200,4.25682 +369226,3.55336 +369252,3.06234 +369278,3.01646 +369304,3.85639 +369330,3.02375 +369356,3.21977 +369382,3.2946 +369408,3.1892 +369434,2.72982 +369460,3.72033 +369486,4.0826 +369512,3.37596 +369538,3.75173 +369564,3.5135 +369590,2.90569 +369616,3.30278 +369642,3.08465 +369668,2.58561 +369694,2.9234 +369720,4.06518 +369746,4.69605 +369772,3.77195 +369798,3.92625 +369824,3.62241 +369850,3.92062 +369876,3.48304 +369902,4.60217 +369928,3.98376 +369954,3.89302 +369980,3.97064 +370006,3.77337 +370032,3.93141 +370058,4.78664 +370084,3.93562 +370110,4.27526 +370136,3.89969 +370162,3.51584 +370188,4.14421 +370214,3.76541 +370240,2.99582 +370266,3.08907 +370292,3.26299 +370318,3.45218 +370344,3.48193 +370370,3.21578 +370396,3.73011 +370422,3.48794 +370448,3.71583 +370474,3.52225 +370500,3.91304 +370526,3.48952 +370552,3.41802 +370578,3.44455 +370604,3.56775 +370630,3.92253 +370656,3.64496 +370682,2.94444 +370708,3.42718 +370734,2.96695 +370760,3.56592 +370786,3.37642 +370812,3.17014 +370838,3.81609 +370864,2.95648 +370890,2.99264 +370916,3.02108 +370942,3.51347 +370968,3.72907 +370994,3.63267 +371020,4.12656 +371046,3.37418 +371072,3.32065 +371098,3.37373 +371124,3.42819 +371150,3.44428 +371176,2.93951 +371202,3.3224 +371228,3.1678 +371254,3.51419 +371280,3.43086 +371306,3.40859 +371332,2.60218 +371358,3.28894 +371384,3.30083 +371410,3.5215 +371436,2.77587 +371462,3.04185 +371488,3.08827 +371514,3.36357 +371540,3.22523 +371566,3.49595 +371592,2.84985 +371618,3.24292 +371644,3.46899 +371670,3.33851 +371696,3.06061 +371722,2.95396 +371748,4.67996 +371774,3.19064 +371800,3.17525 +371826,3.36857 +371852,3.74008 +371878,3.70744 +371904,3.72017 +371930,3.9365 +371956,3.6127 +371982,3.35348 +372008,3.8805 +372034,3.56508 +372060,2.97905 +372086,3.48729 +372112,3.8785 +372138,3.007 +372164,3.39865 +372190,3.65995 +372216,3.22089 +372242,3.31538 +372268,3.15761 +372294,3.54588 +372320,3.58278 +372346,4.15296 +372372,3.43529 +372398,3.70737 +372424,3.26086 +372450,3.67796 +372476,3.72804 +372502,3.87947 +372528,4.33662 +372554,3.57155 +372580,2.91613 +372606,3.24349 +372632,3.86025 +372658,3.95518 +372684,3.55543 +372710,3.33492 +372736,3.18185 +372762,3.40961 +372788,3.13086 +372814,3.32532 +372840,3.18472 +372866,3.83052 +372892,3.3239 +372918,3.16342 +372944,3.64418 +372970,3.04493 +372996,3.72141 +373022,3.38502 +373048,3.30448 +373074,3.24942 +373100,3.05607 +373126,3.38064 +373152,3.78386 +373178,3.71667 +373204,4.04558 +373230,3.13656 +373256,3.22841 +373282,2.70328 +373308,2.89561 +373334,4.01735 +373360,3.54181 +373386,3.43509 +373412,3.20105 +373438,3.26397 +373464,5.46538 +373490,4.82093 +373516,4.76436 +373542,4.42805 +373568,4.80142 +373594,4.69474 +373620,4.89305 +373646,4.55133 +373672,4.6052 +373698,4.71105 +373724,4.65213 +373750,4.2285 +373776,4.83278 +373802,4.06896 +373828,4.18637 +373854,4.48668 +373880,4.63018 +373906,4.33452 +373932,4.08672 +373958,4.48528 +373984,4.5255 +374010,4.54395 +374036,4.08408 +374062,4.67352 +374088,4.34724 +374114,4.44873 +374140,4.27944 +374166,4.43106 +374192,4.26941 +374218,4.47361 +374244,4.47322 +374270,4.66413 +374296,4.60815 +374322,4.47474 +374348,4.62317 +374374,4.40626 +374400,4.25752 +374426,4.49843 +374452,4.08958 +374478,4.42528 +374504,4.53875 +374530,4.39007 +374556,4.61717 +374582,4.98631 +374608,3.7793 +374634,4.70852 +374660,4.32456 +374686,4.16627 +374712,3.91971 +374738,4.05078 +374764,3.63203 +374790,3.89388 +374816,3.83102 +374842,3.93817 +374868,3.78724 +374894,4.46432 +374920,4.72181 +374946,4.6072 +374972,4.32846 +374998,4.3692 +375024,4.32215 +375050,4.04945 +375076,4.33761 +375102,3.86963 +375128,4.15107 +375154,3.26385 +375180,3.67697 +375206,3.55341 +375232,3.55945 +375258,4.58608 +375284,3.95281 +375310,3.47531 +375336,3.66448 +375362,3.70966 +375388,3.8434 +375414,3.74242 +375440,3.66566 +375466,3.83858 +375492,3.63603 +375518,4.24403 +375544,3.57226 +375570,3.74142 +375596,3.55574 +375622,3.85843 +375648,3.31348 +375674,3.14602 +375700,4.13895 +375726,3.48394 +375752,3.2393 +375778,4.00675 +375804,3.32788 +375830,3.15773 +375856,3.76485 +375882,3.29836 +375908,3.96496 +375934,3.60004 +375960,3.85126 +375986,3.82962 +376012,3.12235 +376038,4.07135 +376064,3.58466 +376090,3.66062 +376116,3.84285 +376142,3.60633 +376168,3.41477 +376194,3.06187 +376220,3.83077 +376246,2.86639 +376272,3.42576 +376298,3.68694 +376324,3.5321 +376350,3.33295 +376376,3.72559 +376402,3.34218 +376428,3.30086 +376454,3.13167 +376480,3.57885 +376506,3.76951 +376532,3.25591 +376558,2.91521 +376584,3.57148 +376610,3.18824 +376636,2.75964 +376662,3.6693 +376688,3.44079 +376714,3.19686 +376740,3.54167 +376766,3.50844 +376792,3.48355 +376818,3.78532 +376844,3.63646 +376870,3.43377 +376896,3.74291 +376922,3.63143 +376948,3.22384 +376974,3.56692 +377000,3.08624 +377026,3.22197 +377052,3.22222 +377078,3.59279 +377104,3.29762 +377130,3.31943 +377156,2.9687 +377182,3.21938 +377208,3.24654 +377234,3.2172 +377260,3.23963 +377286,3.59189 +377312,3.65086 +377338,3.52816 +377364,3.40668 +377390,2.92316 +377416,3.79499 +377442,3.94324 +377468,4.08131 +377494,4.25767 +377520,4.38344 +377546,3.97784 +377572,4.53693 +377598,4.21382 +377624,3.18694 +377650,3.52873 +377676,3.61815 +377702,3.46795 +377728,3.53602 +377754,3.15139 +377780,3.15556 +377806,3.87236 +377832,2.69733 +377858,3.61467 +377884,3.17568 +377910,3.64927 +377936,3.51048 +377962,3.15213 +377988,4.22841 +378014,3.53758 +378040,3.56946 +378066,3.15744 +378092,3.17639 +378118,3.34626 +378144,3.13688 +378170,3.16196 +378196,4.15894 +378222,3.56154 +378248,3.59465 +378274,3.59819 +378300,3.49462 +378326,3.41392 +378352,2.99473 +378378,3.48698 +378404,3.59471 +378430,3.70629 +378456,3.42727 +378482,3.43932 +378508,2.49401 +378534,3.53177 +378560,3.36472 +378586,4.34547 +378612,3.77773 +378638,3.91866 +378664,3.93058 +378690,4.24476 +378716,3.76502 +378742,4.10325 +378768,3.80845 +378794,3.69516 +378820,4.48369 +378846,4.10217 +378872,3.92769 +378898,3.98472 +378924,4.31566 +378950,4.08771 +378976,3.24428 +379002,3.42754 +379028,3.91881 +379054,3.9036 +379080,4.04936 +379106,3.55367 +379132,4.46341 +379158,4.42898 +379184,4.75667 +379210,5.49831 +379236,4.54687 +379262,4.45274 +379288,4.59286 +379314,4.82749 +379340,3.94237 +379366,4.24647 +379392,3.54426 +379418,4.1739 +379444,4.05067 +379470,4.75367 +379496,4.63478 +379522,4.6473 +379548,4.36671 +379574,4.71608 +379600,4.78866 +379626,4.92356 +379652,4.7003 +379678,5.07366 +379704,4.63325 +379730,4.66896 +379756,4.61108 +379782,5.00652 +379808,4.63901 +379834,4.57399 +379860,4.82642 +379886,4.67363 +379912,4.61471 +379938,4.62499 +379964,4.43839 +379990,4.47209 +380016,4.11728 +380042,4.52649 +380068,4.82443 +380094,4.23607 +380120,4.56657 +380146,4.51751 +380172,4.74733 +380198,4.56886 +380224,4.77633 +380250,4.62315 +380276,4.63981 +380302,4.56468 +380328,4.39644 +380354,4.82876 +380380,4.43563 +380406,4.58463 +380432,4.66198 +380458,4.26272 +380484,4.58586 +380510,4.74123 +380536,4.79365 +380562,4.59673 +380588,4.57697 +380614,4.60243 +380640,4.54305 +380666,4.58435 +380692,4.44223 +380718,4.70907 +380744,4.59067 +380770,4.80777 +380796,4.58803 +380822,4.80404 +380848,4.69914 +380874,4.5119 +380900,4.81995 +380926,4.48586 +380952,4.72513 +380978,4.82135 +381004,4.58317 +381030,4.54564 +381056,4.51346 +381082,4.59438 +381108,4.46813 +381134,4.53502 +381160,4.69939 +381186,4.58888 +381212,4.57758 +381238,4.49065 +381264,4.40333 +381290,4.22108 +381316,4.46077 +381342,4.47592 +381368,4.52508 +381394,4.42248 +381420,4.87421 +381446,4.42513 +381472,4.74412 +381498,4.26402 +381524,4.35467 +381550,4.22709 +381576,4.57837 +381602,4.33772 +381628,4.62232 +381654,4.31259 +381680,4.34384 +381706,4.91464 +381732,4.77028 +381758,4.56979 +381784,4.42967 +381810,4.77177 +381836,4.52016 +381862,4.20769 +381888,4.28941 +381914,4.26309 +381940,4.33736 +381966,4.33874 +381992,4.61644 +382018,4.21044 +382044,4.28812 +382070,4.25891 +382096,4.20498 +382122,4.22945 +382148,3.8488 +382174,4.1367 +382200,4.68087 +382226,4.69425 +382252,4.72877 +382278,4.7977 +382304,4.8281 +382330,4.53394 +382356,4.80372 +382382,4.67209 +382408,4.77184 +382434,4.70661 +382460,4.69047 +382486,4.84948 +382512,4.72852 +382538,4.7204 +382564,4.82835 +382590,4.70134 +382616,4.84366 +382642,4.7053 +382668,4.76218 +382694,4.8052 +382720,4.75118 +382746,4.73007 +382772,4.74312 +382798,4.59972 +382824,4.79268 +382850,4.6129 +382876,4.68417 +382902,4.91814 +382928,4.75053 +382954,4.75168 +382980,4.74287 +383006,4.71954 +383032,4.74333 +383058,4.72518 +383084,4.6511 +383110,4.89152 +383136,4.73672 +383162,4.59634 +383188,4.70525 +383214,4.81806 +383240,4.83054 +383266,4.78242 +383292,4.64522 +383318,4.80174 +383344,4.62133 +383370,4.83082 +383396,4.73307 +383422,4.62488 +383448,4.68206 +383474,4.67427 +383500,4.84213 +383526,4.67553 +383552,4.70194 +383578,4.86622 +383604,4.80869 +383630,4.69681 +383656,4.80258 +383682,4.78822 +383708,4.77835 +383734,4.87148 +383760,4.70501 +383786,4.83327 +383812,4.73704 +383838,4.84503 +383864,4.79409 +383890,4.79707 +383916,4.73989 +383942,4.75038 +383968,4.65603 +383994,4.85132 +384020,4.88811 +384046,4.77707 +384072,4.63617 +384098,4.7386 +384124,4.81224 +384150,4.65582 +384176,4.78287 +384202,4.64262 +384228,4.65489 +384254,4.69011 +384280,4.73957 +384306,4.72666 +384332,4.70038 +384358,4.77155 +384384,4.69002 +384410,4.63888 +384436,4.7047 +384462,4.74028 +384488,4.74428 +384514,4.73299 +384540,4.75077 +384566,4.81959 +384592,4.76031 +384618,4.80178 +384644,4.78037 +384670,4.81359 +384696,4.63489 +384722,4.65265 +384748,4.78868 +384774,4.67823 +384800,4.70086 +384826,4.78904 +384852,4.76968 +384878,4.76113 +384904,4.68531 +384930,4.63638 +384956,4.78132 +384982,4.68789 +385008,4.74982 +385034,4.72708 +385060,4.78014 +385086,4.67224 +385112,4.69152 +385138,4.74306 +385164,4.76875 +385190,4.74473 +385216,4.72571 +385242,4.85721 +385268,4.68576 +385294,4.74159 +385320,4.79515 +385346,4.73801 +385372,4.71917 +385398,4.7551 +385424,4.65371 +385450,4.8082 +385476,4.62067 +385502,4.78762 +385528,4.77316 +385554,4.78603 +385580,4.72194 +385606,4.72792 +385632,4.74441 +385658,4.69587 +385684,4.66556 +385710,4.81846 +385736,4.76551 +385762,4.73834 +385788,4.68497 +385814,4.7115 +385840,4.76676 +385866,4.68475 +385892,4.72205 +385918,4.67682 +385944,4.77884 +385970,4.6762 +385996,4.71692 +386022,4.74836 +386048,4.75081 +386074,4.72884 +386100,4.66382 +386126,4.69693 +386152,4.65804 +386178,4.74497 +386204,4.66157 +386230,4.72499 +386256,4.75253 +386282,4.7001 +386308,4.7922 +386334,4.73978 +386360,4.72502 +386386,4.74692 +386412,4.75657 +386438,4.74806 +386464,4.81118 +386490,4.70629 +386516,4.6308 +386542,4.67944 +386568,4.72413 +386594,4.7589 +386620,4.7588 +386646,4.6805 +386672,4.71967 +386698,4.6528 +386724,4.69591 +386750,4.72228 +386776,4.66588 +386802,4.74464 +386828,4.65777 +386854,4.69105 +386880,4.74641 +386906,4.7386 +386932,4.78965 +386958,4.72332 +386984,4.69542 +387010,4.65484 +387036,4.7698 +387062,4.71226 +387088,4.66101 +387114,4.69634 +387140,4.77615 +387166,4.69919 +387192,4.69837 +387218,4.69556 +387244,4.71927 +387270,4.6127 +387296,4.67513 +387322,4.77795 +387348,4.78714 +387374,4.7196 +387400,4.77116 +387426,4.6919 +387452,4.69647 +387478,4.69944 +387504,4.73503 +387530,4.69449 +387556,4.74171 +387582,4.72829 +387608,4.66535 +387634,4.65417 +387660,4.68438 +387686,4.69948 +387712,4.76517 +387738,4.66854 +387764,4.81119 +387790,4.69645 +387816,4.71883 +387842,4.7911 +387868,4.65385 +387894,4.68494 +387920,4.73486 +387946,4.74353 +387972,4.74957 +387998,4.72615 +388024,4.65843 +388050,4.68671 +388076,4.72438 +388102,4.6868 +388128,4.67832 +388154,4.70389 +388180,4.67727 +388206,4.6982 +388232,4.68008 +388258,4.71136 +388284,4.74224 +388310,4.72778 +388336,4.739 +388362,4.70463 +388388,4.72951 +388414,4.71267 +388440,4.80248 +388466,4.70982 +388492,4.74111 +388518,4.70464 +388544,4.76954 +388570,4.69757 +388596,4.76068 +388622,4.67451 +388648,4.72748 +388674,4.68534 +388700,4.69789 +388726,4.75559 +388752,4.74356 +388778,4.66001 +388804,4.66957 +388830,4.74927 +388856,4.72676 +388882,4.70331 +388908,4.77578 +388934,4.76869 +388960,4.65407 +388986,4.73105 +389012,4.70324 +389038,4.64214 +389064,4.70997 +389090,4.70665 +389116,4.67916 +389142,4.76383 +389168,4.70053 +389194,4.69332 +389220,4.69952 +389246,4.73134 +389272,4.69959 +389298,4.72021 +389324,4.70068 +389350,4.71533 +389376,4.68914 +389402,4.75882 +389428,4.7269 +389454,4.67601 +389480,4.73198 +389506,4.66107 +389532,4.73364 +389558,4.71529 +389584,4.72264 +389610,4.77083 +389636,4.77682 +389662,4.66753 +389688,4.68914 +389714,4.72771 +389740,4.762 +389766,4.73682 +389792,4.70049 +389818,4.68357 +389844,4.70735 +389870,4.77443 +389896,4.65265 +389922,4.75047 +389948,4.71985 +389974,4.70017 +390000,4.76446 +390026,4.65284 +390052,4.74309 +390078,4.74014 +390104,4.72657 +390130,4.72317 +390156,4.73612 +390182,4.71936 +390208,4.73381 +390234,4.7234 +390260,4.71942 +390286,4.71852 +390312,4.71676 +390338,4.67038 +390364,4.70932 +390390,4.72564 +390416,4.71913 +390442,4.66566 +390468,4.71602 +390494,4.71005 +390520,4.69789 +390546,4.69838 +390572,4.73029 +390598,4.73098 +390624,4.70607 +390650,4.79031 +390676,4.76771 +390702,4.68117 +390728,4.72127 +390754,4.65461 +390780,4.71264 +390806,4.7196 +390832,4.68452 +390858,4.68387 +390884,4.70614 +390910,4.72197 +390936,4.72142 +390962,4.74069 +390988,4.65735 +391014,4.66524 +391040,4.68028 +391066,4.74903 +391092,4.66941 +391118,4.69791 +391144,4.7278 +391170,4.74457 +391196,4.68422 +391222,4.70378 +391248,4.67471 +391274,4.69782 +391300,4.66617 +391326,4.69747 +391352,4.69854 +391378,4.67457 +391404,4.68494 +391430,4.72663 +391456,4.66541 +391482,4.69674 +391508,4.71011 +391534,4.70695 +391560,4.68829 +391586,4.72979 +391612,4.69111 +391638,4.72811 +391664,4.67249 +391690,4.72697 +391716,4.69893 +391742,4.70924 +391768,4.71212 +391794,4.69959 +391820,4.68475 +391846,4.66384 +391872,4.72907 +391898,4.70208 +391924,4.72596 +391950,4.708 +391976,4.70452 +392002,4.67668 +392028,4.70731 +392054,4.71152 +392080,4.67803 +392106,4.67966 +392132,4.67929 +392158,4.71927 +392184,4.68572 +392210,4.70006 +392236,4.73986 +392262,4.70496 +392288,4.73201 +392314,4.73336 +392340,4.67328 +392366,4.70964 +392392,4.69514 +392418,4.73094 +392444,4.74199 +392470,4.70313 +392496,4.66909 +392522,4.76321 +392548,4.65804 +392574,4.72668 +392600,4.69706 +392626,4.76413 +392652,4.69708 +392678,4.69176 +392704,4.70975 +392730,4.69866 +392756,4.72195 +392782,4.70004 +392808,4.70222 +392834,4.69479 +392860,4.70523 +392886,4.67642 +392912,4.71826 +392938,4.70786 +392964,4.67135 +392990,4.72027 +393016,4.69104 +393042,4.70421 +393068,4.68471 +393094,4.73729 +393120,4.69196 +393146,4.70226 +393172,4.66855 +393198,4.73059 +393224,4.71988 +393250,4.68093 +393276,4.74448 +393302,4.6867 +393328,4.69975 +393354,4.73044 +393380,4.73935 +393406,4.69466 +393432,4.75852 +393458,4.6811 +393484,4.70358 +393510,4.75333 +393536,4.71847 +393562,4.67824 +393588,4.71067 +393614,4.71632 +393640,4.68617 +393666,4.72408 +393692,4.69558 +393718,4.71118 +393744,4.71228 +393770,4.69708 +393796,4.71313 +393822,4.71884 +393848,4.68799 +393874,4.67366 +393900,4.71655 +393926,4.6447 +393952,4.71653 +393978,4.74101 +394004,4.73185 +394030,4.7312 +394056,4.70014 +394082,4.72328 +394108,4.71473 +394134,4.70346 +394160,4.7012 +394186,4.69706 +394212,4.70913 +394238,4.70032 +394264,4.70065 +394290,4.70448 +394316,4.70719 +394342,4.70773 +394368,4.6683 +394394,4.71301 +394420,4.68166 +394446,4.69763 +394472,4.67852 +394498,4.71417 +394524,4.70224 +394550,4.68848 +394576,4.68059 +394602,4.69282 +394628,4.71061 +394654,4.73844 +394680,4.71893 +394706,4.7046 +394732,4.68772 +394758,4.68372 +394784,4.716 +394810,4.68305 +394836,4.69811 +394862,4.73532 +394888,4.71161 +394914,4.72364 +394940,4.69024 +394966,4.71644 +394992,4.71007 +395018,4.70614 +395044,4.72654 +395070,4.71767 +395096,4.68918 +395122,4.70492 +395148,4.69673 +395174,4.70908 +395200,4.7083 +395226,4.70187 +395252,4.69893 +395278,4.6869 +395304,4.72327 +395330,4.70206 +395356,4.70217 +395382,4.70716 +395408,4.69594 +395434,4.69531 +395460,4.70719 +395486,4.70013 +395512,4.7005 +395538,4.68104 +395564,4.72232 +395590,4.70969 +395616,4.71303 +395642,4.69557 +395668,4.70294 +395694,4.71094 +395720,4.72298 +395746,4.70502 +395772,4.68525 +395798,4.69236 +395824,4.70247 +395850,4.71369 +395876,4.69345 +395902,4.68932 +395928,4.67608 +395954,4.7037 +395980,4.7086 +396006,4.6895 +396032,4.70919 +396058,4.68601 +396084,4.68869 +396110,4.69148 +396136,4.72844 +396162,4.72288 +396188,4.72576 +396214,4.73049 +396240,4.7459 +396266,4.68419 +396292,4.68899 +396318,4.69727 +396344,4.69078 +396370,4.69216 +396396,4.68162 +396422,4.70307 +396448,4.73922 +396474,4.69524 +396500,4.70014 +396526,4.71495 +396552,4.7063 +396578,4.69801 +396604,4.68545 +396630,4.68825 +396656,4.69978 +396682,4.71614 +396708,4.69686 +396734,4.70908 +396760,4.70691 +396786,4.73812 +396812,4.69721 +396838,4.70603 +396864,4.723 +396890,4.70977 +396916,4.71362 +396942,4.70932 +396968,4.7241 +396994,4.69199 +397020,4.70421 +397046,4.6886 +397072,4.70354 +397098,4.70783 +397124,4.70935 +397150,4.67543 +397176,4.69356 +397202,4.6818 +397228,4.7009 +397254,4.70796 +397280,4.70084 +397306,4.70691 +397332,4.70118 +397358,4.71405 +397384,4.69548 +397410,4.70068 +397436,4.70457 +397462,4.69803 +397488,4.70376 +397514,4.70512 +397540,4.7017 +397566,4.68695 +397592,4.71998 +397618,4.70233 +397644,4.69696 +397670,4.70579 +397696,4.72523 +397722,4.71285 +397748,4.70818 +397774,4.69587 +397800,4.71916 +397826,4.71087 +397852,4.70968 +397878,4.71733 +397904,4.70827 +397930,4.69264 +397956,4.67923 +397982,4.72522 +398008,4.69327 +398034,4.70807 +398060,4.71019 +398086,4.68934 +398112,4.69422 +398138,4.69783 +398164,4.71006 +398190,4.69527 +398216,4.69913 +398242,4.7048 +398268,4.69621 +398294,4.69879 +398320,4.70245 +398346,4.71547 +398372,4.71692 +398398,4.71999 +398424,4.71927 +398450,4.71018 +398476,4.68673 +398502,4.70276 +398528,4.69061 +398554,4.70428 +398580,4.69965 +398606,4.7177 +398632,4.70717 +398658,4.68647 +398684,4.69117 +398710,4.70266 +398736,4.70032 +398762,4.68646 +398788,4.71118 +398814,4.69571 +398840,4.71028 +398866,4.68609 +398892,4.68884 +398918,4.71057 +398944,4.70403 +398970,4.7015 +398996,4.71915 +399022,4.68744 +399048,4.71338 +399074,4.68474 +399100,4.69781 +399126,4.71725 +399152,4.69703 +399178,4.69413 +399204,4.71786 +399230,4.70803 +399256,4.69829 +399282,4.72093 +399308,4.70899 +399334,4.70909 +399360,4.69571 +399386,4.68962 +399412,4.69057 +399438,4.70024 +399464,4.68971 +399490,4.70534 +399516,4.71704 +399542,4.68517 +399568,4.69392 +399594,4.70509 +399620,4.71645 +399646,4.6971 +399672,4.71246 +399698,4.69642 +399724,4.70907 +399750,4.70013 +399776,4.68529 +399802,4.71634 +399828,4.7192 +399854,4.6938 +399880,4.69945 +399906,4.70701 +399932,4.68263 +399958,4.71445 +399984,4.69466 diff --git a/Project2-Character-Recognition/data/Rot_loss(51_outof_52).csv b/Project2-Character-Recognition/data/Rot_loss(51_outof_52).csv new file mode 100644 index 0000000..10f73d2 --- /dev/null +++ b/Project2-Character-Recognition/data/Rot_loss(51_outof_52).csv @@ -0,0 +1,769 @@ +4,5.81053 +2,5.70347 +41,5.70348 +25,5.69966 +9,5.7032 +2,5.70044 +40,5.70276 +17,5.70977 +35,5.70699 +39,5.70271 +30,5.69502 +4,5.70214 +48,5.71175 +14,5.70358 +1,5.70175 +6,5.69463 +19,5.70241 +9,5.70341 +22,5.70887 +40,5.70392 +13,5.69057 +43,5.70072 +39,5.69224 +45,5.69311 +43,5.70324 +46,5.6834 +33,5.69668 +37,5.70277 +32,5.70891 +49,5.70305 +29,5.68988 +27,5.70275 +9,5.68708 +50,5.6991 +41,5.68967 +17,5.7001 +35,5.703 +0,5.70341 +20,5.6858 +5,5.70964 +7,5.69228 +9,5.70481 +5,5.70657 +44,5.69629 +28,5.69423 +30,5.70109 +17,5.69039 +43,5.7017 +10,5.68552 +11,5.68743 +9,5.67986 +34,5.68714 +18,5.68101 +43,5.68291 +0,5.69005 +48,5.68517 +51,5.67919 +31,5.69824 +1,5.67917 +6,5.69055 +17,5.68609 +27,5.6926 +16,5.68698 +11,5.69161 +43,5.69486 +37,5.68182 +37,5.68352 +49,5.67578 +28,5.68151 +34,5.67592 +0,5.67862 +45,5.6657 +42,5.67245 +22,5.67407 +33,5.67729 +20,5.6568 +13,5.6555 +22,5.67367 +9,5.6474 +44,5.66042 +26,5.64638 +50,5.65698 +4,5.67015 +51,5.65134 +39,5.6594 +17,5.6332 +47,5.63925 +22,5.61041 +33,5.58473 +4,5.58732 +3,5.55764 +39,5.49481 +31,5.43963 +23,5.37965 +23,5.03403 +31,4.99771 +38,5.03469 +1,5.18365 +20,5.13058 +40,5.02711 +38,5.22716 +0,4.75349 +22,4.92864 +40,4.89693 +17,4.98492 +16,4.84095 +33,4.75312 +10,4.79251 +14,4.85751 +34,4.53831 +11,4.85276 +47,4.54713 +38,4.65422 +9,4.75338 +34,4.62302 +46,4.83874 +50,4.52838 +17,4.79812 +9,4.38914 +27,4.76792 +5,4.55909 +12,4.51637 +43,4.73017 +47,4.64053 +34,4.40846 +15,4.47893 +28,4.69093 +16,4.46893 +39,4.55384 +30,4.25461 +22,4.2182 +37,4.35833 +37,4.18907 +20,4.07727 +19,4.3588 +37,4.0718 +42,4.09591 +47,4.06733 +21,4.2931 +44,3.83528 +29,3.6927 +6,3.85132 +3,3.93905 +11,4.01608 +18,3.77734 +43,3.65427 +17,3.84124 +20,3.69698 +6,3.53161 +43,3.78409 +7,3.48953 +1,3.64064 +44,3.53164 +43,3.604 +23,3.57409 +38,3.43347 +19,3.55173 +47,3.59534 +23,3.4352 +50,3.27891 +12,3.74313 +2,3.39899 +12,3.43547 +20,3.3807 +38,3.27381 +14,3.08847 +9,3.01928 +16,3.07282 +3,3.29601 +38,3.20758 +41,2.92189 +34,3.20507 +14,2.98623 +32,3.19309 +20,2.91969 +45,3.19476 +35,2.86294 +15,2.8323 +28,2.79481 +37,3.05061 +44,2.94104 +12,3.04761 +6,2.96757 +26,2.92271 +9,3.36177 +35,3.13904 +7,2.66079 +23,2.93055 +30,2.8089 +33,2.95457 +5,2.84605 +48,2.83877 +45,2.46069 +2,3.17915 +11,2.66826 +5,2.57529 +37,2.48067 +14,2.41789 +37,2.94187 +33,2.78445 +30,2.61062 +20,2.27615 +14,2.00771 +25,2.10647 +3,2.08127 +31,1.97583 +51,1.79749 +36,1.80999 +1,2.02446 +28,2.04396 +38,1.73637 +22,2.37111 +14,1.95324 +24,1.87822 +46,2.10015 +36,2.0526 +8,1.7515 +40,2.31952 +4,1.76573 +43,1.9995 +8,2.00397 +12,2.03288 +0,1.67878 +16,1.8558 +17,1.88409 +4,1.83856 +15,2.10322 +24,2.14123 +8,1.54081 +45,2.05668 +45,1.79016 +3,1.60986 +40,1.69208 +21,1.85565 +41,1.70927 +10,1.7132 +43,1.85213 +30,1.50358 +47,1.57356 +28,1.54153 +40,1.91913 +8,1.335 +7,1.28183 +49,1.89939 +34,1.80316 +0,2.04751 +33,2.00884 +39,1.45473 +32,1.82182 +5,1.81347 +17,1.94057 +34,1.70969 +31,1.19199 +20,1.91504 +24,1.86149 +5,1.51154 +8,1.59398 +10,1.68025 +19,2.42425 +28,1.63867 +25,1.67328 +47,1.42109 +47,1.1937 +9,1.6917 +44,1.46125 +10,1.29319 +45,1.44872 +4,1.63932 +41,1.38406 +1,1.6049 +4,2.08275 +34,1.88624 +3,1.65123 +44,1.19068 +30,1.62823 +39,1.25199 +3,1.37368 +33,1.68386 +22,1.63261 +48,2.10697 +35,1.55607 +32,1.46954 +27,1.38943 +29,1.5257 +45,1.59226 +38,1.60653 +15,1.27306 +37,1.89917 +42,1.56814 +21,1.64831 +0,1.20595 +6,1.18707 +20,2.02123 +46,1.43085 +45,1.60483 +30,1.30805 +36,1.32794 +33,1.28054 +48,1.19229 +19,1.39506 +43,0.966428 +2,1.23807 +7,0.886646 +9,0.771392 +33,0.65539 +46,0.994556 +11,0.497369 +33,0.919895 +41,0.773991 +27,0.807911 +27,0.769988 +46,0.660401 +50,0.823983 +14,1.04351 +27,0.626732 +44,0.670405 +26,0.782681 +44,0.657943 +19,0.833822 +26,0.620618 +16,0.565939 +48,0.517094 +29,0.652803 +46,0.430011 +18,0.627183 +13,0.502737 +10,0.566261 +34,0.656396 +12,0.549385 +38,1.05617 +21,0.631545 +14,0.93189 +33,0.83049 +11,1.11973 +0,0.994628 +39,0.754316 +48,0.631797 +45,0.78735 +31,0.597157 +40,0.6985 +6,1.1578 +21,0.868246 +29,1.10566 +10,0.663384 +47,0.598517 +29,0.594727 +22,0.396868 +20,0.561601 +33,0.806728 +15,0.635275 +11,0.888272 +43,0.685656 +46,0.417394 +51,0.78606 +44,0.757202 +10,0.7342 +5,0.582317 +46,0.470595 +26,0.533082 +26,0.380167 +35,1.00954 +20,1.15373 +21,0.865533 +23,0.452711 +23,0.588978 +41,0.732287 +17,0.647522 +9,0.360321 +1,0.419832 +27,0.608337 +0,0.697473 +38,0.439763 +0,0.859288 +41,1.13605 +48,0.430978 +25,0.757752 +17,0.416572 +50,0.488775 +1,1.30215 +33,0.786157 +11,0.648307 +45,0.92831 +51,0.488208 +0,0.495485 +50,0.400487 +48,0.782688 +20,0.658999 +9,0.477257 +26,0.453325 +30,0.428737 +0,0.392249 +35,0.465398 +43,0.48717 +24,0.561123 +27,0.542522 +50,0.462188 +12,0.613248 +31,0.503788 +38,0.443132 +37,0.842103 +25,0.4731 +1,0.247448 +30,0.443048 +28,0.306178 +35,0.390919 +49,0.299802 +39,0.273197 +14,0.291521 +18,0.259915 +10,0.29159 +33,0.223276 +2,0.174564 +26,0.190011 +28,0.118609 +2,0.239468 +4,0.197465 +35,0.250172 +5,0.102054 +18,0.146408 +20,0.382202 +2,0.209767 +16,0.386556 +36,0.168037 +25,0.130512 +36,0.178502 +35,0.144079 +26,0.133223 +29,0.175332 +10,0.181716 +27,0.135222 +29,0.20392 +46,0.176913 +8,0.0843944 +26,0.13558 +35,0.125057 +2,0.326974 +9,0.379293 +4,0.19632 +9,0.139569 +18,0.172663 +11,0.141625 +51,0.0929265 +12,0.0980373 +43,0.162382 +32,0.0974282 +12,0.253391 +23,0.16249 +30,0.0676749 +32,0.183896 +33,0.0903115 +16,0.238372 +24,0.204231 +46,0.367249 +28,0.185312 +35,0.136433 +16,0.146362 +31,0.170745 +36,0.135565 +45,0.126403 +20,0.130291 +31,0.120836 +49,0.160149 +29,0.149386 +15,0.0687218 +44,0.0636245 +36,0.0773851 +23,0.105367 +34,0.105499 +6,0.0511335 +20,0.0715525 +33,0.10858 +7,0.416643 +49,0.120403 +35,0.325815 +4,0.334186 +28,0.0952475 +39,0.153352 +42,0.134586 +43,0.0952161 +1,0.0810187 +2,0.134981 +11,0.103702 +9,0.0905862 +28,0.283325 +36,0.547271 +15,0.304844 +35,0.188173 +39,0.087556 +50,0.0565755 +9,0.0459449 +42,0.0936797 +51,0.0746611 +0,0.10275 +2,0.154115 +41,0.139939 +17,0.208949 +41,0.223785 +33,0.119582 +14,0.178924 +41,0.0828087 +12,0.0541904 +49,0.0708173 +38,0.0819034 +27,0.140386 +11,0.0789052 +9,0.0474105 +17,0.27476 +51,0.118056 +17,0.153035 +34,0.0667109 +32,0.0896809 +28,0.0678826 +6,0.0977804 +20,0.0803973 +32,0.0747698 +21,0.0487917 +13,0.134242 +10,0.0905476 +2,0.0585989 +47,0.0351525 +11,0.075427 +25,0.0973962 +16,0.0488064 +5,0.0923429 +22,0.0611372 +18,0.0736994 +43,0.0564794 +20,0.108396 +46,0.133664 +40,0.0788361 +18,0.0566769 +29,0.0494022 +14,0.0459213 +2,0.0489605 +49,0.045562 +1,0.0311878 +43,0.0601433 +30,0.0434948 +4,0.0467521 +16,0.0775201 +44,0.0527998 +2,0.099401 +37,0.0756305 +12,0.0881948 +7,0.0334278 +46,0.0452409 +13,0.0373784 +38,0.0664096 +47,0.0845718 +25,0.0280624 +48,0.0531894 +13,0.0549256 +24,0.032594 +35,0.0456148 +12,0.0436951 +3,0.0388458 +48,0.0813473 +25,0.0399426 +31,0.0408703 +23,0.0406966 +22,0.0506728 +5,0.0291602 +24,0.130683 +46,0.039614 +16,0.0275385 +30,0.0319581 +47,0.0681308 +46,0.0608947 +51,0.0404089 +45,0.0204534 +45,0.0501294 +23,0.0401029 +5,0.0276422 +28,0.125687 +22,0.0499672 +16,0.050167 +5,0.0453648 +22,0.0478787 +25,0.0621797 +47,0.0403362 +21,0.0821408 +35,0.0529214 +11,0.044324 +8,0.0383146 +42,0.0253505 +8,0.078511 +49,0.038487 +42,0.0343829 +51,0.0187558 +37,0.0496367 +21,0.031517 +21,0.0292545 +41,0.0434024 +28,0.0408569 +27,0.0398148 +39,0.0416614 +6,0.0536995 +13,0.0418552 +32,0.0292494 +50,0.0412103 +45,0.0667052 +2,0.0586417 +12,0.0346906 +29,0.0407711 +20,0.0453976 +51,0.0394985 +47,0.0474436 +35,0.0304032 +31,0.103593 +10,0.0427371 +0,0.040382 +33,0.0306019 +12,0.0510145 +39,0.0569281 +14,0.0220353 +28,0.144204 +31,0.0380427 +22,0.039853 +39,0.039004 +48,0.0338501 +30,0.0341846 +35,0.0282732 +45,0.027999 +1,0.060234 +45,0.0134813 +15,0.0482096 +18,0.0278034 +25,0.0360966 +18,0.0582984 +42,0.0296461 +5,0.0185586 +30,0.0220752 +25,0.016284 +31,0.0241047 +2,0.048818 +15,0.0248421 +3,0.0274615 +43,0.0226 +10,0.0242559 +47,0.0415453 +11,0.0286012 +25,0.10885 +47,0.0264342 +28,0.0287403 +11,0.0227424 +37,0.0296117 +46,0.0410931 +44,0.0364565 +29,0.0393252 +4,0.0330549 +28,0.0348561 +30,0.0284477 +6,0.0186054 +50,0.0824596 +45,0.0254222 +18,0.0581793 +1,0.053782 +51,0.0335224 +5,0.0221299 +14,0.0354834 +26,0.0446893 +44,0.0308398 +4,0.113413 +43,0.0537739 +34,0.0462738 +45,0.048044 +20,0.0390735 +16,0.0225224 +18,0.0802195 +22,0.0309754 +28,0.0330201 +23,0.0261619 +41,0.0249677 +18,0.027751 +41,0.0539515 +36,0.046317 +21,0.0275965 +29,0.0358596 +4,0.0299239 +46,0.0186925 +44,0.024998 +48,0.0290223 +44,0.0253627 +24,0.0304303 +51,0.0384156 +31,0.0709709 +6,0.04969 +16,0.179282 +5,0.039996 +16,0.0355488 +17,0.0315669 +41,0.062011 +25,0.0262871 +6,0.0237576 +24,0.0431158 +24,0.0193746 +51,0.039496 +3,0.0376506 +40,0.0308477 +19,0.0251851 +4,0.0335559 +30,0.0578777 +36,0.106606 +43,0.059202 +14,0.0568143 +41,0.0378073 +16,0.0774671 +2,0.0476703 +26,0.0157279 +3,0.0277605 +26,0.0295246 +33,0.0357754 +19,0.0271621 +31,0.0385555 +41,0.0302034 +8,0.0352028 +50,0.0236901 +21,0.021473 +5,0.0187063 +45,0.0231513 +33,0.062043 +3,0.0149497 +48,0.0206851 +17,0.0200419 +8,0.0236984 +51,0.0125864 +27,0.0390018 +41,0.03012 +8,0.0296198 +51,0.0262819 +22,0.0564794 +2,0.0294419 +22,0.0230176 +13,0.0170764 +1,0.0185125 +25,0.0282213 +9,0.084807 +23,0.0277766 +49,0.0201055 +43,0.0319636 +27,0.0158275 +50,0.0321056 +9,0.0352054 +49,0.02853 +51,0.0727526 +26,0.0485164 +5,0.0177572 +39,0.0299882 +32,0.0212755 +42,0.0614928 +31,0.0249516 +24,0.0370258 +11,0.0277379 +51,0.0204351 +50,0.0428176 +24,0.0230509 +13,0.0256679 +41,0.036742 +7,0.0230092 +19,0.030068 +11,0.0222108 +28,0.0281746 +36,0.0639521 +39,0.0288814 +38,0.0596527 +44,0.0301285 +2,0.0549261 +36,0.0297864 +46,0.0274126 diff --git a/Project2-Character-Recognition/data/Rot_loss.csv b/Project2-Character-Recognition/data/Rot_loss.csv new file mode 100644 index 0000000..3d40db9 --- /dev/null +++ b/Project2-Character-Recognition/data/Rot_loss.csv @@ -0,0 +1,770 @@ +Epochs,Loss random rotations +52,5.8155 +104,5.68752 +156,5.68935 +208,5.70781 +260,5.69676 +312,5.70175 +364,5.68542 +416,5.70699 +468,5.69258 +520,5.70551 +572,5.70148 +624,5.70507 +676,5.70385 +728,5.71067 +780,5.7049 +832,5.69404 +884,5.69799 +936,5.71028 +988,5.70493 +1040,5.70101 +1092,5.69297 +1144,5.70635 +1196,5.70366 +1248,5.6954 +1300,5.70446 +1352,5.7034 +1404,5.69669 +1456,5.697 +1508,5.70132 +1560,5.6892 +1612,5.68724 +1664,5.70107 +1716,5.70479 +1768,5.69997 +1820,5.69636 +1872,5.69349 +1924,5.69639 +1976,5.70809 +2028,5.69963 +2080,5.69673 +2132,5.68884 +2184,5.70245 +2236,5.69157 +2288,5.67606 +2340,5.68864 +2392,5.69245 +2444,5.693 +2496,5.69811 +2548,5.68431 +2600,5.68562 +2652,5.69411 +2704,5.68449 +2756,5.68852 +2808,5.69741 +2860,5.69734 +2912,5.68863 +2964,5.69091 +3016,5.68514 +3068,5.67827 +3120,5.6936 +3172,5.6961 +3224,5.67696 +3276,5.69288 +3328,5.67075 +3380,5.68167 +3432,5.67334 +3484,5.69756 +3536,5.67926 +3588,5.69171 +3640,5.68048 +3692,5.67316 +3744,5.66712 +3796,5.66582 +3848,5.65389 +3900,5.65098 +3952,5.65084 +4004,5.65555 +4056,5.63485 +4108,5.66376 +4160,5.65185 +4212,5.62303 +4264,5.61295 +4316,5.60908 +4368,5.50914 +4420,5.49584 +4472,5.3738 +4524,5.42864 +4576,5.46151 +4628,5.29326 +4680,5.12578 +4732,5.18047 +4784,5.16676 +4836,5.12202 +4888,5.27316 +4940,4.99225 +4992,4.87705 +5044,4.99458 +5096,4.70874 +5148,4.58274 +5200,4.53427 +5252,4.30172 +5304,4.34656 +5356,4.40073 +5408,4.09527 +5460,3.99205 +5512,4.29345 +5564,4.18456 +5616,4.21182 +5668,3.97953 +5720,4.0705 +5772,3.85614 +5824,4.10727 +5876,3.64987 +5928,3.68334 +5980,3.93677 +6032,3.69196 +6084,3.44623 +6136,3.75223 +6188,3.63786 +6240,4.09644 +6292,3.63677 +6344,3.69185 +6396,3.45235 +6448,3.42699 +6500,3.67216 +6552,3.68437 +6604,3.36171 +6656,3.15085 +6708,3.35503 +6760,3.76047 +6812,3.555 +6864,3.27029 +6916,3.42794 +6968,3.53111 +7020,3.54836 +7072,3.20391 +7124,3.32003 +7176,3.11762 +7228,3.20286 +7280,3.49116 +7332,3.16829 +7384,3.27516 +7436,3.05261 +7488,3.35054 +7540,3.02391 +7592,3.30254 +7644,2.98135 +7696,2.90345 +7748,2.99921 +7800,3.31524 +7852,3.00828 +7904,3.423 +7956,3.09437 +8008,3.2408 +8060,2.95161 +8112,3.18661 +8164,2.57556 +8216,3.08253 +8268,2.72696 +8320,2.79216 +8372,3.19578 +8424,2.95857 +8476,2.80012 +8528,3.2402 +8580,3.07969 +8632,2.64757 +8684,2.82808 +8736,2.64345 +8788,2.38935 +8840,3.15061 +8892,2.88741 +8944,2.76277 +8996,2.91791 +9048,3.00961 +9100,2.7394 +9152,2.98981 +9204,2.54837 +9256,2.94767 +9308,2.47273 +9360,3.21672 +9412,2.87586 +9464,2.79301 +9516,2.66551 +9568,2.87194 +9620,2.59269 +9672,2.66136 +9724,2.60641 +9776,3.06575 +9828,2.62839 +9880,2.92791 +9932,2.65271 +9984,2.66071 +10036,3.38308 +10088,2.64864 +10140,2.64203 +10192,2.35305 +10244,2.4973 +10296,3.49873 +10348,2.8023 +10400,2.8866 +10452,2.53997 +10504,1.91578 +10556,2.17436 +10608,1.85836 +10660,1.92555 +10712,1.83813 +10764,1.99431 +10816,1.77259 +10868,1.78944 +10920,1.87089 +10972,1.7977 +11024,1.54204 +11076,1.46877 +11128,1.90038 +11180,2.03455 +11232,1.54863 +11284,1.93899 +11336,1.69629 +11388,1.6277 +11440,1.84209 +11492,1.99285 +11544,1.98353 +11596,1.8981 +11648,2.0755 +11700,1.51048 +11752,1.09843 +11804,1.76317 +11856,1.68119 +11908,1.4319 +11960,1.42971 +12012,1.68073 +12064,1.59898 +12116,1.58806 +12168,1.39367 +12220,1.54122 +12272,1.3839 +12324,1.54421 +12376,1.96238 +12428,2.24437 +12480,1.71169 +12532,1.62641 +12584,1.51698 +12636,1.54606 +12688,1.6802 +12740,1.93932 +12792,1.31279 +12844,1.51651 +12896,1.37519 +12948,1.7436 +13000,1.11109 +13052,1.65489 +13104,1.4573 +13156,1.31457 +13208,1.5163 +13260,1.56036 +13312,1.49575 +13364,1.76158 +13416,1.4134 +13468,1.57247 +13520,1.49394 +13572,1.37917 +13624,1.33057 +13676,1.71277 +13728,1.26905 +13780,1.3864 +13832,2.22285 +13884,1.4585 +13936,1.29699 +13988,1.54419 +14040,1.45094 +14092,1.23209 +14144,1.5035 +14196,1.41902 +14248,2.17629 +14300,1.25582 +14352,1.26428 +14404,1.66977 +14456,1.33135 +14508,1.5015 +14560,1.18206 +14612,1.43103 +14664,0.985083 +14716,1.53806 +14768,1.71326 +14820,0.988083 +14872,1.42896 +14924,1.11763 +14976,1.18777 +15028,0.926562 +15080,1.13226 +15132,1.08775 +15184,1.12667 +15236,1.09514 +15288,1.67135 +15340,1.66353 +15392,1.24856 +15444,1.55531 +15496,1.4893 +15548,1.18468 +15600,1.04765 +15652,1.13797 +15704,0.752599 +15756,0.703576 +15808,0.747335 +15860,0.532422 +15912,0.641834 +15964,0.483642 +16016,0.498848 +16068,0.397174 +16120,0.407367 +16172,0.44819 +16224,0.425146 +16276,0.6067 +16328,0.375263 +16380,0.455379 +16432,0.404542 +16484,0.51759 +16536,0.379279 +16588,0.564008 +16640,0.492337 +16692,0.566131 +16744,0.423222 +16796,0.40458 +16848,0.478457 +16900,0.446033 +16952,0.317681 +17004,0.506754 +17056,0.484549 +17108,0.650798 +17160,0.450874 +17212,0.384174 +17264,0.371574 +17316,0.227111 +17368,0.77024 +17420,0.449787 +17472,0.30976 +17524,0.508183 +17576,0.517099 +17628,0.371949 +17680,0.400024 +17732,0.494235 +17784,0.2157 +17836,0.298219 +17888,0.388662 +17940,0.524517 +17992,0.523758 +18044,0.438061 +18096,0.476757 +18148,0.275021 +18200,0.650425 +18252,0.420346 +18304,0.721963 +18356,0.391474 +18408,0.561687 +18460,0.561716 +18512,0.281257 +18564,0.445108 +18616,0.405149 +18668,0.709667 +18720,0.634953 +18772,0.665485 +18824,0.302291 +18876,0.751888 +18928,0.570437 +18980,0.433059 +19032,0.328893 +19084,0.248932 +19136,0.192331 +19188,0.323409 +19240,0.323243 +19292,0.529942 +19344,0.178565 +19396,0.147227 +19448,0.325871 +19500,0.237377 +19552,0.664542 +19604,0.301465 +19656,0.201908 +19708,0.471704 +19760,0.2083 +19812,0.403407 +19864,0.252027 +19916,0.186174 +19968,0.240445 +20020,0.462637 +20072,0.275513 +20124,0.561307 +20176,0.417932 +20228,0.696165 +20280,0.982746 +20332,0.733438 +20384,0.739777 +20436,0.987516 +20488,0.383901 +20540,0.516347 +20592,0.239368 +20644,0.357464 +20696,0.272107 +20748,0.503348 +20800,0.238592 +20852,0.189042 +20904,0.310945 +20956,0.292238 +21008,0.211969 +21060,0.177861 +21112,0.159181 +21164,0.103563 +21216,0.193569 +21268,0.170928 +21320,0.0785859 +21372,0.168438 +21424,0.0967365 +21476,0.206328 +21528,0.099419 +21580,0.098878 +21632,0.160462 +21684,0.113259 +21736,0.264994 +21788,0.165422 +21840,0.322963 +21892,0.18131 +21944,0.137132 +21996,0.132186 +22048,0.175372 +22100,0.0797814 +22152,0.328146 +22204,0.112425 +22256,0.108781 +22308,0.215288 +22360,0.19809 +22412,0.0436416 +22464,0.0837994 +22516,0.166173 +22568,0.201418 +22620,0.0880285 +22672,0.111021 +22724,0.112226 +22776,0.103346 +22828,0.146373 +22880,0.233352 +22932,0.142292 +22984,0.078236 +23036,0.0849283 +23088,0.185206 +23140,0.0883504 +23192,0.198934 +23244,0.0971771 +23296,0.0565065 +23348,0.135813 +23400,0.171143 +23452,0.102897 +23504,0.109455 +23556,0.0859257 +23608,0.0560342 +23660,0.0848098 +23712,0.17542 +23764,0.122845 +23816,0.0747565 +23868,0.0485924 +23920,0.191728 +23972,0.0783857 +24024,0.0471998 +24076,0.132108 +24128,0.124941 +24180,0.125474 +24232,0.0697452 +24284,0.10849 +24336,0.0886337 +24388,0.113738 +24440,0.178889 +24492,0.0707846 +24544,0.169666 +24596,0.0570126 +24648,0.0593065 +24700,0.0533054 +24752,0.123011 +24804,0.0370182 +24856,0.135916 +24908,0.0969376 +24960,0.0355023 +25012,0.0705363 +25064,0.04742 +25116,0.0735616 +25168,0.106269 +25220,0.0754178 +25272,0.0382645 +25324,0.130925 +25376,0.0714931 +25428,0.146877 +25480,0.198412 +25532,0.0669209 +25584,0.110581 +25636,0.121342 +25688,0.0800472 +25740,0.119733 +25792,0.0966007 +25844,0.160478 +25896,0.0897383 +25948,0.120937 +26000,0.0657811 +26052,0.0818535 +26104,0.0855252 +26156,0.0661352 +26208,0.0626678 +26260,0.0848916 +26312,0.0453272 +26364,0.0399383 +26416,0.0827423 +26468,0.0643673 +26520,0.0798526 +26572,0.0646635 +26624,0.031311 +26676,0.0137314 +26728,0.0298135 +26780,0.0522246 +26832,0.0659536 +26884,0.130068 +26936,0.0809971 +26988,0.160884 +27040,0.0211989 +27092,0.0243096 +27144,0.0241854 +27196,0.0798409 +27248,0.0520182 +27300,0.0675443 +27352,0.0564073 +27404,0.0771421 +27456,0.0405084 +27508,0.0358355 +27560,0.0293916 +27612,0.113758 +27664,0.0843914 +27716,0.123085 +27768,0.045154 +27820,0.150267 +27872,0.0285219 +27924,0.0821409 +27976,0.0456594 +28028,0.0539274 +28080,0.0238653 +28132,0.0235452 +28184,0.0550179 +28236,0.0362799 +28288,0.0840481 +28340,0.0361246 +28392,0.0668489 +28444,0.0190458 +28496,0.0480685 +28548,0.0502414 +28600,0.06672 +28652,0.0496844 +28704,0.0410904 +28756,0.0479843 +28808,0.0626799 +28860,0.0402348 +28912,0.0342208 +28964,0.028275 +29016,0.0235984 +29068,0.0204581 +29120,0.0443043 +29172,0.0620969 +29224,0.0316359 +29276,0.0767931 +29328,0.0571273 +29380,0.0277237 +29432,0.0724914 +29484,0.105365 +29536,0.0889553 +29588,0.0268383 +29640,0.0668818 +29692,0.0175991 +29744,0.0306275 +29796,0.0447282 +29848,0.0430108 +29900,0.0814445 +29952,0.0828928 +30004,0.0344939 +30056,0.0325948 +30108,0.0234603 +30160,0.0822598 +30212,0.0351845 +30264,0.0313481 +30316,0.0214663 +30368,0.0335855 +30420,0.0232338 +30472,0.0540939 +30524,0.0479795 +30576,0.0325194 +30628,0.108715 +30680,0.035688 +30732,0.0287059 +30784,0.0527594 +30836,0.0557291 +30888,0.0497433 +30940,0.020652 +30992,0.0335693 +31044,0.0195545 +31096,0.031787 +31148,0.0266915 +31200,0.0702509 +31252,0.0327642 +31304,0.0406801 +31356,0.0264262 +31408,0.0404675 +31460,0.032646 +31512,0.0441252 +31564,0.053386 +31616,0.0296288 +31668,0.0311845 +31720,0.031274 +31772,0.0559174 +31824,0.0743462 +31876,0.060511 +31928,0.0244268 +31980,0.0616737 +32032,0.0330052 +32084,0.0714225 +32136,0.0486154 +32188,0.03726 +32240,0.0296953 +32292,0.0293384 +32344,0.0383176 +32396,0.041607 +32448,0.0288622 +32500,0.0145034 +32552,0.0354227 +32604,0.0214153 +32656,0.0370974 +32708,0.0608763 +32760,0.0377173 +32812,0.0689668 +32864,0.0203728 +32916,0.0503731 +32968,0.0402303 +33020,0.0392175 +33072,0.0336138 +33124,0.0105052 +33176,0.0312695 +33228,0.0547429 +33280,0.0465796 +33332,0.0198705 +33384,0.0347476 +33436,0.0188948 +33488,0.0349751 +33540,0.0331633 +33592,0.0435067 +33644,0.0318849 +33696,0.0416735 +33748,0.0518428 +33800,0.0257776 +33852,0.0366449 +33904,0.0436222 +33956,0.0361496 +34008,0.0358189 +34060,0.0380091 +34112,0.0248246 +34164,0.0483633 +34216,0.0505713 +34268,0.0266873 +34320,0.0189603 +34372,0.0375609 +34424,0.0266237 +34476,0.0593533 +34528,0.0261273 +34580,0.0521887 +34632,0.0179092 +34684,0.0323762 +34736,0.0795001 +34788,0.0200601 +34840,0.029326 +34892,0.0135485 +34944,0.0313588 +34996,0.0273409 +35048,0.0153269 +35100,0.0216131 +35152,0.0180665 +35204,0.0236456 +35256,0.0177229 +35308,0.0397047 +35360,0.0471167 +35412,0.0266169 +35464,0.0212763 +35516,0.0480247 +35568,0.0765518 +35620,0.0289089 +35672,0.0188125 +35724,0.0246288 +35776,0.0168393 +35828,0.0213021 +35880,0.0143423 +35932,0.0457375 +35984,0.0362997 +36036,0.0186542 +36088,0.0246495 +36140,0.0404582 +36192,0.0247206 +36244,0.0162042 +36296,0.067072 +36348,0.0183157 +36400,0.0404995 +36452,0.0279982 +36504,0.0198399 +36556,0.0385544 +36608,0.0439425 +36660,0.0255313 +36712,0.021422 +36764,0.0402368 +36816,0.0119043 +36868,0.0313733 +36920,0.0160524 +36972,0.018665 +37024,0.0158693 +37076,0.0773251 +37128,0.0332892 +37180,0.0371834 +37232,0.0367766 +37284,0.0400583 +37336,0.0253288 +37388,0.0302942 +37440,0.0342928 +37492,0.0134908 +37544,0.026591 +37596,0.0312295 +37648,0.0521495 +37700,0.0284218 +37752,0.0291301 +37804,0.0296593 +37856,0.0444651 +37908,0.0303984 +37960,0.0175565 +38012,0.022383 +38064,0.0384879 +38116,0.0508296 +38168,0.0399347 +38220,0.0434595 +38272,0.0143496 +38324,0.028397 +38376,0.0382764 +38428,0.0206783 +38480,0.014418 +38532,0.0202586 +38584,0.0265391 +38636,0.0167033 +38688,0.0190675 +38740,0.0705068 +38792,0.028645 +38844,0.031757 +38896,0.0439541 +38948,0.0145954 +39000,0.022252 +39052,0.0084231 +39104,0.0344761 +39156,0.0261664 +39208,0.0158871 +39260,0.0302427 +39312,0.0273695 +39364,0.0465106 +39416,0.0301405 +39468,0.0361313 +39520,0.0261857 +39572,0.0342868 +39624,0.0157149 +39676,0.0244446 +39728,0.0267877 +39780,0.0253348 +39832,0.0238395 +39884,0.0148999 +39936,0.0415154 +39988,0.0239054 diff --git a/Project2-Character-Recognition/data/loss_50_outof_52.csv b/Project2-Character-Recognition/data/loss_50_outof_52.csv new file mode 100644 index 0000000..13ba419 --- /dev/null +++ b/Project2-Character-Recognition/data/loss_50_outof_52.csv @@ -0,0 +1,769 @@ +52,5.81318 +104,5.70474 +156,5.70436 +208,5.70399 +260,5.70364 +312,5.7033 +364,5.70297 +416,5.70264 +468,5.70231 +520,5.702 +572,5.7017 +624,5.7014 +676,5.7011 +728,5.7008 +780,5.7005 +832,5.7002 +884,5.6999 +936,5.69961 +988,5.69932 +1040,5.699 +1092,5.69869 +1144,5.69838 +1196,5.69806 +1248,5.69774 +1300,5.69742 +1352,5.69709 +1404,5.69676 +1456,5.69642 +1508,5.69608 +1560,5.69571 +1612,5.6953 +1664,5.69492 +1716,5.69451 +1768,5.69409 +1820,5.69364 +1872,5.69319 +1924,5.69272 +1976,5.69223 +2028,5.69172 +2080,5.69118 +2132,5.69064 +2184,5.69005 +2236,5.68946 +2288,5.68882 +2340,5.68818 +2392,5.68747 +2444,5.68677 +2496,5.68605 +2548,5.68525 +2600,5.68446 +2652,5.68361 +2704,5.68267 +2756,5.68178 +2808,5.68082 +2860,5.67977 +2912,5.67869 +2964,5.67754 +3016,5.67635 +3068,5.6751 +3120,5.67369 +3172,5.67222 +3224,5.67056 +3276,5.6687 +3328,5.66675 +3380,5.6646 +3432,5.66234 +3484,5.65978 +3536,5.65697 +3588,5.65379 +3640,5.65006 +3692,5.64603 +3744,5.64133 +3796,5.6358 +3848,5.62891 +3900,5.62056 +3952,5.6094 +4004,5.59525 +4056,5.57441 +4108,5.54687 +4160,5.50625 +4212,5.45711 +4264,5.41009 +4316,5.37493 +4368,5.34578 +4420,5.31555 +4472,5.28777 +4524,5.24926 +4576,5.20426 +4628,5.14062 +4680,5.04658 +4732,4.92062 +4784,4.7601 +4836,4.60024 +4888,4.48751 +4940,4.35537 +4992,4.24124 +5044,4.26941 +5096,4.03656 +5148,4.04651 +5200,3.87517 +5252,3.919 +5304,3.87189 +5356,3.70737 +5408,3.55329 +5460,3.56386 +5512,3.33216 +5564,3.28747 +5616,3.37892 +5668,3.24579 +5720,3.15433 +5772,3.37885 +5824,3.30496 +5876,3.27349 +5928,3.47396 +5980,3.02267 +6032,3.1443 +6084,3.17736 +6136,2.97932 +6188,2.96174 +6240,3.28425 +6292,2.72684 +6344,2.69994 +6396,2.56952 +6448,2.85154 +6500,2.89003 +6552,2.76621 +6604,2.76104 +6656,2.82382 +6708,2.80326 +6760,2.59951 +6812,2.76006 +6864,2.61777 +6916,3.16445 +6968,3.16542 +7020,2.69127 +7072,2.3965 +7124,2.577 +7176,2.98165 +7228,2.41024 +7280,3.06339 +7332,2.67334 +7384,2.63678 +7436,2.91162 +7488,2.77264 +7540,2.14172 +7592,2.61434 +7644,2.11892 +7696,2.25258 +7748,2.77477 +7800,2.11448 +7852,1.88279 +7904,2.51527 +7956,1.73514 +8008,2.47738 +8060,2.38857 +8112,1.95577 +8164,2.4442 +8216,2.16693 +8268,2.84428 +8320,2.79023 +8372,1.79344 +8424,2.03729 +8476,1.90358 +8528,2.27352 +8580,1.7132 +8632,1.47065 +8684,1.98824 +8736,2.61995 +8788,2.5576 +8840,2.68195 +8892,1.51566 +8944,1.55995 +8996,1.4195 +9048,2.0214 +9100,1.57099 +9152,1.17071 +9204,2.31332 +9256,2.45797 +9308,1.88485 +9360,2.06791 +9412,2.29923 +9464,1.53101 +9516,1.37463 +9568,2.20335 +9620,1.88538 +9672,1.63146 +9724,2.21195 +9776,1.45146 +9828,2.6377 +9880,3.12907 +9932,1.78754 +9984,1.24212 +10036,2.02015 +10088,1.66874 +10140,1.41272 +10192,1.2403 +10244,1.51742 +10296,1.25603 +10348,1.09797 +10400,0.909893 +10452,1.18616 +10504,1.27373 +10556,1.48445 +10608,0.927745 +10660,0.780889 +10712,0.481828 +10764,0.411917 +10816,0.331052 +10868,0.306255 +10920,0.23639 +10972,0.221628 +11024,0.269634 +11076,0.173882 +11128,1.85221 +11180,4.08948 +11232,2.63546 +11284,1.55613 +11336,1.11376 +11388,1.35092 +11440,0.733863 +11492,0.567165 +11544,0.679816 +11596,1.62685 +11648,2.784 +11700,3.51328 +11752,1.56082 +11804,0.814694 +11856,0.430751 +11908,0.700429 +11960,0.654819 +12012,0.713091 +12064,1.10197 +12116,1.362 +12168,3.04368 +12220,1.95214 +12272,2.12109 +12324,2.31147 +12376,1.01389 +12428,1.41644 +12480,1.41026 +12532,0.734747 +12584,1.58212 +12636,2.41051 +12688,2.00349 +12740,1.75158 +12792,1.80661 +12844,2.57271 +12896,2.25891 +12948,2.51877 +13000,1.93047 +13052,1.00938 +13104,0.901311 +13156,1.56035 +13208,1.21297 +13260,0.645401 +13312,0.337375 +13364,0.236913 +13416,0.207049 +13468,0.184969 +13520,0.166582 +13572,0.145047 +13624,0.133208 +13676,0.120802 +13728,0.111328 +13780,0.102488 +13832,0.0986898 +13884,0.0938299 +13936,0.0878638 +13988,0.0843939 +14040,0.080652 +14092,0.078488 +14144,0.0763126 +14196,0.0738277 +14248,0.0721399 +14300,0.0712341 +14352,0.0698303 +14404,0.0683492 +14456,0.0669474 +14508,0.0666939 +14560,0.0651015 +14612,0.0648859 +14664,0.0636771 +14716,0.0633885 +14768,0.0626589 +14820,0.0612721 +14872,0.0618974 +14924,0.0604006 +14976,0.0612417 +15028,0.0592111 +15080,0.0592279 +15132,0.0595426 +15184,0.0579659 +15236,0.0580594 +15288,0.058409 +15340,0.0568604 +15392,0.0569755 +15444,0.0573651 +15496,0.0561163 +15548,0.0567107 +15600,0.0554266 +15652,0.0554083 +15704,0.0559599 +15756,0.054861 +15808,0.0552589 +15860,0.0544145 +15912,0.0545344 +15964,0.0538135 +16016,0.054008 +16068,0.0541935 +16120,0.0532081 +16172,0.054762 +16224,0.0527245 +16276,0.0529899 +16328,0.0538252 +16380,0.0522729 +16432,0.0526357 +16484,0.0533852 +16536,0.0518239 +16588,0.0522538 +16640,0.0530163 +16692,0.0514431 +16744,0.0524721 +16796,0.0514093 +16848,0.0514639 +16900,0.0514111 +16952,0.0513219 +17004,0.0512236 +17056,0.0511465 +17108,0.0509282 +17160,0.0509214 +17212,0.0507419 +17264,0.0507768 +17316,0.0505094 +17368,0.0504976 +17420,0.0504535 +17472,0.0502589 +17524,0.0502646 +17576,0.0501151 +17628,0.0500923 +17680,0.0499655 +17732,0.0499426 +17784,0.0497849 +17836,0.0501333 +17888,0.0494205 +17940,0.0503177 +17992,0.0498022 +18044,0.0492579 +18096,0.0495842 +18148,0.0500073 +18200,0.0490357 +18252,0.0494171 +18304,0.0498909 +18356,0.0488414 +18408,0.0488154 +18460,0.0492989 +18512,0.049665 +18564,0.048751 +18616,0.048955 +18668,0.0493409 +18720,0.0483588 +18772,0.0484576 +18824,0.048473 +18876,0.0484592 +18928,0.0484151 +18980,0.0484135 +19032,0.0483521 +19084,0.0483356 +19136,0.0482339 +19188,0.0482615 +19240,0.0481493 +19292,0.0481775 +19344,0.0480815 +19396,0.048049 +19448,0.048011 +19500,0.0480029 +19552,0.0478825 +19604,0.0487201 +19656,0.0479215 +19708,0.0481087 +19760,0.0485401 +19812,0.047343 +19864,0.0474711 +19916,0.0475402 +19968,0.0475244 +20020,0.047547 +20072,0.0474781 +20124,0.0475108 +20176,0.0474223 +20228,0.0474498 +20280,0.0473604 +20332,0.0473897 +20384,0.0472894 +20436,0.0477896 +20488,0.0470888 +20540,0.0475149 +20592,0.0473201 +20644,0.0469298 +20696,0.047939 +20748,0.0466153 +20800,0.0472034 +20852,0.0470964 +20904,0.0470498 +20956,0.0470044 +21008,0.0469709 +21060,0.0469596 +21112,0.0468664 +21164,0.0469003 +21216,0.0468539 +21268,0.0468106 +21320,0.0468144 +21372,0.0467231 +21424,0.0467718 +21476,0.0466857 +21528,0.0466644 +21580,0.0466914 +21632,0.0466157 +21684,0.0465911 +21736,0.0465695 +21788,0.0465639 +21840,0.0465245 +21892,0.0465264 +21944,0.046439 +21996,0.0464878 +22048,0.0464091 +22100,0.0464366 +22152,0.0463474 +22204,0.046392 +22256,0.0463093 +22308,0.0463182 +22360,0.0462971 +22412,0.0462495 +22464,0.0462827 +22516,0.0462154 +22568,0.0462019 +22620,0.0461818 +22672,0.0466889 +22724,0.0455599 +22776,0.045944 +22828,0.0474891 +22880,0.0455385 +22932,0.0459143 +22984,0.0472806 +23036,0.0456659 +23088,0.04572 +23140,0.0461489 +23192,0.0471019 +23244,0.0457119 +23296,0.0459594 +23348,0.0468407 +23400,0.0453167 +23452,0.0455564 +23504,0.045666 +23556,0.0457144 +23608,0.0457326 +23660,0.045769 +23712,0.0457498 +23764,0.0457523 +23816,0.0457223 +23868,0.0457281 +23920,0.0457074 +23972,0.0456842 +24024,0.0456798 +24076,0.0456596 +24128,0.0456417 +24180,0.0456126 +24232,0.0456167 +24284,0.0455958 +24336,0.0455779 +24388,0.0455555 +24440,0.0455515 +24492,0.0455319 +24544,0.0455151 +24596,0.0454887 +24648,0.0454929 +24700,0.0454707 +24752,0.0454544 +24804,0.0454286 +24856,0.0454327 +24908,0.0454117 +24960,0.0453953 +25012,0.04538 +25064,0.0453707 +25116,0.0462738 +25168,0.0449713 +25220,0.0458443 +25272,0.0449334 +25324,0.0465627 +25376,0.0449164 +25428,0.0451495 +25480,0.0465847 +25532,0.0448363 +25584,0.044947 +25636,0.0453232 +25688,0.0464016 +25740,0.0448503 +25792,0.0450589 +25844,0.0458801 +25896,0.0444974 +25948,0.0465154 +26000,0.0446035 +26052,0.0448049 +26104,0.0462921 +26156,0.0442711 +26208,0.0458371 +26260,0.0451447 +26312,0.0450607 +26364,0.0450509 +26416,0.0450441 +26468,0.0450274 +26520,0.0450151 +26572,0.0450057 +26624,0.0449851 +26676,0.0449758 +26728,0.044968 +26780,0.0449517 +26832,0.0449369 +26884,0.044931 +26936,0.0449196 +26988,0.0449072 +27040,0.0448949 +27092,0.0448788 +27144,0.044873 +27196,0.0448614 +27248,0.0448501 +27300,0.0448377 +27352,0.0448226 +27404,0.0448174 +27456,0.0448055 +27508,0.0447901 +27560,0.0447851 +27612,0.0447732 +27664,0.0447634 +27716,0.0447505 +27768,0.0447368 +27820,0.0447347 +27872,0.0447203 +27924,0.0447104 +27976,0.0447362 +28028,0.0446802 +28080,0.0446655 +28132,0.0446627 +28184,0.0446632 +28236,0.0446838 +28288,0.0446292 +28340,0.0446444 +28392,0.0446183 +28444,0.0446047 +28496,0.0445945 +28548,0.0445905 +28600,0.0445899 +28652,0.0445626 +28704,0.0445969 +28756,0.0445334 +28808,0.044549 +28860,0.0445363 +28912,0.0443804 +28964,0.0446905 +29016,0.0445108 +29068,0.0445028 +29120,0.0444932 +29172,0.0444874 +29224,0.0444732 +29276,0.0444568 +29328,0.0444592 +29380,0.0444371 +29432,0.0444377 +29484,0.0444344 +29536,0.0444192 +29588,0.0443401 +29640,0.0444696 +29692,0.0443973 +29744,0.0443775 +29796,0.0443818 +29848,0.0444114 +29900,0.0443054 +29952,0.0443926 +30004,0.0443441 +30056,0.0443244 +30108,0.0443329 +30160,0.0443188 +30212,0.044289 +30264,0.0443265 +30316,0.0442944 +30368,0.044237 +30420,0.0443221 +30472,0.0442681 +30524,0.0442611 +30576,0.0442626 +30628,0.0443158 +30680,0.0441705 +30732,0.0442538 +30784,0.044233 +30836,0.0442026 +30888,0.044216 +30940,0.0442003 +30992,0.0441925 +31044,0.0441095 +31096,0.0442571 +31148,0.0441353 +31200,0.0441889 +31252,0.0441594 +31304,0.044115 +31356,0.0441864 +31408,0.043912 +31460,0.0458935 +31512,0.0401846 +31564,0.0458782 +31616,0.0413905 +31668,0.0432051 +31720,0.0504445 +31772,0.0418433 +31824,0.0470758 +31876,0.0406278 +31928,0.0436746 +31980,0.0436904 +32032,0.0486537 +32084,0.0400302 +32136,0.0450022 +32188,0.0446437 +32240,0.048444 +32292,0.039329 +32344,0.0462696 +32396,0.0471663 +32448,0.0420454 +32500,0.0432239 +32552,0.0419384 +32604,0.0508704 +32656,0.0398266 +32708,0.0428351 +32760,0.0497618 +32812,0.0405868 +32864,0.0428095 +32916,0.0432146 +32968,0.0451637 +33020,0.0503826 +33072,0.0403782 +33124,0.0395972 +33176,0.0457735 +33228,0.0481306 +33280,0.0389999 +33332,0.041029 +33384,0.0486515 +33436,0.0403436 +33488,0.0410583 +33540,0.0545168 +33592,0.0410381 +33644,0.0432095 +33696,0.0424822 +33748,0.0427793 +33800,0.042102 +33852,0.0431184 +33904,0.0432618 +33956,0.0434403 +34008,0.043552 +34060,0.0436259 +34112,0.0436746 +34164,0.0437193 +34216,0.0437573 +34268,0.0437388 +34320,0.0437299 +34372,0.0437411 +34424,0.0437096 +34476,0.0436653 +34528,0.0436608 +34580,0.0436782 +34632,0.0436478 +34684,0.0436228 +34736,0.0436167 +34788,0.0436363 +34840,0.0436041 +34892,0.0435743 +34944,0.0435538 +34996,0.0435837 +35048,0.0435528 +35100,0.0435165 +35152,0.0435145 +35204,0.0434471 +35256,0.0435829 +35308,0.0434977 +35360,0.0435136 +35412,0.0434759 +35464,0.0434227 +35516,0.0434456 +35568,0.0431598 +35620,0.0437418 +35672,0.0435691 +35724,0.0404371 +35776,0.0468966 +35828,0.0440688 +35880,0.0386527 +35932,0.034669 +35984,0.0310935 +36036,0.0772166 +36088,0.048752 +36140,0.0364713 +36192,0.0339633 +36244,0.0355565 +36296,0.0291761 +36348,0.0240248 +36400,0.0359803 +36452,3.70915 +36504,2.22353 +36556,2.8763 +36608,1.8589 +36660,2.2589 +36712,2.19302 +36764,2.60034 +36816,2.27869 +36868,1.74801 +36920,1.88053 +36972,1.49279 +37024,1.14913 +37076,0.919516 +37128,0.85087 +37180,1.60845 +37232,2.07968 +37284,2.51464 +37336,2.47905 +37388,1.87106 +37440,1.50387 +37492,0.828078 +37544,0.494588 +37596,0.390209 +37648,0.299272 +37700,0.346125 +37752,0.240624 +37804,0.158274 +37856,0.126668 +37908,0.104023 +37960,0.0898649 +38012,0.0837252 +38064,0.0718407 +38116,0.0599478 +38168,0.0671565 +38220,0.0662924 +38272,0.0563712 +38324,0.0581083 +38376,0.0553902 +38428,0.0603428 +38480,0.0424511 +38532,0.0612706 +38584,0.046021 +38636,0.0480074 +38688,0.0697066 +38740,0.0691361 +38792,0.0405713 +38844,0.046665 +38896,0.0575801 +38948,0.037697 +39000,0.0451105 +39052,0.0871062 +39104,0.0278255 +39156,0.0446956 +39208,0.0682649 +39260,0.0714882 +39312,0.0313508 +39364,0.0350993 +39416,0.0841346 +39468,1.10497 +39520,4.74836 +39572,3.47521 +39624,2.75083 +39676,2.18725 +39728,1.81169 +39780,1.33012 +39832,0.947187 +39884,1.11021 +39936,0.495932 +39988,0.326061 diff --git a/Project2-Character-Recognition/data/loss_cumulative.csv b/Project2-Character-Recognition/data/loss_cumulative.csv new file mode 100644 index 0000000..bf7d627 --- /dev/null +++ b/Project2-Character-Recognition/data/loss_cumulative.csv @@ -0,0 +1,770 @@ +Epoch,Loss with Momentum and Decay,Loss with Momentum,Loss with Decay,Regular Loss +52,5.81449,5.81504,5.81503,5.81318 +104,5.70489,5.70477,5.70561,5.70474 +156,5.70439,5.70436,5.70531,5.70436 +208,5.70391,5.70397,5.70504,5.70399 +260,5.70346,5.70359,5.70478,5.70364 +312,5.70303,5.70324,5.70452,5.7033 +364,5.70262,5.7029,5.70428,5.70297 +416,5.70225,5.70256,5.70404,5.70264 +468,5.70187,5.70223,5.70381,5.70231 +520,5.70151,5.70191,5.7036,5.702 +572,5.70115,5.70157,5.70337,5.7017 +624,5.70079,5.70125,5.70315,5.7014 +676,5.70044,5.70091,5.70293,5.7011 +728,5.70007,5.70058,5.70271,5.7008 +780,5.6997,5.70023,5.70249,5.7005 +832,5.69933,5.69991,5.70227,5.7002 +884,5.69895,5.69956,5.70206,5.6999 +936,5.69858,5.6992,5.70184,5.69961 +988,5.69819,5.69883,5.70163,5.69932 +1040,5.69778,5.69845,5.70141,5.699 +1092,5.69736,5.69807,5.70119,5.69869 +1144,5.69693,5.69766,5.70097,5.69838 +1196,5.69652,5.69724,5.70074,5.69806 +1248,5.69607,5.6968,5.70051,5.69774 +1300,5.69561,5.69635,5.70028,5.69742 +1352,5.69516,5.69589,5.70004,5.69709 +1404,5.69466,5.69543,5.69978,5.69676 +1456,5.69413,5.69492,5.69953,5.69642 +1508,5.69361,5.69442,5.69926,5.69608 +1560,5.69305,5.69388,5.69899,5.69571 +1612,5.69248,5.69332,5.6987,5.6953 +1664,5.6919,5.69277,5.69841,5.69492 +1716,5.69129,5.69216,5.69811,5.69451 +1768,5.69063,5.69154,5.6978,5.69409 +1820,5.68995,5.6909,5.69748,5.69364 +1872,5.68922,5.69024,5.69715,5.69319 +1924,5.68846,5.68956,5.69679,5.69272 +1976,5.68767,5.68883,5.69643,5.69223 +2028,5.68683,5.68809,5.69604,5.69172 +2080,5.68601,5.68725,5.69564,5.69118 +2132,5.6851,5.68645,5.69524,5.69064 +2184,5.68413,5.68554,5.69483,5.69005 +2236,5.68312,5.68458,5.6944,5.68946 +2288,5.68201,5.68362,5.69398,5.68882 +2340,5.68081,5.68259,5.69353,5.68818 +2392,5.67956,5.68149,5.69308,5.68747 +2444,5.67818,5.68039,5.69261,5.68677 +2496,5.67673,5.6792,5.69214,5.68605 +2548,5.67513,5.67793,5.69163,5.68525 +2600,5.67346,5.67662,5.69114,5.68446 +2652,5.67159,5.67519,5.69058,5.68361 +2704,5.66959,5.67364,5.69002,5.68267 +2756,5.66731,5.67206,5.6894,5.68178 +2808,5.6648,5.67035,5.6888,5.68082 +2860,5.66204,5.66853,5.68811,5.67977 +2912,5.65888,5.66665,5.68743,5.67869 +2964,5.65541,5.66462,5.68673,5.67754 +3016,5.65118,5.66257,5.68594,5.67635 +3068,5.64641,5.66021,5.68515,5.6751 +3120,5.64094,5.65771,5.68428,5.67369 +3172,5.63467,5.65485,5.68333,5.67222 +3224,5.62702,5.65173,5.68238,5.67056 +3276,5.61765,5.64826,5.68132,5.6687 +3328,5.6055,5.64441,5.68025,5.66675 +3380,5.59007,5.64009,5.67907,5.6646 +3432,5.56837,5.63534,5.67786,5.66234 +3484,5.5365,5.62955,5.67654,5.65978 +3536,5.49137,5.62299,5.67512,5.65697 +3588,5.42928,5.61503,5.67356,5.65379 +3640,5.36517,5.60535,5.67192,5.65006 +3692,5.3095,5.5933,5.67017,5.64603 +3744,5.25848,5.57803,5.66818,5.64133 +3796,5.20773,5.55774,5.66601,5.6358 +3848,5.13995,5.52973,5.66366,5.62891 +3900,5.06505,5.48952,5.66101,5.62056 +3952,4.99526,5.42691,5.65806,5.6094 +4004,4.895,5.33528,5.65453,5.59525 +4056,4.80648,5.22564,5.65064,5.57441 +4108,4.72308,5.10161,5.6462,5.54687 +4160,4.6798,4.99492,5.64118,5.50625 +4212,4.57084,4.89576,5.63549,5.45711 +4264,4.46776,4.79682,5.629,5.41009 +4316,4.33033,4.73358,5.62128,5.37493 +4368,4.2118,4.57031,5.61196,5.34578 +4420,4.23235,4.4319,5.60043,5.31555 +4472,4.08919,4.3513,5.58568,5.28777 +4524,3.88766,4.31288,5.5656,5.24926 +4576,3.69427,4.15955,5.53795,5.20426 +4628,3.69486,4.18255,5.49819,5.14062 +4680,3.50186,4.03658,5.43854,5.04658 +4732,3.74096,4.10808,5.34868,4.92062 +4784,3.68544,4.25376,5.23403,4.7601 +4836,3.37919,3.78975,5.10302,4.60024 +4888,3.3753,3.63905,4.96787,4.48751 +4940,3.42063,3.54471,4.86889,4.35537 +4992,3.37216,3.92127,4.74083,4.24124 +5044,3.07344,3.81174,4.73096,4.26941 +5096,2.89555,3.54725,4.65639,4.03656 +5148,2.88529,3.40943,4.55064,4.04651 +5200,2.6694,3.41952,4.49588,3.87517 +5252,2.22454,3.54972,4.1237,3.919 +5304,1.69326,2.87641,3.98268,3.87189 +5356,1.43048,3.09939,3.92512,3.70737 +5408,1.14661,3.19823,3.89307,3.55329 +5460,0.990041,3.2683,3.85402,3.56386 +5512,0.748485,3.22526,3.88298,3.33216 +5564,0.660806,3.19863,3.90732,3.28747 +5616,0.569831,2.74936,3.75032,3.37892 +5668,1.06795,2.66588,3.84805,3.24579 +5720,1.17538,2.59493,3.63796,3.15433 +5772,0.898025,2.82306,3.66276,3.37885 +5824,1.66316,3.22533,3.76,3.30496 +5876,2.45128,2.5796,3.61224,3.27349 +5928,1.14516,2.71752,3.63487,3.47396 +5980,1.58094,2.12073,3.73299,3.02267 +6032,1.57009,3.07602,3.57022,3.1443 +6084,1.19727,2.9268,3.72304,3.17736 +6136,2.0741,2.6992,3.39334,2.97932 +6188,1.38515,2.52856,3.36732,2.96174 +6240,0.883766,2.44981,3.47164,3.28425 +6292,0.948695,2.3992,3.13141,2.72684 +6344,1.17861,1.89741,3.48739,2.69994 +6396,0.98241,2.09112,3.0229,2.56952 +6448,0.508664,2.66919,3.19488,2.85154 +6500,0.382925,2.34962,3.10675,2.89003 +6552,0.577715,2.50916,3.10424,2.76621 +6604,0.321494,2.23343,3.09666,2.76104 +6656,0.420545,2.42998,2.98188,2.82382 +6708,0.249003,2.42864,2.95024,2.80326 +6760,0.227597,2.11763,2.62165,2.59951 +6812,0.130632,2.13328,2.83064,2.76006 +6864,0.117039,2.9421,2.83791,2.61777 +6916,0.107151,1.31672,2.65284,3.16445 +6968,0.102638,1.19024,2.56908,3.16542 +7020,0.0987592,2.24628,2.3298,2.69127 +7072,0.0955708,2.07695,2.21608,2.3965 +7124,0.0926925,2.47282,2.45904,2.577 +7176,0.0901642,2.53149,2.64804,2.98165 +7228,0.0879892,1.90423,2.06519,2.41024 +7280,0.0860432,2.17107,2.04318,3.06339 +7332,0.0843241,1.95256,2.28012,2.67334 +7384,0.082741,1.98631,1.75845,2.63678 +7436,0.0813178,2.28102,1.69075,2.91162 +7488,0.0799824,2.57341,2.49648,2.77264 +7540,0.0787356,2.06258,2.43569,2.14172 +7592,0.0775872,1.42461,1.86056,2.61434 +7644,0.0762402,1.01055,1.64821,2.11892 +7696,0.0755984,1.02575,2.1041,2.25258 +7748,0.0744338,2.17102,2.47454,2.77477 +7800,0.073856,1.4767,1.20703,2.11448 +7852,0.0727467,2.28634,1.09518,1.88279 +7904,0.0722667,2.21198,2.00647,2.51527 +7956,0.0712773,1.40918,2.17175,1.73514 +8008,0.0705659,1.07659,1.40308,2.47738 +8060,0.0703097,1.0944,1.78743,2.38857 +8112,0.0693824,2.84364,1.63821,1.95577 +8164,0.0689938,3.11206,1.41424,2.4442 +8216,0.0680711,3.09873,2.00964,2.16693 +8268,0.0676148,1.91301,1.73174,2.84428 +8320,0.0674497,2.27749,2.20408,2.79023 +8372,0.0665667,1.46711,1.5646,1.79344 +8424,0.0663995,2.07833,1.1481,2.03729 +8476,0.0656245,1.85961,0.867676,1.90358 +8528,0.0652392,1.20704,0.908901,2.27352 +8580,0.0649749,0.530041,0.639441,1.7132 +8632,0.0643265,0.344969,0.854225,1.47065 +8684,0.0642539,0.360411,0.976773,1.98824 +8736,0.0635765,0.861629,0.829225,2.61995 +8788,0.0634679,2.41824,0.844691,2.5576 +8840,0.0625186,1.40244,0.406951,2.68195 +8892,0.0630355,1.2783,0.287467,1.51566 +8944,0.0621792,2.12216,0.37966,1.55995 +8996,0.0617391,1.80332,0.28227,1.4195 +9048,0.0618032,1.62733,0.27846,2.0214 +9100,0.0608482,1.65242,1.38673,1.57099 +9152,0.0613049,2.38551,3.76795,1.17071 +9204,0.060981,2.48624,1.32867,2.31332 +9256,0.0607142,2.42558,1.17095,2.45797 +9308,0.0601476,1.82568,0.796709,1.88485 +9360,0.0591473,1.75076,0.453554,2.06791 +9412,0.0604402,1.66337,1.49511,2.29923 +9464,0.0594228,1.16406,1.97039,1.53101 +9516,0.0589995,1.01822,0.70141,1.37463 +9568,0.0591796,1.45331,0.371712,2.20335 +9620,0.0582746,1.1033,0.201325,1.88538 +9672,0.058786,1.45832,0.172552,1.63146 +9724,0.0585243,1.11282,0.155543,2.21195 +9776,0.0583653,0.709724,0.137989,1.45146 +9828,0.0577951,0.548445,0.127303,2.6377 +9880,0.0576067,0.740168,0.122209,3.12907 +9932,0.0572564,0.497389,0.115224,1.78754 +9984,0.0574471,2.29692,0.110292,1.24212 +10036,0.0569051,2.35365,0.105989,2.02015 +10088,0.0571503,2.01236,0.102297,1.66874 +10140,0.0561707,1.78433,0.0998444,1.41272 +10192,0.0571072,1.0005,0.0966752,1.2403 +10244,0.0562728,0.392268,0.0941992,1.51742 +10296,0.0565287,0.655688,0.0916265,1.25603 +10348,0.0556462,0.804228,0.0907421,1.09797 +10400,0.0557601,0.72678,0.0925336,0.909893 +10452,0.0468537,1.57395,0.0682381,1.18616 +10504,0.0453591,2.93629,0.064321,1.27373 +10556,0.0449931,1.85098,0.0630073,1.48445 +10608,0.0447792,1.87278,0.0620766,0.927745 +10660,0.044574,2.02923,0.0618217,0.780889 +10712,0.0446364,1.7587,0.0615277,0.481828 +10764,0.0444953,1.86235,0.0613648,0.411917 +10816,0.0447738,1.49559,0.0611707,0.331052 +10868,0.0444332,1.32496,0.0610565,0.306255 +10920,0.0447542,1.13932,0.0608805,0.23639 +10972,0.0448616,0.908054,0.060777,0.221628 +11024,0.0448649,0.398337,0.060597,0.269634 +11076,0.0449233,0.498315,0.0607043,0.173882 +11128,0.0449951,0.60319,0.0592381,1.85221 +11180,0.0450471,0.704604,0.0606775,4.08948 +11232,0.0451245,1.14489,0.0605616,2.63546 +11284,0.0451836,0.855069,0.0599916,1.55613 +11336,0.0452374,1.14284,0.0602749,1.11376 +11388,0.0452914,1.1225,0.0600289,1.35092 +11440,0.0453365,1.77264,0.0599038,0.733863 +11492,0.0453786,1.25866,0.0597253,0.567165 +11544,0.0454149,1.41853,0.0596581,0.679816 +11596,0.0454469,0.847364,0.0637706,1.62685 +11648,0.0454739,0.798087,0.0618953,2.784 +11700,0.0454954,0.547089,0.0614029,3.51328 +11752,0.0455153,0.416172,0.0611133,1.56082 +11804,0.045527,1.4302,0.0608159,0.814694 +11856,0.0455339,1.7244,0.0606126,0.430751 +11908,0.0455358,1.49331,0.0603431,0.700429 +11960,0.0455372,1.63945,0.0601645,0.654819 +12012,0.0455304,0.724856,0.0598904,0.713091 +12064,0.0455225,0.268103,0.0598609,1.10197 +12116,0.0455087,0.138313,0.0596024,1.362 +12168,0.0455034,0.112339,0.0594371,3.04368 +12220,0.0454727,0.0962458,0.0592093,1.95214 +12272,0.0452968,0.0933073,0.0590785,2.12109 +12324,0.0454752,0.0844986,0.0588707,2.31147 +12376,0.0454167,0.0844478,0.0586628,1.01389 +12428,0.0453883,0.0823895,0.0586157,1.41644 +12480,0.0453532,0.078784,0.0584244,1.41026 +12532,0.0453027,0.0765746,0.0583032,0.734747 +12584,0.045274,0.0745846,0.0581097,1.58212 +12636,0.0452423,0.0726746,0.0579726,2.41051 +12688,0.0451956,0.0711936,0.0577839,2.00349 +12740,0.0451373,0.0700027,0.0576802,1.75158 +12792,0.0451015,0.0688081,0.0574403,1.80661 +12844,0.0450523,0.06642,0.0574635,2.57271 +12896,0.0449918,0.0662693,0.0573032,2.25891 +12948,0.0449525,0.0645295,0.0571213,2.51877 +13000,0.0448961,0.0637879,0.0570259,1.93047 +13052,0.0447878,0.0636763,0.056857,1.00938 +13104,0.0447974,0.062383,0.0567256,0.901311 +13156,0.0447351,0.0622327,0.0565995,1.56035 +13208,0.0444668,0.0610898,0.0563742,1.21297 +13260,0.0436988,0.0612923,0.0564567,0.645401 +13312,0.0447828,0.0601455,0.0563026,0.337375 +13364,0.0445835,0.0588115,0.0561359,0.236913 +13416,0.0444972,0.0614291,0.0560092,0.207049 +13468,0.0444187,0.058797,0.0558967,0.184969 +13520,0.044441,0.0590265,0.0557663,0.166582 +13572,0.0443231,0.057963,0.055662,0.145047 +13624,0.0441957,0.0583987,0.0554405,0.133208 +13676,0.0440579,0.0572691,0.0555263,0.120802 +13728,0.0439464,0.0561217,0.055384,0.111328 +13780,0.0438142,0.058813,0.0552224,0.102488 +13832,0.043908,0.0564371,0.0550977,0.0986898 +13884,0.0437912,0.056345,0.0550096,0.0938299 +13936,0.0437052,0.0565492,0.0548897,0.0878638 +13988,0.0431878,0.0553602,0.054775,0.0843939 +14040,0.0435418,0.0552355,0.0546202,0.080652 +14092,0.0434538,0.0560857,0.0544693,0.078488 +14144,0.0433436,0.0545812,0.0544639,0.0763126 +14196,0.0433005,0.0534546,0.054427,0.0738277 +14248,0.0431847,0.0552845,0.0543095,0.0721399 +14300,0.0430838,0.0541267,0.0541967,0.0712341 +14352,0.0429735,0.0545372,0.0540414,0.0698303 +14404,0.0428601,0.0523402,0.0539406,0.0683492 +14456,0.0427606,0.0556045,0.0537947,0.0669474 +14508,0.0426417,0.0538918,0.0537418,0.0666939 +14560,0.0425215,0.0538762,0.0535438,0.0651015 +14612,0.0424013,0.0516743,0.053636,0.0648859 +14664,0.0404151,0.0545806,0.0534799,0.0636771 +14716,0.0417661,0.0535358,0.0533666,0.0633885 +14768,0.0424652,0.0531995,0.0532405,0.0626589 +14820,0.042408,0.0522486,0.0531247,0.0612721 +14872,0.0421981,0.0530439,0.0529921,0.0618974 +14924,0.0419986,0.0527189,0.0529378,0.0604006 +14976,0.0416475,0.0521924,0.0528371,0.0612417 +15028,0.0415582,0.0504525,0.0527405,0.0592111 +15080,0.0414565,0.053548,0.0525046,0.0592279 +15132,0.0412766,0.0527892,0.0523962,0.0595426 +15184,0.0411053,0.0521007,0.0525449,0.0579659 +15236,0.0408641,0.049876,0.0524441,0.0580594 +15288,0.040761,0.0527853,0.052341,0.058409 +15340,0.0381637,0.0519191,0.0521579,0.0568604 +15392,0.0390911,0.0516935,0.0521733,0.0569755 +15444,0.0415215,0.0493747,0.052039,0.0573651 +15496,0.0418788,0.0530329,0.0519311,0.0561163 +15548,0.0413236,0.0518038,0.0517877,0.0567107 +15600,0.0405072,0.0510501,0.0510322,0.0554266 +15652,0.0276802,0.0488391,0.0409862,0.0554083 +15704,0.0179345,0.0525698,0.0370949,0.0559599 +15756,0.0171944,0.051568,0.03607,0.054861 +15808,0.0166462,0.050579,0.0361906,0.0552589 +15860,0.0164164,0.0486429,0.0357072,0.0544145 +15912,0.0162918,0.052009,0.0367385,0.0545344 +15964,0.0152568,0.0512295,0.0348906,0.0538135 +16016,0.0154799,0.0501165,0.036379,0.054008 +16068,0.0146591,0.0473225,0.035891,0.0541935 +16120,0.0146698,0.0523411,0.0340713,0.0532081 +16172,0.0136924,0.0484943,0.0355754,0.054762 +16224,0.0140192,0.0490237,0.0354075,0.0527245 +16276,0.0132185,0.0492281,0.0352691,0.0529899 +16328,0.0134374,0.0493177,0.0351381,0.0538252 +16380,0.0126601,0.0493395,0.0350101,0.0522729 +16432,0.0128275,0.0493136,0.0349677,0.0526357 +16484,0.0122336,0.0492548,0.0327176,0.0533852 +16536,0.0122197,0.049174,0.0352138,0.0518239 +16588,0.0115069,0.0491206,0.0345325,0.0522538 +16640,0.0118057,0.0490173,0.034288,0.0530163 +16692,0.0110593,0.0489717,0.0340763,0.0514431 +16744,0.0112665,0.0488963,0.0338831,0.0524721 +16796,0.0109876,0.0488066,0.033695,0.0514093 +16848,0.0101274,0.0487656,0.0336483,0.0514639 +16900,0.0104882,0.0486924,0.0335247,0.0514111 +16952,0.0102247,0.0482355,0.033388,0.0513219 +17004,0.00980727,0.0489019,0.0332407,0.0512236 +17056,0.00979562,0.0486105,0.0311052,0.0511465 +17108,0.00932125,0.0484833,0.0329044,0.0509282 +17160,0.00935871,0.0483789,0.0328562,0.0509214 +17212,0.0088342,0.0483076,0.0327752,0.0507419 +17264,0.00894148,0.0482353,0.0326008,0.0507768 +17316,0.00859996,0.0481659,0.0325187,0.0505094 +17368,0.00858436,0.0481178,0.0323396,0.0504976 +17420,0.00820912,0.0480414,0.0322546,0.0504535 +17472,0.00821892,0.0479733,0.0320694,0.0502589 +17524,0.00767713,0.0479098,0.0288368,0.0502646 +17576,0.00789914,0.0478231,0.0322406,0.0501151 +17628,0.00751262,0.0478122,0.0317244,0.0500923 +17680,0.00756577,0.0465444,0.0316306,0.0499655 +17732,0.00743716,0.0486556,0.0314822,0.0499426 +17784,0.00717785,0.0478361,0.0312721,0.0497849 +17836,0.00715149,0.0476173,0.0311657,0.0501333 +17888,0.00688812,0.047522,0.0310105,0.0494205 +17940,0.00687397,0.0472808,0.0307912,0.0503177 +17992,0.0064876,0.0479212,0.0306682,0.0498022 +18044,0.00669544,0.0475813,0.0305015,0.0492579 +18096,0.00650908,0.0501857,0.0302658,0.0495842 +18148,0.00624845,0.0444731,0.0301255,0.0500073 +18200,0.00626693,0.0467899,0.0299406,0.0490357 +18252,0.00623075,0.0392334,0.0296855,0.0494171 +18304,0.00606512,0.0579958,0.0295264,0.0498909 +18356,0.00575581,0.0513862,0.0293354,0.0488414 +18408,0.00591417,0.0456687,0.0290597,0.0488154 +18460,0.00580705,0.0462496,0.0288775,0.0492989 +18512,0.00559576,0.0412911,0.0286689,0.049665 +18564,0.00561487,0.0486272,0.0283653,0.048751 +18616,0.00551977,0.0553607,0.0243114,0.048955 +18668,0.005403,0.050453,0.0213353,0.0493409 +18720,0.00515183,0.0417802,0.0252885,0.0483588 +18772,0.00526848,0.0403723,0.0276883,0.0484576 +18824,0.00518161,0.0491776,0.0276232,0.048473 +18876,0.00492036,0.0495229,0.0272796,0.0484592 +18928,0.00502895,0.0493709,0.0269934,0.0484151 +18980,0.00494882,0.0527036,0.026707,0.0484135 +19032,0.00484868,0.0450867,0.0263015,0.0483521 +19084,0.00470029,0.0425504,0.0259739,0.0483356 +19136,0.00477339,0.0461754,0.0256564,0.0482339 +19188,0.00466899,0.0362403,0.0252139,0.0482615 +19240,0.00447867,0.0516846,0.0247173,0.0481493 +19292,0.00448834,0.0660353,0.0243722,0.0481775 +19344,0.004521,0.0464727,0.0240533,0.0480815 +19396,0.00446583,0.0448967,0.0236036,0.048049 +19448,0.00440666,0.0511895,0.0231792,0.048011 +19500,0.00431687,0.0448301,0.0204476,0.0480029 +19552,0.00415964,0.0434736,0.0166832,0.0478825 +19604,0.00418278,0.0423036,0.0167477,0.0487201 +19656,0.00419355,0.0416905,0.0196076,0.0479215 +19708,0.00414022,0.0413369,0.0209181,0.0481087 +19760,0.00408776,0.042025,0.020855,0.0485401 +19812,0.0040367,0.0418705,0.0204485,0.047343 +19864,0.00398761,0.0476111,0.0198985,0.0474711 +19916,0.00387512,0.0466522,0.0193381,0.0475402 +19968,0.00377958,0.0427039,0.0188031,0.0475244 +20020,0.00382849,0.0403269,0.0155172,0.047547 +20072,0.0038052,0.0412658,0.0129502,0.0474781 +20124,0.0037653,0.0464446,0.0124928,0.0475108 +20176,0.00372217,0.0406452,0.0128509,0.0474223 +20228,0.0036804,0.0466543,0.0116961,0.0474498 +20280,0.00355534,0.0452718,0.014018,0.0473604 +20332,0.00351542,0.0497205,0.0154972,0.0473897 +20384,0.00346618,0.0378876,0.0154259,0.0472894 +20436,0.00352963,0.0396385,0.0149876,0.0477896 +20488,0.00348959,0.0479973,0.0145133,0.0470888 +20540,0.00345112,0.0442868,0.0140052,0.0475149 +20592,0.00336388,0.0491855,0.0134818,0.0473201 +20644,0.00337397,0.037531,0.0130446,0.0469298 +20696,0.00334066,0.0376478,0.0126027,0.047939 +20748,0.00321663,0.0515434,0.0100702,0.0466153 +20800,0.00322308,0.0488977,0.00904261,0.0472034 +20852,0.00312797,0.0462985,0.00845747,0.0470964 +20904,0.00302016,0.051954,0.00788357,0.0470498 +20956,0.0029815,0.0221143,0.0077514,0.0470044 +21008,0.00296506,0.0144876,0.00762733,0.0469709 +21060,0.00294993,0.0731594,0.00754526,0.0469596 +21112,0.00295875,0.0770013,0.00762359,0.0468664 +21164,0.0029368,0.0256721,0.00733096,0.0469003 +21216,0.00292287,0.0237905,0.00741113,0.0468539 +21268,0.00292203,0.0197783,0.00719453,0.0468106 +21320,0.00288598,0.0141167,0.00728496,0.0468144 +21372,0.00288433,0.0104435,0.00704298,0.0467231 +21424,0.00288379,0.00866538,0.0071051,0.0467718 +21476,0.00285218,0.00776886,0.00701565,0.0466857 +21528,0.00285466,0.00627103,0.00683342,0.0466644 +21580,0.00285479,0.00491068,0.00692296,0.0466914 +21632,0.00284331,0.00445395,0.00670367,0.0466157 +21684,0.002818,0.00392171,0.0071565,0.0465911 +21736,0.00281823,0.00344258,0.00659187,0.0465695 +21788,0.0028069,0.00308653,0.00696778,0.0465639 +21840,0.00276551,0.00277188,0.00648231,0.0465245 +21892,0.00277218,0.00245232,0.00694456,0.0465264 +21944,0.00277375,0.00232005,0.00638404,0.046439 +21996,0.00276236,0.00211597,0.00684,0.0464878 +22048,0.00275129,0.00194364,0.00640994,0.0464091 +22100,0.00270985,0.00182115,0.00667789,0.0464366 +22152,0.00272699,0.00169476,0.00631137,0.0463474 +22204,0.00271688,0.00158944,0.00662718,0.046392 +22256,0.00270643,0.00148818,0.00611562,0.0463093 +22308,0.00269584,0.00140168,0.006549,0.0463182 +22360,0.00268542,0.00131858,0.00621487,0.0462971 +22412,0.00264227,0.0012509,0.00638262,0.0462495 +22464,0.00266327,0.00118729,0.0060569,0.0462827 +22516,0.00265328,0.00113097,0.00636264,0.0462154 +22568,0.00264307,0.00107817,0.00596671,0.0462019 +22620,0.00262716,0.0010297,0.00627662,0.0461818 +22672,0.00260415,0.000984514,0.00597455,0.0466889 +22724,0.00261402,0.000944564,0.0061291,0.0455599 +22776,0.00260358,0.000906957,0.00585428,0.045944 +22828,0.00257918,0.00087301,0.00605253,0.0474891 +22880,0.0025823,0.000840725,0.00581817,0.0455385 +22932,0.00257238,0.000810486,0.00599747,0.0459143 +22984,0.00254502,0.000783494,0.00560587,0.0472806 +23036,0.00255333,0.000756481,0.00594554,0.0456659 +23088,0.00254341,0.000733607,0.00549316,0.04572 +23140,0.00251529,0.000711413,0.00588248,0.0461489 +23192,0.00252466,0.000690665,0.00569538,0.0471019 +23244,0.00251515,0.000670674,0.00556942,0.0457119 +23296,0.00248749,0.000652514,0.00567859,0.0459594 +23348,0.00249644,0.000634915,0.00531855,0.0468407 +23400,0.0024869,0.000618045,0.00568702,0.0453167 +23452,0.00247012,0.000602569,0.00533393,0.0455564 +23504,0.0024665,0.000587268,0.00558019,0.045666 +23556,0.00245771,0.000572904,0.00535553,0.0457144 +23608,0.00244926,0.000559277,0.00548474,0.0457326 +23660,0.00241667,0.000546086,0.00509286,0.045769 +23712,0.00243025,0.000533907,0.00547784,0.0457498 +23764,0.00242207,0.000523885,0.00526139,0.0457523 +23816,0.00241359,0.000510441,0.00530896,0.0457223 +23868,0.002405,0.000501388,0.00496169,0.0457281 +23920,0.00237289,0.000489166,0.00534444,0.0457074 +23972,0.00238672,0.000481742,0.00516831,0.0456842 +24024,0.00237875,0.000469589,0.00495738,0.0456798 +24076,0.00237056,0.000462829,0.00522645,0.0456596 +24128,0.00236221,0.00045426,0.0049286,0.0456417 +24180,0.00234958,0.000443434,0.00514965,0.0456126 +24232,0.00233827,0.000438438,0.00482471,0.0456167 +24284,0.00233723,0.000427729,0.00508561,0.0455958 +24336,0.00232912,0.000422977,0.00490874,0.0455779 +24388,0.00229778,0.000414537,0.00498009,0.0455555 +24440,0.00231183,0.000408425,0.00464893,0.0455515 +24492,0.00230427,0.000399314,0.00498203,0.0455319 +24544,0.0022965,0.000394948,0.00482981,0.0455151 +24596,0.00228859,0.000386838,0.00482766,0.0454887 +24648,0.00228104,0.000380982,0.00453751,0.0454929 +24700,0.00225064,0.000376393,0.00486649,0.0454707 +24752,0.00224193,0.000369686,0.00477044,0.0454544 +24804,0.00225668,0.000362733,0.00445873,0.0454286 +24856,0.00224942,0.000364098,0.00478487,0.0454327 +24908,0.00224187,0.000352179,0.00462377,0.0454117 +24960,0.00223441,0.000347471,0.00466004,0.0453953 +25012,0.00222443,0.000341708,0.00435778,0.04538 +25064,0.00221755,0.000337617,0.00466402,0.0453707 +25116,0.00221049,0.000332626,0.00448343,0.0462738 +25168,0.00220368,0.00032682,0.00456215,0.0449713 +25220,0.0021821,0.000323173,0.00426032,0.0458443 +25272,0.00218921,0.00032032,0.00456828,0.0449334 +25324,0.00217949,0.000313009,0.00447763,0.0465627 +25376,0.00217284,0.000310409,0.00423876,0.0449164 +25428,0.002166,0.000305061,0.00446041,0.0451495 +25480,0.00215515,0.00030459,0.00429308,0.0465847 +25532,0.00215071,0.000297248,0.00438646,0.0448363 +25584,0.00214418,0.000293026,0.00409803,0.044947 +25636,0.00213758,0.000293367,0.00438221,0.0453232 +25688,0.00211141,0.000286157,0.00428179,0.0464016 +25740,0.00212305,0.000282262,0.00407568,0.0448503 +25792,0.00211654,0.000278828,0.00429317,0.0450589 +25844,0.00210988,0.000278943,0.00415814,0.0458801 +25896,0.00210343,0.000272516,0.00421077,0.0444974 +25948,0.00208064,0.000268919,0.00394915,0.0465154 +26000,0.0020883,0.000268568,0.00421237,0.0446035 +26052,0.00205266,0.000262989,0.00391449,0.0448049 +26104,0.0020324,0.000259766,0.00381233,0.0462921 +26156,0.00202363,0.00025739,0.0038691,0.0442711 +26208,0.00202015,0.000256725,0.00380271,0.0458371 +26260,0.0020187,0.000251532,0.00383443,0.0451447 +26312,0.00201515,0.00024932,0.00377922,0.0450607 +26364,0.00201161,0.000246017,0.00385273,0.0450509 +26416,0.00200984,0.000246699,0.00374681,0.0450441 +26468,0.00200991,0.000241464,0.00383362,0.0450274 +26520,0.00200166,0.000238781,0.00372544,0.0450151 +26572,0.00200191,0.00023873,0.00381535,0.0450057 +26624,0.00200021,0.00023426,0.00370404,0.0449851 +26676,0.00199792,0.000233576,0.00379756,0.0449758 +26728,0.00198769,0.000229708,0.00370202,0.044968 +26780,0.00198797,0.000228841,0.00377259,0.0449517 +26832,0.00198819,0.000225406,0.00366696,0.0449369 +26884,0.00198486,0.000225561,0.00375828,0.044931 +26936,0.00198183,0.000221411,0.00366421,0.0449196 +26988,0.00197897,0.00021921,0.00373877,0.0449072 +27040,0.00197368,0.000219187,0.00366667,0.0448949 +27092,0.00197271,0.000215451,0.00369408,0.0448788 +27144,0.00196967,0.000213647,0.00366635,0.044873 +27196,0.00196663,0.00021331,0.00365643,0.0448614 +27248,0.00196363,0.000209845,0.00367554,0.0448501 +27300,0.00195324,0.000209998,0.00358912,0.0448377 +27352,0.00195023,0.00020647,0.00367607,0.0448226 +27404,0.00195511,0.000204701,0.00358469,0.0448174 +27456,0.00195212,0.000204771,0.00365922,0.0448055 +27508,0.00194916,0.000201239,0.00358519,0.0447901 +27560,0.00194608,0.000199661,0.00363614,0.0447851 +27612,0.0019431,0.000199895,0.00353519,0.0447732 +27664,0.0019402,0.000196375,0.00362562,0.0447634 +27716,0.00193717,0.000196079,0.00356925,0.0447505 +27768,0.00193422,0.000193249,0.00357564,0.0447368 +27820,0.00193129,0.000192468,0.00349987,0.0447347 +27872,0.00192651,0.000190052,0.00359637,0.0447203 +27924,0.00192555,0.000190134,0.00357163,0.0447104 +27976,0.00192284,0.000187199,0.00347847,0.0447362 +28028,0.00191772,0.000185811,0.0035685,0.0446802 +28080,0.00191692,0.00018553,0.00352624,0.0446655 +28132,0.00191442,0.000182965,0.00346788,0.0446627 +28184,0.00191109,0.000182889,0.00353815,0.0446632 +28236,0.00190821,0.000180219,0.0034854,0.0446838 +28288,0.00190557,0.000178937,0.00351186,0.0446292 +28340,0.0019007,0.000179002,0.00342466,0.0446444 +28392,0.00189973,0.000176297,0.00350703,0.0446183 +28444,0.00189724,0.000176008,0.00346769,0.0446047 +28496,0.00188931,0.000173803,0.00341167,0.0445945 +28548,0.00189139,0.000172553,0.00348039,0.0445905 +28600,0.00188859,0.00017226,0.0034113,0.0445899 +28652,0.00188578,0.000169984,0.00346256,0.0445626 +28704,0.00187829,0.000170032,0.00338041,0.0445969 +28756,0.00188052,0.000167801,0.00344861,0.0445334 +28808,0.00187084,0.000166602,0.00340637,0.044549 +28860,0.00187485,0.000166564,0.00342194,0.0445363 +28912,0.00187207,0.000164254,0.00334083,0.0443804 +28964,0.0018693,0.00016376,0.00341663,0.0446905 +29016,0.00186683,0.000162003,0.00338417,0.0445108 +29068,0.00186372,0.000161887,0.00331296,0.0445028 +29120,0.00186097,0.000159823,0.00339792,0.0444932 +29172,0.00185838,0.00016002,0.00337824,0.0444874 +29224,0.00185358,0.000157755,0.00329242,0.0444732 +29276,0.00185286,0.000157822,0.00337429,0.0444568 +29328,0.00185041,0.000155828,0.00333754,0.0444592 +29380,0.00184734,0.000155885,0.00332333,0.0444371 +29432,0.00184463,0.000153827,0.00333846,0.0444377 +29484,0.00184215,0.000153766,0.00325795,0.0444344 +29536,0.0018324,0.000151998,0.00333523,0.0444192 +29588,0.00182946,0.000151864,0.00331725,0.0443401 +29640,0.00183432,0.000150011,0.00323479,0.0444696 +29692,0.00183164,0.000150083,0.0033122,0.0443973 +29744,0.00182903,0.000148258,0.00327758,0.0443775 +29796,0.00182624,0.000148192,0.00327291,0.0443818 +29848,0.00182359,0.000146551,0.00321866,0.0444114 +29900,0.00182093,0.000146539,0.00328085,0.0443054 +29952,0.0018183,0.000144751,0.00324335,0.0443926 +30004,0.00181565,0.000144689,0.00325149,0.0443441 +30056,0.00181299,0.000143127,0.00317794,0.0443244 +30108,0.0018087,0.000143118,0.00325525,0.0443329 +30160,0.00180789,0.000141427,0.00323802,0.0443188 +30212,0.00180535,0.000141338,0.00315758,0.044289 +30264,0.00180083,0.000139856,0.00323482,0.0443265 +30316,0.00180009,0.000139745,0.00321753,0.0442944 +30368,0.00179781,0.000138187,0.00313563,0.044237 +30420,0.00179498,0.000138252,0.00321268,0.0443221 +30472,0.00179231,0.00013671,0.00317979,0.0442681 +30524,0.00178995,0.00013661,0.00315924,0.0442611 +30576,0.00178549,0.000135168,0.00318344,0.0442626 +30628,0.00178472,0.000135255,0.00310234,0.0443158 +30680,0.00178253,0.00013369,0.00318009,0.0441705 +30732,0.00177956,0.00013367,0.00316309,0.0442538 +30784,0.00177702,0.000132311,0.00312524,0.044233 +30836,0.00177483,0.000132319,0.00314639,0.0442026 +30888,0.001768,0.000130856,0.0030719,0.044216 +30940,0.00176965,0.000130808,0.00314385,0.0442003 +30992,0.00176714,0.000129522,0.00312799,0.0441925 +31044,0.0017647,0.000129427,0.00305013,0.0441095 +31096,0.00175802,0.000128075,0.00312355,0.0442571 +31148,0.00176001,0.000128227,0.00309239,0.0441353 +31200,0.0017573,0.000126861,0.00309442,0.0441889 +31252,0.00174466,0.000126733,0.00301476,0.0441594 +31304,0.00173782,0.000125466,0.00299874,0.044115 +31356,0.00173408,0.000125591,0.00302117,0.0441864 +31408,0.00173263,0.000124209,0.00298661,0.043912 +31460,0.00173152,0.000124203,0.00301603,0.0458935 +31512,0.00172959,0.000123024,0.00298513,0.0401846 +31564,0.00172984,0.00012304,0.00300852,0.0458782 +31616,0.00172987,0.000121755,0.00297884,0.0413905 +31668,0.00172738,0.000121724,0.00300133,0.0432051 +31720,0.00172751,0.00012086,0.00297871,0.0504445 +31772,0.00172619,0.000119947,0.0029838,0.0418433 +31824,0.00172496,0.000120068,0.00297836,0.0470758 +31876,0.00172384,0.000118788,0.00298745,0.0406278 +31928,0.00172259,0.000118881,0.00295588,0.0436746 +31980,0.00172143,0.000117727,0.00298389,0.0436904 +32032,0.00171898,0.000117619,0.00295355,0.0486537 +32084,0.00171916,0.000116599,0.00297803,0.0400302 +32136,0.0017179,0.000116519,0.00296008,0.0450022 +32188,0.00171667,0.000115435,0.00296012,0.0446437 +32240,0.00171563,0.00011553,0.00294683,0.048444 +32292,0.00171244,0.000114367,0.00296471,0.039329 +32344,0.00171325,0.000114368,0.00293614,0.0462696 +32396,0.00171204,0.000113591,0.00295927,0.0471663 +32448,0.00171101,0.000113062,0.00292929,0.0420454 +32500,0.0017073,0.000112265,0.00295377,0.0432239 +32552,0.00170863,0.000112376,0.00292896,0.0419384 +32604,0.00170741,0.00011131,0.00294669,0.0508704 +32656,0.00170624,0.00011124,0.0029119,0.0398266 +32708,0.0017051,0.000110246,0.0029432,0.0428351 +32760,0.00170388,0.000110343,0.00293651,0.0497618 +32812,0.00170278,0.000109275,0.00290418,0.0405868 +32864,0.00170083,0.000109346,0.00293378,0.0428095 +32916,0.00170044,0.000108307,0.00292063,0.0432146 +32968,0.00169932,0.00010832,0.00289959,0.0451637 +33020,0.00169811,0.000107721,0.00292432,0.0503826 +33072,0.00169698,0.000106919,0.00290948,0.0403782 +33124,0.00169388,0.000106903,0.00290958,0.0395972 +33176,0.00169475,0.000106028,0.00288288,0.0457735 +33228,0.00169355,0.000105906,0.00291348,0.0481306 +33280,0.00169243,0.000105298,0.00290707,0.0389999 +33332,0.0016913,0.000104947,0.00287497,0.041029 +33384,0.0016901,0.000104202,0.00290448,0.0486515 +33436,0.00168899,0.000104215,0.00289158,0.0403436 +33488,0.00168711,0.000103331,0.00288298,0.0410583 +33540,0.00168666,0.000103299,0.00289231,0.0545168 +33592,0.00168559,0.000102504,0.00286113,0.0410381 +33644,0.0016844,0.000102384,0.00288981,0.0432095 +33696,0.00168327,0.000101606,0.00288365,0.0424822 +33748,0.00168032,0.000101651,0.00285242,0.0427793 +33800,0.00168143,0.00010077,0.00288066,0.042102 +33852,0.00167724,0.000100823,0.00286832,0.0431184 +33904,0.00167887,9.99E-05,0.00286018,0.0432618 +33956,0.00167768,1.00E-04,0.00286659,0.0434403 +34008,0.00167659,9.94E-05,0.00283774,0.043552 +34060,0.00167545,9.90E-05,0.00286693,0.0436259 +34112,0.00167429,9.84E-05,0.0028609,0.0436746 +34164,0.00167322,9.84E-05,0.00282981,0.0437193 +34216,0.00167128,9.76E-05,0.00285851,0.0437573 +34268,0.00167093,9.76E-05,0.00285253,0.0437388 +34320,0.00166986,9.69E-05,0.00282091,0.0437299 +34372,0.00166869,9.68E-05,0.00284965,0.0437411 +34424,0.00166757,9.61E-05,0.00283755,0.0437096 +34476,0.0016646,9.61E-05,0.00282952,0.0436653 +34528,0.00166557,9.53E-05,0.00283587,0.0436608 +34580,0.00166147,9.53E-05,0.00280655,0.0436782 +34632,0.00166325,9.46E-05,0.00283675,0.0436478 +34684,0.00166209,9.46E-05,0.00283077,0.0436228 +34736,0.00166097,9.39E-05,0.00280416,0.0436167 +34788,0.00165989,9.38E-05,0.00282628,0.0436363 +34840,0.00165873,9.32E-05,0.0028102,0.0436041 +34892,0.00165764,9.31E-05,0.00281882,0.0435743 +34944,0.00165655,9.25E-05,0.00278847,0.0435538 +34996,0.0016554,9.25E-05,0.00281655,0.0435837 +35048,0.00165434,9.18E-05,0.00280451,0.0435528 +35100,0.00165249,9.17E-05,0.00279937,0.0435165 +35152,0.0016521,9.11E-05,0.00280191,0.0435145 +35204,0.00165106,9.11E-05,0.00277459,0.0434471 +35256,0.00164991,9.04E-05,0.00280275,0.0435829 +35308,0.00164881,9.04E-05,0.00279712,0.0434977 +35360,0.00164704,8.98E-05,0.00276655,0.0435136 +35412,0.00164664,8.97E-05,0.00279489,0.0434759 +35464,0.00164566,8.93E-05,0.00278926,0.0434227 +35516,0.00164448,8.88E-05,0.00276897,0.0434456 +35568,0.00164334,8.88E-05,0.00278425,0.0431598 +35620,0.00164236,8.81E-05,0.00275814,0.0437418 +35672,0.0016405,8.81E-05,0.00277998,0.0435691 +35724,0.00164014,8.77E-05,0.00276907,0.0404371 +35776,0.00163832,8.74E-05,0.00276134,0.0468966 +35828,0.00163797,8.69E-05,0.00276967,0.0440688 +35880,0.00163708,8.69E-05,0.00274079,0.0386527 +35932,0.00163329,8.63E-05,0.00276708,0.034669 +35984,0.00163481,8.63E-05,0.00275384,0.0310935 +36036,0.00163368,8.57E-05,0.00275676,0.0772166 +36088,0.00163264,8.57E-05,0.00272903,0.048752 +36140,0.00163155,8.52E-05,0.00275741,0.0364713 +36192,0.00163044,8.50E-05,0.00275137,0.0339633 +36244,0.00162942,8.45E-05,0.00272155,0.0355565 +36296,0.00162757,8.45E-05,0.00274882,0.0291761 +36348,0.00162724,8.39E-05,0.00273736,0.0240248 +36400,0.00162622,8.39E-05,0.00273821,0.0359803 +36452,0.00162035,8.36E-05,0.00269894,3.70915 +36504,0.00161754,8.31E-05,0.00271131,2.22353 +36556,0.00161617,8.31E-05,0.00270387,2.8763 +36608,0.00161546,8.25E-05,0.0027023,1.8589 +36660,0.0016148,8.25E-05,0.00270157,2.2589 +36712,0.0016149,8.20E-05,0.00269435,2.19302 +36764,0.00161486,8.20E-05,0.00270404,2.60034 +36816,0.0016138,8.14E-05,0.00269168,2.27869 +36868,0.0016138,8.14E-05,0.00270141,1.74801 +36920,0.00161222,8.10E-05,0.00268886,1.88053 +36972,0.00161202,8.06E-05,0.00269878,1.49279 +37024,0.00161225,8.06E-05,0.0026861,1.14913 +37076,0.00161169,8.01E-05,0.00269608,0.919516 +37128,0.00161113,8.00E-05,0.00268623,0.85087 +37180,0.00161066,7.96E-05,0.00269328,1.60845 +37232,0.00161011,7.95E-05,0.00267865,2.07968 +37284,0.00160954,7.91E-05,0.00269178,2.51464 +37336,0.00160855,7.91E-05,0.00268924,2.47905 +37388,0.0016085,7.86E-05,0.00267508,1.87106 +37440,0.00160803,7.85E-05,0.00268775,1.50387 +37492,0.00160748,7.82E-05,0.0026824,0.828078 +37544,0.00160695,7.78E-05,0.00267883,0.494588 +37596,0.00160589,7.78E-05,0.0026816,0.390209 +37648,0.00160594,7.73E-05,0.00266871,0.299272 +37700,0.00160541,7.73E-05,0.00268156,0.346125 +37752,0.00160486,7.69E-05,0.00267906,0.240624 +37804,0.00160439,7.66E-05,0.00266514,0.158274 +37856,0.00160349,7.66E-05,0.0026778,0.126668 +37908,0.00160334,7.61E-05,0.00267241,0.104023 +37960,0.00160282,7.61E-05,0.00266878,0.0898649 +38012,0.00160227,7.58E-05,0.00267278,0.0837252 +38064,0.00160179,7.54E-05,0.00265899,0.0718407 +38116,0.00160091,7.54E-05,0.00267153,0.0599478 +38168,0.00160074,7.49E-05,0.00266907,0.0671565 +38220,0.00160023,7.49E-05,0.00265511,0.0662924 +38272,0.00159968,7.46E-05,0.00266763,0.0563712 +38324,0.0015992,7.43E-05,0.00266235,0.0581083 +38376,0.00159784,7.43E-05,0.00265885,0.0553902 +38428,0.00159819,7.39E-05,0.00266164,0.0603428 +38480,0.00159764,7.38E-05,0.00264868,0.0424511 +38532,0.00159714,7.34E-05,0.0026616,0.0612706 +38584,0.00159662,7.34E-05,0.00265917,0.046021 +38636,0.00159607,7.30E-05,0.00264509,0.0480074 +38688,0.0015956,7.29E-05,0.00265793,0.0697066 +38740,0.00159399,7.25E-05,0.0026554,0.0691361 +38792,0.0015946,7.25E-05,0.00264389,0.0405713 +38844,0.00159405,7.21E-05,0.00265319,0.046665 +38896,0.00159353,7.21E-05,0.00264656,0.0575801 +38948,0.00159269,7.18E-05,0.00264516,0.037697 +39000,0.00159249,7.15E-05,0.00264515,0.0451105 +39052,0.00159203,7.14E-05,0.00264377,0.0871062 +39104,0.00159148,7.10E-05,0.00264028,0.0278255 +39156,0.00159096,7.10E-05,0.00264514,0.0446956 +39208,0.00159014,7.08E-05,0.0026317,0.0682649 +39260,0.00158993,7.05E-05,0.00264377,0.0714882 +39312,0.00158948,7.04E-05,0.00263838,0.0313508 +39364,0.00158893,7.02E-05,0.00263492,0.0350993 +39416,0.0015884,6.98E-05,0.0026375,0.0841346 +39468,0.00158759,6.99E-05,0.0026255,1.10497 +39520,0.00158739,6.95E-05,0.00263752,4.74836 +39572,0.00158693,6.93E-05,0.00263207,3.47521 +39624,0.00158639,6.93E-05,0.00262091,2.75083 +39676,0.00158585,6.90E-05,0.00263426,2.18725 +39728,0.00158455,6.87E-05,0.00263153,1.81169 +39780,0.00158492,6.87E-05,0.0026176,1.33012 +39832,0.00158345,6.83E-05,0.00263024,0.947187 +39884,0.00158392,6.83E-05,0.0026278,1.11021 +39936,0.00158338,6.81E-05,0.00262148,0.495932 +39988,0.00158284,6.78E-05,0.00262012,0.326061 diff --git a/Project2-Character-Recognition/data/loss_decay.csv b/Project2-Character-Recognition/data/loss_decay.csv new file mode 100644 index 0000000..cdd4a64 --- /dev/null +++ b/Project2-Character-Recognition/data/loss_decay.csv @@ -0,0 +1,769 @@ +52,5.81503 +104,5.70561 +156,5.70531 +208,5.70504 +260,5.70478 +312,5.70452 +364,5.70428 +416,5.70404 +468,5.70381 +520,5.7036 +572,5.70337 +624,5.70315 +676,5.70293 +728,5.70271 +780,5.70249 +832,5.70227 +884,5.70206 +936,5.70184 +988,5.70163 +1040,5.70141 +1092,5.70119 +1144,5.70097 +1196,5.70074 +1248,5.70051 +1300,5.70028 +1352,5.70004 +1404,5.69978 +1456,5.69953 +1508,5.69926 +1560,5.69899 +1612,5.6987 +1664,5.69841 +1716,5.69811 +1768,5.6978 +1820,5.69748 +1872,5.69715 +1924,5.69679 +1976,5.69643 +2028,5.69604 +2080,5.69564 +2132,5.69524 +2184,5.69483 +2236,5.6944 +2288,5.69398 +2340,5.69353 +2392,5.69308 +2444,5.69261 +2496,5.69214 +2548,5.69163 +2600,5.69114 +2652,5.69058 +2704,5.69002 +2756,5.6894 +2808,5.6888 +2860,5.68811 +2912,5.68743 +2964,5.68673 +3016,5.68594 +3068,5.68515 +3120,5.68428 +3172,5.68333 +3224,5.68238 +3276,5.68132 +3328,5.68025 +3380,5.67907 +3432,5.67786 +3484,5.67654 +3536,5.67512 +3588,5.67356 +3640,5.67192 +3692,5.67017 +3744,5.66818 +3796,5.66601 +3848,5.66366 +3900,5.66101 +3952,5.65806 +4004,5.65453 +4056,5.65064 +4108,5.6462 +4160,5.64118 +4212,5.63549 +4264,5.629 +4316,5.62128 +4368,5.61196 +4420,5.60043 +4472,5.58568 +4524,5.5656 +4576,5.53795 +4628,5.49819 +4680,5.43854 +4732,5.34868 +4784,5.23403 +4836,5.10302 +4888,4.96787 +4940,4.86889 +4992,4.74083 +5044,4.73096 +5096,4.65639 +5148,4.55064 +5200,4.49588 +5252,4.1237 +5304,3.98268 +5356,3.92512 +5408,3.89307 +5460,3.85402 +5512,3.88298 +5564,3.90732 +5616,3.75032 +5668,3.84805 +5720,3.63796 +5772,3.66276 +5824,3.76 +5876,3.61224 +5928,3.63487 +5980,3.73299 +6032,3.57022 +6084,3.72304 +6136,3.39334 +6188,3.36732 +6240,3.47164 +6292,3.13141 +6344,3.48739 +6396,3.0229 +6448,3.19488 +6500,3.10675 +6552,3.10424 +6604,3.09666 +6656,2.98188 +6708,2.95024 +6760,2.62165 +6812,2.83064 +6864,2.83791 +6916,2.65284 +6968,2.56908 +7020,2.3298 +7072,2.21608 +7124,2.45904 +7176,2.64804 +7228,2.06519 +7280,2.04318 +7332,2.28012 +7384,1.75845 +7436,1.69075 +7488,2.49648 +7540,2.43569 +7592,1.86056 +7644,1.64821 +7696,2.1041 +7748,2.47454 +7800,1.20703 +7852,1.09518 +7904,2.00647 +7956,2.17175 +8008,1.40308 +8060,1.78743 +8112,1.63821 +8164,1.41424 +8216,2.00964 +8268,1.73174 +8320,2.20408 +8372,1.5646 +8424,1.1481 +8476,0.867676 +8528,0.908901 +8580,0.639441 +8632,0.854225 +8684,0.976773 +8736,0.829225 +8788,0.844691 +8840,0.406951 +8892,0.287467 +8944,0.37966 +8996,0.28227 +9048,0.27846 +9100,1.38673 +9152,3.76795 +9204,1.32867 +9256,1.17095 +9308,0.796709 +9360,0.453554 +9412,1.49511 +9464,1.97039 +9516,0.70141 +9568,0.371712 +9620,0.201325 +9672,0.172552 +9724,0.155543 +9776,0.137989 +9828,0.127303 +9880,0.122209 +9932,0.115224 +9984,0.110292 +10036,0.105989 +10088,0.102297 +10140,0.0998444 +10192,0.0966752 +10244,0.0941992 +10296,0.0916265 +10348,0.0907421 +10400,0.0925336 +10452,0.0682381 +10504,0.064321 +10556,0.0630073 +10608,0.0620766 +10660,0.0618217 +10712,0.0615277 +10764,0.0613648 +10816,0.0611707 +10868,0.0610565 +10920,0.0608805 +10972,0.060777 +11024,0.060597 +11076,0.0607043 +11128,0.0592381 +11180,0.0606775 +11232,0.0605616 +11284,0.0599916 +11336,0.0602749 +11388,0.0600289 +11440,0.0599038 +11492,0.0597253 +11544,0.0596581 +11596,0.0637706 +11648,0.0618953 +11700,0.0614029 +11752,0.0611133 +11804,0.0608159 +11856,0.0606126 +11908,0.0603431 +11960,0.0601645 +12012,0.0598904 +12064,0.0598609 +12116,0.0596024 +12168,0.0594371 +12220,0.0592093 +12272,0.0590785 +12324,0.0588707 +12376,0.0586628 +12428,0.0586157 +12480,0.0584244 +12532,0.0583032 +12584,0.0581097 +12636,0.0579726 +12688,0.0577839 +12740,0.0576802 +12792,0.0574403 +12844,0.0574635 +12896,0.0573032 +12948,0.0571213 +13000,0.0570259 +13052,0.056857 +13104,0.0567256 +13156,0.0565995 +13208,0.0563742 +13260,0.0564567 +13312,0.0563026 +13364,0.0561359 +13416,0.0560092 +13468,0.0558967 +13520,0.0557663 +13572,0.055662 +13624,0.0554405 +13676,0.0555263 +13728,0.055384 +13780,0.0552224 +13832,0.0550977 +13884,0.0550096 +13936,0.0548897 +13988,0.054775 +14040,0.0546202 +14092,0.0544693 +14144,0.0544639 +14196,0.054427 +14248,0.0543095 +14300,0.0541967 +14352,0.0540414 +14404,0.0539406 +14456,0.0537947 +14508,0.0537418 +14560,0.0535438 +14612,0.053636 +14664,0.0534799 +14716,0.0533666 +14768,0.0532405 +14820,0.0531247 +14872,0.0529921 +14924,0.0529378 +14976,0.0528371 +15028,0.0527405 +15080,0.0525046 +15132,0.0523962 +15184,0.0525449 +15236,0.0524441 +15288,0.052341 +15340,0.0521579 +15392,0.0521733 +15444,0.052039 +15496,0.0519311 +15548,0.0517877 +15600,0.0510322 +15652,0.0409862 +15704,0.0370949 +15756,0.03607 +15808,0.0361906 +15860,0.0357072 +15912,0.0367385 +15964,0.0348906 +16016,0.036379 +16068,0.035891 +16120,0.0340713 +16172,0.0355754 +16224,0.0354075 +16276,0.0352691 +16328,0.0351381 +16380,0.0350101 +16432,0.0349677 +16484,0.0327176 +16536,0.0352138 +16588,0.0345325 +16640,0.034288 +16692,0.0340763 +16744,0.0338831 +16796,0.033695 +16848,0.0336483 +16900,0.0335247 +16952,0.033388 +17004,0.0332407 +17056,0.0311052 +17108,0.0329044 +17160,0.0328562 +17212,0.0327752 +17264,0.0326008 +17316,0.0325187 +17368,0.0323396 +17420,0.0322546 +17472,0.0320694 +17524,0.0288368 +17576,0.0322406 +17628,0.0317244 +17680,0.0316306 +17732,0.0314822 +17784,0.0312721 +17836,0.0311657 +17888,0.0310105 +17940,0.0307912 +17992,0.0306682 +18044,0.0305015 +18096,0.0302658 +18148,0.0301255 +18200,0.0299406 +18252,0.0296855 +18304,0.0295264 +18356,0.0293354 +18408,0.0290597 +18460,0.0288775 +18512,0.0286689 +18564,0.0283653 +18616,0.0243114 +18668,0.0213353 +18720,0.0252885 +18772,0.0276883 +18824,0.0276232 +18876,0.0272796 +18928,0.0269934 +18980,0.026707 +19032,0.0263015 +19084,0.0259739 +19136,0.0256564 +19188,0.0252139 +19240,0.0247173 +19292,0.0243722 +19344,0.0240533 +19396,0.0236036 +19448,0.0231792 +19500,0.0204476 +19552,0.0166832 +19604,0.0167477 +19656,0.0196076 +19708,0.0209181 +19760,0.020855 +19812,0.0204485 +19864,0.0198985 +19916,0.0193381 +19968,0.0188031 +20020,0.0155172 +20072,0.0129502 +20124,0.0124928 +20176,0.0128509 +20228,0.0116961 +20280,0.014018 +20332,0.0154972 +20384,0.0154259 +20436,0.0149876 +20488,0.0145133 +20540,0.0140052 +20592,0.0134818 +20644,0.0130446 +20696,0.0126027 +20748,0.0100702 +20800,0.00904261 +20852,0.00845747 +20904,0.00788357 +20956,0.0077514 +21008,0.00762733 +21060,0.00754526 +21112,0.00762359 +21164,0.00733096 +21216,0.00741113 +21268,0.00719453 +21320,0.00728496 +21372,0.00704298 +21424,0.0071051 +21476,0.00701565 +21528,0.00683342 +21580,0.00692296 +21632,0.00670367 +21684,0.0071565 +21736,0.00659187 +21788,0.00696778 +21840,0.00648231 +21892,0.00694456 +21944,0.00638404 +21996,0.00684 +22048,0.00640994 +22100,0.00667789 +22152,0.00631137 +22204,0.00662718 +22256,0.00611562 +22308,0.006549 +22360,0.00621487 +22412,0.00638262 +22464,0.0060569 +22516,0.00636264 +22568,0.00596671 +22620,0.00627662 +22672,0.00597455 +22724,0.0061291 +22776,0.00585428 +22828,0.00605253 +22880,0.00581817 +22932,0.00599747 +22984,0.00560587 +23036,0.00594554 +23088,0.00549316 +23140,0.00588248 +23192,0.00569538 +23244,0.00556942 +23296,0.00567859 +23348,0.00531855 +23400,0.00568702 +23452,0.00533393 +23504,0.00558019 +23556,0.00535553 +23608,0.00548474 +23660,0.00509286 +23712,0.00547784 +23764,0.00526139 +23816,0.00530896 +23868,0.00496169 +23920,0.00534444 +23972,0.00516831 +24024,0.00495738 +24076,0.00522645 +24128,0.0049286 +24180,0.00514965 +24232,0.00482471 +24284,0.00508561 +24336,0.00490874 +24388,0.00498009 +24440,0.00464893 +24492,0.00498203 +24544,0.00482981 +24596,0.00482766 +24648,0.00453751 +24700,0.00486649 +24752,0.00477044 +24804,0.00445873 +24856,0.00478487 +24908,0.00462377 +24960,0.00466004 +25012,0.00435778 +25064,0.00466402 +25116,0.00448343 +25168,0.00456215 +25220,0.00426032 +25272,0.00456828 +25324,0.00447763 +25376,0.00423876 +25428,0.00446041 +25480,0.00429308 +25532,0.00438646 +25584,0.00409803 +25636,0.00438221 +25688,0.00428179 +25740,0.00407568 +25792,0.00429317 +25844,0.00415814 +25896,0.00421077 +25948,0.00394915 +26000,0.00421237 +26052,0.00391449 +26104,0.00381233 +26156,0.0038691 +26208,0.00380271 +26260,0.00383443 +26312,0.00377922 +26364,0.00385273 +26416,0.00374681 +26468,0.00383362 +26520,0.00372544 +26572,0.00381535 +26624,0.00370404 +26676,0.00379756 +26728,0.00370202 +26780,0.00377259 +26832,0.00366696 +26884,0.00375828 +26936,0.00366421 +26988,0.00373877 +27040,0.00366667 +27092,0.00369408 +27144,0.00366635 +27196,0.00365643 +27248,0.00367554 +27300,0.00358912 +27352,0.00367607 +27404,0.00358469 +27456,0.00365922 +27508,0.00358519 +27560,0.00363614 +27612,0.00353519 +27664,0.00362562 +27716,0.00356925 +27768,0.00357564 +27820,0.00349987 +27872,0.00359637 +27924,0.00357163 +27976,0.00347847 +28028,0.0035685 +28080,0.00352624 +28132,0.00346788 +28184,0.00353815 +28236,0.0034854 +28288,0.00351186 +28340,0.00342466 +28392,0.00350703 +28444,0.00346769 +28496,0.00341167 +28548,0.00348039 +28600,0.0034113 +28652,0.00346256 +28704,0.00338041 +28756,0.00344861 +28808,0.00340637 +28860,0.00342194 +28912,0.00334083 +28964,0.00341663 +29016,0.00338417 +29068,0.00331296 +29120,0.00339792 +29172,0.00337824 +29224,0.00329242 +29276,0.00337429 +29328,0.00333754 +29380,0.00332333 +29432,0.00333846 +29484,0.00325795 +29536,0.00333523 +29588,0.00331725 +29640,0.00323479 +29692,0.0033122 +29744,0.00327758 +29796,0.00327291 +29848,0.00321866 +29900,0.00328085 +29952,0.00324335 +30004,0.00325149 +30056,0.00317794 +30108,0.00325525 +30160,0.00323802 +30212,0.00315758 +30264,0.00323482 +30316,0.00321753 +30368,0.00313563 +30420,0.00321268 +30472,0.00317979 +30524,0.00315924 +30576,0.00318344 +30628,0.00310234 +30680,0.00318009 +30732,0.00316309 +30784,0.00312524 +30836,0.00314639 +30888,0.0030719 +30940,0.00314385 +30992,0.00312799 +31044,0.00305013 +31096,0.00312355 +31148,0.00309239 +31200,0.00309442 +31252,0.00301476 +31304,0.00299874 +31356,0.00302117 +31408,0.00298661 +31460,0.00301603 +31512,0.00298513 +31564,0.00300852 +31616,0.00297884 +31668,0.00300133 +31720,0.00297871 +31772,0.0029838 +31824,0.00297836 +31876,0.00298745 +31928,0.00295588 +31980,0.00298389 +32032,0.00295355 +32084,0.00297803 +32136,0.00296008 +32188,0.00296012 +32240,0.00294683 +32292,0.00296471 +32344,0.00293614 +32396,0.00295927 +32448,0.00292929 +32500,0.00295377 +32552,0.00292896 +32604,0.00294669 +32656,0.0029119 +32708,0.0029432 +32760,0.00293651 +32812,0.00290418 +32864,0.00293378 +32916,0.00292063 +32968,0.00289959 +33020,0.00292432 +33072,0.00290948 +33124,0.00290958 +33176,0.00288288 +33228,0.00291348 +33280,0.00290707 +33332,0.00287497 +33384,0.00290448 +33436,0.00289158 +33488,0.00288298 +33540,0.00289231 +33592,0.00286113 +33644,0.00288981 +33696,0.00288365 +33748,0.00285242 +33800,0.00288066 +33852,0.00286832 +33904,0.00286018 +33956,0.00286659 +34008,0.00283774 +34060,0.00286693 +34112,0.0028609 +34164,0.00282981 +34216,0.00285851 +34268,0.00285253 +34320,0.00282091 +34372,0.00284965 +34424,0.00283755 +34476,0.00282952 +34528,0.00283587 +34580,0.00280655 +34632,0.00283675 +34684,0.00283077 +34736,0.00280416 +34788,0.00282628 +34840,0.0028102 +34892,0.00281882 +34944,0.00278847 +34996,0.00281655 +35048,0.00280451 +35100,0.00279937 +35152,0.00280191 +35204,0.00277459 +35256,0.00280275 +35308,0.00279712 +35360,0.00276655 +35412,0.00279489 +35464,0.00278926 +35516,0.00276897 +35568,0.00278425 +35620,0.00275814 +35672,0.00277998 +35724,0.00276907 +35776,0.00276134 +35828,0.00276967 +35880,0.00274079 +35932,0.00276708 +35984,0.00275384 +36036,0.00275676 +36088,0.00272903 +36140,0.00275741 +36192,0.00275137 +36244,0.00272155 +36296,0.00274882 +36348,0.00273736 +36400,0.00273821 +36452,0.00269894 +36504,0.00271131 +36556,0.00270387 +36608,0.0027023 +36660,0.00270157 +36712,0.00269435 +36764,0.00270404 +36816,0.00269168 +36868,0.00270141 +36920,0.00268886 +36972,0.00269878 +37024,0.0026861 +37076,0.00269608 +37128,0.00268623 +37180,0.00269328 +37232,0.00267865 +37284,0.00269178 +37336,0.00268924 +37388,0.00267508 +37440,0.00268775 +37492,0.0026824 +37544,0.00267883 +37596,0.0026816 +37648,0.00266871 +37700,0.00268156 +37752,0.00267906 +37804,0.00266514 +37856,0.0026778 +37908,0.00267241 +37960,0.00266878 +38012,0.00267278 +38064,0.00265899 +38116,0.00267153 +38168,0.00266907 +38220,0.00265511 +38272,0.00266763 +38324,0.00266235 +38376,0.00265885 +38428,0.00266164 +38480,0.00264868 +38532,0.0026616 +38584,0.00265917 +38636,0.00264509 +38688,0.00265793 +38740,0.0026554 +38792,0.00264389 +38844,0.00265319 +38896,0.00264656 +38948,0.00264516 +39000,0.00264515 +39052,0.00264377 +39104,0.00264028 +39156,0.00264514 +39208,0.0026317 +39260,0.00264377 +39312,0.00263838 +39364,0.00263492 +39416,0.0026375 +39468,0.0026255 +39520,0.00263752 +39572,0.00263207 +39624,0.00262091 +39676,0.00263426 +39728,0.00263153 +39780,0.0026176 +39832,0.00263024 +39884,0.0026278 +39936,0.00262148 +39988,0.00262012 diff --git a/Project2-Character-Recognition/data/loss_momentum.csv b/Project2-Character-Recognition/data/loss_momentum.csv new file mode 100644 index 0000000..8223e75 --- /dev/null +++ b/Project2-Character-Recognition/data/loss_momentum.csv @@ -0,0 +1,769 @@ +52,5.81504 +104,5.70477 +156,5.70436 +208,5.70397 +260,5.70359 +312,5.70324 +364,5.7029 +416,5.70256 +468,5.70223 +520,5.70191 +572,5.70157 +624,5.70125 +676,5.70091 +728,5.70058 +780,5.70023 +832,5.69991 +884,5.69956 +936,5.6992 +988,5.69883 +1040,5.69845 +1092,5.69807 +1144,5.69766 +1196,5.69724 +1248,5.6968 +1300,5.69635 +1352,5.69589 +1404,5.69543 +1456,5.69492 +1508,5.69442 +1560,5.69388 +1612,5.69332 +1664,5.69277 +1716,5.69216 +1768,5.69154 +1820,5.6909 +1872,5.69024 +1924,5.68956 +1976,5.68883 +2028,5.68809 +2080,5.68725 +2132,5.68645 +2184,5.68554 +2236,5.68458 +2288,5.68362 +2340,5.68259 +2392,5.68149 +2444,5.68039 +2496,5.6792 +2548,5.67793 +2600,5.67662 +2652,5.67519 +2704,5.67364 +2756,5.67206 +2808,5.67035 +2860,5.66853 +2912,5.66665 +2964,5.66462 +3016,5.66257 +3068,5.66021 +3120,5.65771 +3172,5.65485 +3224,5.65173 +3276,5.64826 +3328,5.64441 +3380,5.64009 +3432,5.63534 +3484,5.62955 +3536,5.62299 +3588,5.61503 +3640,5.60535 +3692,5.5933 +3744,5.57803 +3796,5.55774 +3848,5.52973 +3900,5.48952 +3952,5.42691 +4004,5.33528 +4056,5.22564 +4108,5.10161 +4160,4.99492 +4212,4.89576 +4264,4.79682 +4316,4.73358 +4368,4.57031 +4420,4.4319 +4472,4.3513 +4524,4.31288 +4576,4.15955 +4628,4.18255 +4680,4.03658 +4732,4.10808 +4784,4.25376 +4836,3.78975 +4888,3.63905 +4940,3.54471 +4992,3.92127 +5044,3.81174 +5096,3.54725 +5148,3.40943 +5200,3.41952 +5252,3.54972 +5304,2.87641 +5356,3.09939 +5408,3.19823 +5460,3.2683 +5512,3.22526 +5564,3.19863 +5616,2.74936 +5668,2.66588 +5720,2.59493 +5772,2.82306 +5824,3.22533 +5876,2.5796 +5928,2.71752 +5980,2.12073 +6032,3.07602 +6084,2.9268 +6136,2.6992 +6188,2.52856 +6240,2.44981 +6292,2.3992 +6344,1.89741 +6396,2.09112 +6448,2.66919 +6500,2.34962 +6552,2.50916 +6604,2.23343 +6656,2.42998 +6708,2.42864 +6760,2.11763 +6812,2.13328 +6864,2.9421 +6916,1.31672 +6968,1.19024 +7020,2.24628 +7072,2.07695 +7124,2.47282 +7176,2.53149 +7228,1.90423 +7280,2.17107 +7332,1.95256 +7384,1.98631 +7436,2.28102 +7488,2.57341 +7540,2.06258 +7592,1.42461 +7644,1.01055 +7696,1.02575 +7748,2.17102 +7800,1.4767 +7852,2.28634 +7904,2.21198 +7956,1.40918 +8008,1.07659 +8060,1.0944 +8112,2.84364 +8164,3.11206 +8216,3.09873 +8268,1.91301 +8320,2.27749 +8372,1.46711 +8424,2.07833 +8476,1.85961 +8528,1.20704 +8580,0.530041 +8632,0.344969 +8684,0.360411 +8736,0.861629 +8788,2.41824 +8840,1.40244 +8892,1.2783 +8944,2.12216 +8996,1.80332 +9048,1.62733 +9100,1.65242 +9152,2.38551 +9204,2.48624 +9256,2.42558 +9308,1.82568 +9360,1.75076 +9412,1.66337 +9464,1.16406 +9516,1.01822 +9568,1.45331 +9620,1.1033 +9672,1.45832 +9724,1.11282 +9776,0.709724 +9828,0.548445 +9880,0.740168 +9932,0.497389 +9984,2.29692 +10036,2.35365 +10088,2.01236 +10140,1.78433 +10192,1.0005 +10244,0.392268 +10296,0.655688 +10348,0.804228 +10400,0.72678 +10452,1.57395 +10504,2.93629 +10556,1.85098 +10608,1.87278 +10660,2.02923 +10712,1.7587 +10764,1.86235 +10816,1.49559 +10868,1.32496 +10920,1.13932 +10972,0.908054 +11024,0.398337 +11076,0.498315 +11128,0.60319 +11180,0.704604 +11232,1.14489 +11284,0.855069 +11336,1.14284 +11388,1.1225 +11440,1.77264 +11492,1.25866 +11544,1.41853 +11596,0.847364 +11648,0.798087 +11700,0.547089 +11752,0.416172 +11804,1.4302 +11856,1.7244 +11908,1.49331 +11960,1.63945 +12012,0.724856 +12064,0.268103 +12116,0.138313 +12168,0.112339 +12220,0.0962458 +12272,0.0933073 +12324,0.0844986 +12376,0.0844478 +12428,0.0823895 +12480,0.078784 +12532,0.0765746 +12584,0.0745846 +12636,0.0726746 +12688,0.0711936 +12740,0.0700027 +12792,0.0688081 +12844,0.06642 +12896,0.0662693 +12948,0.0645295 +13000,0.0637879 +13052,0.0636763 +13104,0.062383 +13156,0.0622327 +13208,0.0610898 +13260,0.0612923 +13312,0.0601455 +13364,0.0588115 +13416,0.0614291 +13468,0.058797 +13520,0.0590265 +13572,0.057963 +13624,0.0583987 +13676,0.0572691 +13728,0.0561217 +13780,0.058813 +13832,0.0564371 +13884,0.056345 +13936,0.0565492 +13988,0.0553602 +14040,0.0552355 +14092,0.0560857 +14144,0.0545812 +14196,0.0534546 +14248,0.0552845 +14300,0.0541267 +14352,0.0545372 +14404,0.0523402 +14456,0.0556045 +14508,0.0538918 +14560,0.0538762 +14612,0.0516743 +14664,0.0545806 +14716,0.0535358 +14768,0.0531995 +14820,0.0522486 +14872,0.0530439 +14924,0.0527189 +14976,0.0521924 +15028,0.0504525 +15080,0.053548 +15132,0.0527892 +15184,0.0521007 +15236,0.049876 +15288,0.0527853 +15340,0.0519191 +15392,0.0516935 +15444,0.0493747 +15496,0.0530329 +15548,0.0518038 +15600,0.0510501 +15652,0.0488391 +15704,0.0525698 +15756,0.051568 +15808,0.050579 +15860,0.0486429 +15912,0.052009 +15964,0.0512295 +16016,0.0501165 +16068,0.0473225 +16120,0.0523411 +16172,0.0484943 +16224,0.0490237 +16276,0.0492281 +16328,0.0493177 +16380,0.0493395 +16432,0.0493136 +16484,0.0492548 +16536,0.049174 +16588,0.0491206 +16640,0.0490173 +16692,0.0489717 +16744,0.0488963 +16796,0.0488066 +16848,0.0487656 +16900,0.0486924 +16952,0.0482355 +17004,0.0489019 +17056,0.0486105 +17108,0.0484833 +17160,0.0483789 +17212,0.0483076 +17264,0.0482353 +17316,0.0481659 +17368,0.0481178 +17420,0.0480414 +17472,0.0479733 +17524,0.0479098 +17576,0.0478231 +17628,0.0478122 +17680,0.0465444 +17732,0.0486556 +17784,0.0478361 +17836,0.0476173 +17888,0.047522 +17940,0.0472808 +17992,0.0479212 +18044,0.0475813 +18096,0.0501857 +18148,0.0444731 +18200,0.0467899 +18252,0.0392334 +18304,0.0579958 +18356,0.0513862 +18408,0.0456687 +18460,0.0462496 +18512,0.0412911 +18564,0.0486272 +18616,0.0553607 +18668,0.050453 +18720,0.0417802 +18772,0.0403723 +18824,0.0491776 +18876,0.0495229 +18928,0.0493709 +18980,0.0527036 +19032,0.0450867 +19084,0.0425504 +19136,0.0461754 +19188,0.0362403 +19240,0.0516846 +19292,0.0660353 +19344,0.0464727 +19396,0.0448967 +19448,0.0511895 +19500,0.0448301 +19552,0.0434736 +19604,0.0423036 +19656,0.0416905 +19708,0.0413369 +19760,0.042025 +19812,0.0418705 +19864,0.0476111 +19916,0.0466522 +19968,0.0427039 +20020,0.0403269 +20072,0.0412658 +20124,0.0464446 +20176,0.0406452 +20228,0.0466543 +20280,0.0452718 +20332,0.0497205 +20384,0.0378876 +20436,0.0396385 +20488,0.0479973 +20540,0.0442868 +20592,0.0491855 +20644,0.037531 +20696,0.0376478 +20748,0.0515434 +20800,0.0488977 +20852,0.0462985 +20904,0.051954 +20956,0.0221143 +21008,0.0144876 +21060,0.0731594 +21112,0.0770013 +21164,0.0256721 +21216,0.0237905 +21268,0.0197783 +21320,0.0141167 +21372,0.0104435 +21424,0.00866538 +21476,0.00776886 +21528,0.00627103 +21580,0.00491068 +21632,0.00445395 +21684,0.00392171 +21736,0.00344258 +21788,0.00308653 +21840,0.00277188 +21892,0.00245232 +21944,0.00232005 +21996,0.00211597 +22048,0.00194364 +22100,0.00182115 +22152,0.00169476 +22204,0.00158944 +22256,0.00148818 +22308,0.00140168 +22360,0.00131858 +22412,0.0012509 +22464,0.00118729 +22516,0.00113097 +22568,0.00107817 +22620,0.0010297 +22672,0.000984514 +22724,0.000944564 +22776,0.000906957 +22828,0.00087301 +22880,0.000840725 +22932,0.000810486 +22984,0.000783494 +23036,0.000756481 +23088,0.000733607 +23140,0.000711413 +23192,0.000690665 +23244,0.000670674 +23296,0.000652514 +23348,0.000634915 +23400,0.000618045 +23452,0.000602569 +23504,0.000587268 +23556,0.000572904 +23608,0.000559277 +23660,0.000546086 +23712,0.000533907 +23764,0.000523885 +23816,0.000510441 +23868,0.000501388 +23920,0.000489166 +23972,0.000481742 +24024,0.000469589 +24076,0.000462829 +24128,0.00045426 +24180,0.000443434 +24232,0.000438438 +24284,0.000427729 +24336,0.000422977 +24388,0.000414537 +24440,0.000408425 +24492,0.000399314 +24544,0.000394948 +24596,0.000386838 +24648,0.000380982 +24700,0.000376393 +24752,0.000369686 +24804,0.000362733 +24856,0.000364098 +24908,0.000352179 +24960,0.000347471 +25012,0.000341708 +25064,0.000337617 +25116,0.000332626 +25168,0.00032682 +25220,0.000323173 +25272,0.00032032 +25324,0.000313009 +25376,0.000310409 +25428,0.000305061 +25480,0.00030459 +25532,0.000297248 +25584,0.000293026 +25636,0.000293367 +25688,0.000286157 +25740,0.000282262 +25792,0.000278828 +25844,0.000278943 +25896,0.000272516 +25948,0.000268919 +26000,0.000268568 +26052,0.000262989 +26104,0.000259766 +26156,0.00025739 +26208,0.000256725 +26260,0.000251532 +26312,0.00024932 +26364,0.000246017 +26416,0.000246699 +26468,0.000241464 +26520,0.000238781 +26572,0.00023873 +26624,0.00023426 +26676,0.000233576 +26728,0.000229708 +26780,0.000228841 +26832,0.000225406 +26884,0.000225561 +26936,0.000221411 +26988,0.00021921 +27040,0.000219187 +27092,0.000215451 +27144,0.000213647 +27196,0.00021331 +27248,0.000209845 +27300,0.000209998 +27352,0.00020647 +27404,0.000204701 +27456,0.000204771 +27508,0.000201239 +27560,0.000199661 +27612,0.000199895 +27664,0.000196375 +27716,0.000196079 +27768,0.000193249 +27820,0.000192468 +27872,0.000190052 +27924,0.000190134 +27976,0.000187199 +28028,0.000185811 +28080,0.00018553 +28132,0.000182965 +28184,0.000182889 +28236,0.000180219 +28288,0.000178937 +28340,0.000179002 +28392,0.000176297 +28444,0.000176008 +28496,0.000173803 +28548,0.000172553 +28600,0.00017226 +28652,0.000169984 +28704,0.000170032 +28756,0.000167801 +28808,0.000166602 +28860,0.000166564 +28912,0.000164254 +28964,0.00016376 +29016,0.000162003 +29068,0.000161887 +29120,0.000159823 +29172,0.00016002 +29224,0.000157755 +29276,0.000157822 +29328,0.000155828 +29380,0.000155885 +29432,0.000153827 +29484,0.000153766 +29536,0.000151998 +29588,0.000151864 +29640,0.000150011 +29692,0.000150083 +29744,0.000148258 +29796,0.000148192 +29848,0.000146551 +29900,0.000146539 +29952,0.000144751 +30004,0.000144689 +30056,0.000143127 +30108,0.000143118 +30160,0.000141427 +30212,0.000141338 +30264,0.000139856 +30316,0.000139745 +30368,0.000138187 +30420,0.000138252 +30472,0.00013671 +30524,0.00013661 +30576,0.000135168 +30628,0.000135255 +30680,0.00013369 +30732,0.00013367 +30784,0.000132311 +30836,0.000132319 +30888,0.000130856 +30940,0.000130808 +30992,0.000129522 +31044,0.000129427 +31096,0.000128075 +31148,0.000128227 +31200,0.000126861 +31252,0.000126733 +31304,0.000125466 +31356,0.000125591 +31408,0.000124209 +31460,0.000124203 +31512,0.000123024 +31564,0.00012304 +31616,0.000121755 +31668,0.000121724 +31720,0.00012086 +31772,0.000119947 +31824,0.000120068 +31876,0.000118788 +31928,0.000118881 +31980,0.000117727 +32032,0.000117619 +32084,0.000116599 +32136,0.000116519 +32188,0.000115435 +32240,0.00011553 +32292,0.000114367 +32344,0.000114368 +32396,0.000113591 +32448,0.000113062 +32500,0.000112265 +32552,0.000112376 +32604,0.00011131 +32656,0.00011124 +32708,0.000110246 +32760,0.000110343 +32812,0.000109275 +32864,0.000109346 +32916,0.000108307 +32968,0.00010832 +33020,0.000107721 +33072,0.000106919 +33124,0.000106903 +33176,0.000106028 +33228,0.000105906 +33280,0.000105298 +33332,0.000104947 +33384,0.000104202 +33436,0.000104215 +33488,0.000103331 +33540,0.000103299 +33592,0.000102504 +33644,0.000102384 +33696,0.000101606 +33748,0.000101651 +33800,0.00010077 +33852,0.000100823 +33904,9.99497e-05 +33956,9.99501e-05 +34008,9.93518e-05 +34060,9.90474e-05 +34112,9.83708e-05 +34164,9.83874e-05 +34216,9.75948e-05 +34268,9.7567e-05 +34320,9.68508e-05 +34372,9.67914e-05 +34424,9.60915e-05 +34476,9.60508e-05 +34528,9.53088e-05 +34580,9.53467e-05 +34632,9.45787e-05 +34684,9.45768e-05 +34736,9.38846e-05 +34788,9.38416e-05 +34840,9.3234e-05 +34892,9.31102e-05 +34944,9.24658e-05 +34996,9.24633e-05 +35048,9.17697e-05 +35100,9.17331e-05 +35152,9.11052e-05 +35204,9.10753e-05 +35256,9.03982e-05 +35308,9.04408e-05 +35360,8.97821e-05 +35412,8.97013e-05 +35464,8.93348e-05 +35516,8.87841e-05 +35568,8.87954e-05 +35620,8.81425e-05 +35672,8.80963e-05 +35724,8.76683e-05 +35776,8.74255e-05 +35828,8.68957e-05 +35880,8.69176e-05 +35932,8.62838e-05 +35984,8.63026e-05 +36036,8.57137e-05 +36088,8.56537e-05 +36140,8.5173e-05 +36192,8.5017e-05 +36244,8.45066e-05 +36296,8.4516e-05 +36348,8.39294e-05 +36400,8.38781e-05 +36452,8.35577e-05 +36504,8.30772e-05 +36556,8.30876e-05 +36608,8.25472e-05 +36660,8.24904e-05 +36712,8.19677e-05 +36764,8.19706e-05 +36816,8.14472e-05 +36868,8.13704e-05 +36920,8.10127e-05 +36972,8.06085e-05 +37024,8.06389e-05 +37076,8.01347e-05 +37128,8.0036e-05 +37180,7.96311e-05 +37232,7.95427e-05 +37284,7.90645e-05 +37336,7.90592e-05 +37388,7.85778e-05 +37440,7.85004e-05 +37492,7.82206e-05 +37544,7.78143e-05 +37596,7.78015e-05 +37648,7.73183e-05 +37700,7.729e-05 +37752,7.69452e-05 +37804,7.65859e-05 +37856,7.65931e-05 +37908,7.61086e-05 +37960,7.60861e-05 +38012,7.58051e-05 +38064,7.54114e-05 +38116,7.54101e-05 +38168,7.49434e-05 +38220,7.49494e-05 +38272,7.45948e-05 +38324,7.42643e-05 +38376,7.42648e-05 +38428,7.38537e-05 +38480,7.37647e-05 +38532,7.33662e-05 +38584,7.33743e-05 +38636,7.30367e-05 +38688,7.28696e-05 +38740,7.25145e-05 +38792,7.24766e-05 +38844,7.20726e-05 +38896,7.20563e-05 +38948,7.18002e-05 +39000,7.14541e-05 +39052,7.14493e-05 +39104,7.10403e-05 +39156,7.10438e-05 +39208,7.07756e-05 +39260,7.04508e-05 +39312,7.03968e-05 +39364,7.01827e-05 +39416,6.98495e-05 +39468,6.98519e-05 +39520,6.95484e-05 +39572,6.92604e-05 +39624,6.92734e-05 +39676,6.90103e-05 +39728,6.86978e-05 +39780,6.86903e-05 +39832,6.83132e-05 +39884,6.83168e-05 +39936,6.80621e-05 +39988,6.77614e-05 diff --git a/Project2-Character-Recognition/data/loss_momentum_decay.csv b/Project2-Character-Recognition/data/loss_momentum_decay.csv new file mode 100644 index 0000000..bf7d627 --- /dev/null +++ b/Project2-Character-Recognition/data/loss_momentum_decay.csv @@ -0,0 +1,770 @@ +Epoch,Loss with Momentum and Decay,Loss with Momentum,Loss with Decay,Regular Loss +52,5.81449,5.81504,5.81503,5.81318 +104,5.70489,5.70477,5.70561,5.70474 +156,5.70439,5.70436,5.70531,5.70436 +208,5.70391,5.70397,5.70504,5.70399 +260,5.70346,5.70359,5.70478,5.70364 +312,5.70303,5.70324,5.70452,5.7033 +364,5.70262,5.7029,5.70428,5.70297 +416,5.70225,5.70256,5.70404,5.70264 +468,5.70187,5.70223,5.70381,5.70231 +520,5.70151,5.70191,5.7036,5.702 +572,5.70115,5.70157,5.70337,5.7017 +624,5.70079,5.70125,5.70315,5.7014 +676,5.70044,5.70091,5.70293,5.7011 +728,5.70007,5.70058,5.70271,5.7008 +780,5.6997,5.70023,5.70249,5.7005 +832,5.69933,5.69991,5.70227,5.7002 +884,5.69895,5.69956,5.70206,5.6999 +936,5.69858,5.6992,5.70184,5.69961 +988,5.69819,5.69883,5.70163,5.69932 +1040,5.69778,5.69845,5.70141,5.699 +1092,5.69736,5.69807,5.70119,5.69869 +1144,5.69693,5.69766,5.70097,5.69838 +1196,5.69652,5.69724,5.70074,5.69806 +1248,5.69607,5.6968,5.70051,5.69774 +1300,5.69561,5.69635,5.70028,5.69742 +1352,5.69516,5.69589,5.70004,5.69709 +1404,5.69466,5.69543,5.69978,5.69676 +1456,5.69413,5.69492,5.69953,5.69642 +1508,5.69361,5.69442,5.69926,5.69608 +1560,5.69305,5.69388,5.69899,5.69571 +1612,5.69248,5.69332,5.6987,5.6953 +1664,5.6919,5.69277,5.69841,5.69492 +1716,5.69129,5.69216,5.69811,5.69451 +1768,5.69063,5.69154,5.6978,5.69409 +1820,5.68995,5.6909,5.69748,5.69364 +1872,5.68922,5.69024,5.69715,5.69319 +1924,5.68846,5.68956,5.69679,5.69272 +1976,5.68767,5.68883,5.69643,5.69223 +2028,5.68683,5.68809,5.69604,5.69172 +2080,5.68601,5.68725,5.69564,5.69118 +2132,5.6851,5.68645,5.69524,5.69064 +2184,5.68413,5.68554,5.69483,5.69005 +2236,5.68312,5.68458,5.6944,5.68946 +2288,5.68201,5.68362,5.69398,5.68882 +2340,5.68081,5.68259,5.69353,5.68818 +2392,5.67956,5.68149,5.69308,5.68747 +2444,5.67818,5.68039,5.69261,5.68677 +2496,5.67673,5.6792,5.69214,5.68605 +2548,5.67513,5.67793,5.69163,5.68525 +2600,5.67346,5.67662,5.69114,5.68446 +2652,5.67159,5.67519,5.69058,5.68361 +2704,5.66959,5.67364,5.69002,5.68267 +2756,5.66731,5.67206,5.6894,5.68178 +2808,5.6648,5.67035,5.6888,5.68082 +2860,5.66204,5.66853,5.68811,5.67977 +2912,5.65888,5.66665,5.68743,5.67869 +2964,5.65541,5.66462,5.68673,5.67754 +3016,5.65118,5.66257,5.68594,5.67635 +3068,5.64641,5.66021,5.68515,5.6751 +3120,5.64094,5.65771,5.68428,5.67369 +3172,5.63467,5.65485,5.68333,5.67222 +3224,5.62702,5.65173,5.68238,5.67056 +3276,5.61765,5.64826,5.68132,5.6687 +3328,5.6055,5.64441,5.68025,5.66675 +3380,5.59007,5.64009,5.67907,5.6646 +3432,5.56837,5.63534,5.67786,5.66234 +3484,5.5365,5.62955,5.67654,5.65978 +3536,5.49137,5.62299,5.67512,5.65697 +3588,5.42928,5.61503,5.67356,5.65379 +3640,5.36517,5.60535,5.67192,5.65006 +3692,5.3095,5.5933,5.67017,5.64603 +3744,5.25848,5.57803,5.66818,5.64133 +3796,5.20773,5.55774,5.66601,5.6358 +3848,5.13995,5.52973,5.66366,5.62891 +3900,5.06505,5.48952,5.66101,5.62056 +3952,4.99526,5.42691,5.65806,5.6094 +4004,4.895,5.33528,5.65453,5.59525 +4056,4.80648,5.22564,5.65064,5.57441 +4108,4.72308,5.10161,5.6462,5.54687 +4160,4.6798,4.99492,5.64118,5.50625 +4212,4.57084,4.89576,5.63549,5.45711 +4264,4.46776,4.79682,5.629,5.41009 +4316,4.33033,4.73358,5.62128,5.37493 +4368,4.2118,4.57031,5.61196,5.34578 +4420,4.23235,4.4319,5.60043,5.31555 +4472,4.08919,4.3513,5.58568,5.28777 +4524,3.88766,4.31288,5.5656,5.24926 +4576,3.69427,4.15955,5.53795,5.20426 +4628,3.69486,4.18255,5.49819,5.14062 +4680,3.50186,4.03658,5.43854,5.04658 +4732,3.74096,4.10808,5.34868,4.92062 +4784,3.68544,4.25376,5.23403,4.7601 +4836,3.37919,3.78975,5.10302,4.60024 +4888,3.3753,3.63905,4.96787,4.48751 +4940,3.42063,3.54471,4.86889,4.35537 +4992,3.37216,3.92127,4.74083,4.24124 +5044,3.07344,3.81174,4.73096,4.26941 +5096,2.89555,3.54725,4.65639,4.03656 +5148,2.88529,3.40943,4.55064,4.04651 +5200,2.6694,3.41952,4.49588,3.87517 +5252,2.22454,3.54972,4.1237,3.919 +5304,1.69326,2.87641,3.98268,3.87189 +5356,1.43048,3.09939,3.92512,3.70737 +5408,1.14661,3.19823,3.89307,3.55329 +5460,0.990041,3.2683,3.85402,3.56386 +5512,0.748485,3.22526,3.88298,3.33216 +5564,0.660806,3.19863,3.90732,3.28747 +5616,0.569831,2.74936,3.75032,3.37892 +5668,1.06795,2.66588,3.84805,3.24579 +5720,1.17538,2.59493,3.63796,3.15433 +5772,0.898025,2.82306,3.66276,3.37885 +5824,1.66316,3.22533,3.76,3.30496 +5876,2.45128,2.5796,3.61224,3.27349 +5928,1.14516,2.71752,3.63487,3.47396 +5980,1.58094,2.12073,3.73299,3.02267 +6032,1.57009,3.07602,3.57022,3.1443 +6084,1.19727,2.9268,3.72304,3.17736 +6136,2.0741,2.6992,3.39334,2.97932 +6188,1.38515,2.52856,3.36732,2.96174 +6240,0.883766,2.44981,3.47164,3.28425 +6292,0.948695,2.3992,3.13141,2.72684 +6344,1.17861,1.89741,3.48739,2.69994 +6396,0.98241,2.09112,3.0229,2.56952 +6448,0.508664,2.66919,3.19488,2.85154 +6500,0.382925,2.34962,3.10675,2.89003 +6552,0.577715,2.50916,3.10424,2.76621 +6604,0.321494,2.23343,3.09666,2.76104 +6656,0.420545,2.42998,2.98188,2.82382 +6708,0.249003,2.42864,2.95024,2.80326 +6760,0.227597,2.11763,2.62165,2.59951 +6812,0.130632,2.13328,2.83064,2.76006 +6864,0.117039,2.9421,2.83791,2.61777 +6916,0.107151,1.31672,2.65284,3.16445 +6968,0.102638,1.19024,2.56908,3.16542 +7020,0.0987592,2.24628,2.3298,2.69127 +7072,0.0955708,2.07695,2.21608,2.3965 +7124,0.0926925,2.47282,2.45904,2.577 +7176,0.0901642,2.53149,2.64804,2.98165 +7228,0.0879892,1.90423,2.06519,2.41024 +7280,0.0860432,2.17107,2.04318,3.06339 +7332,0.0843241,1.95256,2.28012,2.67334 +7384,0.082741,1.98631,1.75845,2.63678 +7436,0.0813178,2.28102,1.69075,2.91162 +7488,0.0799824,2.57341,2.49648,2.77264 +7540,0.0787356,2.06258,2.43569,2.14172 +7592,0.0775872,1.42461,1.86056,2.61434 +7644,0.0762402,1.01055,1.64821,2.11892 +7696,0.0755984,1.02575,2.1041,2.25258 +7748,0.0744338,2.17102,2.47454,2.77477 +7800,0.073856,1.4767,1.20703,2.11448 +7852,0.0727467,2.28634,1.09518,1.88279 +7904,0.0722667,2.21198,2.00647,2.51527 +7956,0.0712773,1.40918,2.17175,1.73514 +8008,0.0705659,1.07659,1.40308,2.47738 +8060,0.0703097,1.0944,1.78743,2.38857 +8112,0.0693824,2.84364,1.63821,1.95577 +8164,0.0689938,3.11206,1.41424,2.4442 +8216,0.0680711,3.09873,2.00964,2.16693 +8268,0.0676148,1.91301,1.73174,2.84428 +8320,0.0674497,2.27749,2.20408,2.79023 +8372,0.0665667,1.46711,1.5646,1.79344 +8424,0.0663995,2.07833,1.1481,2.03729 +8476,0.0656245,1.85961,0.867676,1.90358 +8528,0.0652392,1.20704,0.908901,2.27352 +8580,0.0649749,0.530041,0.639441,1.7132 +8632,0.0643265,0.344969,0.854225,1.47065 +8684,0.0642539,0.360411,0.976773,1.98824 +8736,0.0635765,0.861629,0.829225,2.61995 +8788,0.0634679,2.41824,0.844691,2.5576 +8840,0.0625186,1.40244,0.406951,2.68195 +8892,0.0630355,1.2783,0.287467,1.51566 +8944,0.0621792,2.12216,0.37966,1.55995 +8996,0.0617391,1.80332,0.28227,1.4195 +9048,0.0618032,1.62733,0.27846,2.0214 +9100,0.0608482,1.65242,1.38673,1.57099 +9152,0.0613049,2.38551,3.76795,1.17071 +9204,0.060981,2.48624,1.32867,2.31332 +9256,0.0607142,2.42558,1.17095,2.45797 +9308,0.0601476,1.82568,0.796709,1.88485 +9360,0.0591473,1.75076,0.453554,2.06791 +9412,0.0604402,1.66337,1.49511,2.29923 +9464,0.0594228,1.16406,1.97039,1.53101 +9516,0.0589995,1.01822,0.70141,1.37463 +9568,0.0591796,1.45331,0.371712,2.20335 +9620,0.0582746,1.1033,0.201325,1.88538 +9672,0.058786,1.45832,0.172552,1.63146 +9724,0.0585243,1.11282,0.155543,2.21195 +9776,0.0583653,0.709724,0.137989,1.45146 +9828,0.0577951,0.548445,0.127303,2.6377 +9880,0.0576067,0.740168,0.122209,3.12907 +9932,0.0572564,0.497389,0.115224,1.78754 +9984,0.0574471,2.29692,0.110292,1.24212 +10036,0.0569051,2.35365,0.105989,2.02015 +10088,0.0571503,2.01236,0.102297,1.66874 +10140,0.0561707,1.78433,0.0998444,1.41272 +10192,0.0571072,1.0005,0.0966752,1.2403 +10244,0.0562728,0.392268,0.0941992,1.51742 +10296,0.0565287,0.655688,0.0916265,1.25603 +10348,0.0556462,0.804228,0.0907421,1.09797 +10400,0.0557601,0.72678,0.0925336,0.909893 +10452,0.0468537,1.57395,0.0682381,1.18616 +10504,0.0453591,2.93629,0.064321,1.27373 +10556,0.0449931,1.85098,0.0630073,1.48445 +10608,0.0447792,1.87278,0.0620766,0.927745 +10660,0.044574,2.02923,0.0618217,0.780889 +10712,0.0446364,1.7587,0.0615277,0.481828 +10764,0.0444953,1.86235,0.0613648,0.411917 +10816,0.0447738,1.49559,0.0611707,0.331052 +10868,0.0444332,1.32496,0.0610565,0.306255 +10920,0.0447542,1.13932,0.0608805,0.23639 +10972,0.0448616,0.908054,0.060777,0.221628 +11024,0.0448649,0.398337,0.060597,0.269634 +11076,0.0449233,0.498315,0.0607043,0.173882 +11128,0.0449951,0.60319,0.0592381,1.85221 +11180,0.0450471,0.704604,0.0606775,4.08948 +11232,0.0451245,1.14489,0.0605616,2.63546 +11284,0.0451836,0.855069,0.0599916,1.55613 +11336,0.0452374,1.14284,0.0602749,1.11376 +11388,0.0452914,1.1225,0.0600289,1.35092 +11440,0.0453365,1.77264,0.0599038,0.733863 +11492,0.0453786,1.25866,0.0597253,0.567165 +11544,0.0454149,1.41853,0.0596581,0.679816 +11596,0.0454469,0.847364,0.0637706,1.62685 +11648,0.0454739,0.798087,0.0618953,2.784 +11700,0.0454954,0.547089,0.0614029,3.51328 +11752,0.0455153,0.416172,0.0611133,1.56082 +11804,0.045527,1.4302,0.0608159,0.814694 +11856,0.0455339,1.7244,0.0606126,0.430751 +11908,0.0455358,1.49331,0.0603431,0.700429 +11960,0.0455372,1.63945,0.0601645,0.654819 +12012,0.0455304,0.724856,0.0598904,0.713091 +12064,0.0455225,0.268103,0.0598609,1.10197 +12116,0.0455087,0.138313,0.0596024,1.362 +12168,0.0455034,0.112339,0.0594371,3.04368 +12220,0.0454727,0.0962458,0.0592093,1.95214 +12272,0.0452968,0.0933073,0.0590785,2.12109 +12324,0.0454752,0.0844986,0.0588707,2.31147 +12376,0.0454167,0.0844478,0.0586628,1.01389 +12428,0.0453883,0.0823895,0.0586157,1.41644 +12480,0.0453532,0.078784,0.0584244,1.41026 +12532,0.0453027,0.0765746,0.0583032,0.734747 +12584,0.045274,0.0745846,0.0581097,1.58212 +12636,0.0452423,0.0726746,0.0579726,2.41051 +12688,0.0451956,0.0711936,0.0577839,2.00349 +12740,0.0451373,0.0700027,0.0576802,1.75158 +12792,0.0451015,0.0688081,0.0574403,1.80661 +12844,0.0450523,0.06642,0.0574635,2.57271 +12896,0.0449918,0.0662693,0.0573032,2.25891 +12948,0.0449525,0.0645295,0.0571213,2.51877 +13000,0.0448961,0.0637879,0.0570259,1.93047 +13052,0.0447878,0.0636763,0.056857,1.00938 +13104,0.0447974,0.062383,0.0567256,0.901311 +13156,0.0447351,0.0622327,0.0565995,1.56035 +13208,0.0444668,0.0610898,0.0563742,1.21297 +13260,0.0436988,0.0612923,0.0564567,0.645401 +13312,0.0447828,0.0601455,0.0563026,0.337375 +13364,0.0445835,0.0588115,0.0561359,0.236913 +13416,0.0444972,0.0614291,0.0560092,0.207049 +13468,0.0444187,0.058797,0.0558967,0.184969 +13520,0.044441,0.0590265,0.0557663,0.166582 +13572,0.0443231,0.057963,0.055662,0.145047 +13624,0.0441957,0.0583987,0.0554405,0.133208 +13676,0.0440579,0.0572691,0.0555263,0.120802 +13728,0.0439464,0.0561217,0.055384,0.111328 +13780,0.0438142,0.058813,0.0552224,0.102488 +13832,0.043908,0.0564371,0.0550977,0.0986898 +13884,0.0437912,0.056345,0.0550096,0.0938299 +13936,0.0437052,0.0565492,0.0548897,0.0878638 +13988,0.0431878,0.0553602,0.054775,0.0843939 +14040,0.0435418,0.0552355,0.0546202,0.080652 +14092,0.0434538,0.0560857,0.0544693,0.078488 +14144,0.0433436,0.0545812,0.0544639,0.0763126 +14196,0.0433005,0.0534546,0.054427,0.0738277 +14248,0.0431847,0.0552845,0.0543095,0.0721399 +14300,0.0430838,0.0541267,0.0541967,0.0712341 +14352,0.0429735,0.0545372,0.0540414,0.0698303 +14404,0.0428601,0.0523402,0.0539406,0.0683492 +14456,0.0427606,0.0556045,0.0537947,0.0669474 +14508,0.0426417,0.0538918,0.0537418,0.0666939 +14560,0.0425215,0.0538762,0.0535438,0.0651015 +14612,0.0424013,0.0516743,0.053636,0.0648859 +14664,0.0404151,0.0545806,0.0534799,0.0636771 +14716,0.0417661,0.0535358,0.0533666,0.0633885 +14768,0.0424652,0.0531995,0.0532405,0.0626589 +14820,0.042408,0.0522486,0.0531247,0.0612721 +14872,0.0421981,0.0530439,0.0529921,0.0618974 +14924,0.0419986,0.0527189,0.0529378,0.0604006 +14976,0.0416475,0.0521924,0.0528371,0.0612417 +15028,0.0415582,0.0504525,0.0527405,0.0592111 +15080,0.0414565,0.053548,0.0525046,0.0592279 +15132,0.0412766,0.0527892,0.0523962,0.0595426 +15184,0.0411053,0.0521007,0.0525449,0.0579659 +15236,0.0408641,0.049876,0.0524441,0.0580594 +15288,0.040761,0.0527853,0.052341,0.058409 +15340,0.0381637,0.0519191,0.0521579,0.0568604 +15392,0.0390911,0.0516935,0.0521733,0.0569755 +15444,0.0415215,0.0493747,0.052039,0.0573651 +15496,0.0418788,0.0530329,0.0519311,0.0561163 +15548,0.0413236,0.0518038,0.0517877,0.0567107 +15600,0.0405072,0.0510501,0.0510322,0.0554266 +15652,0.0276802,0.0488391,0.0409862,0.0554083 +15704,0.0179345,0.0525698,0.0370949,0.0559599 +15756,0.0171944,0.051568,0.03607,0.054861 +15808,0.0166462,0.050579,0.0361906,0.0552589 +15860,0.0164164,0.0486429,0.0357072,0.0544145 +15912,0.0162918,0.052009,0.0367385,0.0545344 +15964,0.0152568,0.0512295,0.0348906,0.0538135 +16016,0.0154799,0.0501165,0.036379,0.054008 +16068,0.0146591,0.0473225,0.035891,0.0541935 +16120,0.0146698,0.0523411,0.0340713,0.0532081 +16172,0.0136924,0.0484943,0.0355754,0.054762 +16224,0.0140192,0.0490237,0.0354075,0.0527245 +16276,0.0132185,0.0492281,0.0352691,0.0529899 +16328,0.0134374,0.0493177,0.0351381,0.0538252 +16380,0.0126601,0.0493395,0.0350101,0.0522729 +16432,0.0128275,0.0493136,0.0349677,0.0526357 +16484,0.0122336,0.0492548,0.0327176,0.0533852 +16536,0.0122197,0.049174,0.0352138,0.0518239 +16588,0.0115069,0.0491206,0.0345325,0.0522538 +16640,0.0118057,0.0490173,0.034288,0.0530163 +16692,0.0110593,0.0489717,0.0340763,0.0514431 +16744,0.0112665,0.0488963,0.0338831,0.0524721 +16796,0.0109876,0.0488066,0.033695,0.0514093 +16848,0.0101274,0.0487656,0.0336483,0.0514639 +16900,0.0104882,0.0486924,0.0335247,0.0514111 +16952,0.0102247,0.0482355,0.033388,0.0513219 +17004,0.00980727,0.0489019,0.0332407,0.0512236 +17056,0.00979562,0.0486105,0.0311052,0.0511465 +17108,0.00932125,0.0484833,0.0329044,0.0509282 +17160,0.00935871,0.0483789,0.0328562,0.0509214 +17212,0.0088342,0.0483076,0.0327752,0.0507419 +17264,0.00894148,0.0482353,0.0326008,0.0507768 +17316,0.00859996,0.0481659,0.0325187,0.0505094 +17368,0.00858436,0.0481178,0.0323396,0.0504976 +17420,0.00820912,0.0480414,0.0322546,0.0504535 +17472,0.00821892,0.0479733,0.0320694,0.0502589 +17524,0.00767713,0.0479098,0.0288368,0.0502646 +17576,0.00789914,0.0478231,0.0322406,0.0501151 +17628,0.00751262,0.0478122,0.0317244,0.0500923 +17680,0.00756577,0.0465444,0.0316306,0.0499655 +17732,0.00743716,0.0486556,0.0314822,0.0499426 +17784,0.00717785,0.0478361,0.0312721,0.0497849 +17836,0.00715149,0.0476173,0.0311657,0.0501333 +17888,0.00688812,0.047522,0.0310105,0.0494205 +17940,0.00687397,0.0472808,0.0307912,0.0503177 +17992,0.0064876,0.0479212,0.0306682,0.0498022 +18044,0.00669544,0.0475813,0.0305015,0.0492579 +18096,0.00650908,0.0501857,0.0302658,0.0495842 +18148,0.00624845,0.0444731,0.0301255,0.0500073 +18200,0.00626693,0.0467899,0.0299406,0.0490357 +18252,0.00623075,0.0392334,0.0296855,0.0494171 +18304,0.00606512,0.0579958,0.0295264,0.0498909 +18356,0.00575581,0.0513862,0.0293354,0.0488414 +18408,0.00591417,0.0456687,0.0290597,0.0488154 +18460,0.00580705,0.0462496,0.0288775,0.0492989 +18512,0.00559576,0.0412911,0.0286689,0.049665 +18564,0.00561487,0.0486272,0.0283653,0.048751 +18616,0.00551977,0.0553607,0.0243114,0.048955 +18668,0.005403,0.050453,0.0213353,0.0493409 +18720,0.00515183,0.0417802,0.0252885,0.0483588 +18772,0.00526848,0.0403723,0.0276883,0.0484576 +18824,0.00518161,0.0491776,0.0276232,0.048473 +18876,0.00492036,0.0495229,0.0272796,0.0484592 +18928,0.00502895,0.0493709,0.0269934,0.0484151 +18980,0.00494882,0.0527036,0.026707,0.0484135 +19032,0.00484868,0.0450867,0.0263015,0.0483521 +19084,0.00470029,0.0425504,0.0259739,0.0483356 +19136,0.00477339,0.0461754,0.0256564,0.0482339 +19188,0.00466899,0.0362403,0.0252139,0.0482615 +19240,0.00447867,0.0516846,0.0247173,0.0481493 +19292,0.00448834,0.0660353,0.0243722,0.0481775 +19344,0.004521,0.0464727,0.0240533,0.0480815 +19396,0.00446583,0.0448967,0.0236036,0.048049 +19448,0.00440666,0.0511895,0.0231792,0.048011 +19500,0.00431687,0.0448301,0.0204476,0.0480029 +19552,0.00415964,0.0434736,0.0166832,0.0478825 +19604,0.00418278,0.0423036,0.0167477,0.0487201 +19656,0.00419355,0.0416905,0.0196076,0.0479215 +19708,0.00414022,0.0413369,0.0209181,0.0481087 +19760,0.00408776,0.042025,0.020855,0.0485401 +19812,0.0040367,0.0418705,0.0204485,0.047343 +19864,0.00398761,0.0476111,0.0198985,0.0474711 +19916,0.00387512,0.0466522,0.0193381,0.0475402 +19968,0.00377958,0.0427039,0.0188031,0.0475244 +20020,0.00382849,0.0403269,0.0155172,0.047547 +20072,0.0038052,0.0412658,0.0129502,0.0474781 +20124,0.0037653,0.0464446,0.0124928,0.0475108 +20176,0.00372217,0.0406452,0.0128509,0.0474223 +20228,0.0036804,0.0466543,0.0116961,0.0474498 +20280,0.00355534,0.0452718,0.014018,0.0473604 +20332,0.00351542,0.0497205,0.0154972,0.0473897 +20384,0.00346618,0.0378876,0.0154259,0.0472894 +20436,0.00352963,0.0396385,0.0149876,0.0477896 +20488,0.00348959,0.0479973,0.0145133,0.0470888 +20540,0.00345112,0.0442868,0.0140052,0.0475149 +20592,0.00336388,0.0491855,0.0134818,0.0473201 +20644,0.00337397,0.037531,0.0130446,0.0469298 +20696,0.00334066,0.0376478,0.0126027,0.047939 +20748,0.00321663,0.0515434,0.0100702,0.0466153 +20800,0.00322308,0.0488977,0.00904261,0.0472034 +20852,0.00312797,0.0462985,0.00845747,0.0470964 +20904,0.00302016,0.051954,0.00788357,0.0470498 +20956,0.0029815,0.0221143,0.0077514,0.0470044 +21008,0.00296506,0.0144876,0.00762733,0.0469709 +21060,0.00294993,0.0731594,0.00754526,0.0469596 +21112,0.00295875,0.0770013,0.00762359,0.0468664 +21164,0.0029368,0.0256721,0.00733096,0.0469003 +21216,0.00292287,0.0237905,0.00741113,0.0468539 +21268,0.00292203,0.0197783,0.00719453,0.0468106 +21320,0.00288598,0.0141167,0.00728496,0.0468144 +21372,0.00288433,0.0104435,0.00704298,0.0467231 +21424,0.00288379,0.00866538,0.0071051,0.0467718 +21476,0.00285218,0.00776886,0.00701565,0.0466857 +21528,0.00285466,0.00627103,0.00683342,0.0466644 +21580,0.00285479,0.00491068,0.00692296,0.0466914 +21632,0.00284331,0.00445395,0.00670367,0.0466157 +21684,0.002818,0.00392171,0.0071565,0.0465911 +21736,0.00281823,0.00344258,0.00659187,0.0465695 +21788,0.0028069,0.00308653,0.00696778,0.0465639 +21840,0.00276551,0.00277188,0.00648231,0.0465245 +21892,0.00277218,0.00245232,0.00694456,0.0465264 +21944,0.00277375,0.00232005,0.00638404,0.046439 +21996,0.00276236,0.00211597,0.00684,0.0464878 +22048,0.00275129,0.00194364,0.00640994,0.0464091 +22100,0.00270985,0.00182115,0.00667789,0.0464366 +22152,0.00272699,0.00169476,0.00631137,0.0463474 +22204,0.00271688,0.00158944,0.00662718,0.046392 +22256,0.00270643,0.00148818,0.00611562,0.0463093 +22308,0.00269584,0.00140168,0.006549,0.0463182 +22360,0.00268542,0.00131858,0.00621487,0.0462971 +22412,0.00264227,0.0012509,0.00638262,0.0462495 +22464,0.00266327,0.00118729,0.0060569,0.0462827 +22516,0.00265328,0.00113097,0.00636264,0.0462154 +22568,0.00264307,0.00107817,0.00596671,0.0462019 +22620,0.00262716,0.0010297,0.00627662,0.0461818 +22672,0.00260415,0.000984514,0.00597455,0.0466889 +22724,0.00261402,0.000944564,0.0061291,0.0455599 +22776,0.00260358,0.000906957,0.00585428,0.045944 +22828,0.00257918,0.00087301,0.00605253,0.0474891 +22880,0.0025823,0.000840725,0.00581817,0.0455385 +22932,0.00257238,0.000810486,0.00599747,0.0459143 +22984,0.00254502,0.000783494,0.00560587,0.0472806 +23036,0.00255333,0.000756481,0.00594554,0.0456659 +23088,0.00254341,0.000733607,0.00549316,0.04572 +23140,0.00251529,0.000711413,0.00588248,0.0461489 +23192,0.00252466,0.000690665,0.00569538,0.0471019 +23244,0.00251515,0.000670674,0.00556942,0.0457119 +23296,0.00248749,0.000652514,0.00567859,0.0459594 +23348,0.00249644,0.000634915,0.00531855,0.0468407 +23400,0.0024869,0.000618045,0.00568702,0.0453167 +23452,0.00247012,0.000602569,0.00533393,0.0455564 +23504,0.0024665,0.000587268,0.00558019,0.045666 +23556,0.00245771,0.000572904,0.00535553,0.0457144 +23608,0.00244926,0.000559277,0.00548474,0.0457326 +23660,0.00241667,0.000546086,0.00509286,0.045769 +23712,0.00243025,0.000533907,0.00547784,0.0457498 +23764,0.00242207,0.000523885,0.00526139,0.0457523 +23816,0.00241359,0.000510441,0.00530896,0.0457223 +23868,0.002405,0.000501388,0.00496169,0.0457281 +23920,0.00237289,0.000489166,0.00534444,0.0457074 +23972,0.00238672,0.000481742,0.00516831,0.0456842 +24024,0.00237875,0.000469589,0.00495738,0.0456798 +24076,0.00237056,0.000462829,0.00522645,0.0456596 +24128,0.00236221,0.00045426,0.0049286,0.0456417 +24180,0.00234958,0.000443434,0.00514965,0.0456126 +24232,0.00233827,0.000438438,0.00482471,0.0456167 +24284,0.00233723,0.000427729,0.00508561,0.0455958 +24336,0.00232912,0.000422977,0.00490874,0.0455779 +24388,0.00229778,0.000414537,0.00498009,0.0455555 +24440,0.00231183,0.000408425,0.00464893,0.0455515 +24492,0.00230427,0.000399314,0.00498203,0.0455319 +24544,0.0022965,0.000394948,0.00482981,0.0455151 +24596,0.00228859,0.000386838,0.00482766,0.0454887 +24648,0.00228104,0.000380982,0.00453751,0.0454929 +24700,0.00225064,0.000376393,0.00486649,0.0454707 +24752,0.00224193,0.000369686,0.00477044,0.0454544 +24804,0.00225668,0.000362733,0.00445873,0.0454286 +24856,0.00224942,0.000364098,0.00478487,0.0454327 +24908,0.00224187,0.000352179,0.00462377,0.0454117 +24960,0.00223441,0.000347471,0.00466004,0.0453953 +25012,0.00222443,0.000341708,0.00435778,0.04538 +25064,0.00221755,0.000337617,0.00466402,0.0453707 +25116,0.00221049,0.000332626,0.00448343,0.0462738 +25168,0.00220368,0.00032682,0.00456215,0.0449713 +25220,0.0021821,0.000323173,0.00426032,0.0458443 +25272,0.00218921,0.00032032,0.00456828,0.0449334 +25324,0.00217949,0.000313009,0.00447763,0.0465627 +25376,0.00217284,0.000310409,0.00423876,0.0449164 +25428,0.002166,0.000305061,0.00446041,0.0451495 +25480,0.00215515,0.00030459,0.00429308,0.0465847 +25532,0.00215071,0.000297248,0.00438646,0.0448363 +25584,0.00214418,0.000293026,0.00409803,0.044947 +25636,0.00213758,0.000293367,0.00438221,0.0453232 +25688,0.00211141,0.000286157,0.00428179,0.0464016 +25740,0.00212305,0.000282262,0.00407568,0.0448503 +25792,0.00211654,0.000278828,0.00429317,0.0450589 +25844,0.00210988,0.000278943,0.00415814,0.0458801 +25896,0.00210343,0.000272516,0.00421077,0.0444974 +25948,0.00208064,0.000268919,0.00394915,0.0465154 +26000,0.0020883,0.000268568,0.00421237,0.0446035 +26052,0.00205266,0.000262989,0.00391449,0.0448049 +26104,0.0020324,0.000259766,0.00381233,0.0462921 +26156,0.00202363,0.00025739,0.0038691,0.0442711 +26208,0.00202015,0.000256725,0.00380271,0.0458371 +26260,0.0020187,0.000251532,0.00383443,0.0451447 +26312,0.00201515,0.00024932,0.00377922,0.0450607 +26364,0.00201161,0.000246017,0.00385273,0.0450509 +26416,0.00200984,0.000246699,0.00374681,0.0450441 +26468,0.00200991,0.000241464,0.00383362,0.0450274 +26520,0.00200166,0.000238781,0.00372544,0.0450151 +26572,0.00200191,0.00023873,0.00381535,0.0450057 +26624,0.00200021,0.00023426,0.00370404,0.0449851 +26676,0.00199792,0.000233576,0.00379756,0.0449758 +26728,0.00198769,0.000229708,0.00370202,0.044968 +26780,0.00198797,0.000228841,0.00377259,0.0449517 +26832,0.00198819,0.000225406,0.00366696,0.0449369 +26884,0.00198486,0.000225561,0.00375828,0.044931 +26936,0.00198183,0.000221411,0.00366421,0.0449196 +26988,0.00197897,0.00021921,0.00373877,0.0449072 +27040,0.00197368,0.000219187,0.00366667,0.0448949 +27092,0.00197271,0.000215451,0.00369408,0.0448788 +27144,0.00196967,0.000213647,0.00366635,0.044873 +27196,0.00196663,0.00021331,0.00365643,0.0448614 +27248,0.00196363,0.000209845,0.00367554,0.0448501 +27300,0.00195324,0.000209998,0.00358912,0.0448377 +27352,0.00195023,0.00020647,0.00367607,0.0448226 +27404,0.00195511,0.000204701,0.00358469,0.0448174 +27456,0.00195212,0.000204771,0.00365922,0.0448055 +27508,0.00194916,0.000201239,0.00358519,0.0447901 +27560,0.00194608,0.000199661,0.00363614,0.0447851 +27612,0.0019431,0.000199895,0.00353519,0.0447732 +27664,0.0019402,0.000196375,0.00362562,0.0447634 +27716,0.00193717,0.000196079,0.00356925,0.0447505 +27768,0.00193422,0.000193249,0.00357564,0.0447368 +27820,0.00193129,0.000192468,0.00349987,0.0447347 +27872,0.00192651,0.000190052,0.00359637,0.0447203 +27924,0.00192555,0.000190134,0.00357163,0.0447104 +27976,0.00192284,0.000187199,0.00347847,0.0447362 +28028,0.00191772,0.000185811,0.0035685,0.0446802 +28080,0.00191692,0.00018553,0.00352624,0.0446655 +28132,0.00191442,0.000182965,0.00346788,0.0446627 +28184,0.00191109,0.000182889,0.00353815,0.0446632 +28236,0.00190821,0.000180219,0.0034854,0.0446838 +28288,0.00190557,0.000178937,0.00351186,0.0446292 +28340,0.0019007,0.000179002,0.00342466,0.0446444 +28392,0.00189973,0.000176297,0.00350703,0.0446183 +28444,0.00189724,0.000176008,0.00346769,0.0446047 +28496,0.00188931,0.000173803,0.00341167,0.0445945 +28548,0.00189139,0.000172553,0.00348039,0.0445905 +28600,0.00188859,0.00017226,0.0034113,0.0445899 +28652,0.00188578,0.000169984,0.00346256,0.0445626 +28704,0.00187829,0.000170032,0.00338041,0.0445969 +28756,0.00188052,0.000167801,0.00344861,0.0445334 +28808,0.00187084,0.000166602,0.00340637,0.044549 +28860,0.00187485,0.000166564,0.00342194,0.0445363 +28912,0.00187207,0.000164254,0.00334083,0.0443804 +28964,0.0018693,0.00016376,0.00341663,0.0446905 +29016,0.00186683,0.000162003,0.00338417,0.0445108 +29068,0.00186372,0.000161887,0.00331296,0.0445028 +29120,0.00186097,0.000159823,0.00339792,0.0444932 +29172,0.00185838,0.00016002,0.00337824,0.0444874 +29224,0.00185358,0.000157755,0.00329242,0.0444732 +29276,0.00185286,0.000157822,0.00337429,0.0444568 +29328,0.00185041,0.000155828,0.00333754,0.0444592 +29380,0.00184734,0.000155885,0.00332333,0.0444371 +29432,0.00184463,0.000153827,0.00333846,0.0444377 +29484,0.00184215,0.000153766,0.00325795,0.0444344 +29536,0.0018324,0.000151998,0.00333523,0.0444192 +29588,0.00182946,0.000151864,0.00331725,0.0443401 +29640,0.00183432,0.000150011,0.00323479,0.0444696 +29692,0.00183164,0.000150083,0.0033122,0.0443973 +29744,0.00182903,0.000148258,0.00327758,0.0443775 +29796,0.00182624,0.000148192,0.00327291,0.0443818 +29848,0.00182359,0.000146551,0.00321866,0.0444114 +29900,0.00182093,0.000146539,0.00328085,0.0443054 +29952,0.0018183,0.000144751,0.00324335,0.0443926 +30004,0.00181565,0.000144689,0.00325149,0.0443441 +30056,0.00181299,0.000143127,0.00317794,0.0443244 +30108,0.0018087,0.000143118,0.00325525,0.0443329 +30160,0.00180789,0.000141427,0.00323802,0.0443188 +30212,0.00180535,0.000141338,0.00315758,0.044289 +30264,0.00180083,0.000139856,0.00323482,0.0443265 +30316,0.00180009,0.000139745,0.00321753,0.0442944 +30368,0.00179781,0.000138187,0.00313563,0.044237 +30420,0.00179498,0.000138252,0.00321268,0.0443221 +30472,0.00179231,0.00013671,0.00317979,0.0442681 +30524,0.00178995,0.00013661,0.00315924,0.0442611 +30576,0.00178549,0.000135168,0.00318344,0.0442626 +30628,0.00178472,0.000135255,0.00310234,0.0443158 +30680,0.00178253,0.00013369,0.00318009,0.0441705 +30732,0.00177956,0.00013367,0.00316309,0.0442538 +30784,0.00177702,0.000132311,0.00312524,0.044233 +30836,0.00177483,0.000132319,0.00314639,0.0442026 +30888,0.001768,0.000130856,0.0030719,0.044216 +30940,0.00176965,0.000130808,0.00314385,0.0442003 +30992,0.00176714,0.000129522,0.00312799,0.0441925 +31044,0.0017647,0.000129427,0.00305013,0.0441095 +31096,0.00175802,0.000128075,0.00312355,0.0442571 +31148,0.00176001,0.000128227,0.00309239,0.0441353 +31200,0.0017573,0.000126861,0.00309442,0.0441889 +31252,0.00174466,0.000126733,0.00301476,0.0441594 +31304,0.00173782,0.000125466,0.00299874,0.044115 +31356,0.00173408,0.000125591,0.00302117,0.0441864 +31408,0.00173263,0.000124209,0.00298661,0.043912 +31460,0.00173152,0.000124203,0.00301603,0.0458935 +31512,0.00172959,0.000123024,0.00298513,0.0401846 +31564,0.00172984,0.00012304,0.00300852,0.0458782 +31616,0.00172987,0.000121755,0.00297884,0.0413905 +31668,0.00172738,0.000121724,0.00300133,0.0432051 +31720,0.00172751,0.00012086,0.00297871,0.0504445 +31772,0.00172619,0.000119947,0.0029838,0.0418433 +31824,0.00172496,0.000120068,0.00297836,0.0470758 +31876,0.00172384,0.000118788,0.00298745,0.0406278 +31928,0.00172259,0.000118881,0.00295588,0.0436746 +31980,0.00172143,0.000117727,0.00298389,0.0436904 +32032,0.00171898,0.000117619,0.00295355,0.0486537 +32084,0.00171916,0.000116599,0.00297803,0.0400302 +32136,0.0017179,0.000116519,0.00296008,0.0450022 +32188,0.00171667,0.000115435,0.00296012,0.0446437 +32240,0.00171563,0.00011553,0.00294683,0.048444 +32292,0.00171244,0.000114367,0.00296471,0.039329 +32344,0.00171325,0.000114368,0.00293614,0.0462696 +32396,0.00171204,0.000113591,0.00295927,0.0471663 +32448,0.00171101,0.000113062,0.00292929,0.0420454 +32500,0.0017073,0.000112265,0.00295377,0.0432239 +32552,0.00170863,0.000112376,0.00292896,0.0419384 +32604,0.00170741,0.00011131,0.00294669,0.0508704 +32656,0.00170624,0.00011124,0.0029119,0.0398266 +32708,0.0017051,0.000110246,0.0029432,0.0428351 +32760,0.00170388,0.000110343,0.00293651,0.0497618 +32812,0.00170278,0.000109275,0.00290418,0.0405868 +32864,0.00170083,0.000109346,0.00293378,0.0428095 +32916,0.00170044,0.000108307,0.00292063,0.0432146 +32968,0.00169932,0.00010832,0.00289959,0.0451637 +33020,0.00169811,0.000107721,0.00292432,0.0503826 +33072,0.00169698,0.000106919,0.00290948,0.0403782 +33124,0.00169388,0.000106903,0.00290958,0.0395972 +33176,0.00169475,0.000106028,0.00288288,0.0457735 +33228,0.00169355,0.000105906,0.00291348,0.0481306 +33280,0.00169243,0.000105298,0.00290707,0.0389999 +33332,0.0016913,0.000104947,0.00287497,0.041029 +33384,0.0016901,0.000104202,0.00290448,0.0486515 +33436,0.00168899,0.000104215,0.00289158,0.0403436 +33488,0.00168711,0.000103331,0.00288298,0.0410583 +33540,0.00168666,0.000103299,0.00289231,0.0545168 +33592,0.00168559,0.000102504,0.00286113,0.0410381 +33644,0.0016844,0.000102384,0.00288981,0.0432095 +33696,0.00168327,0.000101606,0.00288365,0.0424822 +33748,0.00168032,0.000101651,0.00285242,0.0427793 +33800,0.00168143,0.00010077,0.00288066,0.042102 +33852,0.00167724,0.000100823,0.00286832,0.0431184 +33904,0.00167887,9.99E-05,0.00286018,0.0432618 +33956,0.00167768,1.00E-04,0.00286659,0.0434403 +34008,0.00167659,9.94E-05,0.00283774,0.043552 +34060,0.00167545,9.90E-05,0.00286693,0.0436259 +34112,0.00167429,9.84E-05,0.0028609,0.0436746 +34164,0.00167322,9.84E-05,0.00282981,0.0437193 +34216,0.00167128,9.76E-05,0.00285851,0.0437573 +34268,0.00167093,9.76E-05,0.00285253,0.0437388 +34320,0.00166986,9.69E-05,0.00282091,0.0437299 +34372,0.00166869,9.68E-05,0.00284965,0.0437411 +34424,0.00166757,9.61E-05,0.00283755,0.0437096 +34476,0.0016646,9.61E-05,0.00282952,0.0436653 +34528,0.00166557,9.53E-05,0.00283587,0.0436608 +34580,0.00166147,9.53E-05,0.00280655,0.0436782 +34632,0.00166325,9.46E-05,0.00283675,0.0436478 +34684,0.00166209,9.46E-05,0.00283077,0.0436228 +34736,0.00166097,9.39E-05,0.00280416,0.0436167 +34788,0.00165989,9.38E-05,0.00282628,0.0436363 +34840,0.00165873,9.32E-05,0.0028102,0.0436041 +34892,0.00165764,9.31E-05,0.00281882,0.0435743 +34944,0.00165655,9.25E-05,0.00278847,0.0435538 +34996,0.0016554,9.25E-05,0.00281655,0.0435837 +35048,0.00165434,9.18E-05,0.00280451,0.0435528 +35100,0.00165249,9.17E-05,0.00279937,0.0435165 +35152,0.0016521,9.11E-05,0.00280191,0.0435145 +35204,0.00165106,9.11E-05,0.00277459,0.0434471 +35256,0.00164991,9.04E-05,0.00280275,0.0435829 +35308,0.00164881,9.04E-05,0.00279712,0.0434977 +35360,0.00164704,8.98E-05,0.00276655,0.0435136 +35412,0.00164664,8.97E-05,0.00279489,0.0434759 +35464,0.00164566,8.93E-05,0.00278926,0.0434227 +35516,0.00164448,8.88E-05,0.00276897,0.0434456 +35568,0.00164334,8.88E-05,0.00278425,0.0431598 +35620,0.00164236,8.81E-05,0.00275814,0.0437418 +35672,0.0016405,8.81E-05,0.00277998,0.0435691 +35724,0.00164014,8.77E-05,0.00276907,0.0404371 +35776,0.00163832,8.74E-05,0.00276134,0.0468966 +35828,0.00163797,8.69E-05,0.00276967,0.0440688 +35880,0.00163708,8.69E-05,0.00274079,0.0386527 +35932,0.00163329,8.63E-05,0.00276708,0.034669 +35984,0.00163481,8.63E-05,0.00275384,0.0310935 +36036,0.00163368,8.57E-05,0.00275676,0.0772166 +36088,0.00163264,8.57E-05,0.00272903,0.048752 +36140,0.00163155,8.52E-05,0.00275741,0.0364713 +36192,0.00163044,8.50E-05,0.00275137,0.0339633 +36244,0.00162942,8.45E-05,0.00272155,0.0355565 +36296,0.00162757,8.45E-05,0.00274882,0.0291761 +36348,0.00162724,8.39E-05,0.00273736,0.0240248 +36400,0.00162622,8.39E-05,0.00273821,0.0359803 +36452,0.00162035,8.36E-05,0.00269894,3.70915 +36504,0.00161754,8.31E-05,0.00271131,2.22353 +36556,0.00161617,8.31E-05,0.00270387,2.8763 +36608,0.00161546,8.25E-05,0.0027023,1.8589 +36660,0.0016148,8.25E-05,0.00270157,2.2589 +36712,0.0016149,8.20E-05,0.00269435,2.19302 +36764,0.00161486,8.20E-05,0.00270404,2.60034 +36816,0.0016138,8.14E-05,0.00269168,2.27869 +36868,0.0016138,8.14E-05,0.00270141,1.74801 +36920,0.00161222,8.10E-05,0.00268886,1.88053 +36972,0.00161202,8.06E-05,0.00269878,1.49279 +37024,0.00161225,8.06E-05,0.0026861,1.14913 +37076,0.00161169,8.01E-05,0.00269608,0.919516 +37128,0.00161113,8.00E-05,0.00268623,0.85087 +37180,0.00161066,7.96E-05,0.00269328,1.60845 +37232,0.00161011,7.95E-05,0.00267865,2.07968 +37284,0.00160954,7.91E-05,0.00269178,2.51464 +37336,0.00160855,7.91E-05,0.00268924,2.47905 +37388,0.0016085,7.86E-05,0.00267508,1.87106 +37440,0.00160803,7.85E-05,0.00268775,1.50387 +37492,0.00160748,7.82E-05,0.0026824,0.828078 +37544,0.00160695,7.78E-05,0.00267883,0.494588 +37596,0.00160589,7.78E-05,0.0026816,0.390209 +37648,0.00160594,7.73E-05,0.00266871,0.299272 +37700,0.00160541,7.73E-05,0.00268156,0.346125 +37752,0.00160486,7.69E-05,0.00267906,0.240624 +37804,0.00160439,7.66E-05,0.00266514,0.158274 +37856,0.00160349,7.66E-05,0.0026778,0.126668 +37908,0.00160334,7.61E-05,0.00267241,0.104023 +37960,0.00160282,7.61E-05,0.00266878,0.0898649 +38012,0.00160227,7.58E-05,0.00267278,0.0837252 +38064,0.00160179,7.54E-05,0.00265899,0.0718407 +38116,0.00160091,7.54E-05,0.00267153,0.0599478 +38168,0.00160074,7.49E-05,0.00266907,0.0671565 +38220,0.00160023,7.49E-05,0.00265511,0.0662924 +38272,0.00159968,7.46E-05,0.00266763,0.0563712 +38324,0.0015992,7.43E-05,0.00266235,0.0581083 +38376,0.00159784,7.43E-05,0.00265885,0.0553902 +38428,0.00159819,7.39E-05,0.00266164,0.0603428 +38480,0.00159764,7.38E-05,0.00264868,0.0424511 +38532,0.00159714,7.34E-05,0.0026616,0.0612706 +38584,0.00159662,7.34E-05,0.00265917,0.046021 +38636,0.00159607,7.30E-05,0.00264509,0.0480074 +38688,0.0015956,7.29E-05,0.00265793,0.0697066 +38740,0.00159399,7.25E-05,0.0026554,0.0691361 +38792,0.0015946,7.25E-05,0.00264389,0.0405713 +38844,0.00159405,7.21E-05,0.00265319,0.046665 +38896,0.00159353,7.21E-05,0.00264656,0.0575801 +38948,0.00159269,7.18E-05,0.00264516,0.037697 +39000,0.00159249,7.15E-05,0.00264515,0.0451105 +39052,0.00159203,7.14E-05,0.00264377,0.0871062 +39104,0.00159148,7.10E-05,0.00264028,0.0278255 +39156,0.00159096,7.10E-05,0.00264514,0.0446956 +39208,0.00159014,7.08E-05,0.0026317,0.0682649 +39260,0.00158993,7.05E-05,0.00264377,0.0714882 +39312,0.00158948,7.04E-05,0.00263838,0.0313508 +39364,0.00158893,7.02E-05,0.00263492,0.0350993 +39416,0.0015884,6.98E-05,0.0026375,0.0841346 +39468,0.00158759,6.99E-05,0.0026255,1.10497 +39520,0.00158739,6.95E-05,0.00263752,4.74836 +39572,0.00158693,6.93E-05,0.00263207,3.47521 +39624,0.00158639,6.93E-05,0.00262091,2.75083 +39676,0.00158585,6.90E-05,0.00263426,2.18725 +39728,0.00158455,6.87E-05,0.00263153,1.81169 +39780,0.00158492,6.87E-05,0.0026176,1.33012 +39832,0.00158345,6.83E-05,0.00263024,0.947187 +39884,0.00158392,6.83E-05,0.0026278,1.11021 +39936,0.00158338,6.81E-05,0.00262148,0.495932 +39988,0.00158284,6.78E-05,0.00262012,0.326061 diff --git a/Project2-Character-Recognition/img/loss_vs_epoch_74k.PNG b/Project2-Character-Recognition/img/loss_vs_epoch_74k.PNG new file mode 100644 index 0000000000000000000000000000000000000000..f37fec4639f75d9384205f42a12598c9684eef10 GIT binary patch literal 59587 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 #include -#define classes 52 -#define epochs 40000 +#define classes 26 +#define epochs 400000 #define in_dim 15 #define inputs in_dim*in_dim -#define lr 0.0038 -#define beta 0.65 +#define lr 0.004 +#define beta 0.35 +#define char_74k true + using namespace std; + float avg_time_forward = 0, avg_time_backward = 0; int image_read(string path, vector &data) { @@ -46,6 +49,7 @@ double * image_read_rot(string path, int rot) { if (!image.data) // Check for invalid input { cout << "Could not open or find the image" << std::endl; + cout << "failed on " << path << endl; return 0; } double *data = new double[inputs]; @@ -71,7 +75,7 @@ void read_directory(const std::string& name, vector& v) { HANDLE hFind; if ((hFind = FindFirstFile(pattern.c_str(), &data)) != INVALID_HANDLE_VALUE) { do { - if (string(data.cFileName).find("bmp") != std::string::npos) + if (string(data.cFileName).find("bmp") != std::string::npos || string(data.cFileName).find("png") != std::string::npos) v.push_back(data.cFileName); } while (FindNextFile(hFind, &data) != 0); FindClose(hFind); @@ -92,9 +96,9 @@ double * lable_read(string name) { return data; } int random_int(int min, int max) { - static std::random_device dev; - static std::mt19937 rng(dev()); - static std::uniform_int_distribution uint_dist(min, max); // distribution in range [1, 6] + std::random_device dev; + std::mt19937 rng(dev()); + std::uniform_int_distribution uint_dist(min, max); // distribution in range [1, 6] return uint_dist(rng); } @@ -115,7 +119,25 @@ void sequential_training(CharacterRecognition::Net &nn, vector &input_ delete[] x; } -void random_training(string path, CharacterRecognition::Net &nn, const vector &files, float &total_loss, int n) { +void random_training(CharacterRecognition::Net &nn, vector &input_data, + vector &output_data, float &total_loss, int i) { + int n = random_int(0, input_data.size() - 1); + auto x = nn.forward(input_data[n], inputs); + avg_time_forward += CharacterRecognition::timer().getGpuElapsedTimeForPreviousOperation(); + total_loss += nn.loss(x, output_data[n]); + if (i % classes == 0 && i) { + cout << i << ":" << total_loss / classes << endl; + csv_write(i, total_loss / classes, "loss_momentum.csv"); + total_loss = 0; + } + /*if (!(i % (classes * 100)) && i) + nn.update_lr();*/ + nn.backprop(output_data[n]); + avg_time_backward += CharacterRecognition::timer().getGpuElapsedTimeForPreviousOperation(); + delete[] x; +} + +void random_training_rot(string path, CharacterRecognition::Net &nn, const vector &files, float &total_loss, int n) { int i = random_int(0, classes - 1); int rot = random_int(-10, 10);// +- 10 degree rotation string name = path + string(files[i]); @@ -138,33 +160,74 @@ void random_training(string path, CharacterRecognition::Net &nn, const vector &data) { + int value = stoi(name.substr(3, 3)); + data.push_back(new double[classes]); + memset(data[data.size() - 1], 0, classes * sizeof(double)); + data[data.size() - 1][value - 11] = 1; +} + int main(int argc, char* argv[]) { // load image paths - string path = R"(..\data-set\)"; + string path = R"(..\74k_dataset_stripped\)";// change to ..\data-set\ for regular dataset vector files; vector input_data; vector output_data; read_directory(path, files); for (auto x : files) - if (image_read(path + x, input_data)) - lable_read(x, output_data); - + if (image_read(path + x, input_data)) { + cout << x << endl; + if(!char_74k) + lable_read(x, output_data); + else { + lable_read74k(x, output_data); + } + + } // forward pass - CharacterRecognition::Net nn(inputs, {98, 65, 50, 30, 25, 40, classes}, lr, beta); + CharacterRecognition::Net nn(inputs, {100, 80, 65, 50, 40, 30, 30, 40, classes}, lr, beta); int i; float total_loss = 0; for (i = 0; i < epochs; i++) { - //random_training(path, nn, files, total_loss, i); - sequential_training(nn, input_data, output_data, total_loss, i); + //random_training_rot(path, nn, files, total_loss, i); + //sequential_training(nn, input_data, output_data, total_loss, i); + random_training(nn, input_data, output_data, total_loss, i); } cout << " Avg forward = " << avg_time_forward / epochs << ", Avg backward = " << avg_time_backward / epochs << endl; int val = 0; - for (int i = 0; i < classes; i++) { - double* x = nn.forward(input_data[i], inputs); - int pos1 = distance(x, max_element(x, x + classes)); - int pos2 = distance(output_data[i], max_element(output_data[i], output_data[i] + classes)); - val += (bool)(pos1 == pos2); - delete[] x; + if (!char_74k) { + for (int i = 0; i < classes; i++) { + double* x = nn.forward(input_data[i], inputs); + int pos1 = distance(x, max_element(x, x + classes)); + int pos2 = distance(output_data[i], max_element(output_data[i], output_data[i] + classes)); + val += (bool)(pos1 == pos2); + delete[] x; + } + } + else { + // read validation data + string path = R"(..\74k_dataset_test\)";// change to ..\data-set\ for regular dataset + vector files; + vector input_data_test; + vector output_data_test; + read_directory(path, files); + for (auto x : files) + if (image_read(path + x, input_data_test)) { + cout << x << endl; + lable_read74k(x, output_data_test); + + } + for (int i = 0; i < input_data_test.size(); i++) { + double* x = nn.forward(input_data_test[i], inputs); + int pos1 = distance(x, max_element(x, x + classes)); + int pos2 = distance(output_data_test[i], max_element(output_data_test[i], output_data_test[i] + classes)); + val += (bool)(pos1 == pos2); + delete[] x; + } + for (auto x : input_data_test) + delete[] x; + for (auto x : output_data_test) + delete[] x; } cout << "Passes " << val << " Out of "< Date: Wed, 18 Sep 2019 00:01:52 -0400 Subject: [PATCH 34/34] Reverted back to regular dataset --- Project2-Character-Recognition/src/main.cpp | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/Project2-Character-Recognition/src/main.cpp b/Project2-Character-Recognition/src/main.cpp index 97a435b..ba25e9e 100644 --- a/Project2-Character-Recognition/src/main.cpp +++ b/Project2-Character-Recognition/src/main.cpp @@ -19,12 +19,12 @@ #include #define classes 26 -#define epochs 400000 +#define epochs 4000 #define in_dim 15 #define inputs in_dim*in_dim #define lr 0.004 #define beta 0.35 -#define char_74k true +#define char_74k false using namespace std; @@ -169,7 +169,7 @@ void lable_read74k(string name, vector &data) { int main(int argc, char* argv[]) { // load image paths - string path = R"(..\74k_dataset_stripped\)";// change to ..\data-set\ for regular dataset + string path = R"(..\data-set\)";// change to ..\data-set\ for regular dataset vector files; vector input_data; vector output_data; @@ -185,13 +185,16 @@ int main(int argc, char* argv[]) { } // forward pass - CharacterRecognition::Net nn(inputs, {100, 80, 65, 50, 40, 30, 30, 40, classes}, lr, beta); + CharacterRecognition::Net nn(inputs, {98, 60, 50, 40, 30, classes}, lr, beta); int i; float total_loss = 0; for (i = 0; i < epochs; i++) { - //random_training_rot(path, nn, files, total_loss, i); - //sequential_training(nn, input_data, output_data, total_loss, i); - random_training(nn, input_data, output_data, total_loss, i); + if(char_74k) + random_training(nn, input_data, output_data, total_loss, i); + else { + //random_training_rot(path, nn, files, total_loss, i); + sequential_training(nn, input_data, output_data, total_loss, i); + } } cout << " Avg forward = " << avg_time_forward / epochs << ", Avg backward = " << avg_time_backward / epochs << endl; int val = 0;