Index: LICENSE.TXT =================================================================== --- LICENSE.TXT +++ LICENSE.TXT @@ -124,3 +124,4 @@ llvm-test/SingleSource/Gizmos llvm-test/SingleSource/Benchmarks/SmallPT zlib: llvm-test/MultiSource/Applications/ClamAV/zlib_* +Rodinia: llvm-test/MultiSource/Benchmarks/Rodinia Index: MultiSource/Benchmarks/CMakeLists.txt =================================================================== --- MultiSource/Benchmarks/CMakeLists.txt +++ MultiSource/Benchmarks/CMakeLists.txt @@ -19,6 +19,7 @@ add_subdirectory(nbench) add_subdirectory(sim) add_subdirectory(DOE-ProxyApps-C) +add_subdirectory(Rodinia) if((NOT "${TARGET_OS}" STREQUAL "Darwin") OR (NOT "${ARCH}" STREQUAL "ARM")) add_subdirectory(TSVC) Index: MultiSource/Benchmarks/Makefile =================================================================== --- MultiSource/Benchmarks/Makefile +++ MultiSource/Benchmarks/Makefile @@ -9,7 +9,7 @@ McCat Olden Ptrdist llubenchmark \ sim FreeBench MallocBench Prolangs-C SciMark2-C mediabench\ nbench ASCI_Purple MiBench Trimaran VersaBench NPB-serial\ - BitBench ASC_Sequoia TSVC DOE-ProxyApps-C + BitBench ASC_Sequoia TSVC DOE-ProxyApps-C Rodinia # Disable TSVC on Darwin until the tests support SMALL_PROBLEM_SIZE=1. ifeq ($(TARGET_OS),Darwin) Index: MultiSource/Benchmarks/Rodinia/CMakeLists.txt =================================================================== --- MultiSource/Benchmarks/Rodinia/CMakeLists.txt +++ MultiSource/Benchmarks/Rodinia/CMakeLists.txt @@ -0,0 +1,2 @@ +add_subdirectory(hotspot) +add_subdirectory(srad) Index: MultiSource/Benchmarks/Rodinia/Common/glibc_compat_rand.h =================================================================== --- MultiSource/Benchmarks/Rodinia/Common/glibc_compat_rand.h +++ MultiSource/Benchmarks/Rodinia/Common/glibc_compat_rand.h @@ -0,0 +1,16 @@ +/*===------------- glibc_compat_rand.h- glibc rand emulation --------------===*\ +|* +|* The LLVM Compiler Infrastructure +|* +|* This file is distributed under the University of Illinois Open Source +|* License. See LICENSE.TXT for details. +|* +\*===----------------------------------------------------------------------===*/ + +#ifndef GLIBC_COMPAT_RAND_H +#define GLIBC_COMPAT_RAND_H + +int glibc_compat_rand(void); +void glibc_compat_srand(unsigned int seed); + +#endif /* GLIBC_COMPAT_RAND_H */ Index: MultiSource/Benchmarks/Rodinia/Common/glibc_compat_rand.c =================================================================== --- MultiSource/Benchmarks/Rodinia/Common/glibc_compat_rand.c +++ MultiSource/Benchmarks/Rodinia/Common/glibc_compat_rand.c @@ -0,0 +1,60 @@ +/*===------------ glibc_compat_rand.c - glibc rand emulation --------------===*\ + * + * The LLVM Compiler Infrastructure + * + * This file is distributed under the University of Illinois Open Source + * License. See LICENSE.TXT for details. + * +\*===----------------------------------------------------------------------===*/ + +#include "glibc_compat_rand.h" + +/** + * This rand implementation is designed to emulate the implementation of + * rand/srand in recent versions of glibc. This is used for programs which + * require this specific rand implementation in order to pass verification + * tests. + * + * For more information, see: http://www.mathstat.dal.ca/~selinger/random/ + **/ + +#define TABLE_SIZE 344 +static unsigned int table[TABLE_SIZE]; +static int next; + +int glibc_compat_rand(void) { + /* Calculate the indices i-3 and i-31 in the circular vector. */ + int i3 = (next < 3) ? (TABLE_SIZE + next - 3) : (next - 3); + int i31 = (next < 31) ? (TABLE_SIZE + next - 31) : (next - 31); + + table[next] = table[i3] + table[i31]; + unsigned int r = table[next] >> 1; + + ++next; + if (next >= TABLE_SIZE) + next = 0; + + return r; +} + +void glibc_compat_srand(unsigned int seed) { + if (seed == 0) + seed = 1; + + table[0] = seed; + + for (int i = 1; i < 31; i++) { + int r = (16807ll * table[i - 1]) % 2147483647; + if (r < 0) + r += 2147483647; + + table[i] = r; + } + + for (int i = 31; i < 34; i++) + table[i] = table[i - 31]; + for (int i = 34; i < TABLE_SIZE; i++) + table[i] = table[i - 31] + table[i - 3]; + + next = 0; +} Index: MultiSource/Benchmarks/Rodinia/LICENSE =================================================================== --- MultiSource/Benchmarks/Rodinia/LICENSE +++ MultiSource/Benchmarks/Rodinia/LICENSE @@ -0,0 +1,38 @@ +LICENSE TERMS + +Copyright (c)2008-2011 University of Virginia +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are permitted without royalty fees or other restrictions, provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + * Neither the name of the University of Virginia, the Dept. of Computer Science, nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE UNIVERSITY OF VIRGINIA OR THE SOFTWARE AUTHORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +If you use this software or a modified version of it, please cite the most relevant among the following papers: + +- M. A. Goodrum, M. J. Trotter, A. Aksel, S. T. Acton, and K. Skadron. Parallelization of Particle Filter Algorithms. In Proceedings +of the 3rd Workshop on Emerging Applications and Many-core Architecture (EAMA), in conjunction with the IEEE/ACM International +Symposium on Computer Architecture (ISCA), June 2010. + +- S. Che, M. Boyer, J. Meng, D. Tarjan, J. W. Sheaffer, Sang-Ha Lee and K. Skadron. +"Rodinia: A Benchmark Suite for Heterogeneous Computing". IEEE International Symposium +on Workload Characterization, Oct 2009. + +- J. Meng and K. Skadron. "Performance Modeling and Automatic Ghost Zone Optimization +for Iterative Stencil Loops on GPUs." In Proceedings of the 23rd Annual ACM International +Conference on Supercomputing (ICS), June 2009. + +- L.G. Szafaryn, K. Skadron and J. Saucerman. "Experiences Accelerating MATLAB Systems +Biology Applications." in Workshop on Biomedicine in Computing (BiC) at the International +Symposium on Computer Architecture (ISCA), June 2009. + +- M. Boyer, D. Tarjan, S. T. Acton, and K. Skadron. "Accelerating Leukocyte Tracking using CUDA: +A Case Study in Leveraging Manycore Coprocessors." In Proceedings of the International Parallel +and Distributed Processing Symposium (IPDPS), May 2009. + +- S. Che, M. Boyer, J. Meng, D. Tarjan, J. W. Sheaffer, and K. Skadron. "A Performance +Study of General Purpose Applications on Graphics Processors using CUDA" Journal of +Parallel and Distributed Computing, Elsevier, June 2008. Index: MultiSource/Benchmarks/Rodinia/Makefile =================================================================== --- MultiSource/Benchmarks/Rodinia/Makefile +++ MultiSource/Benchmarks/Rodinia/Makefile @@ -0,0 +1,3 @@ +LEVEL = ../../.. +PARALLEL_DIRS := backprop +include $(LEVEL)/Makefile.programs Index: MultiSource/Benchmarks/Rodinia/hotspot/CMakeLists.txt =================================================================== --- MultiSource/Benchmarks/Rodinia/hotspot/CMakeLists.txt +++ MultiSource/Benchmarks/Rodinia/hotspot/CMakeLists.txt @@ -0,0 +1,7 @@ +set(PROG hotspot) +set(FP_ABSTOLERANCE 0.00001) +list(APPEND CFLAGS -I${CMAKE_CURRENT_SOURCE_DIR}/../Common) +set(Source hotspotKernel.c main.c ../Common/glibc_compat_rand.c) +set(WORKDIR ${CMAKE_CURRENT_BINARY_DIR}) + +llvm_multisource() Index: MultiSource/Benchmarks/Rodinia/hotspot/Makefile =================================================================== --- MultiSource/Benchmarks/Rodinia/hotspot/Makefile +++ MultiSource/Benchmarks/Rodinia/hotspot/Makefile @@ -0,0 +1,8 @@ +LEVEL = ../../../.. +LIBS += -lm +LDFLAGS += -lm +PROG = hotspot + +FP_ABSTOLERANCE := 0.00001 + +include ../../Makefile.multisrc Index: MultiSource/Benchmarks/Rodinia/hotspot/hotspot.h =================================================================== --- MultiSource/Benchmarks/Rodinia/hotspot/hotspot.h +++ MultiSource/Benchmarks/Rodinia/hotspot/hotspot.h @@ -0,0 +1,23 @@ +#ifndef __HOTSPOT_H_ +#define __HOTSPOT_H_ + +#define STR_SIZE 256 + +/* maximum power density possible (say 300W for a 10mm x 10mm chip) */ +#define MAX_PD (3.0e6) +/* required precision in degrees */ +#define PRECISION 0.001 +#define SPEC_HEAT_SI 1.75e6 +#define K_SI 100 +/* capacitance fitting factor */ +#define FACTOR_CHIP 0.5 + +// Run Options +#define grid_rows 512 +#define grid_cols 512 +#define num_iterations 200 // sim_time in original hotspot + +// seed for random number generator +#define SEED 7 + +#endif /* __HOTSPOT_H_ */ \ No newline at end of file Index: MultiSource/Benchmarks/Rodinia/hotspot/hotspot.reference_output =================================================================== --- MultiSource/Benchmarks/Rodinia/hotspot/hotspot.reference_output +++ MultiSource/Benchmarks/Rodinia/hotspot/hotspot.reference_output @@ -0,0 +1,2623 @@ +311.556 +311.558 +311.545 +311.559 +311.557 +311.557 +306.415 +306.416 +306.414 +306.412 +306.415 +296.949 +296.951 +296.947 +296.953 +296.95 +284.475 +284.473 +284.475 +284.471 +284.483 +270.366 +270.369 +270.371 +270.369 +270.368 +255.743 +255.739 +255.742 +255.74 +255.74 +241.374 +241.375 +241.376 +241.374 +241.372 +227.871 +227.869 +227.869 +227.867 +227.871 +215.827 +215.827 +215.826 +215.83 +215.828 +215.828 +205.924 +205.92 +205.919 +205.92 +205.923 +198.767 +198.766 +198.765 +198.769 +198.771 +194.723 +194.724 +194.728 +194.726 +194.729 +193.69 +193.688 +193.686 +193.69 +193.69 +195.082 +195.081 +195.083 +195.082 +195.086 +198.015 +198.009 +198.008 +198.011 +198.01 +201.54 +201.532 +201.538 +201.538 +201.541 +205.092 +205.097 +205.098 +205.102 +205.097 +205.102 +208.769 +208.766 +208.768 +208.766 +208.774 +213.339 +213.335 +213.338 +213.335 +213.341 +220.044 +220.036 +220.042 +220.04 +220.042 +230.009 +230.012 +230.012 +230.014 +230.012 +243.696 +243.701 +243.69 +243.699 +243.695 +260.478 +260.481 +260.474 +260.478 +260.477 +278.642 +278.635 +278.641 +278.637 +278.637 +295.756 +295.75 +295.75 +295.755 +295.755 +309.283 +309.274 +309.276 +309.276 +309.276 +309.277 +317.153 +317.154 +317.149 +317.153 +317.149 +318.228 +318.221 +318.231 +318.225 +318.227 +312.427 +312.429 +312.429 +312.432 +312.423 +300.712 +300.711 +300.711 +300.716 +300.713 +284.811 +284.814 +284.812 +284.815 +284.813 +266.95 +266.945 +266.945 +266.944 +266.943 +249.439 +249.433 +249.436 +249.432 +249.437 +234.389 +234.385 +234.385 +234.379 +234.392 +234.386 +223.366 +223.373 +223.366 +223.362 +223.366 +217.195 +217.201 +217.196 +217.197 +217.194 +215.823 +215.821 +215.822 +215.824 +215.822 +218.404 +218.41 +218.403 +218.407 +218.407 +223.58 +223.584 +223.58 +223.578 +223.577 +229.94 +229.935 +229.934 +229.931 +229.939 +236.513 +236.514 +236.519 +236.513 +236.517 +243.107 +243.103 +243.103 +243.104 +243.106 +243.109 +250.131 +250.138 +250.13 +250.133 +250.135 +258.163 +258.172 +258.168 +258.165 +258.168 +267.291 +267.289 +267.29 +267.289 +267.294 +276.686 +276.682 +276.689 +276.689 +276.686 +284.786 +284.788 +284.788 +284.789 +284.788 +289.86 +289.863 +289.863 +289.859 +289.865 +290.787 +290.784 +290.784 +290.781 +290.783 +287.6 +287.596 +287.607 +287.602 +287.597 +281.598 +281.597 +281.598 +281.594 +281.594 +281.6 +274.881 +274.885 +274.879 +274.886 +274.886 +269.681 +269.686 +269.686 +269.682 +269.686 +267.592 +267.594 +267.596 +267.599 +267.596 +269.1 +269.102 +269.097 +269.1 +269.104 +273.481 +273.479 +273.481 +273.477 +273.482 +279.114 +279.112 +279.11 +279.111 +279.112 +284.068 +284.07 +284.076 +284.071 +284.075 +286.826 +286.825 +286.828 +286.83 +286.824 +286.825 +286.717 +286.72 +286.717 +286.72 +286.721 +284.145 +284.144 +284.148 +284.143 +284.149 +280.373 +280.377 +280.374 +280.371 +280.375 +277.078 +277.077 +277.077 +277.084 +277.08 +275.796 +275.803 +275.796 +275.802 +275.792 +277.41 +277.415 +277.409 +277.414 +277.413 +281.872 +281.878 +281.872 +281.876 +281.877 +288.225 +288.23 +288.226 +288.228 +288.225 +288.224 +294.907 +294.91 +294.913 +294.91 +294.911 +300.256 +300.259 +300.262 +300.26 +300.261 +303.042 +303.038 +303.032 +303.036 +303.035 +302.748 +302.748 +302.748 +302.751 +302.75 +299.689 +299.695 +299.693 +299.699 +299.693 +294.727 +294.731 +294.726 +294.729 +294.728 +288.92 +288.927 +288.92 +288.923 +288.927 +283.254 +283.25 +283.256 +283.256 +283.253 +278.402 +278.401 +278.404 +278.405 +278.405 +278.408 +274.731 +274.731 +274.732 +274.731 +274.731 +272.292 +272.294 +272.296 +272.298 +272.294 +270.854 +270.855 +270.858 +270.86 +270.857 +269.905 +269.913 +269.912 +269.912 +269.913 +268.738 +268.737 +268.731 +268.734 +268.737 +266.587 +266.588 +266.588 +266.588 +266.589 +262.981 +262.976 +262.986 +262.977 +262.98 +257.912 +257.908 +257.908 +257.909 +257.911 +257.913 +251.938 +251.937 +251.933 +251.936 +251.937 +246.025 +246.03 +246.031 +246.03 +246.028 +241.226 +241.223 +241.223 +241.222 +241.225 +238.26 +238.263 +238.265 +238.258 +238.255 +237.393 +237.391 +237.391 +237.388 +237.391 +238.411 +238.406 +238.412 +238.409 +238.408 +240.849 +240.853 +240.856 +240.853 +240.851 +244.195 +244.194 +244.197 +244.196 +244.193 +244.194 +247.947 +247.948 +247.949 +247.947 +247.953 +251.606 +251.596 +251.595 +251.601 +251.6 +254.483 +254.488 +254.485 +254.488 +254.487 +255.769 +255.765 +255.769 +255.773 +255.77 +254.573 +254.581 +254.578 +254.572 +254.577 +250.263 +250.262 +250.266 +250.269 +250.255 +242.769 +242.766 +242.769 +242.769 +242.769 +232.78 +232.782 +232.786 +232.789 +232.781 +221.74 +221.74 +221.743 +221.745 +221.745 +221.745 +211.526 +211.528 +211.529 +211.53 +211.527 +203.993 +203.994 +203.996 +204 +203.993 +200.471 +200.469 +200.475 +200.474 +200.473 +201.399 +201.395 +201.406 +201.4 +201.403 +206.222 +206.226 +206.228 +206.226 +206.225 +213.582 +213.578 +213.584 +213.586 +213.584 +221.705 +221.7 +221.707 +221.702 +221.703 +228.972 +228.969 +228.972 +228.978 +228.971 +228.976 +234.432 +234.438 +234.431 +234.43 +234.44 +238.081 +238.087 +238.086 +238.086 +238.086 +240.829 +240.823 +240.817 +240.823 +240.824 +244.073 +244.076 +244.079 +244.076 +244.075 +249.154 +249.161 +249.163 +249.152 +249.157 +256.693 +256.691 +256.691 +256.689 +256.697 +266.289 +266.291 +266.289 +266.288 +266.287 +276.661 +276.657 +276.658 +276.662 +276.662 +276.659 +286.101 +286.099 +286.101 +286.101 +286.105 +293.132 +293.131 +293.136 +293.133 +293.133 +297.021 +297.021 +297.023 +297.016 +297.017 +297.954 +297.957 +297.951 +297.954 +297.953 +296.853 +296.86 +296.859 +296.855 +296.858 +294.91 +294.917 +294.912 +294.909 +294.909 +293.091 +293.096 +293.097 +293.09 +293.09 +291.824 +291.828 +291.829 +291.83 +291.828 +290.997 +291.001 +290.997 +290.997 +290.993 +290.998 +290.212 +290.21 +290.213 +290.208 +290.208 +289.141 +289.139 +289.142 +289.135 +289.139 +287.743 +287.741 +287.74 +287.741 +287.738 +286.184 +286.188 +286.187 +286.189 +286.187 +284.588 +284.593 +284.598 +284.586 +284.592 +282.768 +282.765 +282.766 +282.763 +282.764 +280.198 +280.198 +280.195 +280.196 +280.197 +276.352 +276.352 +276.347 +276.345 +276.352 +276.351 +271.067 +271.064 +271.064 +271.07 +271.058 +264.868 +264.873 +264.87 +264.87 +264.874 +258.922 +258.918 +258.919 +258.923 +258.925 +254.596 +254.599 +254.597 +254.599 +254.593 +253.028 +253.037 +253.035 +253.03 +253.034 +254.741 +254.737 +254.739 +254.728 +254.739 +259.571 +259.574 +259.566 +259.569 +259.566 +266.922 +266.929 +266.921 +266.925 +266.924 +266.923 +275.917 +275.908 +275.913 +275.91 +275.908 +285.561 +285.557 +285.557 +285.559 +285.559 +294.901 +294.902 +294.898 +294.9 +294.9 +303.083 +303.085 +303.087 +303.083 +303.084 +309.527 +309.528 +309.526 +309.531 +309.529 +314.002 +314.004 +314.005 +313.997 +314.003 +316.677 +316.676 +316.677 +316.67 +316.673 +317.995 +317.996 +317.992 +317.994 +317.996 +318.504 +318.5 +318.504 +318.503 +318.506 +318.505 +318.6 +318.594 +318.593 +318.596 +318.602 +318.283 +318.285 +318.282 +318.283 +318.282 +317.044 +317.052 +317.047 +317.038 +317.047 +313.916 +313.919 +313.923 +313.919 +313.921 +307.828 +307.83 +307.837 +307.834 +307.837 +298.143 +298.145 +298.147 +298.142 +298.142 +285.123 +285.122 +285.13 +285.124 +285.125 +270.13 +270.139 +270.136 +270.133 +270.142 +270.132 +255.386 +255.386 +255.381 +255.39 +255.392 +243.333 +243.34 +243.338 +243.336 +243.337 +235.956 +235.955 +235.961 +235.951 +235.954 +234.18 +234.176 +234.181 +234.177 +234.183 +237.699 +237.694 +237.699 +237.698 +237.7 +245.049 +245.054 +245.055 +245.059 +245.057 +254.061 +254.057 +254.054 +254.066 +254.065 +262.308 +262.312 +262.311 +262.307 +262.311 +262.308 +267.83 +267.832 +267.83 +267.831 +267.831 +269.618 +269.619 +269.621 +269.617 +269.619 +267.961 +267.955 +267.961 +267.955 +267.954 +264.26 +264.255 +264.261 +264.262 +264.256 +260.47 +260.469 +260.473 +260.469 +260.475 +258.17 +258.171 +258.171 +258.167 +258.173 +257.86 +257.855 +257.86 +257.858 +257.863 +258.74 +258.735 +258.735 +258.741 +258.742 +259.068 +259.076 +259.075 +259.071 +259.073 +259.07 +256.969 +256.965 +256.965 +256.97 +256.965 +251.125 +251.122 +251.126 +251.125 +251.124 +241.335 +241.334 +241.332 +241.333 +241.333 +228.496 +228.49 +228.499 +228.5 +228.498 +214.366 +214.371 +214.371 +214.37 +214.368 +201.076 +201.078 +201.084 +201.076 +201.078 +190.596 +190.592 +190.593 +190.597 +190.595 +184.236 +184.239 +184.234 +184.241 +184.232 +184.236 +182.36 +182.364 +182.354 +182.36 +182.361 +184.269 +184.275 +184.276 +184.277 +184.271 +188.438 +188.431 +188.435 +188.443 +188.44 +192.925 +192.925 +192.927 +192.931 +192.928 +195.944 +195.942 +195.94 +195.941 +195.947 +196.264 +196.27 +196.266 +196.266 +196.271 +193.445 +193.448 +193.449 +193.444 +193.448 +187.712 +187.717 +187.711 +187.718 +187.716 +187.71 +179.79 +179.792 +179.787 +179.788 +179.785 +170.674 +170.676 +170.675 +170.674 +170.673 +161.562 +161.56 +161.557 +161.566 +161.558 +153.798 +153.786 +153.793 +153.794 +153.793 +148.75 +148.748 +148.741 +148.747 +148.747 +147.622 +147.62 +147.617 +147.62 +147.625 +151.079 +151.086 +151.085 +151.08 +151.081 +159.029 +159.021 +159.027 +159.025 +159.028 +170.496 +170.493 +170.496 +170.494 +170.491 +170.493 +183.833 +183.829 +183.836 +183.83 +183.83 +197.059 +197.052 +197.054 +197.061 +197.059 +208.307 +208.301 +208.309 +208.302 +208.309 +216.233 +216.231 +216.227 +216.229 +216.23 +220.364 +220.368 +220.361 +220.365 +220.366 +221.23 +221.238 +221.235 +221.233 +221.238 +220.224 +220.226 +220.225 +220.23 +220.228 +219.166 +219.163 +219.163 +219.16 +219.159 +219.16 +219.693 +219.692 +219.695 +219.696 +219.691 +222.816 +222.812 +222.815 +222.817 +222.819 +228.664 +228.653 +228.66 +228.657 +228.663 +236.675 +236.671 +236.668 +236.671 +236.671 +246.039 +246.039 +246.038 +246.039 +246.039 +256.051 +256.053 +256.054 +256.054 +256.055 +266.279 +266.281 +266.276 +266.275 +266.276 +276.43 +276.434 +276.43 +276.427 +276.428 +276.435 +286.156 +286.156 +286.153 +286.159 +286.152 +294.96 +294.959 +294.955 +294.964 +294.959 +302.31 +302.307 +302.31 +302.308 +302.31 +307.901 +307.895 +307.893 +307.894 +307.898 +311.825 +311.827 +311.822 +311.824 +311.824 +314.607 +314.598 +314.606 +314.603 +314.6 +316.892 +316.898 +316.9 +316.892 +316.892 +319.151 +319.15 +319.155 +319.149 +319.147 +321.321 +321.328 +321.328 +321.329 +321.325 +321.327 +322.845 +322.844 +322.844 +322.843 +322.845 +322.81 +322.813 +322.808 +322.814 +322.813 +320.456 +320.466 +320.455 +320.459 +320.464 +315.559 +315.559 +315.557 +315.556 +315.555 +308.68 +308.679 +308.68 +308.68 +308.678 +301.148 +301.147 +301.149 +301.145 +301.149 +294.604 +294.608 +294.604 +294.597 +294.595 +290.485 +290.481 +290.489 +290.489 +290.488 +290.484 +289.571 +289.571 +289.573 +289.572 +289.571 +291.771 +291.771 +291.778 +291.774 +291.767 +296.302 +296.307 +296.296 +296.299 +296.298 +302.001 +301.998 +301.996 +301.999 +302.003 +307.759 +307.76 +307.763 +307.762 +307.757 +312.761 +312.753 +312.754 +312.753 +312.761 +316.54 +316.534 +316.535 +316.533 +316.538 +318.983 +318.983 +318.985 +318.984 +318.983 +318.981 +320.235 +320.239 +320.239 +320.237 +320.238 +320.639 +320.641 +320.643 +320.643 +320.641 +320.714 +320.722 +320.714 +320.712 +320.714 +321.086 +321.088 +321.085 +321.086 +321.078 +322.373 +322.373 +322.371 +322.377 +322.371 +324.998 +324.999 +324.995 +324.994 +324.997 +328.954 +328.946 +328.955 +328.95 +328.952 +333.668 +333.666 +333.669 +333.666 +333.662 +338.067 +338.057 +338.059 +338.058 +338.057 +338.064 +340.801 +340.799 +340.799 +340.799 +340.802 +340.737 +340.732 +340.733 +340.729 +340.732 +337.287 +337.288 +337.289 +337.293 +337.281 +330.662 +330.668 +330.668 +330.666 +330.671 +321.736 +321.738 +321.736 +321.739 +321.735 +311.691 +311.684 +311.69 +311.697 +311.69 +301.664 +301.66 +301.66 +301.664 +301.662 +292.454 +292.446 +292.447 +292.445 +292.448 +292.449 +284.464 +284.472 +284.465 +284.461 +284.467 +277.818 +277.825 +277.818 +277.816 +277.818 +272.433 +272.434 +272.429 +272.433 +272.433 +268.083 +268.085 +268.086 +268.083 +268.083 +264.392 +264.399 +264.396 +264.401 +264.394 +260.848 +260.852 +260.849 +260.847 +260.852 +256.87 +256.875 +256.873 +256.88 +256.876 +251.995 +251.989 +251.99 +251.99 +251.994 +251.997 +246.03 +246.036 +246.034 +246.029 +246.036 +239.245 +239.243 +239.244 +239.242 +239.249 +232.308 +232.305 +232.31 +232.31 +232.307 +226.16 +226.152 +226.159 +226.155 +226.157 +221.58 +221.585 +221.586 +221.588 +221.581 +218.908 +218.909 +218.908 +218.903 +218.906 +217.729 +217.733 +217.729 +217.733 +217.731 +217.038 +217.043 +217.04 +217.042 +217.041 +215.596 +215.603 +215.603 +215.605 +215.598 +215.604 +212.501 +212.498 +212.495 +212.495 +212.503 +207.541 +207.535 +207.531 +207.537 +207.537 +201.349 +201.344 +201.349 +201.355 +201.346 +195.124 +195.119 +195.128 +195.129 +195.128 +190.136 +190.138 +190.139 +190.141 +190.135 +187.209 +187.212 +187.206 +187.212 +187.211 +186.457 +186.456 +186.454 +186.46 +186.453 +187.342 +187.344 +187.344 +187.35 +187.345 +187.348 +189.093 +189.09 +189.093 +189.09 +189.084 +191.062 +191.062 +191.057 +191.063 +191.062 +193.06 +193.06 +193.058 +193.063 +193.065 +195.226 +195.222 +195.216 +195.222 +195.222 +197.747 +197.749 +197.743 +197.743 +197.746 +200.567 +200.574 +200.566 +200.565 +200.563 +203.261 +203.258 +203.25 +203.258 +203.259 +205.172 +205.178 +205.174 +205.181 +205.177 +205.17 +205.786 +205.783 +205.788 +205.783 +205.784 +204.914 +204.909 +204.905 +204.91 +204.907 +202.792 +202.795 +202.788 +202.789 +202.792 +199.932 +199.935 +199.928 +199.933 +199.932 +196.907 +196.906 +196.902 +196.906 +196.906 +194.166 +194.173 +194.167 +194.171 +194.168 +192.084 +192.087 +192.088 +192.091 +192.089 +191.024 +191.027 +191.018 +191.026 +191.028 +191.407 +191.41 +191.407 +191.408 +191.404 +191.408 +193.672 +193.672 +193.678 +193.679 +193.678 +198.122 +198.118 +198.117 +198.11 +198.115 +204.642 +204.646 +204.639 +204.644 +204.644 +212.779 +212.78 +212.775 +212.781 +212.776 +221.771 +221.775 +221.771 +221.774 +221.773 +230.881 +230.887 +230.882 +230.886 +230.882 +239.588 +239.582 +239.584 +239.584 +239.587 +247.595 +247.594 +247.595 +247.594 +247.593 +247.596 +254.729 +254.728 +254.73 +254.734 +254.732 +260.767 +260.77 +260.771 +260.775 +260.769 +265.381 +265.385 +265.378 +265.381 +265.378 +268.25 +268.246 +268.244 +268.247 +268.246 +269.237 +269.237 +269.232 +269.236 +269.233 +268.47 +268.465 +268.464 +268.472 +268.464 +266.285 +266.283 +266.283 +266.287 +266.285 +263.082 +263.086 +263.078 +263.08 +263.085 +263.093 +259.262 +259.251 +259.259 +259.255 +259.26 +255.227 +255.229 +255.229 +255.23 +255.232 +251.554 +251.554 +251.557 +251.555 +251.552 +249.023 +249.027 +249.032 +249.032 +249.021 +248.593 +248.593 +248.597 +248.597 +248.595 +251.057 +251.057 +251.054 +251.053 +251.053 +256.712 +256.71 +256.712 +256.712 +256.707 +265.098 +265.095 +265.1 +265.097 +265.098 +275.013 +275.012 +275.01 +275.01 +275.011 +275.015 +284.763 +284.763 +284.765 +284.769 +284.765 +292.634 +292.634 +292.642 +292.639 +292.639 +297.312 +297.315 +297.312 +297.316 +297.312 +298.206 +298.208 +298.209 +298.205 +298.21 +295.608 +295.604 +295.608 +295.603 +295.603 +290.549 +290.544 +290.553 +290.546 +290.541 +284.519 +284.515 +284.518 +284.517 +284.513 +278.955 +278.957 +278.953 +278.95 +278.949 +278.957 +274.745 +274.744 +274.744 +274.746 +274.743 +271.931 +271.929 +271.93 +271.936 +271.925 +269.737 +269.733 +269.738 +269.738 +269.736 +267.037 +267.032 +267.035 +267.03 +267.033 +262.938 +262.938 +262.936 +262.94 +262.942 +257.294 +257.295 +257.296 +257.291 +257.294 +250.743 +250.736 +250.739 +250.741 +250.741 +244.363 +244.361 +244.367 +244.365 +244.362 +244.368 +239.11 +239.107 +239.102 +239.108 +239.108 +235.303 +235.3 +235.302 +235.304 +235.303 +232.583 +232.583 +232.581 +232.583 +232.579 +230.158 +230.153 +230.156 +230.158 +230.151 +227.342 +227.339 +227.341 +227.348 +227.348 +223.986 +223.983 +223.99 +223.98 +223.984 +220.598 +220.591 +220.596 +220.593 +220.6 +218.199 +218.195 +218.2 +218.201 +218.198 +217.854 +217.848 +217.853 +217.852 +217.853 +217.854 +220.184 +220.191 +220.188 +220.19 +220.187 +225.088 +225.093 +225.087 +225.092 +225.091 +231.701 +231.698 +231.703 +231.696 +231.698 +238.711 +238.71 +238.707 +238.715 +238.708 +244.81 +244.806 +244.807 +244.814 +244.809 +249.042 +249.041 +249.05 +249.044 +249.05 +251.015 +251.011 +251.017 +251.01 +251.019 +250.884 +250.883 +250.882 +250.878 +250.883 +250.879 +249.254 +249.256 +249.264 +249.259 +249.258 +247.108 +247.111 +247.106 +247.108 +247.107 +245.572 +245.574 +245.577 +245.571 +245.571 +245.773 +245.766 +245.765 +245.772 +245.764 +248.521 +248.529 +248.524 +248.526 +248.523 +254.132 +254.128 +254.137 +254.133 +254.13 +262.32 +262.316 +262.321 +262.322 +262.32 +272.402 +272.402 +272.402 +272.404 +272.403 +272.401 +283.547 +283.549 +283.548 +283.54 +283.542 +294.965 +294.964 +294.966 +294.964 +294.96 +305.96 +305.963 +305.965 +305.963 +305.961 +315.857 +315.852 +315.851 +315.851 +315.854 +323.88 +323.881 +323.88 +323.878 +323.88 +329.256 +329.259 +329.255 +329.259 +329.255 +331.318 +331.315 +331.321 +331.316 +331.325 +329.804 +329.806 +329.807 +329.81 +329.815 +325.009 +325.01 +325.011 +325.011 +325.011 +325.012 +317.815 +317.817 +317.81 +317.814 +317.813 +309.484 +309.486 +309.493 +309.491 +309.484 +301.36 +301.363 +301.365 +301.365 +301.36 +294.452 +294.451 +294.447 +294.451 +294.451 +289.208 +289.216 +289.209 +289.205 +289.208 +285.541 +285.54 +285.541 +285.538 +285.538 +283.013 +283.014 +283.015 +283.013 +283.014 +281.193 +281.197 +281.195 +281.198 +281.198 +281.193 +279.86 +279.85 +279.848 +279.853 +279.848 +278.954 +278.954 +278.956 +278.958 +278.95 +278.452 +278.446 +278.454 +278.455 +278.453 +278.038 +278.037 +278.034 +278.037 +278.043 +277.095 +277.092 +277.097 +277.094 +277.09 +274.926 +274.924 +274.922 +274.92 +274.923 +271.155 +271.154 +271.157 +271.153 +271.151 +266.051 +266.054 +266.053 +266.052 +266.054 +266.048 +260.574 +260.573 +260.573 +260.567 +260.571 +256.076 +256.075 +256.079 +256.081 +256.077 +253.916 +253.914 +253.915 +253.921 +253.917 +254.941 +254.938 +254.936 +254.94 +254.944 +259.267 +259.269 +259.272 +259.272 +259.271 +266.278 +266.269 +266.27 +266.27 +266.272 +274.78 +274.776 +274.771 +274.775 +274.776 +283.404 +283.406 +283.41 +283.406 +283.403 +290.927 +290.927 +290.929 +290.934 +290.929 +290.928 +296.499 +296.498 +296.505 +296.502 +296.504 +299.753 +299.753 +299.752 +299.754 +299.757 +300.713 +300.715 +300.712 +300.715 +300.714 +299.601 +299.606 +299.6 +299.602 +299.605 +296.659 +296.661 +296.654 +296.656 +296.657 +292.011 +292.007 +292.009 +292.006 +292.005 +285.686 +285.683 +285.683 +285.686 +285.684 +277.738 +277.746 +277.742 +277.743 +277.739 +277.739 +268.417 +268.414 +268.422 +268.415 +268.412 +258.227 +258.23 +258.224 +258.23 +258.231 +247.924 +247.926 +247.925 +247.925 +247.925 +238.329 +238.332 +238.327 +238.327 +238.328 +230.128 +230.124 +230.127 +230.129 +230.13 +223.774 +223.773 +223.768 +223.779 +223.776 +219.482 +219.483 +219.486 +219.487 +219.486 +217.382 +217.387 +217.385 +217.386 +217.386 +217.388 +217.572 +217.574 +217.577 +217.58 +217.573 +220.184 +220.18 +220.178 +220.179 +220.178 +225.247 +225.245 +225.244 +225.247 +225.244 +232.673 +232.663 +232.667 +232.667 +232.667 +242.059 +242.056 +242.06 +242.061 +242.054 +252.723 +252.722 +252.724 +252.727 +252.726 +263.672 +263.675 +263.672 +263.677 +263.68 +273.713 +273.712 +273.71 +273.715 +273.717 +281.561 +281.561 +281.562 +281.562 +281.568 +281.563 +286.115 +286.112 +286.111 +286.108 +286.116 +286.676 +286.678 +286.674 +286.678 +286.672 +283.263 +283.266 +283.263 +283.264 +283.265 +276.669 +276.669 +276.671 +276.673 +276.672 +268.316 +268.314 +268.316 +268.319 +268.315 +259.767 +259.769 +259.769 +259.773 +259.766 +252.174 +252.179 +252.173 +252.17 +252.176 +245.812 +245.808 +245.818 +245.81 +245.809 +245.813 +240.036 +240.035 +240.042 +240.032 +240.042 +233.624 +233.622 +233.623 +233.62 +233.622 +225.352 +225.359 +225.355 +225.356 +225.353 +214.603 +214.599 +214.608 +214.603 +214.605 +201.615 +201.613 +201.62 +201.617 +201.612 +187.519 +187.521 +187.521 +187.518 +187.523 +174.043 +174.047 +174.042 +174.042 +174.045 +163.134 +163.133 +163.134 +163.132 +163.13 +163.133 +156.591 +156.59 +156.586 +156.583 +156.588 +155.756 +155.753 +155.758 +155.756 +155.759 +161.298 +161.301 +161.297 +161.296 +161.301 +173.075 +173.075 +173.074 +173.076 +173.075 +190.071 +190.068 +190.068 +190.069 +190.069 +210.423 +210.426 +210.422 +210.43 +210.427 +231.624 +231.623 +231.62 +231.624 +231.62 +250.86 +250.863 +250.86 +250.86 +250.858 +265.59 +265.595 +265.594 +265.587 +265.591 +265.591 +274.125 +274.123 +274.127 +274.118 +274.124 +276.02 +276.019 +276.017 +276.019 +276.02 +272.192 +272.189 +272.184 +272.192 +272.193 +264.634 +264.64 +264.629 +264.638 +264.637 +255.862 +255.864 +255.858 +255.864 +255.864 +248.216 +248.222 +248.214 +248.22 +248.212 +243.351 +243.355 +243.348 +243.351 +243.35 +241.917 +241.914 +241.911 +241.91 +241.919 +241.913 +243.551 +243.545 +243.553 +243.545 +243.545 +247.171 +247.17 +247.17 +247.169 +247.17 +251.426 +251.425 +251.425 +251.427 +251.424 +255.184 +255.186 +255.184 +255.182 +255.186 +257.873 +257.88 +257.874 +257.876 +257.875 +259.615 +259.62 +259.615 +259.614 +259.616 +261.027 +261.032 +261.029 +261.024 +261.021 +262.912 +262.911 +262.907 +262.908 +262.911 +262.911 +265.944 +265.94 +265.944 +265.934 +265.936 +270.481 +270.479 +270.477 +270.481 +270.48 +276.551 +276.559 +276.557 +276.553 +276.553 +283.882 +283.889 +283.887 +283.891 +283.889 +291.88 +291.879 +291.876 +291.879 +291.882 +299.622 +299.621 +299.618 +299.617 +299.62 +305.924 +305.919 +305.925 +305.921 +305.92 +309.554 +309.55 +309.55 +309.549 +309.553 +309.522 +309.519 +309.52 +309.523 +309.521 +309.52 +305.46 +305.461 +305.454 +305.46 +305.46 +297.81 +297.814 +297.808 +297.808 +297.809 +287.767 +287.777 +287.772 +287.772 +287.77 +277.037 +277.041 +277.039 +277.036 +277.037 +267.299 +267.304 +267.299 +267.298 +267.307 +259.789 +259.781 +259.788 +259.784 +259.789 +254.877 +254.877 +254.877 +254.876 +254.878 +252.063 +252.07 +252.064 +252.062 +252.07 +252.072 +250.189 +250.189 +250.188 +250.193 +250.191 +247.909 +247.917 +247.909 +247.911 +247.908 +244.276 +244.283 +244.28 +244.277 +244.281 +239.074 +239.07 +239.069 +239.069 +239.073 +232.755 +232.753 +232.75 +232.752 +232.756 +226.177 +226.175 +226.183 +226.176 +226.183 +220.176 +220.172 +220.174 +220.173 +220.172 +215.308 +215.31 +215.308 +215.305 +215.31 +215.302 +211.921 +211.922 +211.926 +211.923 +211.925 +210.269 +210.267 +210.264 +210.267 +210.258 +210.63 +210.636 +210.633 +210.634 +210.634 +213.353 +213.361 +213.355 +213.358 +213.355 +218.668 +218.66 +218.659 +218.66 +218.663 +226.562 +226.554 +226.558 +226.556 +226.557 +236.774 +236.776 +236.775 +236.778 +236.776 +248.75 +248.749 +248.748 +248.753 +248.753 +261.657 +261.657 +261.656 +261.649 +261.655 +261.655 +274.41 +274.413 +274.411 +274.408 +274.411 +285.826 +285.834 +285.828 +285.829 +285.835 +294.787 +294.792 +294.796 +294.789 +294.796 +300.513 +300.507 +300.509 +300.514 +300.506 +302.762 +302.762 +302.764 +302.766 +302.766 +301.939 +301.938 +301.938 +301.942 +301.942 +298.927 +298.924 +298.927 +298.924 +298.929 +294.848 +294.849 +294.849 +294.844 +294.843 +294.849 +290.799 +290.801 +290.796 +290.802 +290.793 +287.643 +287.648 +287.652 +287.643 +287.644 +285.946 +285.935 +285.947 +285.93 +285.945 +exit 0 Index: MultiSource/Benchmarks/Rodinia/hotspot/hotspotKernel.c =================================================================== --- MultiSource/Benchmarks/Rodinia/hotspot/hotspotKernel.c +++ MultiSource/Benchmarks/Rodinia/hotspot/hotspotKernel.c @@ -0,0 +1,101 @@ +#include "hotspot.h" + +void hotspotKernel(double result[grid_rows][grid_cols], + double temp[grid_rows][grid_cols], + double power[grid_rows][grid_cols], double Cap, double Rx, + double Ry, double Rz, double step, double ambTemp) { + for (int i = 0; i < num_iterations; i++) { + double delta; + int r, c; + for (r = 1; r < grid_rows - 1; r++) { + for (c = 1; c < grid_cols - 1; c++) { + delta = (step / Cap) * + (power[r][c] + + (temp[(r + 1)][c] + temp[(r - 1)][c] - 2.0 * temp[r][c]) / Ry + + (temp[r][c + 1] + temp[r][c - 1] - 2.0 * temp[r][c]) / Rx + + (ambTemp - temp[r][c]) / Rz); + + /* Update Temperatures */ + result[r][c] = temp[r][c] + delta; + } + } + + /* Corner 1 */ + delta = (step / Cap) * + (power[0][0] + (temp[0][1] - temp[0][0]) / Rx + + (temp[1][0] - temp[0][0]) / Ry + (ambTemp - temp[0][0]) / Rz); + result[0][0] = temp[0][0] + delta; + + /* Corner 2 */ + delta = + (step / Cap) * (power[0][grid_cols - 1] + + (temp[0][c - 1] - temp[0][grid_cols - 1]) / Rx + + (temp[1][grid_cols - 1] - temp[0][grid_cols - 1]) / Ry + + (ambTemp - temp[0][grid_cols - 1]) / Rz); + result[0][grid_cols - 1] = temp[0][grid_cols - 1] + delta; + + /* Corner 3 */ + delta = + (step / Cap) * (power[grid_rows - 1][grid_cols - 1] + + (temp[grid_rows - 1][grid_cols - 1 - 1] - + temp[grid_rows - 1][grid_cols - 1]) / + Rx + + (temp[(grid_rows - 2)][grid_cols - 1] - + temp[grid_rows - 1][grid_cols - 1]) / + Ry + + (ambTemp - temp[grid_rows - 1][grid_cols - 1]) / Rz); + result[grid_rows - 1][grid_cols - 1] = + temp[grid_rows - 1][grid_cols - 1] + delta; + + /* Corner 4 */ + delta = (step / Cap) * + (power[grid_rows - 1][0] + + (temp[grid_rows - 1][1] - temp[grid_rows - 1][0]) / Rx + + (temp[(grid_rows - 2)][0] - temp[grid_rows - 1][0]) / Ry + + (ambTemp - temp[grid_rows - 1][0]) / Rz); + result[grid_rows - 1][0] = temp[grid_rows - 1][0] + delta; + + // Top and Bottom Edge + for (c = 1; c < grid_cols - 1; c++) { + + delta = (step / Cap) * + (power[0][c] + + (temp[0][c + 1] + temp[0][c - 1] - 2.0 * temp[0][c]) / Rx + + (temp[1][c] - temp[0][c]) / Ry + (ambTemp - temp[0][c]) / Rz); + result[0][c] = temp[0][c] + delta; + + delta = (step / Cap) * + (power[grid_rows - 1][c] + + (temp[grid_rows - 1][c + 1] + temp[grid_rows - 1][c - 1] - + 2.0 * temp[grid_rows - 1][c]) / + Rx + + (temp[(grid_rows - 2)][c] - temp[grid_rows - 1][c]) / Ry + + (ambTemp - temp[grid_rows - 1][c]) / Rz); + result[grid_rows - 1][c] = temp[grid_rows - 1][c] + delta; + } + + // Left and right Edge + for (r = 1; r < grid_rows - 1; r++) { + delta = (step / Cap) * + (power[r][grid_cols - 1] + + (temp[(r + 1)][grid_cols - 1] + temp[(r - 1)][grid_cols - 1] - + 2.0 * temp[r][grid_cols - 1]) / + Ry + + (temp[r][grid_cols - 1 - 1] - temp[r][grid_cols - 1]) / Rx + + (ambTemp - temp[r][grid_cols - 1]) / Rz); + result[r][grid_cols - 1] = temp[r][grid_cols - 1] + delta; + + delta = (step / Cap) * + (power[r][0] + + (temp[(r + 1)][0] + temp[(r - 1)][0] - 2.0 * temp[r][0]) / Ry + + (temp[r][1] - temp[r][0]) / Rx + (ambTemp - temp[r][0]) / Rz); + result[r][0] = temp[r][0] + delta; + } + + for (r = 0; r < grid_rows; r++) { + for (c = 0; c < grid_cols; c++) { + temp[r][c] = result[r][c]; + } + } + } +} Index: MultiSource/Benchmarks/Rodinia/hotspot/main.c =================================================================== --- MultiSource/Benchmarks/Rodinia/hotspot/main.c +++ MultiSource/Benchmarks/Rodinia/hotspot/main.c @@ -0,0 +1,83 @@ +#include "hotspot.h" +#include +#include +#include + +/* instead of printing all the values, we only print a part of array (every + 100th value) */ +#define PRINT_GAP 100 + +/* chip parameters */ +double t_chip = 0.0005; +double chip_height = 0.016; +double chip_width = 0.016; +double amb_temp = 80.0; + +void hotspotKernel(double result[grid_rows][grid_cols], + double temp[grid_rows][grid_cols], + double power[grid_rows][grid_cols], double Cap, double Rx, + double Ry, double Rz, double step, double ambTemp); + +/* Transient solver driver routine: simply converts the heat + * transfer differential equations to difference equations + * and solves the difference equations by iterating + */ +void compute_tran_temp(double result[grid_rows][grid_cols], + double temp[grid_rows][grid_cols], + double power[grid_rows][grid_cols]) { + + double grid_height = chip_height / grid_rows; + double grid_width = chip_width / grid_cols; + + double Cap = FACTOR_CHIP * SPEC_HEAT_SI * t_chip * grid_width * grid_height; + double Rx = grid_width / (2.0 * K_SI * t_chip * grid_height); + double Ry = grid_height / (2.0 * K_SI * t_chip * grid_width); + double Rz = t_chip / (K_SI * grid_height * grid_width); + + double max_slope = MAX_PD / (FACTOR_CHIP * t_chip * SPEC_HEAT_SI); + double step = PRECISION / max_slope; + + hotspotKernel(result, temp, power, Cap, Rx, Ry, Rz, step, amb_temp); +} + +int main(int argc, char **argv) { + + /* allocate memory for the temperature and power array */ + double(*temp)[grid_rows][grid_cols] = + malloc(grid_rows * grid_cols * sizeof(double)); + double(*power)[grid_rows][grid_cols] = + malloc(grid_rows * grid_cols * sizeof(double)); + double(*result)[grid_rows][grid_cols] = + malloc(grid_rows * grid_cols * sizeof(double)); + + if (!temp || !power || !result) + fprintf(stderr, "Unable to allocate memory"); + + glibc_compat_srand(SEED); + + /* read initial temperatures and input power */ + for (int i = 0; i < grid_rows; i++) { + double x = ((glibc_compat_rand()) % 512); + double y = ((glibc_compat_rand()) % 128) * 1e-6; + for (int j = 0; j < grid_cols; j++) { + (*temp)[i][j] = x + ((glibc_compat_rand()) % 128) * 1e-3; + (*power)[i][j] = y; + (*result)[i][j] = 0.0; + } + } + + compute_tran_temp(*result, *temp, *power); + + /* output results */ + for (int i = 0; i < grid_rows; i++) { + for (int j = 0; j < grid_cols; j++) { + if ((i * grid_cols + j) % PRINT_GAP == 0) { + fprintf(stdout, "%g\n", (*result)[i][j]); + } + } + } + + free(temp); + free(power); + return 0; +} Index: MultiSource/Benchmarks/Rodinia/srad/CMakeLists.txt =================================================================== --- MultiSource/Benchmarks/Rodinia/srad/CMakeLists.txt +++ MultiSource/Benchmarks/Rodinia/srad/CMakeLists.txt @@ -0,0 +1,7 @@ +set(PROG srad) +list(APPEND LDFLAGS -lm) +set(FP_ABSTOLERANCE 0.00001) +list(APPEND CFLAGS -I${CMAKE_CURRENT_SOURCE_DIR}/../Common) +set(Source main.c sradKernel.c ../Common/glibc_compat_rand.c) +set(WORKDIR ${CMAKE_CURRENT_BINARY_DIR}) +llvm_multisource() Index: MultiSource/Benchmarks/Rodinia/srad/Makefile =================================================================== --- MultiSource/Benchmarks/Rodinia/srad/Makefile +++ MultiSource/Benchmarks/Rodinia/srad/Makefile @@ -0,0 +1,9 @@ +LEVEL = ../../../.. +LIBS += -lm +LDFLAGS += -lm +PROG = srad + +FP_ABSTOLERANCE := 0.00001 + +include ../../Makefile.multisrc + Index: MultiSource/Benchmarks/Rodinia/srad/main.c =================================================================== --- MultiSource/Benchmarks/Rodinia/srad/main.c +++ MultiSource/Benchmarks/Rodinia/srad/main.c @@ -0,0 +1,85 @@ +#include "glibc_compat_rand.h" +#include "srad.h" +#include +#include +#include +#include +void random_matrix(float I[ROWS][COLS]); +void srad_kernel(float dN[ROWS][COLS], float dS[ROWS][COLS], + float dW[ROWS][COLS], float dE[ROWS][COLS], + float I[ROWS][COLS], float J[ROWS][COLS], float c[ROWS][COLS]); + +int main(int argc, char *argv[]) { + int size_I; + + float(*c)[ROWS][COLS]; + float(*dN)[ROWS][COLS]; + float(*dS)[ROWS][COLS]; + float(*dW)[ROWS][COLS]; + float(*dE)[ROWS][COLS]; + float(*I)[ROWS][COLS]; + float(*J)[ROWS][COLS]; + + if ((ROWS % 16 != 0) || (COLS % 16 != 0)) { + fprintf(stderr, "ROWS and COLS must be multiples of 16\n"); + exit(1); + } + + size_I = COLS * ROWS; + + I = (float(*)[ROWS][COLS])malloc(sizeof(float) * size_I); + J = (float(*)[ROWS][COLS])malloc(sizeof(float) * size_I); + c = (float(*)[ROWS][COLS])malloc(sizeof(float) * size_I); + dN = (float(*)[ROWS][COLS])malloc(sizeof(float) * size_I); + dS = (float(*)[ROWS][COLS])malloc(sizeof(float) * size_I); + dW = (float(*)[ROWS][COLS])malloc(sizeof(float) * size_I); + dE = (float(*)[ROWS][COLS])malloc(sizeof(float) * size_I); + + for (int i = 0; i < ROWS; i++) { + for (int j = 0; j < COLS; j++) { + (*J)[i][j] = 0; + (*I)[i][j] = 0; + (*c)[i][j] = 0; + (*dN)[i][j] = 0; + (*dS)[i][j] = 0; + (*dW)[i][j] = 0; + (*dE)[i][j] = 0; + } + } + + random_matrix(*I); + + for (int i = 0; i < ROWS; i++) { + for (int j = 0; j < COLS; j++) { + (*J)[i][j] = (float)exp((*I)[i][j]); + } + } + + srad_kernel(*dN, *dS, *dW, *dE, *I, *J, *c); + + for (int i = 0; i < ROWS; i++) { + for (int j = 0; j < COLS; j++) { + if ((i * COLS + j) % GAP == 0) { + printf("%.5f\n", (*J)[i][j]); + } + } + } + + free((void *)I); + free((void *)J); + free((void *)dN); + free((void *)dS); + free((void *)dW); + free((void *)dE); + free((void *)c); + return 0; +} + +void random_matrix(float I[ROWS][COLS]) { + glibc_compat_srand(SEED); + for (int i = 0; i < ROWS; i++) { + for (int j = 0; j < COLS; j++) { + I[i][j] = glibc_compat_rand() / (float)RAND_MAX; + } + } +} Index: MultiSource/Benchmarks/Rodinia/srad/srad.h =================================================================== --- MultiSource/Benchmarks/Rodinia/srad/srad.h +++ MultiSource/Benchmarks/Rodinia/srad/srad.h @@ -0,0 +1,24 @@ +#ifndef _SRAD_H_ +#define _SRAD_H_ + +#define GAP 200 + +#define ROWS 2048 +#define COLS 1024 + +#define Y1 0 +#define Y2 127 + +#define X1 0 +#define X2 127 + +#define LAMDBA 0.5 +#define ITER 10 +#define SEED 7 + +void random_matrix(float I[ROWS][COLS]); +void srad_kernel(float dN[ROWS][COLS], float dS[ROWS][COLS], + float dW[ROWS][COLS], float dE[ROWS][COLS], + float I[ROWS][COLS], float J[ROWS][COLS], float c[ROWS][COLS]); + +#endif Index: MultiSource/Benchmarks/Rodinia/srad/srad.reference_output =================================================================== --- MultiSource/Benchmarks/Rodinia/srad/srad.reference_output +++ MultiSource/Benchmarks/Rodinia/srad/srad.reference_output @@ -0,0 +1,10487 @@ +1.62727 +1.18601 +1.99587 +1.50274 +1.95620 +1.18466 +1.74141 +1.78825 +2.08860 +1.72757 +1.51353 +1.73562 +1.95669 +1.70116 +2.11746 +1.77482 +1.68835 +1.81856 +1.42833 +1.63274 +1.70184 +1.93129 +1.81693 +1.58999 +1.95402 +1.90793 +1.61147 +1.75985 +2.04060 +1.61741 +1.89178 +1.77773 +1.72704 +1.60919 +1.72815 +1.59460 +1.69393 +1.79998 +1.78694 +1.66760 +1.51090 +1.91296 +1.58616 +1.45846 +1.78340 +1.79905 +1.47096 +1.66866 +1.76325 +1.42211 +1.51721 +1.80269 +1.62599 +1.69245 +1.80064 +1.73461 +1.72634 +1.85344 +1.53297 +1.89111 +1.51832 +1.52604 +1.77404 +1.74754 +1.67218 +1.74553 +1.84565 +1.86432 +1.55870 +1.75210 +1.79212 +1.71805 +1.81842 +1.56154 +1.77318 +1.63679 +1.70730 +1.90617 +1.72595 +1.73449 +1.56468 +1.90211 +1.29923 +1.63841 +1.68222 +1.62935 +1.56251 +1.66168 +1.75093 +1.55156 +1.61806 +1.76298 +1.79290 +1.85236 +1.70271 +1.74826 +1.75208 +1.67148 +1.60346 +1.71284 +1.76959 +1.66863 +1.79285 +1.89696 +1.50130 +1.41957 +1.80510 +1.61243 +1.58456 +1.83970 +1.75683 +1.35415 +1.71426 +1.72473 +1.57698 +1.88159 +1.69101 +1.62878 +1.70115 +1.67427 +1.95354 +1.57326 +1.72224 +1.79943 +1.88851 +1.72730 +1.83496 +1.58684 +1.94601 +1.63083 +1.80437 +1.37549 +1.57938 +1.77490 +1.69247 +1.66587 +1.63955 +1.80062 +1.87973 +1.66629 +1.73817 +1.76078 +1.70824 +1.70556 +1.51390 +1.50739 +1.82468 +1.70763 +1.81069 +1.87217 +1.60087 +1.93158 +1.84760 +1.73818 +1.56453 +1.91942 +1.80241 +1.43912 +1.92385 +1.78971 +1.87292 +1.64994 +1.57530 +1.82554 +1.71141 +1.84687 +1.82285 +1.89731 +1.93620 +1.82656 +1.73859 +1.68169 +1.84984 +1.58516 +1.79911 +1.61941 +1.73536 +2.08063 +1.72986 +1.68678 +1.80527 +1.59363 +1.73386 +1.69171 +1.80738 +1.68315 +1.75570 +1.65041 +1.62720 +1.63029 +1.53560 +1.68274 +1.77382 +1.80433 +1.54920 +1.67968 +1.65518 +1.95820 +1.61668 +1.85209 +1.69779 +1.86124 +1.75983 +1.77973 +1.77110 +1.58620 +1.59676 +1.59350 +1.79306 +1.90732 +1.99065 +1.73706 +1.70410 +1.66568 +1.54866 +1.53166 +1.94520 +1.44876 +1.79737 +1.76562 +1.56174 +1.98458 +1.76509 +1.65397 +1.62453 +1.72551 +1.65281 +1.92938 +1.39922 +1.60836 +1.91597 +1.73736 +1.83238 +1.71396 +1.94263 +1.77713 +1.83407 +1.44964 +1.66397 +1.80988 +1.63471 +1.65515 +1.55149 +1.89140 +1.81733 +1.61072 +1.68404 +1.68877 +1.98334 +1.73466 +1.76564 +1.77381 +1.57307 +1.78789 +1.66823 +1.61059 +1.37628 +1.50948 +1.58246 +1.58824 +1.84433 +1.86882 +1.53543 +1.61283 +1.59452 +1.51843 +1.64894 +1.72970 +1.56164 +1.60081 +1.83083 +1.73528 +1.81768 +1.37423 +1.73014 +1.74761 +1.72548 +2.16461 +1.91842 +1.82716 +1.81199 +1.75138 +1.74119 +1.60170 +1.48750 +1.52331 +1.64417 +1.81121 +1.62306 +1.81069 +1.66084 +1.86444 +1.68572 +1.70913 +1.69110 +1.67012 +1.68589 +1.61911 +1.58823 +1.73546 +2.04657 +1.87459 +1.59018 +1.95965 +1.95248 +1.75082 +1.43690 +1.66899 +1.58817 +1.82897 +1.94996 +1.67288 +1.86346 +1.63395 +1.84224 +1.68365 +1.72140 +1.90585 +1.63878 +1.59586 +1.60750 +1.74141 +1.85619 +1.43490 +1.75794 +1.62771 +1.82781 +1.56482 +1.80689 +1.80328 +1.72490 +1.83254 +1.73352 +1.70842 +1.64922 +1.87881 +1.83935 +1.62018 +1.56293 +1.90972 +1.56791 +1.90664 +1.54620 +1.69598 +1.56819 +1.72271 +1.74862 +1.67779 +1.72317 +1.54232 +1.69992 +1.63581 +1.60960 +1.57047 +1.49308 +1.56438 +2.09337 +1.74063 +1.65417 +1.47237 +1.62809 +1.81179 +1.72117 +1.75025 +1.84015 +1.98697 +1.69635 +1.57854 +1.97473 +1.81896 +1.52804 +1.79242 +1.78291 +2.10642 +1.64780 +1.61670 +1.65467 +1.69036 +1.77593 +1.74618 +1.90486 +1.83307 +2.12715 +1.73215 +1.00129 +1.72722 +1.78774 +1.58138 +1.78525 +1.78237 +1.73821 +1.79537 +1.84388 +1.63608 +1.57642 +1.90625 +1.78972 +1.55301 +1.59791 +1.84634 +1.55946 +1.66837 +1.79184 +1.89312 +1.69594 +1.83372 +1.81730 +1.70478 +1.61148 +1.63509 +1.78485 +1.91160 +1.66355 +1.78955 +1.72088 +1.58010 +1.87636 +1.91699 +1.81665 +1.96107 +1.82468 +2.03139 +1.35737 +1.75163 +1.78662 +1.77187 +1.85803 +1.89713 +1.42113 +1.68396 +1.90883 +1.62034 +1.65320 +1.74022 +1.66360 +1.44402 +1.64258 +1.86373 +1.79385 +1.80921 +1.63465 +1.73239 +1.83576 +1.88500 +1.67819 +1.63635 +1.67270 +1.49262 +1.64036 +1.78479 +1.81853 +1.49545 +1.70944 +1.50462 +1.65177 +1.61887 +1.78958 +1.85006 +1.54842 +1.79632 +1.92853 +1.65564 +1.61922 +1.75100 +1.74586 +1.69073 +1.42374 +1.80210 +1.78001 +1.63638 +1.63844 +1.56967 +1.71217 +1.74122 +1.67724 +1.65292 +1.78294 +1.92389 +1.67890 +1.65945 +1.86665 +1.78711 +1.55241 +1.57376 +1.76495 +1.94117 +1.40858 +1.75344 +1.93723 +1.88345 +1.53760 +1.85922 +1.65712 +1.92279 +1.82058 +1.71996 +1.52257 +1.65217 +1.50283 +1.79202 +1.90062 +1.82553 +1.67795 +1.91194 +1.66733 +1.95384 +1.70649 +1.73634 +1.79547 +1.62099 +1.64482 +1.78203 +2.40102 +1.73206 +1.75669 +1.74602 +1.62976 +1.76362 +1.71257 +1.95935 +1.67713 +1.90839 +1.41118 +1.61384 +1.50555 +1.58276 +1.84899 +2.04778 +1.76272 +1.72524 +1.80101 +1.69034 +1.59966 +1.75827 +1.61792 +1.94949 +1.59603 +1.37192 +1.76304 +1.53816 +1.70315 +1.59932 +1.56313 +1.82195 +1.63017 +1.59093 +2.02133 +1.29262 +1.60839 +1.96582 +1.93306 +1.60641 +1.59414 +1.84831 +1.68132 +1.41895 +1.81409 +1.61933 +1.64872 +1.61245 +1.66333 +1.71182 +1.65109 +1.91097 +1.77453 +1.58369 +1.81623 +1.62063 +1.51385 +1.82337 +1.67867 +1.80495 +1.62885 +1.46743 +1.59080 +1.50532 +2.04223 +1.72001 +1.42846 +1.62913 +1.68065 +1.47791 +1.57369 +1.73904 +1.84809 +1.42199 +1.80818 +1.74321 +1.63236 +1.55392 +1.68117 +1.69955 +1.93969 +1.72882 +1.63088 +1.84720 +1.80174 +1.72258 +1.49555 +1.63368 +1.86024 +1.87514 +1.81482 +1.66668 +1.73558 +1.91789 +1.90239 +1.73389 +1.47980 +1.89339 +1.74250 +1.94548 +1.65652 +1.43575 +1.79722 +1.76374 +1.55682 +1.86242 +1.70413 +1.93793 +1.69128 +1.76754 +1.65658 +1.62228 +1.97448 +1.61783 +1.74251 +1.94017 +1.60849 +1.71465 +1.82454 +1.44431 +1.61725 +1.70882 +1.88557 +1.79458 +1.67730 +1.65909 +1.86040 +1.83281 +1.22332 +1.99184 +1.78253 +1.77014 +1.66193 +1.73562 +1.56002 +1.78512 +1.74722 +1.58290 +1.36490 +1.67099 +1.97787 +1.53161 +1.71981 +1.54874 +1.58289 +1.84534 +1.76500 +1.98682 +1.58861 +2.17340 +1.76706 +1.61902 +1.65776 +1.91215 +1.76997 +1.83177 +1.69124 +1.55484 +1.55035 +1.68761 +1.55411 +1.84470 +1.90378 +1.79267 +1.61994 +1.79444 +1.72904 +1.57636 +1.85637 +1.57335 +1.49581 +1.73748 +1.86774 +1.72533 +1.49472 +1.82687 +1.63011 +1.91308 +1.81392 +1.75739 +1.87247 +1.89544 +1.80736 +1.63945 +1.98678 +1.75314 +1.85556 +1.95823 +1.64961 +1.86283 +1.68865 +1.61522 +1.70389 +1.66730 +1.62031 +1.80756 +1.63752 +1.80710 +1.56852 +1.78527 +1.53569 +1.74820 +1.60957 +1.53993 +1.74023 +1.66699 +1.57169 +1.78070 +2.07424 +1.70299 +1.79730 +1.63619 +1.77902 +1.73729 +1.22805 +1.87227 +2.01459 +1.66700 +1.91208 +1.44860 +1.81870 +1.29027 +1.80002 +1.81377 +1.75691 +1.86845 +1.79066 +1.43300 +1.71136 +1.67178 +1.63924 +1.60486 +1.54974 +1.71064 +1.79821 +1.73235 +1.58965 +1.68188 +1.83710 +1.66028 +1.94642 +1.62952 +1.66948 +1.43477 +1.86655 +1.67320 +1.82742 +1.62708 +1.62399 +1.75587 +1.57537 +1.79574 +1.67848 +1.70579 +1.71483 +1.78848 +1.42046 +1.74050 +1.71752 +1.67720 +1.67796 +1.85419 +1.91007 +1.63785 +1.67627 +1.82470 +1.58321 +2.01186 +1.76846 +1.94592 +1.64996 +1.73231 +1.48034 +1.50964 +1.98325 +1.66965 +1.68196 +1.91887 +1.72875 +1.58750 +1.84812 +1.71598 +1.75769 +1.62947 +1.52301 +1.76454 +1.77457 +1.62745 +1.44459 +1.80880 +1.90331 +1.46777 +1.78304 +1.50628 +1.62873 +1.54453 +1.85817 +1.71100 +1.67149 +1.80387 +1.61217 +1.69862 +1.69340 +1.77951 +1.74061 +1.91834 +1.53830 +1.85555 +1.70573 +1.78909 +1.73739 +1.70903 +1.95976 +1.77881 +1.64231 +1.83798 +1.80490 +1.72240 +1.65713 +1.87613 +1.71377 +1.70207 +1.70145 +1.70186 +1.39728 +1.66298 +1.63025 +1.61379 +1.89535 +1.52546 +1.79852 +1.89627 +1.60097 +1.61239 +1.73534 +1.67590 +1.85583 +1.88036 +1.80913 +1.64817 +1.91531 +1.64798 +1.59646 +1.59964 +1.65835 +1.94974 +1.68185 +1.50340 +1.80656 +1.64971 +1.76632 +1.45111 +1.55399 +1.88919 +1.98957 +1.87837 +1.78448 +1.84360 +1.80163 +1.70058 +1.55235 +1.81451 +1.46448 +1.82602 +1.78292 +1.88500 +1.81519 +1.77287 +1.87708 +1.73652 +1.62993 +1.40305 +1.60491 +1.77552 +1.63082 +1.63457 +1.81685 +1.83139 +1.88469 +1.89492 +1.62652 +1.68441 +1.85061 +1.34836 +2.47906 +1.73056 +1.72117 +1.66836 +1.72804 +1.75275 +1.72075 +1.26834 +1.67105 +1.72716 +1.73130 +1.56747 +1.82729 +1.57879 +1.58574 +1.60753 +1.66624 +1.75331 +1.85452 +1.80364 +1.88169 +1.71301 +1.59345 +1.70748 +1.95937 +1.83517 +1.91996 +1.87338 +1.64529 +1.73488 +1.80943 +1.61482 +1.67561 +1.83563 +1.73247 +1.61584 +1.67458 +1.83507 +1.89505 +1.74185 +1.96094 +1.58104 +1.66519 +1.72147 +1.56701 +1.58921 +1.78395 +1.68070 +1.88104 +1.73088 +1.65550 +1.80966 +1.84930 +1.88125 +1.70539 +1.71505 +1.84688 +1.48539 +1.75108 +1.44287 +1.74023 +1.66120 +1.65139 +1.85006 +1.82094 +1.58708 +1.40050 +1.76668 +1.78967 +1.67201 +1.69688 +1.71255 +1.38435 +1.78800 +1.90615 +1.71870 +1.79498 +1.64419 +1.33897 +1.54656 +1.98338 +1.89772 +1.54489 +1.62232 +1.78998 +1.59033 +1.87943 +1.66759 +1.70630 +1.60328 +1.79881 +1.61462 +1.46706 +1.61216 +1.62919 +1.76879 +1.59347 +1.93567 +1.50442 +1.65494 +1.46287 +1.72067 +1.70996 +1.49525 +1.74978 +1.42079 +1.60802 +1.68536 +1.87161 +1.41856 +1.75864 +2.09773 +1.87034 +1.77166 +1.81631 +1.74494 +1.91449 +1.80419 +1.85088 +1.62725 +1.63141 +1.69136 +1.80407 +1.79613 +1.56415 +1.72545 +1.71271 +1.80352 +1.97555 +1.67354 +1.72426 +1.92422 +1.72085 +1.70047 +1.64230 +1.74411 +1.48728 +1.81055 +1.83668 +1.70407 +1.71952 +1.55972 +1.85320 +1.66798 +1.53035 +1.60912 +1.72004 +1.68886 +1.82226 +1.97566 +1.77812 +1.56327 +1.72471 +1.74928 +1.78074 +1.42774 +1.69362 +1.74506 +1.59953 +1.78565 +1.79324 +1.87426 +1.59815 +1.66232 +1.71089 +1.73494 +1.81702 +1.63256 +1.63395 +1.93724 +1.62126 +1.57336 +1.62920 +1.80987 +1.71553 +1.56987 +1.60464 +1.65770 +1.63221 +1.69083 +1.83987 +1.56540 +1.83949 +1.65363 +1.60109 +1.88634 +1.70041 +1.85510 +1.77852 +1.60507 +1.62869 +1.74534 +1.57530 +1.67681 +1.67445 +1.84874 +1.43935 +1.78590 +1.71925 +1.63593 +1.83637 +1.45228 +1.78103 +1.74744 +1.69578 +1.67596 +1.62545 +1.54255 +1.72704 +1.63543 +1.69804 +1.88152 +1.63692 +1.62920 +1.83105 +1.80112 +1.54149 +1.94811 +1.77913 +1.87219 +1.77243 +1.69216 +1.61662 +1.57965 +1.65701 +1.65392 +1.85900 +1.58501 +1.75281 +1.68309 +1.69183 +1.33992 +1.86927 +1.71181 +1.67185 +1.84579 +1.48842 +1.78136 +1.52213 +1.57246 +1.90167 +1.69855 +1.86387 +1.45534 +1.80679 +1.79047 +1.93142 +1.67104 +1.55028 +2.00251 +1.75431 +1.60603 +1.46218 +1.78561 +1.70082 +1.81114 +2.10629 +1.88828 +1.52240 +1.55561 +1.73385 +1.76141 +1.67285 +1.65018 +2.05245 +1.63939 +1.72260 +1.75978 +1.66956 +1.60823 +1.65491 +1.43477 +1.79240 +1.68501 +1.62798 +1.66205 +1.72251 +1.81274 +1.74966 +1.77585 +1.52213 +1.80006 +1.72836 +1.58208 +1.73484 +1.84038 +1.76779 +1.81392 +1.85537 +1.58147 +1.66910 +1.59133 +1.72696 +1.55083 +1.75439 +1.85384 +2.03171 +1.77063 +1.83798 +1.79708 +1.74674 +1.95318 +1.71820 +1.79217 +1.62384 +1.70781 +1.87068 +1.53265 +1.95372 +1.70895 +1.60732 +1.57155 +1.60009 +1.72315 +1.76463 +1.78260 +1.67493 +1.76366 +2.06285 +1.78464 +1.59102 +1.66382 +1.73091 +1.68921 +1.71554 +1.80816 +1.75096 +1.62998 +1.64502 +1.70759 +1.81197 +1.34213 +1.76002 +1.57954 +1.72536 +1.47686 +1.69926 +1.74926 +1.82622 +1.78213 +1.94135 +1.71675 +1.92311 +1.57837 +1.44746 +1.84436 +1.77152 +1.39483 +1.47864 +1.77664 +1.82386 +1.75665 +1.72967 +1.66040 +1.73627 +1.71863 +1.79633 +1.54899 +1.54258 +1.76473 +1.84822 +1.68876 +1.76724 +1.46159 +1.51833 +1.77442 +1.83847 +1.33340 +1.77811 +1.60222 +1.69708 +1.69330 +1.57417 +1.82515 +1.78618 +1.68679 +1.75206 +1.60523 +1.33305 +1.71845 +1.86580 +1.87906 +1.56359 +1.50121 +1.35294 +1.89040 +1.90629 +1.87061 +1.75668 +1.78774 +1.81171 +1.81760 +1.74954 +1.64732 +1.74174 +1.69938 +1.91168 +1.92020 +1.87780 +1.71908 +1.52902 +1.81810 +1.84270 +1.61476 +1.84126 +1.67135 +1.57256 +1.98067 +1.71862 +1.89326 +1.29672 +1.90147 +1.55634 +1.87069 +1.78184 +1.77807 +1.67728 +1.87087 +1.75066 +1.93720 +1.74531 +1.64453 +1.40735 +1.63368 +1.57782 +1.88234 +1.57025 +1.79060 +1.96445 +1.70608 +1.67981 +1.63247 +2.01045 +1.61821 +1.77526 +1.72014 +1.89322 +1.71432 +1.66578 +1.74959 +1.66175 +1.85281 +1.78048 +1.34996 +1.69231 +1.64587 +1.84514 +1.69355 +1.89359 +1.44755 +1.77044 +1.68182 +1.91425 +1.61157 +1.86022 +1.60914 +1.82199 +1.68901 +1.59103 +1.87871 +1.80745 +1.62822 +1.81447 +2.14111 +1.59578 +1.83975 +1.66183 +1.74747 +1.84445 +1.77438 +1.79339 +1.76721 +1.77129 +1.89493 +1.59326 +1.61124 +1.66680 +1.93544 +1.79921 +1.58964 +1.63795 +1.65832 +1.85843 +1.49225 +1.68163 +1.68328 +1.48685 +1.85216 +1.90000 +1.45403 +1.91140 +1.57334 +1.54102 +1.52198 +1.71614 +1.59816 +1.66972 +1.92264 +1.75611 +1.37733 +1.69977 +1.70176 +1.71186 +1.80466 +1.77056 +1.87676 +1.79540 +1.66101 +1.61265 +1.78253 +1.78523 +1.68412 +2.64607 +1.74501 +1.54005 +1.51319 +1.75193 +1.68552 +1.48342 +1.65688 +1.80682 +1.65650 +1.62746 +1.82002 +1.61422 +2.05781 +1.80512 +1.90141 +1.77608 +1.71182 +1.57972 +1.81269 +1.95176 +1.49606 +1.82792 +1.64588 +1.60686 +1.90159 +1.69903 +1.58261 +1.47963 +1.79668 +1.49502 +1.51177 +2.15578 +1.65364 +1.90182 +2.03997 +1.95944 +1.69085 +1.62613 +1.56521 +1.96712 +1.88033 +1.67511 +1.78680 +1.82544 +1.82170 +1.78938 +1.78679 +1.70392 +1.59718 +1.66964 +1.69176 +1.57660 +1.61982 +1.55134 +1.48762 +1.67917 +1.61334 +1.85359 +1.67755 +1.77760 +1.56247 +1.88822 +1.82627 +1.80543 +1.48136 +1.90903 +1.77049 +1.42001 +1.76985 +1.76626 +1.67298 +1.48435 +1.70974 +1.59544 +1.83876 +1.90598 +1.71449 +1.99316 +1.89621 +1.46162 +1.59910 +1.67791 +1.68153 +1.80649 +1.81173 +1.37753 +1.74955 +1.82826 +1.82038 +1.74083 +1.93833 +1.73172 +1.49042 +1.89182 +1.68986 +1.57328 +1.69053 +1.62118 +1.71376 +1.74259 +1.66115 +1.53040 +1.73538 +1.83548 +1.85856 +1.63286 +1.81942 +1.84010 +1.53704 +1.80361 +1.73211 +1.72919 +1.66076 +1.74299 +1.78976 +1.87176 +1.73640 +1.76022 +1.39114 +1.68095 +1.89466 +1.36533 +1.76631 +1.64706 +1.52223 +1.96287 +1.80724 +1.01445 +1.47613 +1.65622 +1.74423 +1.91067 +1.57514 +1.87885 +1.67220 +1.49893 +1.51191 +1.67282 +1.58829 +2.02163 +1.49888 +1.57531 +1.75094 +1.84804 +1.94452 +1.52951 +1.66161 +1.63736 +1.82498 +1.72974 +1.71659 +1.77491 +1.64659 +1.60665 +1.91257 +1.67817 +1.78993 +1.39852 +1.85136 +2.19337 +1.60485 +1.76000 +1.60656 +1.79103 +1.51109 +1.66233 +1.84171 +1.74610 +1.71835 +1.77338 +1.78115 +1.91497 +1.88020 +1.86070 +1.68068 +1.67774 +1.71590 +1.76025 +1.76460 +1.64990 +1.72957 +1.51660 +1.64351 +1.53765 +1.52821 +1.50263 +1.60220 +1.63588 +1.75013 +1.85341 +1.87310 +1.85050 +1.60529 +1.72058 +1.78788 +1.68590 +1.50090 +2.02299 +1.75845 +1.80498 +1.72219 +1.64060 +1.61641 +1.79244 +1.56839 +1.55882 +1.57728 +1.61791 +2.04093 +1.84001 +1.68294 +1.80647 +1.86570 +1.79454 +1.74808 +1.85639 +1.52277 +1.90986 +1.56381 +1.70405 +1.77380 +1.35624 +1.60226 +1.60756 +1.85727 +1.74302 +1.64429 +1.90602 +1.81596 +1.86515 +2.01344 +1.83907 +1.65882 +1.76629 +1.46807 +1.92399 +1.81866 +1.99308 +1.76330 +1.43084 +1.67755 +1.66352 +1.84830 +1.66991 +1.84267 +1.77182 +1.79274 +1.83599 +1.48136 +1.62102 +1.87526 +1.72763 +1.59802 +2.01408 +1.67922 +1.37300 +1.80449 +1.84427 +1.72607 +1.44934 +1.71314 +1.71165 +1.79120 +1.83766 +1.74950 +1.69318 +1.67644 +1.55757 +1.74526 +1.66935 +1.96629 +1.79165 +1.73414 +1.72971 +1.76793 +1.87968 +1.73000 +1.69500 +1.75636 +1.84311 +1.69159 +1.92633 +1.74803 +1.99110 +1.69072 +1.93391 +1.78128 +1.82852 +1.86246 +1.96030 +1.60045 +1.63927 +1.78665 +1.53674 +1.58401 +1.77209 +1.90519 +1.58199 +1.80568 +1.89396 +1.66120 +1.53187 +1.98065 +1.63408 +1.46515 +1.85646 +1.89274 +1.63842 +2.03324 +1.76140 +1.68337 +1.69376 +1.44127 +1.75391 +1.87594 +1.49390 +1.73308 +1.55831 +1.79834 +1.55768 +1.74835 +1.77275 +1.71807 +1.53207 +1.70532 +1.66060 +1.78417 +1.69148 +1.73871 +1.80005 +1.95015 +1.64150 +1.76926 +1.67634 +1.66007 +1.74253 +1.54159 +1.61454 +1.61079 +1.92489 +1.49946 +1.79294 +1.71220 +1.68762 +1.70848 +1.78888 +1.69448 +1.63897 +1.56485 +1.65405 +1.82927 +1.84437 +1.87971 +1.73947 +1.68134 +1.60575 +1.81040 +1.58141 +1.60199 +1.47656 +1.88342 +1.84368 +1.73261 +1.72116 +1.64480 +1.60594 +1.54155 +1.83974 +1.78774 +1.54251 +1.74387 +1.49536 +2.06690 +1.96052 +1.84110 +1.72568 +1.60974 +1.71161 +1.90245 +1.65350 +1.86937 +1.87269 +1.55810 +2.49009 +1.76529 +1.56341 +1.46882 +1.76755 +1.70913 +1.57482 +1.63965 +1.70112 +1.77554 +1.82636 +1.60174 +1.87849 +1.60373 +1.59400 +1.74491 +1.78730 +1.67261 +1.78667 +1.73840 +1.92669 +1.78971 +1.61416 +1.63035 +1.85888 +1.56159 +1.66575 +1.66007 +1.76280 +1.71801 +1.54874 +2.01781 +1.53916 +1.63051 +1.72780 +1.62086 +1.79809 +1.73068 +1.83089 +1.48330 +1.47695 +1.69203 +1.50183 +1.54668 +2.00583 +1.83289 +1.85496 +1.97053 +1.76777 +1.52425 +1.68796 +1.63169 +1.71351 +1.55754 +1.58582 +1.76144 +1.79886 +1.70417 +1.51749 +1.83726 +1.76115 +1.74299 +1.63751 +1.80789 +1.72352 +1.75650 +1.63029 +1.78644 +1.88374 +1.68485 +1.59398 +1.90175 +1.48592 +1.77217 +1.72241 +1.73971 +1.61671 +1.89595 +1.71643 +1.85835 +1.57943 +1.44139 +1.89341 +1.55584 +1.56258 +1.77885 +1.86528 +1.74792 +1.66869 +1.87797 +1.74521 +1.60635 +1.76096 +1.68256 +1.59597 +1.90602 +1.56697 +1.75087 +1.67228 +1.52221 +2.00330 +1.77313 +1.89215 +1.89096 +1.79096 +1.63303 +1.99778 +1.61568 +1.73845 +1.71201 +1.74704 +1.51281 +1.61744 +1.55370 +1.67006 +1.83142 +1.61899 +1.83639 +1.82913 +1.92927 +1.58542 +1.44612 +2.00357 +1.64752 +1.72254 +1.68905 +1.88424 +1.70856 +1.92700 +1.62938 +1.80324 +1.80815 +1.88180 +1.94695 +1.54650 +1.73952 +1.77331 +1.84235 +1.59156 +1.87237 +1.45091 +1.83077 +1.54902 +1.79922 +1.72235 +1.70602 +1.62710 +1.73444 +1.92235 +1.37671 +1.72601 +1.71786 +1.71248 +1.90984 +1.78749 +1.46033 +1.64720 +1.75145 +1.85837 +1.54739 +1.56759 +1.68415 +1.69681 +1.67149 +1.62731 +1.77216 +1.52461 +1.79714 +1.81697 +1.54973 +1.92625 +1.99884 +1.84648 +1.66120 +1.95929 +2.06053 +1.68779 +1.68467 +1.68186 +2.03891 +1.82821 +1.58799 +1.60886 +1.60130 +1.53059 +1.81983 +1.73579 +1.77304 +1.59021 +1.64010 +1.77664 +1.60149 +1.77769 +1.39726 +1.45656 +1.61560 +1.67771 +1.59977 +1.73291 +1.89622 +1.79730 +1.85748 +1.99647 +1.82856 +1.80554 +1.65348 +1.76097 +1.51624 +1.65375 +1.53688 +1.47870 +2.02415 +1.79631 +2.21119 +1.95388 +1.67952 +1.70024 +1.66646 +1.55875 +1.79689 +1.76881 +1.60602 +1.78064 +1.68544 +1.61681 +1.80998 +1.55805 +1.83731 +1.88114 +1.63971 +1.63374 +1.68331 +1.63803 +1.82091 +1.72591 +1.60463 +1.84147 +1.74805 +1.73069 +1.57524 +1.87465 +1.86471 +1.81267 +1.65141 +1.69648 +1.76031 +1.77313 +1.84509 +1.64367 +1.83808 +1.68773 +1.78271 +1.72977 +2.06437 +1.75631 +1.61343 +1.51282 +2.01044 +1.72405 +1.64655 +1.76603 +1.91544 +1.59547 +1.90448 +1.68790 +1.62595 +1.81180 +1.58984 +1.62117 +1.71694 +1.74140 +1.78648 +1.51339 +1.53175 +1.60415 +1.81970 +1.85311 +1.76701 +1.79942 +1.62366 +1.77298 +1.85778 +1.63047 +1.62209 +1.80354 +1.64266 +1.56396 +1.74860 +1.75750 +1.75598 +1.88669 +1.65480 +1.71539 +1.66263 +1.64633 +1.59422 +1.36547 +1.93957 +1.49523 +1.63775 +1.63824 +1.73628 +1.67054 +1.60593 +1.54432 +1.95567 +1.77379 +1.68748 +1.70837 +1.73769 +1.78322 +1.63936 +1.69960 +1.76804 +1.49008 +1.62938 +1.62850 +1.66101 +1.60993 +1.68241 +1.63251 +1.80272 +1.75627 +1.41165 +1.66024 +1.81625 +1.80495 +1.89597 +1.51727 +1.68221 +1.59576 +1.68614 +1.74104 +1.64409 +1.63403 +1.76782 +1.77643 +1.58003 +1.70301 +1.52385 +1.77821 +1.68364 +1.81972 +1.83715 +1.67042 +1.96418 +1.81972 +1.50341 +1.85100 +1.80959 +1.61378 +1.64269 +1.94884 +1.66166 +1.74287 +1.76591 +1.57946 +1.51788 +1.70824 +1.56796 +1.75744 +1.53773 +1.69453 +1.71851 +2.05442 +1.83296 +1.74114 +1.60481 +1.80398 +1.51520 +1.80209 +1.66634 +1.84017 +1.44515 +1.79252 +1.72376 +1.51030 +1.80728 +1.55563 +1.90781 +1.57960 +1.45448 +1.84118 +1.75902 +2.16012 +1.71425 +1.84226 +1.69785 +1.64472 +1.79704 +1.89116 +1.66326 +1.75810 +1.63262 +1.74224 +1.91981 +1.63444 +1.90561 +1.57624 +1.55890 +1.90214 +1.71587 +1.78844 +1.80134 +1.79750 +1.67385 +1.65871 +1.85091 +1.73712 +1.73493 +2.11879 +1.72647 +1.62244 +1.76450 +1.70001 +1.49516 +1.91375 +1.85582 +1.88209 +1.78682 +1.69405 +1.73266 +1.75888 +1.75854 +1.80152 +1.65546 +1.70988 +1.92155 +1.60877 +1.89712 +1.69011 +1.72419 +1.87866 +1.51134 +1.53737 +1.53142 +1.62675 +1.86841 +2.04339 +1.72302 +1.71012 +1.59288 +1.98650 +1.83209 +1.46568 +1.46657 +1.66266 +1.72118 +1.73057 +1.83987 +1.55300 +1.58947 +1.67957 +1.73299 +1.70799 +2.05217 +1.60905 +1.75287 +1.78080 +1.74165 +1.57646 +1.68078 +1.69032 +1.85894 +1.80287 +1.60248 +2.12265 +1.71148 +1.71795 +1.78099 +1.75602 +1.51602 +1.78199 +1.64149 +1.73916 +1.66036 +1.77305 +1.74391 +1.56821 +1.50472 +1.72288 +1.59851 +1.76663 +1.72929 +1.81516 +1.60161 +1.58873 +1.72257 +1.67951 +1.77031 +1.86054 +1.70519 +1.73687 +1.57838 +1.57983 +1.56914 +1.64061 +1.62537 +1.48070 +1.67380 +1.70202 +1.74363 +1.76131 +1.56763 +1.69809 +1.75293 +1.90134 +1.72773 +1.51830 +1.57573 +1.66038 +1.80114 +1.44092 +1.83877 +1.78613 +1.72274 +1.70304 +1.65267 +1.61121 +1.97928 +1.65867 +1.80415 +1.57237 +1.80385 +1.46472 +1.88979 +1.67644 +1.59636 +1.72749 +1.68078 +1.63384 +1.62361 +1.60514 +1.71968 +1.54753 +1.61767 +1.84788 +1.70442 +1.52701 +1.91445 +1.57572 +1.92154 +2.00341 +1.83552 +1.86275 +1.61917 +1.66545 +1.89947 +1.70562 +1.73535 +1.73441 +1.78476 +1.61424 +1.90352 +1.75151 +1.86366 +1.66002 +1.62806 +1.60879 +1.70894 +1.72746 +1.86707 +1.72194 +1.52344 +1.49837 +1.62369 +1.67615 +1.72106 +1.73155 +1.54192 +1.79873 +1.63157 +1.48415 +2.02818 +1.80342 +1.69133 +1.66923 +1.75555 +1.66955 +2.06351 +1.72754 +1.55281 +1.80852 +1.63266 +1.79023 +1.67164 +1.75265 +1.76029 +1.88037 +1.76919 +1.71431 +1.79804 +1.54564 +1.75969 +1.70673 +1.85262 +1.95068 +1.66116 +1.66236 +1.48227 +1.41946 +1.79387 +1.71647 +1.70147 +1.75244 +1.86023 +1.81769 +1.81947 +1.57091 +1.63333 +1.62807 +1.90254 +1.80803 +1.79603 +2.03508 +1.75493 +1.63616 +1.84219 +1.63385 +1.61813 +1.67920 +2.20195 +1.74589 +1.50989 +1.70017 +1.88706 +1.64762 +1.39054 +1.79852 +1.75775 +1.84989 +1.93583 +1.77953 +1.84466 +1.64933 +1.62129 +1.36418 +1.82959 +1.85864 +1.66129 +2.49706 +1.81715 +1.69728 +1.73671 +1.88126 +1.92884 +1.62385 +1.79401 +1.71592 +1.75302 +1.69180 +1.89539 +1.69844 +1.69820 +1.56456 +1.55356 +1.72575 +1.76636 +1.69064 +1.55514 +1.81710 +1.45460 +1.63245 +1.74207 +2.08936 +1.91452 +1.53546 +1.48702 +1.41750 +1.84692 +1.82937 +1.76130 +1.90406 +1.47941 +1.91101 +1.74995 +1.62749 +1.72296 +1.69231 +1.55985 +1.66329 +1.76364 +1.55529 +1.77991 +1.69517 +1.67133 +1.62660 +1.85006 +1.71115 +1.69105 +1.68281 +1.70612 +1.74214 +1.98516 +1.62465 +1.96790 +2.03687 +1.68115 +1.89384 +1.68304 +1.62325 +1.58362 +1.67656 +1.62555 +1.88927 +1.76268 +1.71424 +1.73085 +1.76158 +1.71349 +1.90104 +1.58294 +1.65645 +1.69880 +1.82900 +1.75788 +1.66756 +1.66827 +1.63671 +1.73193 +1.53408 +1.67280 +1.86311 +1.83216 +1.66613 +1.99407 +1.84499 +1.68852 +1.68041 +1.77293 +1.67698 +1.66491 +1.50810 +1.78994 +1.67521 +1.96363 +1.63724 +1.66359 +1.61472 +1.42970 +1.34028 +1.74641 +1.85411 +1.71329 +1.83446 +1.88222 +1.71086 +1.53500 +1.53178 +2.11580 +1.47649 +1.95877 +1.48310 +1.79697 +1.56661 +1.75745 +1.59069 +1.68391 +1.72057 +1.85271 +1.82247 +1.62192 +1.58108 +1.64459 +1.58063 +1.87031 +1.53202 +1.79477 +1.65053 +1.59227 +1.51631 +1.78782 +2.07208 +1.81312 +1.71273 +1.85191 +1.67788 +1.53493 +1.74004 +1.78930 +1.72994 +1.60268 +1.58351 +1.62092 +1.93892 +1.81158 +1.83074 +1.93914 +1.67509 +1.80231 +1.60556 +1.65058 +1.72973 +1.84576 +1.59157 +1.51947 +1.33850 +1.89629 +1.64382 +1.61044 +1.76887 +1.81522 +1.70466 +1.47890 +1.80385 +1.69014 +1.54637 +1.46831 +1.80391 +1.98631 +1.48086 +1.77228 +1.64993 +1.90315 +1.76822 +1.75137 +1.56870 +1.64293 +1.62376 +1.75185 +1.91258 +1.72757 +1.55483 +1.71599 +1.87945 +1.85355 +1.81679 +1.65256 +1.85725 +1.82990 +1.86888 +1.81397 +1.68610 +1.92746 +1.81911 +1.90000 +1.88618 +1.55093 +1.65314 +1.72746 +1.86419 +1.83335 +1.88094 +1.90680 +1.66619 +1.80467 +1.74139 +1.54355 +1.61136 +1.63053 +1.78748 +1.69100 +1.78940 +1.79993 +1.58372 +1.41714 +1.64281 +1.86770 +1.56942 +1.63995 +2.04460 +1.84963 +1.86676 +1.58246 +1.88994 +1.64157 +1.65532 +1.91077 +1.53141 +1.80047 +1.56115 +1.61954 +1.54316 +1.48721 +1.28200 +1.68296 +1.91787 +1.55877 +1.46233 +1.60414 +2.06437 +1.59120 +1.68498 +1.59602 +1.55858 +1.94845 +1.81113 +1.56152 +1.70412 +1.66252 +1.61006 +1.63937 +1.68916 +1.60338 +1.79852 +1.61642 +1.02085 +1.66549 +1.74868 +1.77237 +1.64355 +1.72508 +1.65783 +2.18670 +1.79114 +1.73855 +2.17054 +1.66281 +1.66871 +1.62318 +1.62170 +1.43328 +1.48263 +1.92220 +1.75721 +1.57931 +1.89595 +1.67819 +1.71326 +1.69722 +1.90787 +1.80108 +1.84024 +1.74839 +1.75207 +1.50407 +1.89771 +1.87668 +1.68460 +1.92124 +1.60516 +1.73216 +1.77285 +1.68730 +1.82737 +1.78770 +1.68413 +1.80620 +1.92340 +1.48619 +1.75333 +1.81868 +1.80859 +1.79351 +2.11651 +1.78253 +1.63644 +1.78374 +1.62170 +1.63855 +1.50808 +1.46382 +1.67674 +1.79858 +1.60792 +1.59468 +1.90609 +1.94519 +1.87752 +2.03775 +1.74984 +1.77278 +1.84355 +1.63538 +1.78679 +1.82432 +1.61897 +1.79461 +1.72327 +1.61088 +1.60884 +1.80002 +1.42623 +1.80127 +1.78639 +1.76645 +1.67165 +1.79483 +1.85004 +1.59746 +1.76192 +1.92882 +1.53661 +1.76904 +1.71479 +1.45284 +1.79323 +1.57296 +1.79358 +1.88146 +1.77484 +1.75860 +1.60060 +1.90159 +1.69075 +1.98473 +1.69589 +1.81702 +1.97934 +1.72525 +1.68775 +1.48122 +1.80855 +1.63358 +1.57881 +1.76182 +1.89435 +1.62752 +1.82976 +1.71977 +1.84717 +1.75430 +1.69825 +1.85413 +1.65879 +1.79542 +1.90615 +1.66681 +1.85617 +1.75919 +1.77740 +1.67047 +1.63357 +1.88265 +2.10077 +1.82643 +1.85535 +1.75809 +1.88377 +1.86911 +1.51795 +1.59808 +1.56790 +1.59101 +1.77803 +1.89297 +1.79006 +1.74972 +1.79546 +1.79946 +1.56565 +1.76906 +1.52815 +1.72928 +1.87525 +1.67442 +1.43915 +1.46218 +1.50573 +1.65180 +1.88552 +1.76491 +1.77225 +1.49777 +1.79543 +1.59748 +1.70185 +1.82542 +1.81577 +1.82419 +1.46936 +1.79310 +1.53015 +1.65440 +1.92492 +1.78252 +1.71709 +1.80618 +1.67506 +1.60886 +1.65537 +1.80039 +1.59530 +1.70005 +1.67819 +1.92466 +1.80758 +1.62059 +1.47229 +1.80348 +1.65300 +1.98321 +1.54107 +1.71810 +1.77476 +1.77053 +1.66695 +1.74378 +1.90153 +1.75565 +1.88735 +1.56616 +1.60362 +1.81769 +1.71515 +1.75437 +1.73337 +1.69031 +1.46235 +1.97914 +1.71758 +1.54228 +1.80363 +1.69616 +1.74139 +1.52051 +1.86009 +1.80280 +1.77920 +1.73728 +1.70912 +1.70651 +1.55171 +1.81850 +1.63279 +1.68739 +1.78717 +1.73487 +1.81607 +1.46464 +1.43538 +1.78044 +1.69135 +1.75146 +1.62235 +1.67448 +1.53228 +1.69026 +1.53093 +1.56112 +1.41788 +1.74185 +1.76946 +1.46576 +1.74175 +2.09100 +1.73828 +1.46951 +1.51711 +1.72049 +1.77170 +1.71420 +2.16906 +1.60490 +1.42101 +1.67576 +1.81093 +1.77514 +1.62808 +1.67852 +1.85329 +1.80737 +1.04532 +1.52744 +1.75341 +1.91329 +1.97214 +1.28493 +1.47986 +1.91911 +1.92359 +1.70514 +1.84588 +1.69249 +1.97736 +1.62129 +1.91028 +1.44744 +1.84131 +1.62342 +1.68739 +1.93064 +1.62940 +1.48749 +1.57772 +1.89886 +1.76406 +1.63768 +1.65080 +1.96279 +2.01840 +1.74520 +1.91674 +1.73746 +1.64188 +1.51176 +1.78706 +1.76833 +1.64413 +1.92322 +1.64325 +1.85153 +1.76487 +1.79075 +1.70016 +1.39139 +1.69365 +1.54319 +1.35816 +1.62550 +1.74979 +1.74558 +1.67400 +1.81042 +1.64754 +1.83940 +1.73896 +1.77691 +1.70784 +1.62854 +1.75103 +1.48739 +1.65074 +1.89451 +1.61779 +1.78372 +1.73199 +1.69606 +1.58009 +1.59852 +1.62548 +1.75292 +1.71512 +1.78220 +1.59157 +1.67749 +2.09582 +1.78041 +1.66031 +1.65976 +1.88178 +1.62686 +1.66117 +2.10005 +1.61234 +1.72370 +1.81331 +1.46869 +1.79509 +1.62824 +1.64742 +1.68935 +1.59353 +1.58493 +2.06286 +2.22146 +1.63667 +1.91322 +1.68963 +1.67288 +1.64241 +1.62018 +1.78288 +1.67325 +1.49555 +1.84243 +1.62294 +1.81030 +1.72244 +1.62782 +1.72680 +1.84757 +1.72600 +1.87259 +1.86739 +1.71393 +1.70538 +1.84814 +1.85552 +1.88590 +1.65963 +1.62512 +1.80605 +1.82050 +1.54455 +1.72298 +1.76235 +1.79625 +1.74039 +1.80145 +1.35393 +1.79731 +1.51694 +1.89523 +1.60814 +1.95881 +1.63159 +1.49791 +1.55158 +1.64979 +1.81407 +1.85044 +1.76876 +1.79927 +1.58426 +1.81456 +1.55084 +1.65160 +1.50767 +1.93502 +1.84163 +1.89451 +1.58788 +1.67111 +1.78872 +1.42439 +1.62687 +1.68409 +1.83643 +1.76286 +2.00509 +1.57931 +1.78937 +1.57950 +1.82172 +1.96214 +1.79076 +1.69542 +1.89016 +1.91429 +1.70334 +1.69388 +2.02446 +1.79479 +2.24459 +1.88366 +1.69783 +1.72213 +1.59535 +1.90927 +1.71462 +1.61945 +1.35651 +1.73957 +1.72657 +1.60558 +1.62910 +1.79227 +1.70882 +2.07343 +1.77602 +2.00288 +1.75590 +1.83172 +1.88910 +1.69847 +1.60142 +1.89187 +1.61619 +1.69189 +1.83821 +1.70579 +1.87862 +1.63304 +1.81709 +1.63859 +1.53408 +1.76872 +1.54997 +1.68700 +1.72697 +1.46234 +1.77367 +1.84807 +1.57296 +1.50786 +1.89156 +1.51168 +1.55216 +1.53061 +1.85685 +1.68327 +1.97692 +1.64138 +1.61994 +1.76829 +1.72444 +1.77629 +1.75423 +1.43275 +1.75268 +1.74159 +1.98005 +1.77964 +1.73583 +1.98889 +2.02955 +1.67359 +1.74418 +1.77808 +1.65049 +1.55420 +1.55232 +1.72526 +1.82488 +1.47648 +1.75482 +1.71335 +1.90441 +1.66714 +1.59861 +1.48278 +1.69121 +1.56344 +1.80288 +1.75767 +1.84525 +1.84702 +2.44019 +1.65499 +1.77113 +1.75380 +1.58991 +1.99629 +1.59291 +1.72235 +1.84684 +1.56700 +1.75096 +1.77766 +1.69717 +1.72589 +1.76716 +1.33278 +1.50878 +1.41693 +1.84658 +1.69952 +1.91115 +1.70173 +1.63009 +1.58755 +1.89228 +1.60000 +1.85729 +1.79419 +1.76784 +1.50866 +1.68584 +1.59451 +1.35973 +1.81211 +1.88171 +1.69470 +1.79848 +1.62451 +1.66501 +1.71959 +1.62466 +1.54573 +1.67304 +1.83302 +1.70003 +1.82592 +1.91191 +1.38679 +1.82978 +1.72088 +1.76746 +1.29810 +1.88838 +1.59689 +1.63340 +1.60914 +1.52772 +1.89554 +1.78849 +1.61609 +1.83860 +1.77115 +1.52571 +1.82626 +1.76430 +1.75314 +1.63086 +1.85651 +1.67894 +1.89619 +1.65366 +1.78527 +1.51409 +1.77060 +1.85870 +1.69774 +1.85767 +1.76992 +1.55734 +1.78571 +1.86761 +1.73526 +1.73202 +1.68150 +1.82313 +1.42610 +1.65382 +1.76326 +1.87017 +1.79927 +1.96954 +1.77384 +1.78487 +1.62019 +1.81202 +1.81801 +1.54040 +1.92686 +1.48359 +1.62619 +1.64448 +1.77312 +1.78443 +1.62944 +1.61407 +1.56929 +2.04218 +1.81577 +1.84539 +1.83073 +1.55032 +1.69073 +1.68834 +1.76228 +1.76778 +1.75929 +1.60037 +1.88036 +1.76171 +1.69141 +1.57654 +1.72169 +1.89013 +1.63776 +1.73185 +1.67398 +1.86387 +1.93948 +1.46960 +1.67950 +1.64722 +1.81560 +1.45488 +1.77454 +1.62692 +1.72986 +1.87796 +1.77604 +1.71247 +1.69433 +1.64239 +1.68093 +1.63991 +1.86061 +1.79133 +1.73657 +1.70872 +1.76321 +1.68431 +1.68934 +1.72082 +1.73505 +1.64608 +1.54138 +1.68719 +1.72907 +1.46788 +1.63231 +1.73735 +1.88015 +1.62463 +1.69772 +1.70284 +1.59803 +1.80865 +1.77575 +1.60375 +1.50989 +1.89402 +1.71232 +1.68264 +1.40568 +1.73156 +1.70617 +1.77132 +1.52643 +1.49622 +1.74495 +1.59221 +1.77553 +1.72238 +1.49325 +1.53180 +1.85404 +1.78919 +1.75235 +1.72054 +1.76578 +1.71130 +1.53178 +1.79841 +1.65493 +1.88573 +2.02979 +1.42806 +1.71979 +1.94097 +1.63713 +1.84550 +1.78152 +1.77970 +1.76601 +1.87392 +1.69525 +1.64957 +1.77969 +1.81691 +1.43631 +1.83544 +1.72940 +1.77615 +1.50219 +1.78741 +1.73128 +1.68376 +1.54302 +1.88160 +1.98492 +1.53213 +1.78501 +1.97875 +1.79283 +1.75872 +1.72089 +1.81257 +1.72718 +2.23491 +1.69344 +1.93794 +1.61592 +1.80854 +1.79708 +1.97660 +1.40258 +1.71188 +1.94913 +1.63374 +1.57184 +1.81498 +1.88027 +1.66103 +2.17931 +1.53256 +1.78383 +1.65029 +1.75068 +1.60981 +1.85153 +1.69498 +1.75091 +1.56761 +1.64937 +1.64666 +1.75409 +1.81095 +1.60046 +2.38368 +1.85729 +1.76481 +1.82453 +1.60686 +1.72263 +1.39075 +1.57353 +1.54112 +1.69976 +1.81258 +1.75992 +1.85591 +1.84411 +1.65036 +1.61019 +1.68132 +1.59083 +1.64119 +1.55886 +1.73391 +1.72261 +1.56879 +1.86824 +1.63963 +1.67879 +2.20507 +1.69718 +1.79489 +1.78327 +1.78354 +1.82163 +1.84056 +1.66876 +1.72324 +1.64966 +1.84088 +1.56710 +1.67631 +1.78272 +1.83902 +1.66514 +1.50718 +1.80070 +1.46766 +1.42927 +2.06335 +1.69970 +1.86023 +1.59829 +1.68669 +1.61748 +1.79484 +1.77361 +1.63524 +1.30925 +1.64476 +1.58934 +1.99053 +1.66405 +1.95494 +1.94942 +1.69090 +1.62660 +1.48305 +1.54874 +1.65390 +1.91408 +1.56423 +1.58298 +1.50399 +1.66595 +1.85721 +1.57653 +1.87098 +1.55534 +1.68535 +1.79288 +1.93785 +1.83781 +1.71261 +1.87222 +1.64531 +1.71496 +1.87460 +1.78010 +1.63092 +1.73117 +1.24184 +1.74468 +1.83905 +1.89264 +1.72541 +1.64982 +1.69051 +1.68932 +1.75353 +1.78541 +1.81709 +1.63185 +1.79174 +1.63299 +1.80884 +1.73447 +1.64193 +1.58209 +1.66376 +1.85577 +1.69846 +1.81109 +1.72522 +1.43016 +1.45995 +1.57455 +1.59294 +1.76056 +1.84915 +1.75558 +1.91880 +1.66262 +1.83925 +1.43715 +1.86309 +1.92860 +1.69831 +1.82429 +1.84340 +1.68889 +2.09948 +1.69247 +1.55815 +1.75262 +1.67599 +1.61490 +1.85302 +1.84199 +1.52084 +1.67265 +1.63520 +1.83430 +1.80277 +1.65443 +1.81931 +1.77568 +1.62441 +1.82378 +1.60576 +1.70840 +1.83163 +2.04154 +1.72372 +1.62619 +1.85805 +1.39030 +1.76059 +1.65772 +1.65834 +1.49067 +1.60375 +1.57037 +1.45991 +1.49841 +1.68912 +1.71889 +1.74257 +1.98383 +1.80056 +1.83204 +1.84414 +1.62404 +1.61159 +1.81845 +1.60326 +1.50879 +1.70973 +1.63077 +1.88082 +1.60054 +1.83823 +1.84487 +1.88204 +1.69886 +1.68930 +1.72600 +1.75256 +2.14891 +1.83044 +1.56376 +1.62117 +1.78407 +1.92882 +1.67742 +1.80489 +1.74098 +1.81741 +1.79976 +1.67819 +1.89161 +1.61749 +1.76831 +1.87775 +1.63037 +1.48332 +1.72159 +1.95321 +1.80448 +1.66247 +1.66024 +1.83940 +1.69544 +1.62631 +1.82830 +1.48618 +1.84811 +1.70395 +1.74595 +1.68049 +1.90924 +1.59314 +1.80387 +1.75200 +1.69274 +1.66791 +1.75529 +1.82303 +1.59326 +1.45126 +1.59022 +1.83641 +1.52198 +1.72973 +1.81171 +1.91181 +1.65151 +1.79631 +1.92763 +2.01591 +1.69073 +1.84993 +1.69829 +1.83540 +1.57000 +1.89100 +1.89500 +1.61903 +1.71617 +1.67880 +1.95079 +1.51984 +1.60334 +1.64177 +1.78273 +1.79683 +1.80953 +1.74712 +1.46482 +1.24594 +1.77133 +1.61976 +1.60321 +1.59469 +1.65484 +1.58087 +1.56616 +1.63281 +1.73822 +1.73190 +1.61233 +1.60717 +1.81779 +1.51096 +1.83239 +1.66995 +1.82777 +1.69345 +1.81783 +1.48077 +1.78902 +1.69604 +1.77317 +1.54802 +1.81242 +1.76275 +1.65014 +1.65170 +1.73651 +1.45760 +1.96934 +1.86652 +1.76872 +1.78244 +1.42257 +1.75004 +1.43403 +1.41997 +1.68574 +1.94679 +1.72138 +1.79387 +1.75332 +1.54056 +1.53962 +1.62712 +1.53709 +1.46964 +1.75090 +1.81702 +1.72111 +1.61757 +1.66366 +1.70042 +1.53511 +1.69293 +1.73156 +1.63858 +1.82327 +1.87879 +1.75624 +1.77666 +1.70040 +1.77415 +1.67040 +1.82206 +1.75134 +1.74717 +1.86449 +1.73454 +1.49010 +1.76564 +1.57846 +1.84823 +1.65099 +1.59067 +1.87819 +1.34687 +1.69250 +1.58236 +1.61390 +1.88871 +1.78627 +1.59931 +1.86824 +1.70309 +1.88002 +1.70318 +1.71718 +1.82416 +2.20589 +1.77130 +1.71705 +1.80071 +1.74371 +1.75874 +1.59123 +1.50260 +1.46488 +1.97125 +1.71950 +1.84518 +1.62941 +1.74580 +1.65337 +1.75581 +1.71181 +1.49260 +1.59639 +1.84899 +1.81908 +1.54041 +2.07009 +1.89548 +1.73132 +1.77720 +1.54756 +1.56055 +1.78534 +1.84815 +1.68341 +1.70899 +1.97888 +1.70267 +1.86387 +1.68260 +1.63111 +2.60650 +1.62183 +1.66800 +1.91451 +1.63945 +1.74867 +1.73407 +1.65267 +1.56256 +1.73492 +1.76489 +1.90291 +1.58953 +1.86428 +2.00620 +1.94434 +1.77879 +1.82276 +1.76894 +1.91467 +1.73944 +1.57752 +1.53266 +1.55560 +1.78065 +1.40832 +1.52222 +1.55505 +1.80282 +1.87168 +1.79867 +1.69422 +1.74895 +1.91827 +1.76736 +1.73484 +1.40276 +1.59283 +1.58933 +1.84323 +1.77651 +1.76748 +1.81473 +1.63284 +1.79359 +1.74516 +1.57178 +1.56867 +1.90911 +1.82850 +1.67055 +1.80202 +1.84120 +1.75567 +1.55180 +1.80669 +1.63852 +1.68930 +1.72192 +1.74216 +1.98354 +1.74356 +1.84979 +1.73210 +1.61619 +1.66601 +1.86101 +1.78057 +1.87577 +1.57922 +1.51981 +1.87548 +1.91109 +1.80525 +1.68587 +1.79623 +1.93900 +1.82982 +1.74903 +1.83023 +1.80301 +1.56394 +1.58417 +2.02386 +1.51808 +1.76234 +1.86032 +1.71822 +1.77022 +1.54776 +1.91465 +1.78135 +1.56761 +1.68372 +1.63307 +1.67185 +1.91324 +1.62866 +1.62443 +1.84017 +1.81342 +1.71562 +1.61790 +1.84085 +1.57254 +1.66654 +1.86995 +1.69715 +1.97018 +1.52486 +1.80101 +1.65227 +1.93067 +1.64849 +1.76559 +1.70998 +1.87086 +1.86849 +1.67942 +1.67722 +1.69749 +1.75775 +1.96859 +1.61792 +1.93498 +1.56165 +1.70403 +1.92903 +1.03212 +1.73621 +1.66601 +1.65559 +1.63796 +1.82746 +1.61660 +1.50241 +1.71585 +1.61488 +1.44004 +1.89624 +1.73047 +1.64451 +1.55376 +1.63863 +1.58566 +1.73445 +1.70760 +1.81733 +1.57628 +1.65335 +1.87860 +1.83481 +1.57720 +1.63491 +1.57404 +1.59479 +1.55959 +1.62384 +1.86833 +1.66265 +1.74389 +1.58247 +1.70892 +1.58442 +1.73500 +1.80154 +1.47042 +1.72277 +1.72808 +1.77682 +1.79781 +1.68588 +1.86301 +1.92508 +1.58192 +1.54362 +1.78215 +1.57543 +1.74573 +1.54479 +1.63357 +1.90271 +1.89945 +1.68271 +1.60779 +1.71673 +1.63241 +1.66203 +1.76052 +1.65641 +1.70755 +1.52533 +1.54037 +1.72176 +1.79050 +1.64739 +1.48887 +1.79213 +1.64456 +1.41647 +1.96468 +1.77076 +1.73281 +2.14575 +1.72821 +1.58144 +1.60975 +1.76711 +1.61431 +1.69664 +1.81311 +1.54421 +1.63035 +1.61145 +1.53372 +1.47409 +1.91569 +1.74341 +1.79210 +1.65961 +1.73974 +1.63712 +1.50972 +1.68336 +1.70296 +1.87104 +1.68269 +1.75319 +1.59825 +1.66322 +1.66383 +1.87110 +1.89400 +1.55016 +1.76324 +1.63370 +1.51787 +1.82693 +1.83396 +1.67655 +1.71884 +1.53032 +1.62572 +1.97324 +1.81590 +1.59722 +1.77856 +1.47051 +1.60180 +1.60060 +1.70245 +1.59146 +1.68759 +1.88215 +1.54997 +1.76228 +1.86679 +1.42155 +1.48415 +1.90444 +1.49754 +1.77840 +1.89980 +1.91260 +1.88029 +1.70071 +2.02296 +2.01411 +1.85343 +1.52061 +2.13100 +1.41305 +1.68793 +1.89462 +1.69707 +1.37498 +1.57486 +1.76113 +1.55553 +1.80945 +1.85150 +1.77851 +1.82574 +1.52498 +1.55880 +1.66053 +1.68579 +1.78029 +1.95361 +1.50791 +1.45084 +1.54253 +1.58222 +1.59718 +1.76132 +1.55273 +1.74747 +1.65253 +1.85343 +2.07323 +1.84665 +1.69935 +1.74959 +1.87453 +1.62097 +1.87284 +1.58239 +1.69158 +1.65946 +1.76230 +1.42331 +1.76864 +1.91056 +1.77450 +1.64476 +1.71866 +1.67226 +1.60447 +1.75399 +1.75788 +1.70190 +1.81127 +1.68897 +1.59733 +1.89132 +1.68915 +1.97154 +1.93982 +1.79907 +1.75369 +1.43948 +1.94586 +1.73583 +1.54572 +1.77570 +1.70691 +1.84650 +1.65740 +1.66287 +1.75906 +1.45945 +1.95080 +1.79435 +1.52426 +1.71710 +1.43513 +1.67548 +1.88559 +1.77633 +1.41633 +1.49581 +1.78941 +1.84353 +1.79014 +1.74603 +1.75859 +1.79124 +1.45160 +1.43101 +1.77587 +1.75906 +1.71693 +1.63142 +1.80611 +1.62196 +1.93563 +1.70059 +2.08022 +1.82946 +1.65852 +1.70504 +1.69059 +1.65091 +1.64539 +1.91646 +1.86726 +1.73703 +1.69379 +1.73754 +1.49367 +1.65338 +1.61204 +1.61012 +1.66858 +2.18150 +1.72708 +1.78944 +1.88889 +1.82753 +1.80482 +1.59059 +1.61708 +1.83709 +2.01163 +1.71583 +1.71016 +1.54800 +1.77540 +1.85098 +1.64265 +1.59074 +1.36430 +1.70064 +1.72232 +1.89249 +2.03914 +1.71312 +1.78634 +1.50725 +1.87406 +1.91933 +1.68496 +1.66093 +1.81652 +1.65302 +1.62269 +1.71751 +1.68869 +1.98558 +2.15222 +1.93097 +1.49096 +1.66344 +1.97237 +1.71940 +1.63280 +1.80316 +1.83192 +1.72748 +1.90494 +1.61477 +1.69187 +1.72042 +1.68813 +1.70813 +1.64915 +1.74401 +1.77732 +1.68203 +1.70514 +1.74479 +1.60123 +1.68419 +1.80061 +1.67387 +1.76102 +1.50766 +1.75720 +2.07275 +1.67776 +1.88755 +1.80472 +1.68709 +1.67008 +1.99143 +1.56586 +1.76531 +1.55964 +1.79414 +1.78931 +1.57636 +2.08295 +1.85783 +1.64355 +1.66867 +1.67758 +1.63103 +1.67150 +1.68382 +1.47197 +1.55769 +1.76492 +2.13143 +1.84034 +1.71351 +1.98326 +1.75034 +1.82230 +1.69824 +1.68843 +1.63432 +1.81242 +1.68123 +1.84008 +1.65284 +1.69924 +1.77062 +1.71946 +1.72077 +1.71957 +1.75333 +1.91660 +1.69757 +1.81654 +1.77588 +1.73899 +1.85074 +1.81151 +1.64672 +1.69573 +1.72301 +1.67462 +1.72584 +1.82015 +2.01946 +1.67951 +1.85154 +1.41616 +1.71658 +1.62209 +1.70229 +1.85153 +1.46666 +1.46530 +1.90223 +1.67629 +1.61399 +1.93573 +1.79100 +1.74668 +1.78471 +1.82229 +1.69730 +1.80661 +1.67434 +1.54512 +1.65327 +1.73024 +1.63345 +1.60258 +1.74670 +1.67999 +1.48227 +1.73799 +1.54567 +1.82675 +1.49919 +1.86012 +1.65108 +1.75033 +1.60491 +1.72075 +1.72669 +1.75846 +1.73492 +2.04960 +1.72830 +1.87323 +1.64815 +1.61239 +1.59060 +1.85548 +1.46995 +1.54116 +1.45286 +1.85653 +1.83661 +1.82795 +1.55015 +1.83372 +1.70323 +1.61182 +1.77950 +1.74038 +1.61811 +1.79768 +1.71687 +1.69149 +1.75343 +1.74729 +1.90017 +2.24483 +1.76157 +1.84871 +1.76507 +1.63341 +1.60631 +1.77397 +1.95799 +1.56740 +1.93090 +1.63025 +1.68533 +1.77358 +1.59049 +1.74347 +1.54250 +1.66948 +1.56351 +1.63679 +1.96436 +1.53663 +1.62049 +1.78558 +1.75331 +1.57948 +1.91859 +1.61625 +1.66183 +1.81400 +1.70814 +1.64158 +1.80697 +1.69481 +1.63788 +1.58921 +1.76767 +1.94318 +1.53908 +1.81751 +1.67520 +1.81529 +1.72117 +1.70924 +1.52475 +1.78130 +1.66834 +1.65322 +1.70097 +1.74047 +1.71074 +1.86614 +1.64721 +1.75103 +1.92128 +1.82315 +1.68823 +1.53234 +1.66066 +1.71792 +1.71038 +1.60735 +1.66696 +1.64388 +1.83030 +1.81467 +1.78729 +2.00864 +1.56413 +1.63214 +1.72432 +1.79317 +1.84196 +1.74410 +1.60561 +1.88982 +1.76953 +1.57779 +1.69317 +1.70604 +1.75311 +1.65016 +1.63459 +2.01753 +1.42154 +1.42916 +1.61802 +1.67890 +1.68478 +1.55226 +1.75875 +1.86123 +1.88604 +1.78731 +1.62230 +1.71698 +1.85865 +1.65717 +1.70247 +1.75824 +1.62281 +1.57387 +1.82247 +1.56852 +1.65374 +1.49784 +1.64972 +1.52508 +1.55670 +1.59904 +1.69464 +1.73595 +1.69050 +1.52290 +1.57592 +1.84214 +1.78466 +1.79155 +1.94459 +1.56626 +1.68091 +1.66129 +1.61258 +1.77537 +1.78431 +1.86496 +1.61447 +1.62630 +1.53866 +1.78619 +1.77756 +1.53381 +1.51882 +1.58929 +1.68180 +1.69293 +1.82439 +1.83890 +1.77538 +1.84500 +1.61795 +1.49392 +1.75933 +1.65285 +1.83928 +1.71678 +1.88718 +1.76082 +1.60945 +1.54369 +1.91843 +1.80942 +1.88465 +1.87598 +1.87668 +1.73430 +1.75372 +1.62422 +1.71351 +1.91544 +1.63248 +1.65121 +1.95880 +1.82006 +1.81450 +1.49877 +1.68607 +1.75383 +1.83649 +1.46721 +1.60697 +1.83235 +1.99928 +1.70581 +1.92158 +1.90082 +1.74560 +1.71091 +1.82873 +1.69001 +1.76362 +1.75654 +1.67768 +1.66796 +1.77566 +1.61717 +1.76603 +1.86836 +1.59776 +1.76902 +1.96516 +1.69542 +1.54898 +1.65687 +1.89302 +1.79110 +1.76785 +1.78148 +2.58341 +1.70002 +1.45751 +1.77428 +1.70161 +1.84901 +1.78578 +1.70602 +1.44986 +1.73012 +1.74821 +1.65862 +1.58224 +1.86748 +1.73962 +1.91952 +1.57603 +1.56986 +1.67406 +1.81177 +1.70961 +1.47679 +1.68570 +1.59731 +1.78378 +1.75903 +1.41716 +1.67352 +1.60593 +2.13802 +1.72914 +1.67817 +1.75671 +1.67823 +1.79794 +1.60082 +1.50692 +1.48905 +2.05059 +1.42805 +1.97266 +1.75730 +1.67257 +1.92736 +1.57350 +1.78336 +1.54440 +1.72092 +1.62228 +1.61267 +1.80274 +1.72466 +1.73839 +1.88096 +1.57706 +1.73677 +1.64547 +1.99784 +1.50203 +1.57463 +1.88482 +1.73002 +1.59451 +1.54798 +2.01653 +1.75572 +1.64255 +1.74975 +1.84652 +1.71799 +1.71765 +1.77876 +1.73123 +1.71344 +1.84486 +1.93104 +1.45163 +1.83667 +1.76895 +1.63118 +1.75794 +1.78636 +1.71292 +1.79540 +1.67737 +2.06051 +1.42300 +1.56329 +1.70308 +1.87382 +1.61000 +1.42533 +2.20134 +1.52372 +1.95450 +1.80783 +1.88016 +2.00787 +1.53017 +2.03892 +1.90712 +1.63885 +1.67671 +1.50730 +1.79017 +2.00355 +1.43551 +1.66903 +1.70504 +1.55663 +2.04685 +1.47295 +1.54085 +1.64317 +1.53341 +1.51801 +1.75864 +1.36585 +1.61870 +1.71497 +1.92312 +1.83808 +1.82475 +1.90818 +1.85701 +1.75246 +1.70761 +1.75159 +1.37252 +1.62315 +1.82552 +1.96956 +1.81032 +1.74008 +1.61875 +1.54914 +1.67953 +1.62699 +1.68953 +1.77213 +1.57278 +1.83298 +1.80835 +1.68132 +1.64263 +1.44227 +1.83301 +1.64783 +1.74339 +1.82408 +1.63363 +1.80956 +1.57176 +1.80616 +1.80052 +1.99995 +1.77786 +1.67267 +1.84310 +1.89629 +1.68744 +1.73199 +1.66136 +1.69744 +1.71590 +1.58370 +1.72314 +1.62681 +1.77201 +1.51687 +1.42862 +1.62976 +1.63755 +1.91314 +1.71163 +1.63633 +1.87480 +1.69324 +1.84751 +1.61324 +1.74792 +1.77696 +1.75556 +1.55325 +1.70902 +1.65732 +1.78214 +1.70515 +1.86245 +1.92956 +1.76157 +1.75817 +1.78623 +1.56897 +2.01671 +1.85941 +1.98090 +1.71787 +1.55290 +1.94818 +1.87552 +1.49668 +1.57038 +1.66944 +1.69730 +1.94229 +1.80739 +1.66359 +1.69708 +1.69967 +1.60762 +1.63931 +1.66110 +1.95504 +1.69644 +1.66473 +1.61097 +1.56602 +1.61046 +1.73678 +1.76699 +1.84881 +1.72742 +1.83293 +1.71074 +1.72370 +1.79142 +1.80742 +1.67081 +1.73174 +1.65499 +1.50641 +1.57159 +1.84210 +1.66380 +1.60831 +1.97067 +1.93331 +1.68691 +1.66984 +1.81410 +1.62257 +1.90080 +1.83973 +1.72568 +1.83576 +1.83887 +1.89695 +1.98437 +1.73169 +1.97801 +1.45175 +1.68094 +1.75106 +2.21473 +1.56674 +2.35998 +2.09829 +1.77014 +1.92031 +1.85606 +1.76129 +1.75998 +1.87673 +1.58133 +2.00784 +1.94263 +1.56588 +1.75547 +1.60259 +1.78279 +1.72883 +1.85206 +1.54348 +2.03058 +1.50491 +1.70377 +1.82126 +1.70376 +1.95462 +1.78200 +1.73565 +1.51966 +1.62423 +1.64835 +1.71076 +1.59668 +1.87487 +1.68634 +1.85245 +1.73100 +1.91958 +1.70056 +1.75194 +1.78452 +1.64767 +1.52775 +1.97831 +1.73643 +1.41048 +1.98064 +1.52202 +1.86949 +1.45423 +1.86302 +1.56865 +1.81195 +1.94542 +1.52271 +1.62486 +1.57997 +1.75557 +1.82200 +1.66915 +1.71752 +1.76496 +1.76277 +1.72377 +1.72639 +1.74731 +1.80459 +1.79818 +1.76520 +1.79168 +1.66077 +1.79885 +1.77259 +1.78738 +1.54345 +1.69838 +1.75666 +1.81228 +1.68674 +1.69353 +1.47571 +1.60560 +1.73214 +1.41325 +1.65562 +1.73451 +1.79864 +1.77313 +1.71577 +1.71522 +1.68271 +1.31950 +1.66588 +1.75358 +1.69354 +1.72984 +1.62263 +1.77492 +1.76377 +1.64517 +1.66141 +1.76520 +1.47011 +1.63973 +1.71316 +1.85722 +2.08223 +1.71847 +1.78592 +1.69534 +1.59066 +1.77049 +1.73481 +1.88479 +1.93919 +1.69745 +1.83828 +1.73220 +1.77039 +2.18831 +1.63610 +1.48296 +1.68528 +1.80640 +1.70127 +1.64878 +1.84667 +1.68971 +1.71599 +1.90039 +1.36576 +1.61914 +1.83259 +1.85184 +1.48614 +1.60498 +1.77944 +1.74249 +1.80126 +1.54722 +1.50025 +1.47335 +1.69365 +1.92507 +1.90440 +1.83737 +1.38847 +1.69768 +1.77883 +1.67045 +1.69855 +1.65008 +1.62267 +1.51439 +1.82126 +1.51978 +1.60560 +1.81047 +1.70867 +1.74289 +1.56345 +1.83814 +1.68554 +1.64318 +1.86426 +1.74500 +1.95876 +2.02794 +1.89541 +1.78106 +1.84678 +1.81347 +1.69917 +1.82240 +1.84779 +1.57311 +1.80228 +1.57574 +1.79826 +1.61062 +1.76334 +1.72342 +1.76582 +1.73295 +1.71240 +1.65266 +1.89920 +1.96944 +1.79094 +1.88236 +1.63515 +1.68093 +1.78548 +1.77604 +1.85697 +1.96606 +1.89129 +1.55648 +1.95319 +1.65991 +1.57121 +1.92616 +1.74683 +1.75287 +1.78947 +1.72296 +1.86469 +1.67742 +1.40376 +1.56962 +1.65506 +1.83665 +1.63118 +1.69025 +1.95066 +1.72799 +1.55771 +1.67868 +1.74656 +1.70914 +1.62993 +1.73986 +1.76505 +1.69476 +1.70372 +1.54867 +1.85858 +1.69494 +1.77460 +1.69390 +1.87029 +1.61881 +1.68392 +1.78887 +1.98189 +1.72191 +1.71949 +1.57763 +1.95476 +1.76374 +1.73193 +1.62186 +1.82894 +1.91521 +1.84322 +1.76290 +1.73123 +1.50867 +1.65255 +1.58828 +2.03759 +1.78682 +1.77077 +1.72799 +1.73153 +1.67675 +1.85364 +1.74672 +1.22389 +1.96842 +1.69757 +1.81854 +1.75214 +1.81588 +1.62173 +1.81800 +1.52307 +1.88568 +1.71248 +1.64572 +1.81422 +1.65393 +1.76891 +1.68672 +1.77981 +1.61295 +1.75300 +1.84566 +1.33550 +2.09866 +1.46525 +1.27374 +1.45604 +1.71298 +1.67493 +1.82450 +1.85038 +1.37718 +1.33487 +1.61993 +1.79036 +1.45784 +1.61550 +1.52976 +1.82934 +1.72074 +1.57499 +1.87804 +1.82311 +1.65297 +1.74998 +1.52216 +1.72756 +1.90414 +1.74807 +1.71693 +1.83061 +1.64710 +1.71917 +1.49951 +1.56170 +2.19608 +1.72425 +1.66255 +1.66283 +1.84057 +1.80441 +1.79862 +1.67571 +1.56692 +1.81467 +1.93510 +1.63546 +1.58536 +1.80174 +1.53187 +1.84244 +1.58913 +1.75253 +1.73972 +1.89548 +1.63740 +1.75800 +1.75937 +1.67585 +1.83505 +1.74640 +1.83173 +1.97171 +1.68134 +1.60612 +1.85442 +1.63265 +1.70407 +1.78970 +2.15440 +1.75370 +1.82768 +1.70702 +1.54152 +1.61559 +1.68200 +1.75113 +1.96051 +1.61932 +1.68244 +1.74352 +1.50052 +1.74306 +1.67714 +1.61977 +1.86718 +1.85553 +1.97144 +1.67870 +1.61515 +1.77556 +1.68410 +1.75214 +1.98286 +1.86430 +1.64840 +1.81590 +1.66137 +1.72823 +1.77575 +1.89032 +1.40038 +1.77655 +1.75184 +1.77076 +1.49872 +1.77557 +1.51098 +1.51745 +1.57357 +2.65817 +1.65844 +1.95961 +1.65347 +1.68619 +1.74074 +1.63442 +1.59312 +2.25942 +1.85842 +1.81176 +1.30544 +1.85645 +1.59174 +1.86508 +1.67695 +1.79302 +1.65226 +1.73206 +1.79052 +1.55747 +1.61121 +1.59622 +1.86064 +1.94394 +1.54831 +1.74671 +1.80780 +1.98423 +1.84448 +1.52050 +1.68193 +1.67057 +1.94067 +1.68945 +1.75189 +1.90390 +1.93992 +1.66408 +1.51900 +1.96075 +1.82613 +1.44221 +1.91148 +1.76182 +1.54450 +1.94591 +1.70943 +1.72526 +1.80110 +1.63796 +1.60823 +1.97777 +1.88673 +1.63923 +1.63151 +1.68914 +1.57666 +1.64965 +1.84618 +1.55581 +1.73634 +1.60830 +1.54908 +1.60444 +1.76879 +1.89766 +1.73263 +1.59053 +1.69382 +1.78276 +1.69345 +1.58160 +1.53910 +1.51706 +1.82304 +1.76058 +1.84861 +1.72214 +2.12599 +1.54134 +1.57970 +1.69995 +1.66437 +1.71239 +1.61448 +1.73423 +1.86434 +1.54849 +1.60634 +1.78028 +1.76292 +1.79783 +1.58117 +1.64946 +1.75282 +1.66455 +1.64704 +1.93071 +1.70937 +1.87260 +1.94523 +1.82673 +1.70183 +1.73668 +1.66139 +1.67828 +1.60448 +1.59919 +1.75906 +1.45521 +1.80869 +1.71547 +1.73930 +1.80895 +1.58369 +1.70335 +1.70968 +1.85571 +1.63782 +1.79221 +1.64629 +1.60380 +1.43331 +1.59767 +1.82844 +1.61404 +1.74601 +2.30845 +1.72669 +1.72082 +2.24616 +1.95312 +1.66463 +1.71608 +1.74921 +1.48024 +1.99446 +1.71790 +1.75065 +1.61518 +1.72645 +1.56706 +1.55807 +1.68019 +1.93572 +1.84421 +1.57602 +1.86513 +1.68373 +1.76285 +1.70611 +1.68409 +1.75559 +1.66853 +1.52405 +1.70358 +1.89556 +1.90513 +1.78719 +1.61663 +1.89162 +1.49330 +1.34769 +1.64436 +1.69686 +1.55947 +1.80761 +1.65980 +1.50994 +1.57470 +1.68961 +1.67122 +1.71999 +1.63905 +2.04460 +1.93054 +1.61006 +1.79910 +1.67365 +1.73466 +1.56283 +1.60189 +1.82584 +1.69459 +1.71086 +1.88010 +1.99183 +1.62096 +1.91388 +1.69192 +1.91187 +1.64083 +1.49469 +1.73027 +1.70484 +1.53423 +1.62529 +1.72273 +1.52257 +1.71918 +1.61536 +1.65520 +1.83423 +1.61096 +1.62645 +1.63856 +1.60564 +1.73495 +1.75713 +1.91510 +1.64158 +1.79061 +1.93452 +1.80587 +1.74238 +1.57853 +1.70764 +1.86600 +1.59263 +1.62280 +1.68642 +1.88395 +1.77502 +1.65748 +1.66947 +1.47580 +1.72527 +2.13032 +1.80151 +1.70069 +1.71769 +1.73803 +1.67682 +1.84073 +1.52250 +1.57741 +1.66181 +1.75302 +1.95906 +1.75866 +1.75737 +1.49262 +1.52144 +1.68040 +1.78021 +1.69274 +1.58007 +1.89340 +1.54318 +1.84268 +1.99198 +1.67183 +1.57093 +1.61766 +1.54880 +1.44823 +1.82029 +1.79648 +1.76655 +1.64907 +1.59028 +1.80193 +1.67404 +1.63568 +1.79945 +1.66005 +1.71608 +1.89006 +1.85712 +1.87777 +1.79284 +1.77075 +1.63289 +1.70298 +1.90635 +1.96539 +1.84847 +1.66156 +1.75107 +1.80892 +1.70779 +1.70740 +1.94197 +1.85926 +1.94130 +1.70877 +1.71637 +1.94918 +1.88179 +1.79304 +1.60339 +1.67586 +1.86500 +1.61782 +1.60936 +1.65343 +1.57278 +2.11212 +1.79540 +1.82709 +1.73158 +1.55036 +1.78876 +1.78731 +1.68663 +1.91049 +1.72478 +1.85291 +1.56287 +1.87274 +1.87176 +1.81115 +1.61741 +1.81494 +1.49173 +1.64576 +1.83911 +1.73745 +1.49627 +1.74765 +1.62885 +1.52161 +1.62913 +1.66594 +1.65254 +1.69476 +1.79075 +1.78343 +1.80540 +1.70845 +1.81838 +1.69775 +1.66955 +1.85885 +1.63397 +1.75909 +1.81258 +1.66451 +1.77681 +1.80340 +1.78018 +1.82341 +1.70611 +1.69321 +1.70034 +1.69147 +1.64937 +1.71980 +1.78603 +1.51616 +1.60221 +1.57500 +1.79147 +1.74134 +1.84880 +1.78159 +1.77951 +1.49292 +1.88518 +1.69099 +1.68297 +1.40219 +1.41602 +1.73685 +1.81976 +1.47074 +1.60415 +1.78485 +1.88789 +1.82432 +1.44575 +1.49542 +1.54047 +1.62693 +1.72172 +1.79516 +1.56769 +1.75966 +1.66197 +2.01876 +1.69649 +1.72583 +1.71809 +1.29159 +1.75539 +1.60058 +1.52760 +1.82052 +1.64915 +1.96812 +1.75040 +1.56652 +1.85068 +1.51306 +1.83444 +1.75085 +1.69846 +1.77669 +1.74074 +1.47184 +1.67828 +1.72402 +1.70499 +1.81539 +1.57398 +1.79576 +1.53209 +1.50975 +1.78752 +1.60036 +1.80599 +1.88791 +1.85520 +1.61213 +1.76609 +1.58467 +1.94547 +1.57819 +1.90428 +1.95016 +1.35110 +1.81287 +1.96492 +1.47971 +1.58038 +1.94777 +1.75365 +1.87989 +1.63046 +1.67531 +1.85939 +1.93992 +1.62455 +1.71139 +1.78999 +1.72550 +2.02930 +1.86577 +1.55411 +1.40681 +1.62366 +2.08999 +1.79511 +1.62234 +1.68115 +1.59122 +1.74149 +1.57623 +1.86549 +1.63841 +1.67152 +1.44867 +1.79942 +1.62732 +1.72994 +2.11298 +1.79660 +1.92023 +1.64766 +1.80104 +1.51497 +1.77516 +1.78950 +1.75099 +1.61995 +1.81662 +1.73274 +1.57838 +1.97705 +1.53027 +1.46965 +1.86581 +1.86725 +1.69898 +1.56179 +1.59999 +1.70009 +1.82939 +1.73298 +1.98011 +1.75341 +1.58857 +1.99097 +1.93016 +1.70038 +1.67914 +1.68633 +1.89807 +1.66065 +1.73102 +1.75073 +1.80655 +1.70084 +1.82240 +1.78536 +1.45669 +1.78321 +1.56394 +1.83284 +1.66750 +1.75225 +1.71136 +1.73516 +1.78431 +1.74104 +1.79509 +1.87209 +1.48096 +1.48601 +1.77152 +1.67703 +2.07840 +1.73502 +1.71324 +1.50205 +1.73483 +1.63304 +1.33516 +1.79611 +1.58111 +1.79631 +1.45144 +1.52844 +1.64978 +1.70226 +1.68873 +1.70798 +1.40735 +1.77026 +1.61074 +1.99915 +1.70333 +1.76554 +1.73616 +1.36643 +1.87954 +1.61236 +1.81286 +1.55526 +2.00932 +1.70127 +1.72558 +1.86722 +1.63090 +1.80374 +1.68999 +1.57762 +1.75541 +1.64422 +1.72588 +1.71025 +1.61174 +1.74220 +1.80756 +1.69180 +1.55146 +1.82866 +1.67284 +1.74326 +1.64165 +1.73659 +1.73346 +1.60651 +1.83859 +1.83615 +1.84147 +1.72809 +1.96732 +1.78723 +1.73622 +1.86758 +1.97609 +2.16475 +1.61388 +1.77034 +1.75322 +1.88215 +1.71143 +1.68257 +1.60656 +1.73914 +1.67881 +1.95908 +1.76009 +1.94039 +1.56062 +1.66813 +1.86443 +1.80876 +1.73503 +1.86577 +1.62779 +1.62154 +1.84260 +1.72192 +1.86513 +1.60744 +1.59004 +1.56661 +1.50286 +1.75954 +1.96054 +1.69756 +1.80671 +1.71163 +1.77924 +1.83219 +1.72026 +1.62189 +1.48252 +1.41782 +1.60189 +1.76315 +1.70225 +1.62899 +1.65810 +1.87031 +1.54878 +1.72439 +1.65399 +1.47431 +1.90347 +1.88779 +1.51698 +1.62062 +1.78049 +1.85839 +1.84322 +1.82309 +1.95826 +1.73408 +1.61530 +1.80959 +1.78274 +1.61222 +1.51431 +1.81370 +1.95478 +1.58099 +1.62627 +1.55631 +1.70558 +1.67661 +1.77134 +1.65779 +1.97558 +1.69567 +1.55957 +1.62594 +1.55140 +1.54769 +2.05040 +1.76082 +1.76105 +1.74411 +1.81966 +1.52477 +1.86048 +1.51001 +1.82634 +1.53628 +1.69591 +1.72450 +1.74926 +1.44888 +1.53797 +1.73486 +1.76577 +1.81412 +1.95097 +1.76789 +1.78767 +1.67382 +1.76623 +1.71507 +1.73751 +1.68580 +1.61822 +1.75723 +1.89074 +1.69648 +1.62518 +1.76279 +1.98827 +1.83582 +1.81256 +1.76822 +1.56902 +1.25922 +1.32335 +1.68255 +1.59459 +1.63336 +1.68270 +1.63345 +1.53900 +1.62907 +1.98544 +1.89317 +1.88465 +1.78715 +1.60831 +1.73274 +1.85208 +1.55568 +1.80002 +1.79445 +1.75372 +1.52473 +1.86161 +1.56954 +1.57923 +1.67300 +1.62315 +1.83528 +1.92384 +1.72088 +1.79595 +1.68836 +1.65398 +1.54444 +1.50948 +1.84617 +1.57165 +1.69616 +1.68100 +1.71400 +1.72713 +1.68444 +1.72142 +1.73184 +1.84196 +1.51940 +1.61520 +1.89946 +1.61841 +1.71190 +1.64835 +1.64101 +2.17250 +1.51535 +1.87545 +1.60533 +1.83215 +1.81552 +1.43320 +1.90252 +1.78010 +1.78099 +1.79167 +1.85176 +1.85080 +1.58155 +1.72434 +1.68825 +1.71126 +1.70497 +1.59852 +1.66300 +1.92250 +1.57142 +1.58722 +1.77478 +1.49352 +1.65670 +1.65925 +1.87227 +2.64826 +1.62529 +1.57936 +1.77914 +1.81901 +1.74274 +1.79354 +1.91494 +1.90001 +1.87444 +1.75983 +1.77730 +1.78219 +1.63986 +1.80443 +1.65120 +1.82209 +1.62252 +1.54146 +1.87646 +1.76392 +1.75142 +1.54134 +1.96851 +2.01675 +1.62698 +1.47630 +1.61513 +1.40682 +1.59092 +1.82582 +1.66141 +1.94793 +1.68558 +1.67488 +1.44855 +1.59075 +1.70717 +1.83658 +1.69896 +1.60603 +1.57648 +1.67930 +1.73714 +1.53174 +1.67202 +1.54334 +1.81558 +1.63774 +1.89068 +1.90740 +1.54749 +1.74618 +1.61196 +1.82900 +1.75943 +2.17706 +1.82054 +1.58863 +1.87914 +1.65008 +1.60401 +1.97497 +1.88347 +1.57309 +1.52412 +1.89374 +1.72662 +1.65431 +1.94251 +1.70013 +1.87244 +2.06982 +1.81017 +2.05497 +1.75919 +1.68823 +1.67547 +1.97169 +1.78563 +1.58460 +1.68795 +1.80097 +1.62803 +1.76526 +1.76828 +1.64254 +1.81113 +1.73519 +1.78627 +1.78041 +1.89693 +1.71869 +2.04695 +1.62084 +1.72896 +1.85279 +1.66422 +1.70954 +1.81315 +1.68436 +1.73172 +1.79466 +1.79445 +1.81654 +1.71063 +1.46593 +1.62196 +1.33447 +1.79727 +1.70762 +1.70038 +1.54283 +1.65558 +1.78788 +1.55897 +1.61492 +1.68218 +1.76475 +1.67745 +1.94051 +1.51555 +1.84345 +1.68432 +1.60136 +1.62241 +1.76255 +1.85230 +2.21843 +1.89345 +1.85920 +1.73868 +1.57184 +1.92089 +1.55208 +1.77914 +1.78308 +1.69390 +1.67050 +1.51184 +1.77510 +1.81504 +1.98671 +1.61671 +1.62417 +2.05597 +1.68043 +1.53356 +1.58079 +1.63551 +1.74823 +1.73653 +1.60261 +1.89209 +1.70285 +1.69660 +1.80938 +1.44417 +1.81074 +1.56682 +1.64878 +1.72157 +1.69799 +1.55662 +1.74948 +1.94560 +1.80779 +1.71507 +1.71158 +1.70979 +1.54763 +1.76646 +1.95327 +1.52117 +1.43897 +1.68180 +1.84560 +1.62215 +1.57671 +1.57535 +1.90761 +1.66409 +1.59791 +1.47704 +1.69313 +1.56303 +1.74369 +1.46007 +1.74418 +1.79367 +1.40438 +1.74815 +1.58551 +1.87921 +1.62300 +1.96097 +1.65289 +1.86741 +1.86373 +1.78893 +1.78283 +1.39177 +1.60564 +1.58742 +1.75437 +1.73989 +1.51631 +1.63400 +1.77136 +2.03274 +2.03401 +1.67833 +1.73940 +1.47997 +1.82304 +1.72900 +1.79555 +1.66994 +1.78489 +1.55335 +2.05469 +1.77951 +1.88928 +1.81735 +1.65310 +1.63263 +1.69009 +1.84485 +1.75264 +1.78280 +1.63925 +1.62799 +1.85793 +1.76700 +1.81954 +1.95950 +1.63788 +1.76679 +1.79438 +1.32005 +1.69800 +1.80835 +1.70177 +1.60744 +1.54226 +1.81185 +1.67898 +1.82346 +1.57515 +1.91081 +1.76020 +1.74610 +1.65087 +1.62058 +1.78771 +1.52675 +1.44699 +1.65318 +1.72309 +1.67803 +1.50919 +1.58522 +1.71776 +1.65287 +1.48814 +1.53231 +1.46472 +1.86587 +1.55883 +1.42482 +1.72654 +1.69001 +1.85031 +2.12507 +1.77112 +1.87135 +1.79634 +1.62682 +1.69081 +1.42936 +1.66804 +1.82026 +1.68942 +1.56207 +1.62834 +1.67426 +1.44127 +1.66133 +1.75316 +1.44564 +1.53833 +1.45043 +1.77555 +1.66483 +1.69170 +1.66484 +1.76929 +1.97888 +1.91615 +1.71282 +1.77709 +1.79043 +1.42484 +1.63162 +1.61293 +2.06084 +1.68974 +1.81577 +1.80961 +1.77369 +1.82922 +1.81179 +1.55652 +1.55631 +1.69453 +1.52175 +1.59557 +1.72152 +1.63887 +1.49581 +1.55094 +1.88139 +1.62181 +1.70643 +1.89419 +1.59921 +1.63280 +1.68330 +1.72032 +1.83818 +1.67728 +1.69073 +1.62532 +1.74227 +1.90432 +1.99022 +1.77639 +1.74526 +2.11774 +1.81083 +1.59340 +1.72167 +1.91189 +1.95742 +1.76669 +1.73203 +1.60696 +1.68145 +1.76759 +1.79686 +1.72218 +1.84827 +1.82872 +1.77819 +1.60479 +1.57635 +1.74290 +1.56736 +1.82346 +1.62560 +1.85452 +1.72167 +1.45862 +1.84254 +1.77235 +1.71441 +1.60342 +1.46215 +1.88675 +1.59200 +1.65530 +1.90574 +1.49847 +1.48768 +1.62722 +1.52800 +1.72394 +1.68435 +1.82177 +1.64719 +1.37934 +1.70640 +1.53575 +1.61490 +1.39773 +1.57660 +1.82680 +1.61722 +1.65844 +1.51688 +1.48680 +1.72521 +1.54922 +1.79193 +1.66558 +1.70138 +1.59838 +1.82540 +1.65724 +1.83115 +1.60752 +1.81299 +1.89494 +1.69717 +1.79366 +1.77771 +1.76648 +1.72707 +1.61242 +1.99466 +1.50497 +1.67459 +1.69023 +1.65801 +1.76359 +1.75771 +2.11120 +1.57585 +1.40505 +1.62239 +1.70676 +1.64476 +1.67352 +1.68179 +1.62624 +1.54033 +1.75187 +1.56343 +1.85803 +1.72093 +1.77405 +1.63960 +1.69297 +1.52709 +1.67418 +1.76927 +1.64432 +1.74184 +1.90244 +1.69618 +1.68276 +1.85612 +1.67828 +1.49706 +1.73673 +1.86536 +1.89077 +1.79754 +1.90347 +1.94999 +1.65220 +1.72711 +1.82181 +1.60956 +1.88354 +1.68103 +1.62238 +1.80863 +1.79131 +1.67523 +1.48503 +1.60860 +1.72103 +1.67561 +1.92156 +1.82499 +1.87267 +1.79932 +1.55425 +1.67261 +1.84301 +1.87407 +1.79124 +1.51932 +1.75090 +1.66910 +1.57683 +1.75343 +1.83344 +1.62581 +1.60184 +1.60367 +1.81183 +1.73037 +2.00762 +1.68363 +1.79951 +1.53953 +1.71321 +1.44921 +1.87378 +1.61690 +1.71507 +1.74780 +1.78983 +1.68566 +1.63215 +1.86397 +1.68251 +1.58431 +1.44036 +1.80228 +1.59009 +1.74942 +1.74415 +1.69817 +1.76797 +1.69808 +1.66398 +1.73055 +1.38581 +1.69944 +1.54054 +1.80610 +1.79832 +1.89843 +1.63693 +2.08295 +1.65112 +1.76971 +1.87661 +1.56839 +1.81458 +1.55069 +1.94562 +1.45587 +1.83439 +1.61316 +1.68920 +1.78861 +1.65007 +1.85264 +1.76643 +1.93078 +1.73535 +1.84672 +2.02031 +1.63800 +1.35416 +1.57409 +1.63911 +1.77728 +1.57767 +1.89515 +1.75335 +1.77245 +1.99570 +1.80857 +1.64002 +1.65235 +1.91996 +1.72587 +1.76060 +1.61113 +1.85314 +1.67545 +1.62767 +1.83788 +1.44084 +1.50490 +1.74050 +1.73599 +1.79375 +1.60017 +1.47135 +1.54595 +1.81461 +1.67961 +1.79645 +1.94402 +1.82265 +1.77558 +2.14917 +1.89742 +1.71586 +1.73210 +1.76971 +1.80789 +1.82005 +1.79901 +1.54487 +1.73440 +1.69296 +1.73497 +1.55231 +1.51439 +1.56092 +1.73762 +1.63992 +2.15198 +1.65888 +1.36632 +1.51729 +1.65187 +1.82522 +1.44971 +1.56365 +1.72953 +1.34210 +1.75452 +1.80635 +1.74501 +1.83616 +1.73221 +1.76867 +1.64796 +1.92059 +1.60254 +1.73625 +1.51506 +1.59210 +1.83114 +1.79969 +1.56992 +1.58652 +1.89617 +1.66172 +1.76641 +1.64207 +1.78477 +1.70722 +1.72351 +1.75826 +1.76820 +1.60739 +1.85277 +1.58857 +2.06879 +1.83647 +1.71681 +1.87767 +1.67173 +1.80240 +1.71743 +1.66809 +1.81986 +1.66111 +1.75255 +1.76561 +1.61137 +1.90102 +1.77007 +1.75381 +1.45477 +1.62986 +1.39014 +1.77591 +1.71828 +1.65586 +1.87087 +1.91217 +1.75948 +1.65296 +1.89932 +1.66179 +1.70394 +1.77407 +1.66301 +1.63390 +1.93531 +1.84697 +1.75299 +1.78941 +1.65436 +1.41879 +1.70592 +1.67083 +1.69067 +1.83158 +1.57788 +1.84841 +1.72695 +1.66906 +1.73780 +1.91125 +1.75861 +2.12627 +1.68956 +1.61999 +1.54542 +1.73370 +1.61164 +1.51317 +1.78584 +1.66910 +1.79693 +1.74721 +1.67772 +1.63824 +1.87758 +1.62862 +1.34549 +1.57320 +1.80363 +1.52470 +1.76247 +1.69227 +1.90211 +1.78164 +1.73253 +1.68811 +1.78411 +1.56865 +1.60963 +1.56819 +1.72789 +2.00234 +1.87843 +1.55606 +1.84304 +1.46820 +1.75893 +1.71714 +1.42692 +2.11321 +1.48794 +1.79024 +1.58778 +1.80543 +1.66029 +1.72292 +1.58413 +1.91007 +1.97433 +1.70039 +1.56402 +1.92824 +1.52711 +1.64972 +1.79894 +1.73723 +1.69417 +1.69090 +1.75085 +2.04689 +1.65638 +1.83769 +1.68397 +1.97224 +1.66669 +1.66184 +1.73429 +1.61166 +1.69619 +1.61489 +1.91136 +1.98104 +1.78644 +1.74987 +1.68999 +1.67021 +1.94163 +1.62502 +1.64079 +1.71968 +1.96909 +1.76472 +1.50266 +1.83098 +1.83136 +1.68868 +1.65064 +1.61419 +1.75603 +1.84122 +1.50114 +1.61676 +1.69365 +1.22861 +1.87994 +1.68335 +1.60681 +1.60101 +1.66779 +1.62892 +1.57632 +1.75852 +1.74583 +1.57188 +1.67837 +1.86559 +1.89667 +1.62437 +1.71498 +1.75001 +1.74128 +1.70416 +2.03086 +1.63853 +1.48336 +1.69567 +1.81627 +1.69874 +1.54991 +1.55600 +1.89292 +1.89010 +1.79115 +1.79561 +1.67860 +1.89711 +1.98010 +1.62137 +1.65782 +1.81723 +2.08115 +1.77716 +1.79471 +1.84128 +1.75574 +1.62092 +1.81701 +1.64181 +1.85224 +1.47328 +1.69870 +1.83771 +1.82885 +1.58251 +1.66326 +2.03017 +1.59503 +1.61807 +1.77763 +1.99898 +1.56465 +1.74572 +1.89407 +1.68691 +1.71858 +1.75136 +1.64165 +1.50568 +1.79730 +1.73023 +1.55547 +1.55279 +1.63362 +1.81819 +1.51640 +1.70416 +1.75186 +1.53141 +1.59776 +1.78769 +1.39412 +1.64063 +1.82560 +1.56968 +1.78437 +1.65960 +1.54057 +1.75316 +1.73601 +1.80565 +1.80517 +1.66052 +1.68886 +1.59459 +1.78439 +1.94434 +1.65152 +1.73506 +1.85047 +1.85449 +1.84821 +1.77037 +1.76457 +1.71362 +1.92625 +1.75586 +1.67538 +1.56977 +1.76597 +1.76972 +1.79766 +1.82680 +1.52266 +1.70640 +1.49053 +1.72018 +1.79768 +1.84484 +1.75510 +1.67770 +1.85300 +1.74922 +1.74152 +1.72467 +1.86777 +1.60178 +1.64989 +1.49260 +1.79489 +1.66474 +1.65233 +1.62725 +2.01183 +1.42380 +1.53128 +1.69048 +1.78695 +1.54640 +1.81320 +1.73053 +1.74215 +1.56183 +1.76082 +1.76303 +1.62555 +1.71432 +1.71803 +1.59637 +1.73723 +1.91108 +1.75778 +1.59039 +1.49397 +1.76777 +1.49309 +1.72718 +1.80034 +1.75741 +1.86130 +1.74835 +1.49657 +1.70332 +1.59829 +1.75002 +1.24620 +1.84078 +1.54317 +1.73787 +1.54272 +1.82467 +1.62071 +1.84877 +1.92134 +1.64142 +1.73017 +1.71777 +1.67111 +1.64810 +1.58874 +1.39405 +1.64850 +1.62070 +1.75427 +1.58407 +1.67669 +1.49031 +1.80823 +1.61665 +1.87065 +1.68361 +1.77870 +1.65959 +1.71198 +1.69984 +1.77297 +1.53284 +1.83908 +1.69045 +1.95437 +1.83905 +1.71184 +1.65725 +1.77060 +1.76952 +1.63650 +1.77152 +1.83695 +1.65162 +1.65412 +2.04295 +1.93675 +1.71309 +1.97994 +1.87224 +1.74203 +1.90044 +1.89352 +1.72996 +2.02522 +1.83634 +1.85199 +1.86355 +1.72800 +1.79642 +1.71769 +1.83468 +1.72324 +1.74079 +1.73955 +1.87910 +1.61276 +1.85033 +1.52650 +1.80667 +1.77413 +1.76731 +1.95538 +1.68947 +1.48999 +1.78967 +1.80257 +1.55580 +1.50760 +1.66953 +1.75556 +1.64829 +1.89927 +1.60112 +1.75713 +1.68514 +1.59757 +1.77138 +1.97430 +1.43770 +1.62576 +1.83799 +1.44236 +1.69984 +1.63657 +1.42436 +1.74655 +1.75384 +1.91364 +1.60355 +1.58852 +1.66893 +1.83052 +1.54174 +1.60823 +1.72424 +1.57239 +1.75927 +1.54006 +1.67462 +1.64205 +1.68572 +1.87319 +1.60568 +1.50946 +1.37044 +1.75998 +1.61356 +1.78709 +1.71514 +1.66952 +1.64836 +1.62825 +1.83169 +1.55935 +1.66683 +1.64151 +1.69796 +2.04098 +1.68460 +1.66230 +1.74641 +1.82368 +1.75432 +1.67516 +1.90042 +1.53595 +1.72354 +1.68965 +1.67990 +1.69057 +2.19487 +1.73110 +1.79523 +1.77911 +1.61654 +1.65947 +1.71948 +1.52722 +1.75345 +1.89764 +1.56793 +1.79992 +1.91493 +1.77149 +2.04355 +1.71880 +1.88461 +1.80912 +1.63640 +1.66514 +1.62076 +1.55582 +1.92228 +1.66845 +1.52539 +1.89706 +1.77035 +1.66434 +1.78352 +1.69201 +1.70180 +1.66580 +1.54665 +1.78621 +1.68005 +2.09327 +1.75929 +1.72736 +1.78904 +1.78003 +1.74458 +1.80362 +1.82681 +1.65683 +1.88816 +1.60024 +1.59462 +1.65979 +1.88283 +1.63023 +1.83786 +1.57918 +1.43626 +1.48771 +1.85278 +1.59791 +1.61994 +1.58095 +1.66379 +1.77510 +1.75266 +1.85881 +1.70670 +1.79533 +1.64430 +1.51665 +1.60298 +1.96619 +1.57694 +1.66666 +1.63820 +1.83909 +1.84064 +1.96279 +1.68958 +1.68961 +1.64109 +1.44981 +1.61960 +1.61055 +1.79681 +1.54979 +1.38780 +1.63837 +1.87316 +1.56781 +1.88567 +1.60228 +1.64538 +1.82831 +1.66410 +1.73936 +1.66346 +1.75600 +1.76981 +1.64638 +1.60397 +2.01246 +1.47670 +1.67187 +1.74140 +1.48659 +1.68685 +1.75225 +1.62849 +1.67902 +1.75886 +1.82256 +1.75068 +1.70906 +1.83138 +1.60106 +2.04106 +1.70216 +1.66573 +1.76989 +1.75876 +1.97360 +1.59119 +1.76440 +1.67207 +1.75878 +1.58654 +1.62647 +1.93463 +1.72194 +1.83609 +1.56494 +1.75154 +1.84071 +1.66274 +1.59489 +1.90190 +1.65401 +1.56073 +1.57678 +1.43725 +1.59407 +2.00628 +1.80099 +1.78227 +1.68382 +1.53266 +1.90619 +1.53457 +1.89062 +1.86785 +1.81978 +1.62983 +1.66358 +1.98898 +1.94734 +1.61611 +1.49333 +1.71482 +1.87093 +1.42534 +1.83174 +1.72114 +1.83779 +1.77149 +1.78909 +1.78212 +1.80629 +1.86465 +2.02800 +1.74494 +1.63680 +1.52579 +1.87522 +1.79291 +1.67070 +1.81497 +2.01571 +1.70106 +1.81588 +1.72300 +1.64157 +1.84803 +1.75268 +1.75512 +1.76545 +1.79535 +1.70148 +1.71236 +1.55903 +1.67680 +1.77427 +1.68151 +2.00986 +1.88277 +1.70046 +1.64346 +1.91239 +1.71621 +1.57695 +1.54193 +1.85207 +2.01896 +1.95536 +1.71400 +1.69367 +1.79129 +1.73277 +1.59816 +1.51241 +1.85221 +1.73957 +1.53151 +1.58641 +1.59033 +1.69014 +2.23670 +1.52379 +1.90853 +1.58667 +1.56358 +1.49122 +1.78346 +1.90759 +1.96337 +1.71122 +1.77477 +1.70962 +1.47586 +2.01959 +1.79041 +1.86808 +1.79240 +1.64768 +1.56924 +1.72267 +1.85576 +1.83866 +1.75318 +2.05018 +1.68060 +1.75177 +1.80160 +1.62136 +1.83695 +1.54441 +1.73824 +1.77344 +1.62852 +1.58838 +1.97249 +1.64075 +1.64394 +1.56303 +2.05681 +1.67900 +1.74327 +1.70693 +1.49676 +1.56246 +1.76558 +1.59987 +1.73372 +1.69389 +1.49667 +1.63918 +1.99296 +1.71658 +1.90659 +1.72924 +1.70879 +1.84010 +1.81614 +1.57490 +1.62150 +1.72011 +1.64268 +1.74740 +1.80069 +1.78404 +1.67808 +1.67827 +1.65252 +1.50970 +1.39542 +1.69044 +1.69062 +1.95235 +1.73326 +1.82482 +1.71648 +1.87963 +1.46237 +1.59312 +1.92140 +1.76901 +1.78927 +1.69158 +1.93180 +1.72317 +1.82754 +1.88142 +1.62619 +1.64415 +1.83321 +2.14779 +1.71443 +1.95885 +1.65088 +1.54842 +1.64205 +1.62331 +1.34121 +1.68972 +1.85525 +1.52539 +1.58218 +1.63537 +1.72517 +1.60047 +1.55493 +1.68130 +1.77127 +1.59390 +1.70863 +1.68239 +1.79544 +1.79145 +1.72985 +1.66384 +1.84891 +1.68485 +1.72935 +1.78888 +1.80581 +1.51128 +1.63836 +1.63322 +1.65443 +1.79343 +1.82330 +1.66083 +2.27848 +1.77073 +1.89616 +1.64783 +1.49336 +1.53178 +1.79761 +1.88075 +1.69471 +1.70703 +1.96659 +1.75678 +1.56084 +1.72135 +1.51310 +1.69312 +1.71795 +1.72363 +1.71588 +1.75496 +1.69267 +1.88504 +1.63419 +1.66712 +1.93733 +1.70494 +1.68203 +1.63593 +1.96403 +1.77719 +1.58429 +1.69122 +1.49344 +1.69199 +1.70824 +1.71425 +1.74609 +1.79946 +1.97150 +1.70264 +1.80251 +1.84945 +1.61234 +1.80933 +1.62562 +1.80413 +1.57249 +1.71565 +1.59450 +1.77685 +1.46368 +1.97576 +1.76470 +1.81149 +1.45468 +1.48021 +1.71191 +1.82542 +1.62888 +1.82141 +1.47455 +1.72204 +1.62370 +1.82215 +1.79086 +1.77054 +1.55649 +1.67966 +1.68519 +1.68201 +1.77495 +1.79875 +1.81444 +1.76274 +1.67965 +1.61090 +1.69251 +1.49963 +1.63449 +1.72910 +1.62221 +1.59462 +1.84744 +1.73129 +1.97152 +1.80496 +1.64059 +1.51189 +1.72732 +1.65724 +1.76534 +1.74750 +1.88201 +1.62113 +1.73369 +1.89214 +1.41898 +1.49288 +1.80209 +1.90066 +1.58909 +1.56143 +1.78460 +1.97666 +1.74830 +1.67742 +1.67177 +1.58140 +1.78762 +1.57758 +1.84368 +1.84484 +2.12109 +1.82936 +1.72556 +1.96026 +1.69505 +1.61302 +1.56622 +1.65540 +1.84010 +1.61949 +1.68206 +1.47184 +1.57237 +1.89368 +1.33409 +1.60181 +1.00247 +1.74188 +1.47714 +1.69062 +1.79156 +1.74446 +1.65367 +1.74350 +1.75249 +1.73254 +2.02275 +1.82801 +1.61337 +1.57878 +1.81426 +1.63440 +1.66301 +1.55755 +1.85272 +1.72129 +1.68137 +1.48561 +1.61497 +1.84207 +1.85638 +1.61174 +1.50857 +1.69340 +1.66968 +1.92167 +1.72246 +1.83600 +1.69550 +1.72010 +1.86135 +1.81893 +1.51963 +1.41827 +1.88024 +1.61169 +1.67909 +1.81024 +1.54021 +1.70698 +1.97164 +1.53246 +1.59185 +1.82234 +1.56397 +1.72699 +1.54148 +1.90259 +1.79578 +1.53051 +1.90812 +1.73753 +2.03938 +1.43454 +1.68873 +1.71802 +1.99556 +1.48935 +1.71631 +1.58838 +1.75540 +1.37063 +1.61987 +1.81821 +1.50608 +1.89420 +1.84446 +1.68295 +1.44976 +1.58788 +1.69970 +1.89247 +1.61110 +1.72392 +1.80636 +1.89714 +1.75480 +1.52762 +1.74933 +1.69197 +1.87762 +1.84657 +1.68350 +1.73273 +1.74995 +1.74456 +1.93059 +1.38313 +1.54497 +1.68180 +1.62934 +1.52656 +1.50886 +1.64332 +1.75811 +1.68670 +1.79394 +1.73345 +1.62236 +1.74328 +1.79415 +1.61825 +1.85819 +1.74783 +1.67546 +1.97099 +1.85473 +1.70734 +1.95633 +1.68223 +1.78684 +1.68386 +1.51840 +1.61569 +1.71806 +1.51247 +1.73729 +1.58052 +1.87599 +1.98720 +1.83117 +1.79394 +1.74269 +1.69184 +1.11342 +1.62954 +1.71106 +1.62215 +1.81561 +1.80435 +1.53323 +1.59344 +1.88609 +1.63473 +1.50183 +1.73065 +1.97326 +1.35391 +1.60138 +1.89501 +1.80286 +1.60776 +1.66525 +1.81472 +2.02530 +1.86808 +2.00331 +1.54370 +1.79741 +1.89590 +1.77277 +1.88360 +1.58116 +1.85695 +1.82538 +1.76479 +1.69676 +2.04165 +1.82172 +2.16868 +1.58687 +1.87574 +1.68473 +1.67343 +1.95410 +1.61274 +1.81875 +1.79671 +1.75114 +1.85654 +1.82791 +1.46777 +1.85050 +1.66230 +1.73051 +1.66637 +1.81934 +1.53839 +1.77189 +1.84749 +1.83723 +1.86559 +1.72398 +1.69912 +2.01523 +1.76349 +1.48752 +1.48077 +1.97380 +1.39017 +1.60418 +1.64170 +1.66351 +1.80254 +1.42475 +1.59578 +1.76988 +1.65556 +1.69969 +2.15212 +1.63154 +1.69984 +1.50754 +1.55172 +1.76572 +1.36932 +1.64413 +1.65278 +1.77987 +1.61029 +1.78630 +1.65580 +1.84617 +1.86778 +1.70722 +1.68743 +1.91838 +1.57721 +1.48073 +1.49478 +1.56133 +1.82385 +1.73427 +1.74061 +1.56619 +1.81202 +1.82383 +1.83848 +1.77963 +1.75685 +1.74860 +1.63051 +1.78006 +1.65784 +1.65921 +1.69682 +1.93066 +1.92594 +1.40032 +1.54017 +1.92162 +1.72322 +1.42075 +1.70404 +1.73379 +1.78421 +1.71901 +1.86281 +1.61768 +1.89952 +1.72448 +1.88067 +1.82611 +1.55320 +1.76442 +1.51147 +1.68259 +1.77973 +1.90812 +1.65945 +1.74296 +1.88049 +1.63620 +1.82196 +1.56889 +1.72703 +1.62125 +1.75020 +1.48205 +2.00030 +1.75449 +1.67026 +1.65842 +1.57926 +1.63949 +1.78621 +1.56904 +1.63933 +1.73686 +1.77609 +1.55871 +1.74902 +1.62633 +1.91715 +1.49103 +1.80549 +1.77283 +1.96913 +1.46484 +1.42552 +1.80006 +1.68363 +1.72130 +1.88742 +1.90002 +1.70868 +1.44628 +1.68095 +1.61160 +1.80181 +1.79780 +1.93666 +1.72385 +1.73822 +1.36606 +1.57467 +1.64099 +1.66154 +1.77482 +1.82194 +1.57099 +1.74087 +2.06668 +1.79076 +1.80071 +1.66358 +1.69940 +1.53093 +1.68207 +1.53674 +1.49329 +1.84728 +1.79903 +1.62748 +1.64617 +1.70293 +1.65787 +1.62790 +1.76458 +2.28727 +1.67350 +1.70094 +1.92207 +1.74713 +1.55046 +1.80900 +1.89839 +1.70844 +2.11238 +1.66196 +1.62692 +1.72606 +1.49905 +1.72567 +1.79830 +1.58307 +1.93435 +1.79625 +1.83466 +1.63612 +1.70375 +1.80559 +1.46130 +1.65712 +1.79617 +1.82805 +1.72772 +1.75739 +1.77173 +1.81215 +1.82995 +1.75786 +1.62704 +1.88057 +1.57367 +1.63695 +1.62309 +1.57345 +1.42847 +1.80674 +1.84709 +1.54833 +1.78057 +1.84362 +1.68984 +1.73107 +1.80761 +1.64086 +1.87187 +1.64274 +1.35864 +1.48552 +1.69077 +1.91049 +1.76006 +1.90447 +1.62948 +1.76133 +1.60438 +1.58498 +1.85123 +1.62372 +1.71279 +1.68914 +1.63774 +1.60511 +1.94789 +1.77543 +1.53727 +1.72674 +1.57442 +1.92622 +1.71027 +1.84645 +1.85959 +1.71308 +1.91812 +1.58251 +1.68873 +1.50371 +1.73242 +1.55549 +1.88983 +1.66810 +1.71114 +1.96045 +1.61505 +1.69783 +1.85257 +1.89979 +1.62784 +1.69616 +1.97527 +1.82534 +1.74024 +1.65198 +1.52828 +1.57764 +1.86878 +1.54146 +1.70622 +1.87296 +1.86484 +1.59024 +1.73601 +1.82781 +1.68039 +1.84019 +1.72065 +1.83535 +1.64521 +1.55410 +1.58156 +1.73696 +1.58377 +2.11791 +1.73186 +1.70519 +1.49436 +1.62178 +1.56872 +1.56738 +1.80437 +1.84678 +1.62465 +1.67417 +1.75520 +1.70144 +1.79334 +1.90835 +1.66834 +1.77120 +1.51629 +1.83584 +1.76784 +1.91363 +1.87043 +1.98646 +1.76245 +1.88410 +1.54644 +1.53352 +1.76559 +2.02286 +1.71511 +1.75620 +1.68105 +1.71123 +1.64758 +1.55849 +1.59453 +1.36444 +1.73288 +1.77894 +1.54533 +1.65132 +1.68864 +1.83058 +2.05494 +1.66733 +1.81214 +1.80813 +1.81437 +1.87089 +1.82413 +1.72619 +1.66101 +1.85419 +1.83752 +1.80014 +1.73968 +1.71416 +1.58438 +1.50822 +1.56216 +1.69791 +1.70261 +1.72002 +2.14767 +1.72580 +1.69858 +1.80896 +1.59078 +1.50829 +1.55671 +1.82451 +1.82035 +1.64263 +1.55368 +1.43049 +1.25084 +1.52649 +1.77522 +1.55315 +1.81615 +1.62332 +1.70872 +1.70786 +1.60251 +1.60034 +1.67334 +1.75930 +1.59980 +1.90369 +2.05351 +1.43955 +1.86752 +1.65651 +1.86597 +1.42199 +1.67568 +1.90969 +1.67554 +1.58406 +1.71993 +1.69161 +1.96572 +1.56527 +1.63540 +1.79576 +1.65712 +1.25644 +1.78090 +1.59581 +1.66837 +1.70289 +1.93276 +1.73617 +1.62444 +1.65020 +1.36795 +1.95849 +1.79177 +1.88494 +1.66133 +1.67604 +1.78513 +1.79238 +1.74025 +1.72823 +1.48253 +1.60147 +1.58518 +1.77880 +1.52313 +1.55628 +1.67053 +1.51536 +1.95442 +1.63705 +1.65699 +1.64455 +1.60575 +1.72916 +1.82235 +1.63382 +1.79202 +1.53072 +1.70110 +1.64877 +1.59565 +1.91066 +1.69471 +1.66167 +1.70887 +1.52265 +1.68563 +1.73482 +1.61999 +1.67095 +1.40646 +1.78848 +1.61120 +1.63330 +1.70130 +1.63638 +1.57070 +1.75648 +1.73252 +1.57166 +1.71400 +1.76120 +1.48627 +1.69807 +1.75896 +1.67450 +1.61503 +1.78853 +2.09268 +1.48768 +1.91752 +1.74808 +1.47889 +1.81997 +1.50306 +1.65126 +2.13057 +1.62345 +1.75754 +1.89773 +1.53140 +2.03046 +1.87632 +1.58596 +1.96619 +1.80927 +1.12628 +1.62551 +1.45383 +1.73419 +1.61267 +1.81736 +1.70867 +1.71341 +1.90422 +1.56558 +1.80146 +1.81518 +1.76891 +1.88173 +1.61462 +1.69514 +1.81238 +1.72419 +1.80390 +1.74021 +1.98272 +1.62509 +1.71083 +1.58117 +1.82904 +1.73749 +1.62128 +1.83431 +1.68977 +1.71731 +1.87780 +1.90257 +1.66085 +1.60775 +1.79945 +1.85212 +1.68418 +1.54344 +1.61284 +1.66469 +1.88837 +1.77120 +1.51390 +1.78908 +1.60932 +1.60950 +1.56842 +1.79985 +1.70753 +1.97485 +1.72020 +1.70225 +1.78530 +1.85165 +1.66067 +1.55410 +1.91113 +1.82027 +1.66590 +1.77815 +2.05481 +1.80678 +1.79817 +1.50788 +1.58560 +1.58283 +1.73713 +1.79301 +1.92301 +1.66865 +1.59027 +1.86562 +1.83514 +1.94667 +1.68494 +1.73906 +1.64752 +1.59836 +1.56159 +1.78990 +1.64623 +1.68858 +1.77062 +1.68008 +1.65750 +1.54535 +1.90647 +2.02591 +1.76548 +1.67705 +1.67726 +1.64869 +1.56540 +1.75468 +2.08215 +1.64559 +1.85943 +1.53569 +1.68594 +1.75996 +1.77549 +1.70125 +1.62220 +1.74044 +1.74324 +1.67036 +1.69658 +1.85530 +1.84691 +1.46508 +1.74849 +1.65887 +1.71286 +1.49985 +1.52895 +1.73720 +1.71439 +1.86654 +1.62357 +2.00191 +1.75744 +1.73403 +1.75683 +1.70722 +1.66111 +2.02515 +1.82897 +1.69494 +1.04599 +1.63220 +2.05982 +1.46899 +1.84461 +1.85332 +1.65945 +1.87980 +1.70706 +1.75025 +1.81797 +1.64578 +1.75636 +1.59968 +1.93168 +1.85475 +1.58238 +1.65685 +1.71683 +1.61740 +1.54890 +1.64141 +1.80082 +1.79802 +1.55474 +1.74509 +1.72931 +1.71699 +2.16346 +1.66064 +1.65310 +1.81803 +1.84794 +1.64972 +1.57339 +1.68227 +1.82906 +1.56775 +1.47905 +2.02439 +1.67074 +1.64493 +1.54692 +1.63334 +1.85008 +1.63484 +1.80476 +1.68925 +1.51248 +1.51072 +1.64210 +1.75857 +1.66535 +1.63696 +1.62420 +1.95020 +1.78588 +1.74372 +1.84105 +1.61237 +1.36905 +1.73346 +1.60182 +1.68226 +1.92254 +1.85507 +1.86570 +1.95439 +1.69765 +1.88362 +1.49772 +1.61254 +1.90762 +1.57130 +1.63002 +1.63995 +1.64734 +1.94298 +1.68093 +1.87347 +1.72282 +1.87281 +1.62994 +1.98582 +1.67827 +1.88543 +1.68821 +1.67793 +1.68719 +1.72101 +1.70082 +1.92612 +1.87271 +1.55164 +1.77281 +1.61590 +1.37514 +1.65232 +1.70841 +1.65670 +1.94076 +1.65044 +1.71246 +1.67455 +1.64134 +1.56824 +1.75530 +1.76154 +1.69249 +1.91719 +1.72607 +1.58235 +1.80638 +1.71284 +1.92779 +1.79194 +1.65052 +1.98309 +1.76271 +1.70599 +1.89271 +1.73254 +1.71392 +1.59560 +1.97375 +1.98904 +1.59499 +1.61904 +2.66624 +1.58767 +1.45039 +1.42350 +1.79411 +1.79653 +1.71334 +1.64686 +1.51408 +1.63598 +1.74127 +1.71102 +1.79422 +1.75942 +1.69509 +1.73901 +1.93516 +1.69635 +1.69314 +1.77774 +1.94838 +1.70611 +1.85413 +1.74888 +1.66986 +1.43497 +1.73688 +2.00494 +1.43280 +1.60576 +1.90877 +1.76989 +1.49747 +1.71142 +1.85970 +1.84237 +1.78087 +1.57318 +1.50662 +1.92421 +1.70014 +1.65775 +1.87695 +1.63248 +1.60022 +1.62857 +1.80799 +1.83016 +1.62243 +1.71447 +1.50966 +1.69352 +1.80973 +1.70437 +1.74374 +1.66562 +1.88333 +1.82193 +1.58704 +1.44946 +1.81021 +1.64569 +1.89979 +1.63866 +1.64481 +1.85866 +1.54061 +1.80839 +1.83894 +1.92265 +1.79479 +1.77316 +1.80132 +1.67635 +1.65938 +1.71151 +1.68114 +1.79143 +1.60005 +1.91290 +1.83449 +1.65806 +1.68340 +1.81029 +1.97633 +1.70020 +1.76575 +1.56851 +1.52476 +1.68999 +1.75908 +1.73686 +1.69860 +1.73811 +1.71799 +1.82948 +1.79467 +1.70077 +1.76385 +1.81565 +1.45208 +1.71939 +1.95883 +1.74095 +1.37328 +1.63889 +1.40084 +1.98816 +1.65560 +1.51899 +1.94397 +1.50112 +1.66961 +1.59076 +1.58572 +1.69418 +1.51007 +1.85124 +1.75757 +1.56876 +1.49605 +1.80984 +1.88380 +1.86816 +1.76137 +1.80899 +1.58046 +1.83690 +1.29040 +1.84063 +1.74679 +1.73586 +1.64407 +1.72255 +1.94409 +1.93550 +1.81097 +1.64892 +1.90671 +1.59268 +1.64699 +1.69632 +1.75522 +1.67160 +1.95633 +1.58676 +1.56838 +1.73374 +1.70666 +1.65949 +1.73607 +1.76394 +1.66895 +1.63747 +1.69203 +1.83927 +1.69279 +1.72229 +1.50703 +1.83139 +1.76299 +1.95308 +1.57700 +1.49348 +1.86105 +1.79477 +1.96026 +1.44183 +1.70680 +1.61404 +1.58086 +1.82281 +1.85208 +1.77386 +1.75587 +1.60036 +1.65794 +1.58039 +1.74296 +1.56016 +1.76949 +1.50557 +1.62508 +1.63842 +1.82192 +1.53520 +1.85996 +1.87873 +1.80912 +1.77259 +1.77918 +1.89247 +1.76492 +1.81710 +1.63815 +1.92752 +1.70633 +1.72994 +1.49963 +1.57994 +1.83351 +1.50041 +2.00387 +1.56608 +1.60591 +1.51700 +1.74581 +1.53734 +1.86278 +1.64171 +1.77797 +1.59473 +1.49209 +1.59172 +1.49199 +1.85999 +1.55426 +1.39046 +1.87821 +1.68184 +1.70926 +1.93054 +1.71322 +1.76502 +1.76340 +1.70863 +1.83143 +1.93591 +1.72688 +1.79944 +1.64070 +1.73490 +1.84113 +1.66654 +1.79981 +1.71414 +1.63576 +1.50135 +1.85657 +1.55357 +1.68873 +1.70828 +1.79421 +1.59666 +1.54892 +1.56848 +1.71050 +1.78846 +1.74990 +1.62892 +1.57014 +1.78236 +1.53107 +1.77551 +1.66079 +1.93267 +1.88237 +1.93764 +1.65765 +1.81729 +1.66388 +1.75102 +1.66079 +1.52055 +1.74637 +1.65138 +1.73173 +1.60140 +1.68801 +1.95145 +1.72667 +1.89487 +1.50582 +1.93000 +1.74108 +1.67106 +1.76027 +1.57309 +1.60519 +1.92482 +2.17335 +1.74602 +1.71031 +1.43260 +1.66328 +1.65680 +1.68378 +1.68937 +1.87741 +1.70737 +1.77864 +1.67215 +1.73909 +1.69671 +1.67952 +1.53333 +1.30559 +1.62282 +1.62108 +1.92336 +1.91640 +1.52457 +1.77277 +1.55098 +1.51455 +1.88411 +1.66450 +1.56763 +1.67478 +1.82021 +1.81207 +1.70822 +1.45532 +1.65617 +1.67374 +1.63170 +1.69806 +1.90410 +1.69624 +1.69524 +1.61929 +1.57752 +1.71293 +1.59320 +1.67858 +1.55359 +1.76872 +2.28380 +1.92627 +1.76462 +1.74320 +1.88620 +1.63631 +1.80533 +1.72578 +2.05084 +1.59912 +1.57877 +1.43837 +1.70871 +1.65183 +1.81390 +1.35780 +1.58636 +1.78109 +1.48752 +1.67645 +2.09154 +1.98700 +1.55159 +1.53991 +1.81860 +1.54413 +1.68624 +1.73336 +1.52138 +1.67726 +1.62376 +1.69958 +1.79772 +1.81117 +1.75323 +1.71112 +1.64908 +1.81550 +1.63309 +1.86329 +1.44924 +1.42525 +1.66983 +1.87631 +1.71148 +1.67746 +1.74068 +1.41535 +1.75821 +1.71004 +1.70597 +1.84332 +1.65255 +1.66108 +1.72687 +1.76574 +1.47717 +1.54019 +1.75305 +1.77999 +1.98815 +1.71010 +1.68254 +1.72190 +1.49861 +1.66619 +1.70476 +2.06636 +1.48009 +1.69433 +1.72603 +1.74750 +1.76075 +1.67065 +1.65751 +1.63671 +1.53729 +1.51009 +1.84478 +1.36924 +1.75231 +1.77301 +1.49588 +1.65160 +1.89013 +1.61057 +1.95092 +1.64225 +1.58876 +1.85830 +1.80658 +1.48246 +1.72921 +1.61540 +1.77214 +1.71660 +1.74388 +1.61541 +1.89353 +2.06872 +1.70429 +1.55207 +1.71650 +1.73405 +1.92422 +1.73462 +1.85233 +1.82186 +1.78391 +1.59958 +1.82389 +1.87889 +1.80499 +1.86814 +1.65587 +1.75864 +1.53106 +1.85189 +1.81463 +1.78174 +1.76374 +1.82534 +1.90316 +1.85624 +1.72673 +1.60952 +1.63533 +1.91990 +1.53501 +1.61372 +1.58392 +1.75954 +1.57603 +1.79034 +1.62648 +1.69852 +1.59116 +1.69631 +1.79254 +1.69067 +1.60508 +1.52995 +1.75831 +1.78851 +1.55495 +1.93055 +1.78052 +1.77588 +1.76999 +1.62749 +1.58414 +1.73676 +1.66884 +1.63587 +1.66669 +1.65260 +1.75337 +1.63023 +1.82647 +1.53422 +1.86395 +1.58607 +1.50032 +1.97095 +1.61741 +1.25237 +1.65925 +1.66050 +1.43296 +1.98254 +1.86571 +1.76082 +1.81074 +1.77411 +1.92198 +1.56070 +1.68696 +1.68831 +1.59702 +1.63942 +1.76714 +1.60292 +1.71600 +1.85248 +1.76420 +1.73775 +1.81557 +1.72918 +1.66487 +1.53978 +1.86481 +2.01462 +1.63761 +1.85643 +1.70544 +1.71149 +1.85821 +1.73753 +1.69478 +1.91207 +1.84943 +1.65458 +1.76638 +1.74759 +1.54440 +1.52414 +1.68915 +1.58662 +1.53072 +1.66113 +1.45847 +1.88703 +2.23300 +1.57614 +1.66991 +1.77816 +1.47352 +1.39651 +1.67824 +1.96976 +1.48920 +1.85883 +1.91085 +1.90292 +1.80326 +1.79790 +1.81517 +1.47936 +1.69474 +1.67079 +1.48080 +1.77320 +1.43889 +1.61814 +1.74028 +1.69212 +1.69021 +1.56340 +1.43271 +1.76642 +2.06659 +1.79619 +1.76776 +1.87296 +1.79193 +1.68840 +1.86824 +1.50707 +1.63317 +1.94003 +1.66711 +1.65608 +1.75191 +1.90544 +1.81470 +2.05306 +1.72922 +1.78750 +1.67781 +1.85920 +1.85036 +1.66851 +1.52125 +1.58674 +1.70959 +1.62703 +1.66934 +1.41695 +1.48693 +1.85723 +1.56333 +1.79623 +1.87356 +1.59064 +1.83369 +1.65964 +1.62618 +1.82859 +1.58749 +1.83968 +1.89246 +1.71536 +1.77065 +1.67135 +1.76170 +1.78996 +1.85116 +1.68170 +1.79781 +1.94917 +1.85029 +1.70972 +1.85018 +1.70204 +1.74253 +1.84438 +1.74253 +1.79420 +1.41982 +1.69526 +1.88847 +1.78160 +1.62271 +2.06183 +1.66151 +1.78772 +1.80006 +1.62961 +1.66606 +1.68528 +1.67356 +1.62996 +1.49001 +1.05091 +1.82429 +1.79687 +1.88330 +1.65994 +1.78015 +1.97492 +1.62153 +1.87839 +1.48419 +1.70381 +1.82593 +1.72516 +1.78472 +1.83579 +1.47535 +1.80565 +1.75728 +1.95545 +1.68587 +1.73179 +1.92379 +1.67901 +1.78181 +2.03914 +1.91991 +1.79170 +1.74569 +1.94656 +1.90196 +1.56482 +1.74802 +1.69049 +1.73028 +1.85268 +1.88715 +1.73651 +1.67344 +1.85771 +1.71409 +1.55405 +1.66188 +1.71134 +1.60173 +1.72685 +1.77548 +1.80270 +1.71739 +1.69227 +1.65168 +1.90738 +1.71151 +1.73093 +1.76874 +1.79409 +1.79116 +1.89427 +1.60976 +1.69316 +1.74739 +1.66788 +1.80367 +1.48972 +1.73874 +1.50031 +1.87405 +1.72158 +1.89691 +1.41657 +1.73407 +1.88605 +1.44391 +1.86203 +1.72219 +1.69612 +1.68663 +1.64190 +1.64892 +1.59032 +1.68222 +1.68193 +1.94057 +1.64807 +1.63336 +1.84254 +1.64881 +1.75690 +1.67271 +1.65790 +1.74528 +1.87897 +1.83141 +1.57638 +1.61032 +1.78967 +1.70766 +1.83370 +1.85100 +1.75831 +1.39039 +1.62689 +1.82765 +1.85033 +1.74007 +1.64459 +1.82214 +1.71308 +1.87672 +1.90806 +1.59173 +1.85459 +1.48967 +1.73113 +1.90560 +1.49340 +1.69466 +1.75910 +1.66549 +1.81355 +1.85156 +1.80929 +1.63056 +1.55848 +1.83231 +1.59578 +1.71325 +1.69071 +1.73925 +2.54827 +1.99944 +1.78403 +1.72190 +1.99072 +1.67384 +1.62885 +1.93843 +1.91512 +1.91003 +1.68473 +1.55533 +1.57011 +1.90359 +1.78539 +1.67076 +1.74439 +1.69069 +1.89870 +1.95709 +1.80550 +1.51286 +1.78892 +1.66977 +1.79486 +1.69229 +1.75368 +1.65475 +1.68471 +1.81341 +1.82784 +1.45456 +1.66112 +1.70037 +1.49946 +1.59673 +1.90376 +1.53315 +1.80439 +1.65903 +1.59719 +1.46631 +1.56720 +1.76537 +1.83745 +1.89060 +1.92564 +1.76781 +1.83579 +1.59679 +1.72387 +1.74908 +1.74880 +1.54783 +1.40293 +1.87035 +1.62239 +1.65456 +1.67154 +1.77656 +1.71152 +1.82261 +1.54104 +1.67771 +1.93921 +1.68019 +1.84669 +1.78501 +1.52113 +1.79152 +1.66478 +1.69370 +1.91101 +1.82185 +1.69872 +1.86703 +1.82310 +1.50525 +1.55284 +1.67260 +2.03285 +1.67359 +1.66161 +1.76115 +1.53151 +1.81544 +1.49493 +1.67701 +1.67362 +1.31949 +1.77713 +1.70589 +1.80496 +1.62272 +1.86918 +1.85771 +1.58765 +1.64820 +1.68432 +1.99144 +1.66323 +2.00327 +1.72392 +1.85598 +1.65736 +1.23311 +1.77946 +1.81047 +1.62069 +1.84806 +1.59808 +1.70942 +1.72321 +1.76291 +1.73355 +1.75261 +1.63645 +1.65981 +1.76194 +1.61751 +1.42736 +1.64244 +1.58247 +1.60805 +1.68973 +1.78856 +1.51658 +1.52601 +1.71892 +1.51693 +1.64972 +1.92836 +1.80517 +1.57145 +1.75523 +1.77733 +1.73625 +1.82370 +1.69911 +1.61522 +1.76286 +1.45194 +1.79189 +1.53294 +1.53276 +1.65356 +1.84715 +1.58411 +1.54824 +1.85725 +1.55779 +1.92812 +1.67904 +1.62790 +1.71261 +1.93169 +1.58534 +1.79587 +1.81747 +1.68858 +1.87378 +1.64969 +1.84152 +1.56689 +1.85695 +1.71653 +1.60555 +1.69782 +1.73672 +1.88172 +1.85034 +1.58862 +1.60773 +1.68391 +1.69840 +1.63351 +1.79591 +1.54904 +1.84053 +1.79785 +1.68728 +1.77901 +1.70880 +1.51154 +1.70146 +1.78282 +1.74533 +1.67704 +1.75483 +1.84996 +1.79125 +1.57073 +1.77282 +1.67760 +1.77892 +1.39165 +1.81679 +1.78587 +1.55695 +1.81597 +1.89082 +1.62862 +1.68162 +1.79131 +1.78089 +1.78500 +1.77822 +2.20254 +1.73175 +1.44939 +1.58741 +1.79654 +1.78138 +1.72882 +1.83815 +1.59109 +1.78986 +1.82797 +1.59387 +1.72149 +1.68172 +1.54622 +1.55215 +1.91512 +1.56199 +1.68600 +1.61201 +1.78921 +1.84087 +1.70072 +1.74742 +1.49342 +1.53321 +1.91593 +2.11891 +2.05419 +1.86459 +1.80294 +1.72922 +1.95925 +1.72580 +1.81877 +1.71744 +1.70508 +1.79081 +2.13183 +1.56814 +1.68993 +1.72235 +1.43268 +1.81632 +1.41964 +1.82766 +1.56588 +2.05393 +1.89147 +2.00886 +1.70434 +1.63818 +1.73217 +1.63435 +1.58731 +1.60003 +1.90468 +1.62158 +1.78651 +1.96423 +1.64182 +1.69412 +1.73140 +1.98779 +1.89090 +1.86104 +1.44161 +1.39943 +1.75736 +1.68808 +1.58027 +1.45340 +1.70234 +1.95922 +1.60725 +1.68881 +1.77088 +1.71054 +1.66912 +1.55822 +1.86640 +1.73319 +1.80018 +1.62794 +2.06507 +1.64244 +1.63155 +1.61959 +1.68522 +1.68508 +1.65727 +1.57529 +1.64383 +1.86518 +1.82837 +1.76853 +1.72848 +1.32475 +1.56279 +1.81239 +1.88366 +1.85683 +2.01665 +1.74960 +1.75650 +1.69411 +1.79062 +1.69556 +1.71960 +1.70574 +1.72460 +1.66045 +1.71089 +1.69287 +1.71851 +1.74393 +1.83580 +1.77489 +1.60570 +1.74407 +1.79178 +1.81059 +1.72140 +1.61071 +1.60234 +1.60903 +1.54767 +1.78865 +1.67369 +1.71881 +1.56004 +1.70604 +1.72707 +1.85592 +1.65563 +1.62553 +1.66933 +1.63069 +1.98703 +1.59206 +1.65468 +1.57286 +1.51847 +1.70416 +1.80752 +1.51694 +1.79753 +1.60010 +1.76546 +1.57771 +1.63763 +1.63993 +1.57426 +1.77790 +1.70237 +1.86572 +1.67022 +1.83434 +1.64225 +1.58136 +1.86200 +1.72045 +1.78545 +1.76987 +2.01400 +1.44599 +1.53731 +1.79097 +1.58594 +1.73775 +1.95294 +1.70577 +1.66340 +1.59953 +1.54467 +1.89276 +1.60363 +1.44271 +1.62928 +1.80613 +1.78068 +1.57797 +1.66351 +1.80324 +1.84248 +1.46606 +1.97142 +1.82973 +1.81633 +1.68814 +1.39449 +1.84618 +1.98180 +1.75861 +1.77503 +1.86253 +1.92505 +1.71979 +1.74160 +1.69576 +1.64181 +1.76751 +1.65369 +1.62746 +1.64745 +1.96316 +1.67702 +1.71866 +1.77225 +1.74730 +1.75097 +1.74901 +1.65478 +1.65665 +2.12146 +2.14257 +1.68491 +1.78873 +1.76650 +1.66704 +1.53490 +1.88307 +1.66133 +1.79737 +1.57275 +1.65817 +1.89442 +1.79336 +1.84960 +1.77368 +1.60951 +1.75953 +1.71488 +2.00345 +1.80362 +1.72818 +1.70480 +1.70384 +1.66622 +1.49166 +1.69691 +1.75088 +1.66626 +1.76019 +1.77190 +2.00847 +1.57973 +1.53983 +1.87706 +1.67568 +1.43166 +1.49545 +1.66426 +1.60904 +1.83640 +1.45466 +1.86424 +1.69549 +2.19190 +1.77037 +1.74532 +1.90489 +1.57545 +1.61497 +1.75790 +1.72441 +1.68176 +1.62844 +1.67124 +1.82142 +1.77003 +2.01673 +1.95187 +1.72766 +1.80086 +1.59984 +1.59563 +1.61343 +1.61806 +1.83765 +1.80626 +1.70828 +1.59676 +1.77505 +1.73948 +1.83116 +1.62168 +1.75830 +1.63549 +2.04306 +1.72085 +1.59974 +1.83529 +1.59934 +1.71655 +1.55875 +1.94918 +1.63739 +1.95440 +1.79392 +1.73001 +1.58525 +1.73423 +1.84003 +1.82463 +1.43688 +1.65499 +1.64382 +1.65606 +1.90482 +1.67375 +1.77828 +1.74443 +1.54957 +1.94470 +1.64669 +1.73157 +1.75005 +1.54080 +1.69668 +1.69745 +1.65252 +1.99172 +1.82133 +1.71208 +1.71397 +1.68052 +1.53886 +1.61141 +1.74823 +1.87173 +1.74280 +1.70622 +1.61744 +1.65457 +1.77505 +1.55253 +1.59710 +1.81523 +1.83698 +1.81166 +1.74009 +1.74216 +1.61037 +1.75412 +1.67619 +1.87510 +1.76740 +1.82493 +1.56139 +1.82138 +1.87513 +1.63689 +2.06173 +1.70386 +1.90376 +1.38592 +1.58343 +1.49694 +1.72511 +1.87341 +1.65501 +1.63594 +1.65107 +1.70027 +1.94801 +1.72044 +1.75693 +1.60969 +1.69580 +1.79770 +1.69905 +1.49739 +1.59454 +1.78291 +1.87534 +1.67530 +1.71580 +1.61866 +1.62680 +1.59326 +1.77015 +1.43268 +1.76742 +1.89829 +1.76627 +1.44233 +1.72977 +1.34768 +1.61974 +1.96800 +1.77199 +1.84900 +1.73967 +1.81052 +1.90509 +1.76409 +1.50699 +1.62938 +1.71955 +1.84905 +1.84867 +1.80841 +1.59527 +1.62517 +1.79032 +1.77766 +1.55585 +1.92721 +1.56835 +1.77167 +1.97182 +1.70396 +1.72090 +1.77243 +1.66580 +1.91395 +1.51682 +1.75747 +2.10995 +1.77431 +1.85380 +1.83271 +1.51926 +1.75892 +1.86512 +1.89349 +1.82194 +1.65231 +1.83861 +1.54325 +1.91738 +1.83794 +2.20315 +1.73037 +1.65212 +1.64602 +1.86903 +1.82536 +1.71732 +1.80899 +1.79684 +1.54170 +1.79464 +1.83259 +1.76587 +1.60146 +1.78260 +1.92253 +1.64233 +1.69163 +1.76553 +1.75975 +1.61014 +1.76828 +1.61447 +1.72086 +1.49560 +1.67044 +1.44497 +1.61300 +1.69690 +1.97991 +1.62044 +1.59180 +1.56458 +1.62856 +1.92580 +1.79135 +1.71801 +1.45938 +1.70329 +1.41673 +1.68749 +1.83912 +1.77624 +1.81283 +1.65959 +1.74344 +1.86335 +1.82989 +1.73215 +1.69134 +1.56130 +1.62760 +1.83072 +1.55428 +1.82292 +1.68794 +1.92705 +1.86483 +1.69824 +1.78248 +1.64790 +1.95110 +1.88718 +1.71896 +1.74042 +1.91549 +1.82104 +1.55802 +1.94440 +1.51062 +1.55748 +1.60615 +1.75305 +1.70561 +1.47639 +1.45485 +1.65039 +1.75345 +1.95664 +1.94688 +1.87331 +1.61072 +1.74457 +1.93626 +1.48064 +1.53019 +1.87343 +1.52789 +1.73802 +1.97125 +1.76225 +1.90181 +1.88789 +1.72013 +1.91476 +1.85074 +1.69265 +1.60689 +1.68676 +1.76026 +2.00378 +1.79732 +1.71810 +1.76629 +1.63363 +1.79024 +1.62144 +1.72714 +1.61452 +1.96593 +1.95521 +1.72072 +1.78116 +1.72272 +1.49001 +1.79805 +1.35692 +1.88513 +1.76312 +1.63214 +1.65714 +1.77518 +1.52916 +1.71627 +1.72574 +1.67749 +1.82354 +1.53879 +1.50408 +1.92729 +1.85904 +1.68187 +1.57797 +1.64185 +1.78170 +1.78287 +1.72794 +1.83313 +1.79443 +1.75341 +1.64813 +1.66930 +1.72518 +1.74938 +1.74568 +1.92682 +1.68632 +1.90895 +1.59180 +1.79197 +1.70307 +1.69198 +1.91144 +1.62570 +1.70748 +1.79761 +1.85829 +1.70892 +1.76893 +1.62283 +1.90905 +1.78922 +1.64424 +1.77982 +1.80387 +1.65365 +1.51998 +1.77516 +1.68881 +1.68179 +1.66608 +1.50543 +1.80011 +1.72285 +1.67628 +1.60652 +1.85676 +1.46739 +1.87495 +1.79893 +1.52971 +1.62974 +1.49505 +1.58846 +1.69887 +1.80516 +1.77529 +1.69956 +1.60174 +1.61731 +1.85599 +2.03407 +1.70494 +1.84571 +1.74356 +1.55239 +1.56584 +1.77792 +1.84814 +1.74779 +1.74131 +1.67573 +1.45241 +1.81400 +1.81049 +1.47153 +1.60523 +1.70953 +1.67294 +1.53915 +1.51552 +1.91460 +1.60801 +1.58288 +1.62564 +1.88425 +1.93189 +1.96102 +1.70637 +1.72194 +1.69348 +1.88623 +1.65759 +1.64183 +1.70452 +1.69700 +1.54537 +1.59286 +1.91247 +1.71439 +1.69038 +1.71719 +1.55848 +1.74532 +1.58748 +1.47302 +1.63826 +1.78283 +1.77305 +1.77314 +2.02259 +1.78419 +1.83869 +1.52956 +1.80156 +1.73733 +1.90214 +1.83682 +1.64752 +1.58787 +1.82952 +1.95039 +1.93538 +1.63452 +1.81465 +2.08361 +2.41304 +1.96126 +1.71134 +1.72031 +1.70798 +1.78539 +1.50836 +1.70398 +1.57791 +1.83486 +1.64872 +1.87293 +1.70898 +1.60756 +1.97561 +1.96040 +1.69909 +1.81881 +1.41676 +1.80608 +1.95965 +2.10289 +1.98696 +1.59046 +1.43926 +1.48280 +1.95623 +1.80968 +1.71818 +1.75355 +1.74261 +1.87018 +1.79625 +1.89272 +2.00879 +1.81579 +1.64995 +1.43983 +1.99465 +1.75974 +1.67054 +1.65542 +1.93324 +1.90443 +1.95373 +1.67709 +1.61914 +1.71074 +1.80240 +1.90790 +1.76751 +1.62384 +1.81200 +1.69192 +1.73593 +1.80297 +1.71329 +2.03363 +1.62169 +1.73471 +1.75801 +1.84078 +1.79038 +1.90474 +1.60038 +1.80245 +1.56916 +1.66182 +1.62467 +1.67200 +1.64140 +1.58773 +2.07904 +1.47466 +1.88446 +1.85507 +1.71236 +1.60521 +1.80599 +1.74699 +1.62262 +1.62728 +1.63733 +1.65790 +1.66194 +1.70036 +1.83130 +1.74429 +1.77026 +1.76830 +1.63376 +1.75267 +1.75639 +1.95311 +1.83548 +1.78075 +1.76376 +1.71050 +1.63544 +1.73834 +1.54615 +1.50315 +1.75424 +1.69983 +1.62225 +1.49696 +1.71932 +1.72787 +1.51956 +1.90424 +1.64230 +1.57537 +1.77354 +1.69235 +1.70449 +1.40287 +1.67886 +1.78552 +1.65653 +1.64107 +2.00444 +1.43648 +1.64446 +1.83145 +1.72858 +1.84193 +1.74921 +1.64362 +2.03822 +1.86478 +1.64154 +1.77735 +2.06474 +1.70105 +1.70424 +1.76190 +1.72522 +1.82284 +1.59270 +1.57342 +1.93051 +1.60598 +1.81678 +1.74811 +1.86608 +1.72826 +1.73005 +1.64465 +1.87286 +2.18924 +1.68584 +1.66306 +1.65015 +1.94757 +1.86449 +1.63048 +1.58810 +1.69379 +1.61296 +1.68329 +1.86178 +1.65396 +1.80381 +2.19063 +1.42246 +1.68767 +1.83498 +1.66014 +1.53454 +1.28405 +1.65214 +1.76755 +1.48677 +1.69894 +1.80776 +1.71925 +1.85433 +1.63734 +1.89225 +1.55269 +1.48533 +1.68910 +1.67042 +1.80786 +1.84119 +1.55857 +1.74718 +2.10455 +1.48412 +1.60042 +1.47475 +1.60444 +1.48014 +1.67327 +1.63840 +1.90674 +1.42652 +1.65877 +1.83254 +1.63950 +1.68460 +1.62639 +2.01920 +1.63827 +1.78559 +1.79320 +1.84301 +1.83289 +1.66237 +1.64633 +1.73832 +2.02699 +1.82917 +1.80382 +1.84984 +1.65321 +1.72478 +1.83037 +1.80689 +1.79446 +1.73303 +1.87093 +1.57937 +1.73235 +1.85241 +1.67656 +1.78883 +1.68716 +1.59389 +1.79098 +1.63895 +1.97720 +1.67024 +1.62657 +1.79587 +1.78991 +1.98842 +1.59022 +1.83136 +1.70876 +1.90252 +1.64163 +1.78506 +1.87371 +1.54824 +1.59066 +1.74589 +1.76504 +1.42950 +1.70812 +1.59359 +1.95918 +1.87356 +1.89267 +1.52330 +1.52037 +1.07916 +1.89726 +2.01407 +1.53715 +1.43450 +1.43267 +1.43752 +1.88831 +1.70216 +1.52454 +1.70144 +1.66241 +1.77170 +1.65108 +1.84890 +1.82640 +1.78920 +1.74082 +1.72303 +1.78593 +1.81423 +1.75427 +1.65999 +1.72373 +1.66259 +1.56624 +1.72621 +1.39928 +1.81733 +1.58473 +1.83531 +1.89362 +1.60090 +1.69622 +1.75129 +1.83297 +1.72871 +2.04349 +1.75032 +1.85548 +1.59098 +1.70406 +1.55837 +1.92249 +2.12810 +1.70159 +1.89364 +1.74459 +1.66458 +1.67184 +1.68488 +1.72172 +1.75085 +1.47654 +2.03610 +1.86662 +1.65189 +1.56869 +1.79322 +1.65333 +1.72300 +1.69409 +1.56543 +1.60007 +1.65197 +1.74908 +1.73999 +1.56975 +1.49504 +1.50220 +1.87608 +1.74831 +1.77129 +1.82397 +1.70008 +1.68318 +1.49866 +1.76427 +1.80140 +1.61746 +1.50220 +1.67584 +1.59294 +1.89148 +1.86985 +1.57192 +1.79526 +2.00652 +1.72118 +1.76885 +1.54528 +1.60556 +1.91278 +1.41491 +1.78478 +1.73757 +1.77113 +1.71323 +1.59910 +2.00620 +1.80006 +1.68356 +1.85458 +1.43631 +1.70143 +1.86459 +1.58968 +1.74942 +1.67259 +1.54654 +1.54637 +1.58991 +1.55621 +1.02197 +2.41730 +1.24727 +2.44334 +2.50109 +exit 0 Index: MultiSource/Benchmarks/Rodinia/srad/sradKernel.c =================================================================== --- MultiSource/Benchmarks/Rodinia/srad/sradKernel.c +++ MultiSource/Benchmarks/Rodinia/srad/sradKernel.c @@ -0,0 +1,235 @@ +#include "srad.h" +void srad_kernel(float dN[ROWS][COLS], float dS[ROWS][COLS], + float dW[ROWS][COLS], float dE[ROWS][COLS], + float I[ROWS][COLS], float J[ROWS][COLS], + float c[ROWS][COLS]) { + int size_R, iter; + float q0sqr, sum, sum2, tmp, meanROI, varROI; + float Jc, G2, L, num, den, qsqr; + float cN, cS, cW, cE; + float D; + int i, j; + + size_R = (Y2 - Y1 + 1) * (X2 - X1 + 1); + + for (iter = 0; iter < ITER; iter++) { + sum = 0; + sum2 = 0; + for (i = Y1; i <= Y2; i++) { + for (j = X1; j <= X2; j++) { + tmp = J[i][j]; + sum += tmp; + sum2 += tmp * tmp; + } + } + meanROI = sum / size_R; + varROI = (sum2 / size_R) - meanROI * meanROI; + q0sqr = varROI / (meanROI * meanROI); + + { + int i = 0; + int j = 0; + Jc = J[i][j]; + + // directional derivates + dN[i][j] = J[0][j] - Jc; + dS[i][j] = J[1][j] - Jc; + dW[i][j] = J[i][0] - Jc; + dE[i][j] = J[i][1] - Jc; + + G2 = (dN[i][j] * dN[i][j] + dS[i][j] * dS[i][j] + dW[i][j] * dW[i][j] + + dE[i][j] * dE[i][j]) / + (Jc * Jc); + + L = (dN[i][j] + dS[i][j] + dW[i][j] + dE[i][j]) / Jc; + + num = (0.5 * G2) - ((1.0 / 16.0) * (L * L)); + den = 1 + (.25 * L); + qsqr = num / (den * den); + + // diffusion coefficent (equ 33) + den = (qsqr - q0sqr) / (q0sqr * (1 + q0sqr)); + c[i][j] = 1.0 / (1.0 + den); + + // saturate diffusion coefficent + if (c[i][j] < 0) { + c[i][j] = 0; + } else if (c[i][j] > 1) { + c[i][j] = 1; + } + + j = COLS - 1; + + Jc = J[i][j]; + // directional derivates + dN[i][j] = J[0][j] - Jc; + dS[i][j] = J[1][j] - Jc; + dW[i][j] = J[i][COLS - 2] - Jc; + dE[i][j] = J[i][COLS - 1] - Jc; + + G2 = (dN[i][j] * dN[i][j] + dS[i][j] * dS[i][j] + dW[i][j] * dW[i][j] + + dE[i][j] * dE[i][j]) / + (Jc * Jc); + + L = (dN[i][j] + dS[i][j] + dW[i][j] + dE[i][j]) / Jc; + + num = (0.5 * G2) - ((1.0 / 16.0) * (L * L)); + den = 1 + (.25 * L); + qsqr = num / (den * den); + + // diffusion coefficent (equ 33) + den = (qsqr - q0sqr) / (q0sqr * (1 + q0sqr)); + c[i][j] = 1.0 / (1.0 + den); + + // saturate diffusion coefficent + if (c[i][j] < 0) { + c[i][j] = 0; + } else if (c[i][j] > 1) { + c[i][j] = 1; + } + } + { + int i = ROWS - 1; + int j = 0; + Jc = J[i][j]; + + // directional derivates + dN[i][j] = J[ROWS - 2][j] - Jc; + dS[i][j] = J[ROWS - 1][j] - Jc; + dW[i][j] = J[i][0] - Jc; + dE[i][j] = J[i][1] - Jc; + + G2 = (dN[i][j] * dN[i][j] + dS[i][j] * dS[i][j] + dW[i][j] * dW[i][j] + + dE[i][j] * dE[i][j]) / + (Jc * Jc); + + L = (dN[i][j] + dS[i][j] + dW[i][j] + dE[i][j]) / Jc; + + num = (0.5 * G2) - ((1.0 / 16.0) * (L * L)); + den = 1 + (.25 * L); + qsqr = num / (den * den); + + // diffusion coefficent (equ 33) + den = (qsqr - q0sqr) / (q0sqr * (1 + q0sqr)); + c[i][j] = 1.0 / (1.0 + den); + + // saturate diffusion coefficent + if (c[i][j] < 0) { + c[i][j] = 0; + } else if (c[i][j] > 1) { + c[i][j] = 1; + } + + j = COLS - 1; + + Jc = J[i][j]; + // directional derivates + dN[i][j] = J[ROWS - 2][j] - Jc; + dS[i][j] = J[ROWS - 1][j] - Jc; + dW[i][j] = J[i][COLS - 2] - Jc; + dE[i][j] = J[i][COLS - 1] - Jc; + + G2 = (dN[i][j] * dN[i][j] + dS[i][j] * dS[i][j] + dW[i][j] * dW[i][j] + + dE[i][j] * dE[i][j]) / + (Jc * Jc); + + L = (dN[i][j] + dS[i][j] + dW[i][j] + dE[i][j]) / Jc; + + num = (0.5 * G2) - ((1.0 / 16.0) * (L * L)); + den = 1 + (.25 * L); + qsqr = num / (den * den); + + // diffusion coefficent (equ 33) + den = (qsqr - q0sqr) / (q0sqr * (1 + q0sqr)); + c[i][j] = 1.0 / (1.0 + den); + + // saturate diffusion coefficent + if (c[i][j] < 0) { + c[i][j] = 0; + } else if (c[i][j] > 1) { + c[i][j] = 1; + } + } + + for (int i = 1; i < ROWS - 1; i++) { + for (int j = 1; j < COLS - 1; j++) { + + Jc = J[i][j]; + + // directional derivates + dN[i][j] = J[i - 1][j] - Jc; + dS[i][j] = J[i + 1][j] - Jc; + dW[i][j] = J[i][j - 1] - Jc; + dE[i][j] = J[i][j + 1] - Jc; + + G2 = (dN[i][j] * dN[i][j] + dS[i][j] * dS[i][j] + dW[i][j] * dW[i][j] + + dE[i][j] * dE[i][j]) / + (Jc * Jc); + + L = (dN[i][j] + dS[i][j] + dW[i][j] + dE[i][j]) / Jc; + + num = (0.5 * G2) - ((1.0 / 16.0) * (L * L)); + den = 1 + (.25 * L); + qsqr = num / (den * den); + + // diffusion coefficent (equ 33) + den = (qsqr - q0sqr) / (q0sqr * (1 + q0sqr)); + c[i][j] = 1.0 / (1.0 + den); + + // saturate diffusion coefficent + if (c[i][j] < 0) { + c[i][j] = 0; + } else if (c[i][j] > 1) { + c[i][j] = 1; + } + } + } + + { + int i = ROWS - 1; + for (int j = 0; j < COLS - 1; j++) { + // diffusion coefficent + cN = c[i][j]; + cS = c[i][j]; + cW = c[i][j]; + cE = c[i][j + 1]; + + // divergence (equ 58) + D = cN * dN[i][j] + cS * dS[i][j] + cW * dW[i][j] + cE * dE[i][j]; + + // image update (equ 61) + J[i][j] = J[i][j] + 0.25 * LAMDBA * D; + } + i = ROWS - 1; + int j = COLS - 1; + + // diffusion coefficent + cN = c[i][j]; + cS = c[i][j]; + cW = c[i][j]; + cE = c[i][j]; + + // divergence (equ 58) + D = cN * dN[i][j] + cS * dS[i][j] + cW * dW[i][j] + cE * dE[i][j]; + + // image update (equ 61) + J[i][j] = J[i][j] + 0.25 * LAMDBA * D; + } + + for (int i = 0; i < ROWS - 1; i++) { + for (int j = 0; j < COLS - 1; j++) { + // diffusion coefficent + cN = c[i][j]; + cS = c[i + 1][j]; + cW = c[i][j]; + cE = c[i][j + 1]; + + // divergence (equ 58) + D = cN * dN[i][j] + cS * dS[i][j] + cW * dW[i][j] + cE * dE[i][j]; + + // image update (equ 61) + J[i][j] = J[i][j] + 0.25 * LAMDBA * D; + } + } + } +} \ No newline at end of file