#include <stdio.h>
#include <math.h>
#include <time.h>
#include <unistd.h>
#include <cuda_runtime_api.h>
#include <errno.h>
#include <unistd.h>

/******************************************************************************
 * This program takes an initial estimate of m and c and finds the associated 
 * rms error. It is then as a base to generate and evaluate 8 new estimates, 
 * which are steps in different directions in m-c space. The best estimate is 
 * then used as the base for another iteration of "generate and evaluate". This 
 * continues until none of the new estimates are better than the base. This is
 * a gradient search for a minimum in mc-space.
 * 
 * To compile:
 *   nvcc -o lr_cuda lr_using_cuda.cu -lm
 * 
 * To run:
 *   ./lr_cuda
 * 
 * Dr Kevan Buckley, University of Wolverhampton, 2018
 *****************************************************************************/

typedef struct point_t {
  double x;
  double y;
} point_t;

int n_data = 1000;
__device__ int d_n_data = 1000;


point_t data[] = {
  {65.88,113.30},{83.12,103.39},{72.71,137.05},{76.01,123.42},
  {69.59,113.62},{73.69,115.07},{71.46,100.24},{72.99,118.73},
  {68.50,97.85},{65.43,103.31},{89.29,132.95},{58.14,82.01},
  {47.55,75.40},{76.85,111.09},{68.01,115.15},{21.80,54.57},
  {90.04,120.21},{56.85,102.91},{ 2.23,36.71},{86.78,117.46},
  { 6.52,45.58},{97.32,147.83},{22.91,54.17},{78.59,106.78},
  {44.09,70.96},{74.64,97.68},{90.51,134.98},{96.15,143.26},
  {58.52,88.70},{59.42,100.87},{67.26,109.17},{56.62,92.03},
  {71.65,111.50},{ 4.53,33.54},{82.85,122.36},{95.66,154.67},
  {80.62,99.61},{45.30,82.60},{37.05,80.76},{61.48,98.73},
  {51.39,98.80},{22.46,63.68},{88.78,118.53},{94.16,143.18},
  {39.47,71.48},{ 7.44,48.39},{51.86,107.12},{86.53,137.70},
  {83.53,123.57},{ 7.68,51.69},{18.96,58.69},{22.17,78.66},
  {43.95,71.78},{92.29,134.90},{76.97,101.28},{23.24,48.03},
  {26.73,65.78},{88.25,143.89},{95.12,124.96},{10.68,66.86},
  {63.78,118.73},{26.86,68.94},{ 7.80,51.17},{24.65,53.88},
  {44.04,74.79},{87.29,138.86},{97.45,131.92},{96.31,142.49},
  {45.80,92.89},{80.82,129.94},{46.10,89.74},{55.26,77.39},
  { 8.98,50.00},{10.64,31.57},{96.46,145.36},{ 8.66,39.04},
  {78.10,104.44},{94.77,132.53},{46.87,76.20},{48.06,92.50},
  {35.66,79.34},{92.19,151.58},{93.28,115.15},{29.17,60.24},
  {28.21,51.45},{ 4.66,53.39},{94.42,144.06},{24.46,66.42},
  {29.29,67.92},{62.02,109.54},{15.10,54.38},{ 6.58,49.82},
  {91.84,132.96},{66.22,106.23},{70.29,106.42},{27.48,46.92},
  {27.82,81.57},{25.13,68.33},{82.75,131.87},{ 7.70,40.57},
  {39.03,86.29},{41.46,66.97},{23.14,47.32},{92.17,124.61},
  {72.12,95.08},{89.59,156.46},{46.16,92.25},{56.07,79.77},
  {40.80,77.32},{55.14,101.80},{24.38,49.10},{ 0.35,44.21},
  { 0.65,43.39},{10.62,32.78},{91.81,133.03},{43.30,94.01},
  {70.92,123.26},{59.95,101.77},{21.22,58.22},{38.33,83.55},
  {21.67,45.06},{37.35,75.73},{ 6.37,27.18},{71.27,99.70},
  {12.84,59.50},{21.73,35.26},{81.59,131.55},{65.61,116.88},
  {38.45,86.17},{60.22,80.16},{83.88,138.85},{47.36,86.33},
  {45.86,98.38},{38.58,85.53},{ 6.58,43.64},{83.12,116.68},
  {92.34,138.43},{54.72,95.16},{64.28,104.63},{89.38,123.26},
  {22.32,67.33},{67.40,127.41},{ 9.16,51.65},{98.38,159.79},
  { 1.94,25.53},{26.57,67.59},{49.74,74.64},{63.89,112.49},
  {52.60,94.54},{68.96,100.58},{58.23,87.93},{44.04,85.71},
  {55.80,97.29},{76.34,129.81},{79.24,117.89},{89.24,135.74},
  {13.89,56.62},{73.97,118.74},{89.12,132.43},{52.34,74.34},
  {68.44,111.05},{46.82,77.13},{ 8.89,43.18},{76.00,119.12},
  { 2.67,53.27},{35.24,68.26},{73.39,101.02},{47.39,111.56},
  {41.92,88.68},{86.09,137.72},{ 4.14,36.00},{47.05,98.77},
  {50.36,105.89},{45.58,88.08},{23.64,63.95},{69.92,116.00},
  { 2.48,40.04},{63.34,106.88},{92.85,132.58},{92.18,152.63},
  {83.08,133.17},{47.30,103.51},{90.41,151.65},{97.22,139.84},
  {51.69,87.49},{55.13,94.31},{ 9.57,52.60},{88.13,132.15},
  {13.23,44.85},{68.99,118.60},{41.34,82.89},{27.86,45.75},
  {34.24,77.50},{39.99,79.27},{ 0.49,27.94},{16.66,58.10},
  {17.19,55.02},{34.25,87.25},{64.68,122.63},{ 2.37,59.33},
  {69.19,114.36},{48.62,89.76},{27.48,70.95},{39.50,71.48},
  {47.81,84.62},{54.62,79.44},{20.44,69.75},{82.66,132.62},
  {20.04,39.58},{77.88,143.64},{ 0.83,44.32},{ 9.26,40.60},
  {75.19,112.34},{47.16,91.39},{32.22,71.93},{39.26,84.86},
  {38.08,77.57},{33.96,74.75},{65.74,109.52},{86.60,147.38},
  {36.69,41.26},{90.19,143.40},{49.49,97.12},{90.50,129.39},
  {84.46,112.31},{ 5.45,30.46},{ 8.83,59.19},{79.73,115.09},
  { 7.20,52.38},{71.48,103.85},{69.36,108.95},{95.68,132.86},
  {23.23,52.28},{15.68,47.24},{89.30,140.14},{99.35,139.28},
  { 5.64,39.27},{ 8.73,59.57},{34.00,65.12},{27.72,65.48},
  { 5.77,58.65},{48.18,74.31},{31.91,80.90},{20.33,60.89},
  {30.03,76.46},{ 1.33,44.90},{77.58,113.17},{47.20,86.67},
  {89.24,144.40},{35.93,94.27},{80.03,122.53},{ 7.97,39.78},
  {80.68,115.83},{17.09,49.95},{43.20,86.46},{17.63,41.65},
  {46.18,80.06},{87.28,124.84},{ 4.68,38.59},{85.96,144.87},
  { 6.02,40.63},{60.87,99.01},{41.39,80.15},{47.64,81.92},
  {39.55,82.81},{44.74,102.39},{35.01,78.30},{39.86,80.79},
  {88.99,145.80},{ 4.38,25.05},{18.19,59.19},{54.54,108.44},
  {40.69,66.59},{23.32,65.20},{14.10,66.21},{43.01,78.10},
  {44.54,82.38},{29.26,80.12},{19.97,71.02},{83.06,142.60},
  {90.81,137.92},{81.13,125.99},{99.05,141.48},{39.56,76.74},
  {43.41,70.28},{50.47,113.51},{27.37,57.88},{73.29,115.66},
  {40.09,93.12},{ 2.13,47.21},{71.69,120.48},{85.79,126.52},
  {23.79,61.55},{29.11,77.36},{28.34,80.72},{48.20,77.53},
  {86.47,145.61},{75.83,117.10},{53.52,70.46},{41.50,82.67},
  {90.18,120.58},{20.33,38.57},{86.82,124.14},{45.16,97.81},
  {62.89,100.25},{39.25,96.92},{21.26,41.73},{90.66,133.40},
  {56.71,80.80},{ 0.89,53.02},{39.87,84.31},{12.70,46.26},
  {51.07,85.46},{56.90,100.25},{75.08,116.45},{46.04,89.41},
  {37.26,82.64},{85.66,125.35},{89.73,117.37},{16.56,59.19},
  {69.40,116.66},{75.45,120.94},{52.41,86.61},{ 9.04,36.24},
  {51.05,93.02},{98.12,129.98},{87.36,115.66},{41.79,92.82},
  {56.75,96.00},{32.53,90.54},{78.46,87.02},{94.54,141.49},
  {71.43,115.37},{49.35,79.99},{72.49,111.38},{47.44,91.31},
  {98.92,130.78},{ 4.11,52.62},{20.49,41.42},{98.36,144.83},
  {57.24,97.19},{21.24,41.10},{52.68,82.09},{57.12,101.15},
  {66.59,116.15},{74.77,115.54},{16.90,63.62},{33.25,60.55},
  { 3.03,46.53},{31.91,59.03},{43.94,74.03},{65.36,106.83},
  {72.96,125.25},{24.40,67.65},{21.88,55.03},{33.00,78.90},
  {85.68,139.86},{64.57,108.24},{23.63,55.36},{53.13,87.56},
  {15.06,64.72},{16.69,46.41},{59.26,70.83},{77.58,125.60},
  {47.15,83.66},{69.61,114.55},{94.79,140.54},{66.97,110.07},
  {30.76,79.47},{95.66,134.14},{85.28,116.10},{43.58,90.24},
  {42.87,91.53},{31.32,64.87},{56.25,98.21},{77.74,108.33},
  {89.36,125.36},{63.79,113.40},{ 0.92,23.80},{38.70,95.06},
  {47.58,91.15},{ 7.80,57.16},{90.01,132.96},{33.45,85.66},
  {27.05,98.60},{ 3.61,46.81},{49.77,89.60},{98.12,140.24},
  {76.21,111.96},{43.86,94.50},{10.98,36.16},{80.88,126.36},
  {70.06,96.98},{63.78,94.95},{ 0.27,36.46},{18.95,59.91},
  { 4.16,17.58},{24.65,56.14},{47.78,86.28},{79.27,125.59},
  {35.84,79.42},{30.16,75.48},{28.81,67.20},{45.41,89.03},
  { 6.63,31.15},{35.26,83.24},{10.59,53.38},{ 4.45,28.15},
  {41.94,74.57},{93.99,143.05},{21.04,63.81},{97.37,130.95},
  {16.31,50.73},{ 6.57,50.81},{58.04,107.31},{18.56,51.60},
  {45.54,87.77},{91.85,139.26},{34.52,64.64},{43.57,87.14},
  {13.66,46.27},{18.38,61.15},{65.97,94.82},{67.97,110.36},
  {20.27,41.48},{60.78,100.02},{95.11,131.52},{49.73,96.99},
  {30.62,72.96},{79.37,129.99},{ 9.72,34.06},{59.97,109.31},
  {32.11,69.62},{21.05,48.34},{52.96,93.37},{96.24,154.60},
  {91.99,131.55},{38.07,79.53},{38.35,86.26},{10.84,44.13},
  {78.13,146.32},{66.91,92.97},{13.46,45.13},{35.83,59.66},
  {15.92,48.00},{64.74,100.09},{29.93,80.30},{ 0.73,33.67},
  {26.08,53.92},{53.91,83.55},{81.32,109.63},{77.53,120.05},
  {56.14,85.60},{94.53,131.65},{40.56,84.98},{87.27,119.74},
  {58.04,111.89},{11.10,54.55},{14.96,43.69},{11.60,48.43},
  {65.36,117.61},{53.51,90.37},{83.10,121.25},{31.55,71.73},
  {69.38,131.56},{97.32,154.04},{23.97,65.78},{82.60,128.59},
  {40.95,82.33},{ 5.58,15.54},{53.34,108.22},{77.09,121.19},
  {40.06,75.69},{19.13,72.82},{38.98,84.95},{28.23,85.29},
  {26.07,32.58},{88.36,148.79},{50.88,98.72},{34.52,76.22},
  {76.42,108.17},{87.58,130.31},{14.08,43.66},{47.74,116.55},
  {67.67,115.69},{83.82,141.51},{51.11,87.10},{44.35,100.96},
  {93.91,137.76},{38.42,86.31},{ 5.04,63.73},{95.78,140.44},
  {98.46,155.00},{ 1.35,29.65},{99.52,145.52},{24.25,64.20},
  {10.89,52.52},{57.63,111.51},{77.99,111.11},{39.17,66.11},
  {35.43,83.14},{35.49,63.24},{77.61,110.45},{ 1.56,43.12},
  {95.03,130.00},{25.83,65.15},{93.17,134.96},{31.63,65.53},
  {98.32,140.97},{93.99,117.11},{99.55,144.87},{10.13,44.30},
  {23.63,46.56},{73.37,103.82},{28.27,74.75},{85.91,130.01},
  {49.83,93.67},{47.37,100.76},{89.02,129.04},{78.39,109.19},
  {79.45,113.67},{81.72,126.83},{16.58,47.85},{82.39,135.30},
  {73.09,112.62},{42.59,85.37},{42.78,81.85},{49.15,98.47},
  {61.26,106.57},{60.27,104.21},{ 1.70,41.02},{22.35,68.14},
  {83.64,116.22},{69.18,93.63},{ 9.58,60.45},{11.88,51.95},
  {93.56,149.33},{82.81,124.53},{77.15,124.13},{80.92,128.29},
  {46.57,95.19},{89.99,134.64},{42.34,88.89},{20.45,49.36},
  { 5.75,46.59},{68.40,86.84},{72.60,116.24},{95.71,141.78},
  {93.52,125.24},{66.04,110.42},{92.66,146.50},{92.29,155.47},
  {16.82,49.10},{81.34,108.77},{38.56,83.70},{76.37,123.71},
  {77.29,122.62},{13.32,61.55},{73.71,111.92},{53.39,108.67},
  {60.61,119.96},{ 6.45,40.27},{34.58,92.89},{90.41,127.39},
  {85.73,113.52},{51.91,107.01},{72.84,117.27},{78.13,113.05},
  {80.64,115.40},{62.00,97.95},{38.77,79.80},{54.07,87.46},
  {98.83,174.89},{48.94,88.56},{15.59,46.94},{19.70,56.40},
  {93.31,122.33},{ 9.20,58.41},{26.28,53.31},{73.56,110.89},
  {57.96,101.80},{46.96,72.65},{87.03,133.76},{43.17,67.72},
  {78.09,105.71},{71.29,118.62},{ 3.24,49.85},{ 5.01,26.69},
  {73.93,98.38},{12.95,37.05},{ 8.97,50.07},{ 6.94,49.15},
  {59.38,88.05},{44.77,84.22},{64.28,108.11},{43.52,79.56},
  {43.15,86.68},{58.56,65.89},{ 5.94,25.91},{58.96,100.69},
  {82.31,105.03},{99.76,150.40},{17.76,65.48},{19.44,56.54},
  {64.99,102.67},{19.57,66.40},{82.24,132.98},{79.48,118.38},
  {60.82,95.91},{ 8.45,46.60},{19.56,63.50},{ 8.66,41.86},
  {52.43,94.17},{45.11,84.39},{99.96,142.93},{85.13,138.67},
  {19.23,47.91},{60.79,99.80},{20.17,51.69},{94.51,107.45},
  {78.66,125.49},{51.30,93.87},{25.33,47.41},{73.14,98.44},
  {86.53,141.14},{81.33,136.18},{18.15,63.22},{35.52,70.97},
  { 5.27,37.07},{73.89,132.60},{46.11,89.85},{68.27,88.79},
  {53.23,90.19},{47.06,79.42},{53.54,97.52},{34.43,74.78},
  {13.50,52.89},{76.38,130.82},{65.64,98.15},{61.86,115.01},
  {37.97,65.02},{38.27,65.36},{40.93,64.75},{55.13,98.82},
  {48.90,80.52},{93.86,150.44},{60.56,99.25},{32.81,68.54},
  {71.50,106.50},{68.12,105.37},{14.84,45.62},{35.92,74.17},
  {72.55,123.69},{71.44,120.41},{43.20,87.76},{23.89,48.79},
  {49.80,117.14},{61.77,88.82},{73.65,118.68},{34.79,65.11},
  {85.14,131.90},{24.05,64.61},{ 8.14,33.59},{23.51,66.89},
  {55.08,85.22},{50.08,89.67},{64.59,109.02},{36.77,77.89},
  { 4.95,47.42},{88.43,143.48},{80.84,129.96},{57.96,99.36},
  {88.54,138.36},{61.71,93.19},{54.00,80.65},{89.11,129.28},
  {50.37,78.69},{26.72,55.97},{25.18,58.68},{93.01,130.65},
  {42.11,73.83},{74.19,112.10},{27.94,72.97},{95.62,125.56},
  {64.33,120.48},{85.41,132.64},{27.63,68.50},{41.29,72.49},
  {82.84,117.74},{26.26,81.88},{45.42,65.90},{ 8.89,56.13},
  {24.82,57.84},{36.89,73.53},{58.07,113.29},{70.28,100.18},
  {69.83,124.58},{72.50,98.64},{43.36,90.87},{90.84,143.16},
  {59.10,101.73},{12.76,52.32},{21.07,58.93},{56.01,90.26},
  { 9.37,49.60},{ 5.76,42.92},{14.78,60.96},{63.56,130.65},
  {85.72,131.57},{ 8.14,42.32},{99.64,157.71},{ 6.37,41.23},
  {97.05,132.35},{53.32,83.94},{13.95,58.79},{25.90,49.90},
  {69.10,77.53},{97.37,147.46},{14.88,46.63},{80.16,133.44},
  {76.23,114.67},{22.56,61.68},{87.36,134.80},{53.54,92.32},
  {51.30,100.64},{84.04,128.62},{36.84,67.95},{57.70,102.60},
  {31.81,70.96},{47.55,84.17},{ 5.31,52.94},{24.13,70.22},
  {94.67,131.02},{78.98,114.14},{88.91,145.84},{34.26,56.11},
  {88.09,128.35},{27.50,77.57},{49.78,99.41},{62.92,94.91},
  {67.21,99.11},{23.09,40.64},{54.06,92.48},{ 2.90,48.62},
  {29.16,66.53},{ 8.70,52.48},{90.55,114.40},{43.95,78.36},
  { 4.94,35.99},{54.94,88.64},{54.66,82.23},{37.05,77.98},
  {45.97,86.77},{94.70,143.17},{47.09,92.36},{58.16,89.32},
  { 0.59,23.59},{52.91,89.18},{87.20,132.77},{20.12,73.61},
  {56.57,109.01},{13.93,48.20},{27.03,65.34},{26.60,81.04},
  {14.90,73.03},{32.44,70.70},{37.47,84.54},{43.29,65.48},
  {54.46,90.28},{83.76,137.36},{17.30,59.39},{52.52,93.03},
  {17.88,62.13},{17.43,59.80},{ 3.94,42.56},{61.16,101.46},
  {34.83,67.24},{37.00,81.72},{ 6.90,45.33},{24.20,75.12},
  {28.50,63.86},{64.03,105.50},{92.46,138.81},{ 4.74,49.21},
  {59.42,85.53},{23.13,64.57},{41.12,69.17},{72.85,127.82},
  {33.00,71.83},{16.07,31.72},{16.69,64.89},{99.50,135.43},
  {12.07,61.79},{20.26,60.31},{75.26,110.52},{ 8.47,59.91},
  {17.31,52.78},{85.84,121.80},{63.53,125.40},{83.43,135.92},
  {44.24,82.01},{79.29,121.24},{37.56,66.58},{82.47,111.71},
  {94.07,145.28},{22.70,59.74},{21.31,53.64},{39.24,87.29},
  {16.09,64.02},{38.20,72.04},{69.21,115.80},{78.12,135.62},
  {40.61,84.04},{94.34,128.25},{89.84,140.18},{ 5.11,48.78},
  {16.64,53.44},{73.19,115.94},{96.09,156.12},{79.61,129.96},
  {95.78,126.67},{14.79,49.46},{95.13,153.30},{ 0.83,34.01},
  {49.41,86.15},{63.93,114.30},{77.17,125.27},{65.71,114.34},
  {32.29,65.56},{41.35,80.95},{26.09,63.58},{74.06,115.72},
  {92.61,152.01},{19.02,53.26},{68.62,112.71},{16.06,66.13},
  {63.61,111.97},{ 7.92,27.54},{36.02,93.29},{52.37,96.40},
  {91.33,146.55},{99.60,142.29},{11.50,43.51},{30.95,75.69},
  {43.90,96.08},{99.19,143.89},{24.80,72.82},{46.31,85.22},
  {12.56,43.90},{10.97,44.61},{20.97,62.31},{ 3.00,24.20},
  {37.58,75.51},{10.09,41.62},{ 9.39,49.68},{25.60,40.77},
  {78.26,108.74},{89.20,140.86},{26.61,61.51},{50.47,80.50},
  {48.57,92.91},{39.58,80.32},{34.04,63.89},{55.42,110.88},
  {17.08,56.96},{69.99,116.14},{33.59,74.22},{15.43,37.08},
  {46.28,82.74},{83.63,135.77},{33.36,77.27},{38.18,61.79},
  {32.52,90.53},{80.22,124.80},{93.33,117.87},{40.59,95.35},
  { 0.30,42.02},{32.96,53.34},{49.12,73.45},{ 0.95,45.34},
  {53.14,97.94},{ 0.71,38.04},{30.16,71.40},{77.48,121.02},
  {50.76,80.17},{23.27,67.79},{21.77,41.98},{44.82,72.88},
  {48.99,111.33},{ 4.61,53.39},{85.40,126.27},{67.92,123.21},
  {42.16,86.58},{24.63,58.05},{55.05,89.55},{81.34,125.43},
  { 1.83,55.87},{46.95,101.33},{72.24,141.20},{92.62,127.56},
  {46.78,86.90},{27.46,60.40},{28.78,64.28},{23.87,44.27},
  {96.01,156.80},{91.93,142.56},{64.49,98.89},{95.55,123.18},
  {91.14,150.01},{16.81,51.52},{26.52,64.87},{22.66,64.84},
  {95.74,138.96},{83.28,106.19},{53.23,114.94},{62.84,125.12},
  {33.08,77.07},{ 5.89,42.39},{82.03,116.87},{51.43,95.08},
  {34.97,71.43},{12.24,43.20},{39.50,80.18},{20.90,52.59},
  {94.80,142.43},{28.77,76.10},{21.15,65.30},{32.29,69.93},
  {35.45,81.87},{44.52,73.93},{37.21,88.93},{76.78,123.86},
  {31.80,80.92},{97.55,156.22},{84.93,129.69},{ 6.66,32.14},
  {28.38,70.36},{62.74,77.13},{78.40,98.37},{93.99,148.37},
  {19.32,64.57},{61.90,122.97},{57.44,83.86},{30.06,79.14},
  {42.59,85.65},{70.59,107.34},{97.47,142.86},{79.24,137.11},
  {22.42,57.64},{49.79,96.16},{ 2.76,60.14},{56.54,90.13},
  {35.41,78.75},{28.82,69.07},{87.84,140.99},{82.97,121.54},
  {51.18,84.52},{55.49,113.97},{95.15,136.51},{10.60,52.31},
  {83.03,142.98},{11.60,44.33},{11.90,38.24},{68.73,104.54},
  {53.65,96.16},{41.40,75.38},{43.83,92.18},{94.54,142.91},
  {20.72,70.07},{76.37,118.44},{29.89,63.15},{80.99,114.48},
  {45.29,98.30},{89.23,138.09},{ 9.15,45.34},{23.52,61.38},
  { 3.14,47.70},{71.57,115.58},{53.23,91.99},{49.38,91.15},
  {45.77,72.18},{55.56,101.23},{ 2.63,37.32},{83.70,99.45},
  {70.21,108.13},{50.60,94.78},{53.06,80.74},{ 4.76,43.29},
  {71.03,113.96},{74.32,123.87},{56.11,96.81},{27.80,47.57},
  {17.54,58.02},{52.96,90.32},{27.16,71.66},{35.44,58.75},
  {46.07,96.38},{86.52,142.06},{41.28,96.03},{50.29,79.84}
};

double residual_error(double x, double y, double m, double c) {
  double e = (m * x) + c - y;
  return e * e;
}

__device__ double d_residual_error(double x, double y, double m, double c) {
  double e = (m * x) + c - y;
  return e * e;
}

double rms_error(double m, double c) {
  int i;
  double mean;
  double error_sum = 0;
  
  for(i=0; i<n_data; i++) {
    error_sum += residual_error(data[i].x, data[i].y, m, c);
  }
  
  mean = error_sum / n_data;
  
  return sqrt(mean);
}

__global__ void d_rms_error(double *m, double *c, double *error_sum_arr, point_t *d_data) {
	/*
		Calculate the current index by using:
		- The thread id
		- The block id
		- The number of threads per block
	*/
	int i = threadIdx.x + blockIdx.x * blockDim.x;

	//Work out the error sum 1000 times and store them in an array.
  error_sum_arr[i] = d_residual_error(d_data[i].x, d_data[i].y, *m, *c);
}

int time_difference(struct timespec *start, struct timespec *finish, 
                              long long int *difference) {
  long long int ds =  finish->tv_sec - start->tv_sec; 
  long long int dn =  finish->tv_nsec - start->tv_nsec; 

  if(dn < 0 ) {
    ds--;
    dn += 1000000000; 
  } 
  *difference = ds * 1000000000 + dn;
  return !(*difference > 0);
}

int main() {
  int i;
  double bm = 1.3;
  double bc = 10;
  double be;
  double dm[8];
  double dc[8];
  double e[8];
  double step = 0.01;
  double best_error = 999999999;
  int best_error_i;
  int minimum_found = 0;
  
  double om[] = {0,1,1, 1, 0,-1,-1,-1};
  double oc[] = {1,1,0,-1,-1,-1, 0, 1};

	struct timespec start, finish;   
  long long int time_elapsed;

	//Get the system time before we begin the linear regression.
  clock_gettime(CLOCK_MONOTONIC, &start);

	cudaError_t error;

	//Device variables
	double *d_dm;
  double *d_dc;
	double *d_error_sum_arr;
	point_t *d_data;
	
  be = rms_error(bm, bc);

	//Allocate memory for d_dm
	error = cudaMalloc(&d_dm, (sizeof(double) * 8));
 	if(error){
   	fprintf(stderr, "cudaMalloc on d_dm returned %d %s\n", error,
    	cudaGetErrorString(error));
   	exit(1);
 	}
	
	//Allocate memory for d_dc
	error = cudaMalloc(&d_dc, (sizeof(double) * 8));
 	if(error){
   	fprintf(stderr, "cudaMalloc on d_dc returned %d %s\n", error,
  	  cudaGetErrorString(error));
   	exit(1);
 	}
	
	//Allocate memory for d_error_sum_arr
	error = cudaMalloc(&d_error_sum_arr, (sizeof(double) * 1000));
 	if(error){
   	fprintf(stderr, "cudaMalloc on d_error_sum_arr returned %d %s\n", error,
   	  cudaGetErrorString(error));
   	exit(1);
 	}

	//Allocate memory for d_data
	error = cudaMalloc(&d_data, sizeof(data));
 	if(error){
   	fprintf(stderr, "cudaMalloc on d_data returned %d %s\n", error,
   	  cudaGetErrorString(error));
   	exit(1);
 	}

  while(!minimum_found) {
    for(i=0;i<8;i++) {
      dm[i] = bm + (om[i] * step);
      dc[i] = bc + (oc[i] * step);    
    }

		//Copy memory for dm to d_dm
  	error = cudaMemcpy(d_dm, dm, (sizeof(double) * 8), cudaMemcpyHostToDevice);  
  	if(error){
    	fprintf(stderr, "cudaMemcpy to d_dm returned %d %s\n", error,
      cudaGetErrorString(error));
  	}

		//Copy memory for dc to d_dc
  	error = cudaMemcpy(d_dc, dc, (sizeof(double) * 8), cudaMemcpyHostToDevice);  
  	if(error){
    	fprintf(stderr, "cudaMemcpy to d_dc returned %d %s\n", error,
      cudaGetErrorString(error));
  	}

		//Copy memory for data to d_data
  	error = cudaMemcpy(d_data, data, sizeof(data), cudaMemcpyHostToDevice);  
  	if(error){
    	fprintf(stderr, "cudaMemcpy to d_data returned %d %s\n", error,
      cudaGetErrorString(error));
  	}
		
    for(i=0;i<8;i++) {
			//Host variable storing the array returned from the kernel function.
			double h_error_sum_arr[1000];
			
			//Stores the total sum of the values from the error sum array.
			double error_sum_total;

			//Stores the mean of the total sum of the error sums.
			double error_sum_mean;

			//Call the rms_error function using 100 blocks and 10 threads.
			d_rms_error <<<100,10>>>(&d_dm[i], &d_dc[i], d_error_sum_arr, d_data);
			cudaThreadSynchronize();

			//Copy memory for d_error_sum_arr
		  error = cudaMemcpy(&h_error_sum_arr, d_error_sum_arr, (sizeof(double) * 1000), cudaMemcpyDeviceToHost);  
		  if(error){
	    fprintf(stderr, "cudaMemcpy to error_sum returned %d %s\n", error,
	      cudaGetErrorString(error));
		  }

			//Loop through the error sum array returned from the kernel function
			for(int j=0; j<n_data; j++) {
				//Add each error sum to the error sum total.
    		error_sum_total += h_error_sum_arr[j];
  		}

			//Calculate the mean for the error sum.
			error_sum_mean = error_sum_total / n_data;

			//Calculate the square root for the error sum mean.
			e[i] = sqrt(error_sum_mean);

      if(e[i] < best_error) {
        best_error = e[i];
        best_error_i = i;
      }

			//Reset the error sum total.
			error_sum_total = 0;
    }

    //printf("best m,c is %lf,%lf with error %lf in direction %d\n", 
      //dm[best_error_i], dc[best_error_i], best_error, best_error_i);

    if(best_error < be) {
      be = best_error;
      bm = dm[best_error_i];
      bc = dc[best_error_i];
    } else {
      minimum_found = 1;
    }
  }

	//Free memory for d_dm
	error = cudaFree(d_dm);
	if(error){
		fprintf(stderr, "cudaFree on d_dm returned %d %s\n", error,
	  	cudaGetErrorString(error));
		exit(1);
	}
	
	//Free memory for d_dc
	error = cudaFree(d_dc);
	if(error){
		fprintf(stderr, "cudaFree on d_dc returned %d %s\n", error,
			cudaGetErrorString(error));
		exit(1);
	}

	//Free memory for d_data
	error = cudaFree(d_data);
	if(error){
		fprintf(stderr, "cudaFree on d_data returned %d %s\n", error,
	  	cudaGetErrorString(error));
	 	exit(1);
	}
		
	//Free memory for d_error_sum_arr
	error = cudaFree(d_error_sum_arr);
	if(error){
		fprintf(stderr, "cudaFree on d_error_sum_arr returned %d %s\n", error,
	  	cudaGetErrorString(error));
	 	exit(1);
	}

  printf("minimum m,c is %lf,%lf with error %lf\n", bm, bc, be);

	//Get the system time after we have run the linear regression function.
	clock_gettime(CLOCK_MONOTONIC, &finish);

	//Calculate the time spent between the start time and end time.
  time_difference(&start, &finish, &time_elapsed);

	//Output the time spent running the program.
  printf("Time elapsed was %lldns or %0.9lfs\n", time_elapsed, 
         (time_elapsed/1.0e9));
	
  return 0;
}

	.file	"tmpxft_0026f3bd_00000000-6_lr_using_cuda.cudafe1.cpp"
	.text
#APP

#NO_APP
	.type	_ZL26__cudaUnregisterBinaryUtilv, @function
_ZL26__cudaUnregisterBinaryUtilv:
.LFB2047:
	.cfi_startproc
	endbr64
	movq	_ZL20__cudaFatCubinHandle(%rip), %rdi
	jmp	__cudaUnregisterFatBinary@PLT
	.cfi_endproc
.LFE2047:
	.size	_ZL26__cudaUnregisterBinaryUtilv, .-_ZL26__cudaUnregisterBinaryUtilv
	.globl	_Z14residual_errordddd
	.type	_Z14residual_errordddd, @function
_Z14residual_errordddd:
.LFB2040:
	.cfi_startproc
	endbr64
	mulsd	%xmm0, %xmm2
	addsd	%xmm3, %xmm2
	subsd	%xmm1, %xmm2
	movaps	%xmm2, %xmm0
	mulsd	%xmm2, %xmm0
	ret
	.cfi_endproc
.LFE2040:
	.size	_Z14residual_errordddd, .-_Z14residual_errordddd
	.globl	_Z16d_residual_errordddd
	.type	_Z16d_residual_errordddd, @function
_Z16d_residual_errordddd:
.LFB2041:
	.cfi_startproc
	endbr64
	pushq	%rax
	.cfi_def_cfa_offset 16
	popq	%rax
	.cfi_def_cfa_offset 8
	subq	$24, %rsp
	.cfi_def_cfa_offset 32
	movl	$1, 12(%rsp)
	movl	12(%rsp), %edi
	call	exit@PLT
	.cfi_endproc
.LFE2041:
	.size	_Z16d_residual_errordddd, .-_Z16d_residual_errordddd
	.globl	_Z9rms_errordd
	.type	_Z9rms_errordd, @function
_Z9rms_errordd:
.LFB2042:
	.cfi_startproc
	endbr64
	movl	n_data(%rip), %ecx
	leaq	data(%rip), %rax
	xorps	%xmm3, %xmm3
	xorl	%edx, %edx
.L6:
	cmpl	%edx, %ecx
	jle	.L9
	movsd	(%rax), %xmm2
	incl	%edx
	addq	$16, %rax
	mulsd	%xmm0, %xmm2
	addsd	%xmm1, %xmm2
	subsd	-8(%rax), %xmm2
	mulsd	%xmm2, %xmm2
	addsd	%xmm2, %xmm3
	jmp	.L6
.L9:
	cvtsi2sdl	%ecx, %xmm0
	divsd	%xmm0, %xmm3
	movaps	%xmm3, %xmm0
	jmp	sqrt@PLT
	.cfi_endproc
.LFE2042:
	.size	_Z9rms_errordd, .-_Z9rms_errordd
	.globl	_Z15time_differenceP8timespecS0_Px
	.type	_Z15time_differenceP8timespecS0_Px, @function
_Z15time_differenceP8timespecS0_Px:
.LFB2043:
	.cfi_startproc
	endbr64
	movq	(%rsi), %rax
	movq	8(%rsi), %rcx
	subq	(%rdi), %rax
	subq	8(%rdi), %rcx
	jns	.L11
	decq	%rax
	addq	$1000000000, %rcx
.L11:
	imulq	$1000000000, %rax, %rax
	addq	%rcx, %rax
	testq	%rax, %rax
	movq	%rax, (%rdx)
	setle	%al
	movzbl	%al, %eax
	ret
	.cfi_endproc
.LFE2043:
	.size	_Z15time_differenceP8timespecS0_Px, .-_Z15time_differenceP8timespecS0_Px
	.globl	_Z44__device_stub__Z11d_rms_errorPdS_S_P7point_tPdS_S_P7point_t
	.type	_Z44__device_stub__Z11d_rms_errorPdS_S_P7point_tPdS_S_P7point_t, @function
_Z44__device_stub__Z11d_rms_errorPdS_S_P7point_tPdS_S_P7point_t:
.LFB2069:
	.cfi_startproc
	endbr64
	subq	$152, %rsp
	.cfi_def_cfa_offset 160
	movq	%rdi, 24(%rsp)
	leaq	56(%rsp), %rdi
	movq	%rsi, 16(%rsp)
	leaq	68(%rsp), %rsi
	movq	%rdx, 8(%rsp)
	leaq	40(%rsp), %rdx
	movq	%rcx, (%rsp)
	leaq	48(%rsp), %rcx
	movq	%fs:40, %rax
	movq	%rax, 136(%rsp)
	xorl	%eax, %eax
	leaq	24(%rsp), %rax
	movl	$1, 64(%rsp)
	movq	%rax, 104(%rsp)
	leaq	16(%rsp), %rax
	movq	%rax, 112(%rsp)
	leaq	8(%rsp), %rax
	movq	%rax, 120(%rsp)
	movq	%rsp, %rax
	movq	%rax, 128(%rsp)
	movabsq	$4294967297, %rax
	movq	%rax, 56(%rsp)
	movq	%rax, 68(%rsp)
	movl	$1, 76(%rsp)
	call	__cudaPopCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L12
	pushq	48(%rsp)
	.cfi_def_cfa_offset 168
	leaq	_Z11d_rms_errorPdS_S_P7point_t(%rip), %rdi
	pushq	48(%rsp)
	.cfi_def_cfa_offset 176
	movq	84(%rsp), %rcx
	movl	92(%rsp), %r8d
	movq	72(%rsp), %rsi
	movl	80(%rsp), %edx
	leaq	120(%rsp), %r9
	call	cudaLaunchKernel@PLT
	popq	%rax
	.cfi_def_cfa_offset 168
	popq	%rdx
	.cfi_def_cfa_offset 160
.L12:
	movq	136(%rsp), %rax
	subq	%fs:40, %rax
	je	.L14
	call	__stack_chk_fail@PLT
.L14:
	addq	$152, %rsp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE2069:
	.size	_Z44__device_stub__Z11d_rms_errorPdS_S_P7point_tPdS_S_P7point_t, .-_Z44__device_stub__Z11d_rms_errorPdS_S_P7point_tPdS_S_P7point_t
	.globl	_Z11d_rms_errorPdS_S_P7point_t
	.type	_Z11d_rms_errorPdS_S_P7point_t, @function
_Z11d_rms_errorPdS_S_P7point_t:
.LFB2070:
	.cfi_startproc
	endbr64
	jmp	_Z44__device_stub__Z11d_rms_errorPdS_S_P7point_tPdS_S_P7point_t
	.cfi_endproc
.LFE2070:
	.size	_Z11d_rms_errorPdS_S_P7point_t, .-_Z11d_rms_errorPdS_S_P7point_t
	.section	.rodata.str1.1,"aMS",@progbits,1
.LC6:
	.string	"cudaMalloc on d_dm returned %d %s\n"
.LC7:
	.string	"cudaMalloc on d_dc returned %d %s\n"
.LC8:
	.string	"cudaMalloc on d_error_sum_arr returned %d %s\n"
.LC9:
	.string	"cudaMalloc on d_data returned %d %s\n"
.LC11:
	.string	"cudaMemcpy to d_dm returned %d %s\n"
.LC12:
	.string	"cudaMemcpy to d_dc returned %d %s\n"
.LC13:
	.string	"cudaMemcpy to d_data returned %d %s\n"
.LC14:
	.string	"cudaMemcpy to error_sum returned %d %s\n"
.LC15:
	.string	"cudaFree on d_dm returned %d %s\n"
.LC16:
	.string	"cudaFree on d_dc returned %d %s\n"
.LC17:
	.string	"cudaFree on d_data returned %d %s\n"
.LC18:
	.string	"cudaFree on d_error_sum_arr returned %d %s\n"
.LC19:
	.string	"minimum m,c is %lf,%lf with error %lf\n"
.LC21:
	.string	"Time elapsed was %lldns or %0.9lfs\n"
	.section	.rodata
	.align 32
.LC0:
	.long	0
	.long	0
	.long	0
	.long	1072693248
	.long	0
	.long	1072693248
	.long	0
	.long	1072693248
	.long	0
	.long	0
	.long	0
	.long	-1074790400
	.long	0
	.long	-1074790400
	.long	0
	.long	-1074790400
	.align 32
.LC1:
	.long	0
	.long	1072693248
	.long	0
	.long	1072693248
	.long	0
	.long	0
	.long	0
	.long	-1074790400
	.long	0
	.long	-1074790400
	.long	0
	.long	-1074790400
	.long	0
	.long	0
	.long	0
	.long	1072693248
	.section	.text.startup,"ax",@progbits
	.globl	main
	.type	main, @function
main:
.LFB2044:
	.cfi_startproc
	endbr64
	pushq	%r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	pushq	%r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	pushq	%r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	pushq	%r12
	.cfi_def_cfa_offset 40
	.cfi_offset 12, -40
	pushq	%rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	subq	$4096, %rsp
	.cfi_def_cfa_offset 4152
	orq	$0, (%rsp)
	subq	$4096, %rsp
	.cfi_def_cfa_offset 8248
	orq	$0, (%rsp)
	subq	$216, %rsp
	.cfi_def_cfa_offset 8464
	leaq	.LC0(%rip), %rsi
	movl	$16, %ecx
	movq	%fs:40, %rax
	movq	%rax, 8392(%rsp)
	xorl	%eax, %eax
	leaq	104(%rsp), %rax
	leaq	264(%rsp), %rdi
	rep movsl
	leaq	328(%rsp), %rdi
	leaq	.LC1(%rip), %rsi
	movl	$16, %ecx
	rep movsl
	movq	%rax, %rsi
	movl	$1, %edi
	movq	%rax, 32(%rsp)
	call	clock_gettime@PLT
	movsd	.LC4(%rip), %xmm1
	movsd	.LC5(%rip), %xmm0
	call	_Z9rms_errordd
	leaq	56(%rsp), %rdi
	movl	$64, %esi
	movsd	%xmm0, 8(%rsp)
	call	cudaMalloc@PLT
	testl	%eax, %eax
	je	.L18
	movl	%eax, %edi
	movl	%eax, %ebx
	call	cudaGetErrorString@PLT
	movl	%ebx, %ecx
	leaq	.LC6(%rip), %rdx
	movq	%rax, %r8
	jmp	.L59
.L18:
	leaq	64(%rsp), %rdi
	movl	$64, %esi
	call	cudaMalloc@PLT
	movl	%eax, %ebx
	testl	%eax, %eax
	je	.L19
	movl	%eax, %edi
	call	cudaGetErrorString@PLT
	movl	%ebx, %ecx
	leaq	.LC7(%rip), %rdx
	movq	%rax, %r8
.L59:
	movq	stderr(%rip), %rdi
	movl	$2, %esi
	xorl	%eax, %eax
	call	__fprintf_chk@PLT
	movl	$1, %edi
	call	exit@PLT
.L19:
	leaq	72(%rsp), %rdi
	movl	$8000, %esi
	call	cudaMalloc@PLT
	movl	%eax, %ebx
	testl	%eax, %eax
	je	.L20
	movl	%eax, %edi
	call	cudaGetErrorString@PLT
	movl	%ebx, %ecx
	leaq	.LC8(%rip), %rdx
	movq	%rax, %r8
	jmp	.L59
.L20:
	leaq	80(%rsp), %rdi
	movl	$16000, %esi
	call	cudaMalloc@PLT
	movl	%eax, %ebx
	testl	%eax, %eax
	je	.L40
	movl	%eax, %edi
	call	cudaGetErrorString@PLT
	movl	%ebx, %ecx
	leaq	.LC9(%rip), %rdx
	movq	%rax, %r8
	jmp	.L59
.L40:
	movq	.LC4(%rip), %rax
	movsd	.LC3(%rip), %xmm6
	leaq	264(%rsp), %r14
	leaq	328(%rsp), %r15
	movq	%rax, 24(%rsp)
	movq	.LC5(%rip), %rax
	movsd	%xmm6, (%rsp)
	movq	%rax, 16(%rsp)
.L21:
	xorl	%eax, %eax
	leaq	200(%rsp), %rbx
.L22:
	movsd	.LC10(%rip), %xmm0
	mulsd	(%r14,%rax), %xmm0
	leaq	136(%rsp), %rsi
	addsd	16(%rsp), %xmm0
	movsd	%xmm0, 136(%rsp,%rax)
	movsd	.LC10(%rip), %xmm0
	mulsd	(%r15,%rax), %xmm0
	addq	$8, %rax
	addsd	24(%rsp), %xmm0
	movsd	%xmm0, -8(%rax,%rbx)
	cmpq	$64, %rax
	jne	.L22
	movq	56(%rsp), %rdi
	movl	$1, %ecx
	movl	$64, %edx
	call	cudaMemcpy@PLT
	movl	%eax, %r12d
	testl	%eax, %eax
	je	.L23
	movl	%eax, %edi
	call	cudaGetErrorString@PLT
	movq	stderr(%rip), %rdi
	movl	%r12d, %ecx
	leaq	.LC11(%rip), %rdx
	movq	%rax, %r8
	movl	$2, %esi
	xorl	%eax, %eax
	call	__fprintf_chk@PLT
.L23:
	movq	64(%rsp), %rdi
	movq	%rbx, %rsi
	movl	$1, %ecx
	movl	$64, %edx
	call	cudaMemcpy@PLT
	movl	%eax, %ebx
	testl	%eax, %eax
	je	.L24
	movl	%eax, %edi
	call	cudaGetErrorString@PLT
	movq	stderr(%rip), %rdi
	movl	%ebx, %ecx
	leaq	.LC12(%rip), %rdx
	movq	%rax, %r8
	movl	$2, %esi
	xorl	%eax, %eax
	call	__fprintf_chk@PLT
.L24:
	movq	80(%rsp), %rdi
	movl	$1, %ecx
	movl	$16000, %edx
	leaq	data(%rip), %rsi
	call	cudaMemcpy@PLT
	movl	%eax, %ebx
	testl	%eax, %eax
	je	.L25
	movl	%eax, %edi
	call	cudaGetErrorString@PLT
	movq	stderr(%rip), %rdi
	movl	%ebx, %ecx
	leaq	.LC13(%rip), %rdx
	movq	%rax, %r8
	movl	$2, %esi
	xorl	%eax, %eax
	call	__fprintf_chk@PLT
.L25:
	movabsq	$4294967306, %r12
	xorl	%ebx, %ebx
.L32:
	movl	$1073741849, %edi
	xorl	%r9d, %r9d
	xorl	%r8d, %r8d
	movq	%r12, %rdx
	salq	$2, %rdi
	movl	$1, %ecx
	movl	$1, %esi
	movq	%r12, 120(%rsp)
	movl	$1, 128(%rsp)
	movq	%rdi, 88(%rsp)
	movl	$1, 96(%rsp)
	call	__cudaPushCallConfiguration@PLT
	testl	%eax, %eax
	jne	.L26
	movq	64(%rsp), %rsi
	leaq	0(,%rbx,8), %rdi
	movq	80(%rsp), %rcx
	movq	72(%rsp), %rdx
	addq	%rdi, %rsi
	addq	56(%rsp), %rdi
	call	_Z44__device_stub__Z11d_rms_errorPdS_S_P7point_tPdS_S_P7point_t
.L26:
	call	cudaThreadSynchronize@PLT
	movq	72(%rsp), %rsi
	movl	$2, %ecx
	leaq	392(%rsp), %r13
	movl	$8000, %edx
	movq	%r13, %rdi
	call	cudaMemcpy@PLT
	testl	%eax, %eax
	je	.L27
	movl	%eax, %edi
	movl	%eax, 44(%rsp)
	call	cudaGetErrorString@PLT
	movl	44(%rsp), %ecx
	movl	$2, %esi
	movq	stderr(%rip), %rdi
	movq	%rax, %r8
	leaq	.LC14(%rip), %rdx
	xorl	%eax, %eax
	call	__fprintf_chk@PLT
.L27:
	movl	n_data(%rip), %edx
	xorl	%eax, %eax
	xorps	%xmm0, %xmm0
.L28:
	cmpl	%eax, %edx
	jle	.L60
	addsd	0(%r13,%rax,8), %xmm0
	incq	%rax
	jmp	.L28
.L60:
	cvtsi2sdl	%edx, %xmm1
	divsd	%xmm1, %xmm0
	call	sqrt@PLT
	movsd	(%rsp), %xmm5
	comisd	%xmm0, %xmm5
	minsd	%xmm5, %xmm0
	cmova	%ebx, %ebp
	incq	%rbx
	movsd	%xmm0, (%rsp)
	cmpq	$8, %rbx
	jne	.L32
	movsd	8(%rsp), %xmm7
	comisd	%xmm0, %xmm7
	jbe	.L57
	movslq	%ebp, %rax
	movsd	%xmm0, 8(%rsp)
	movsd	136(%rsp,%rax,8), %xmm3
	movsd	200(%rsp,%rax,8), %xmm4
	movsd	%xmm3, 16(%rsp)
	movsd	%xmm4, 24(%rsp)
	jmp	.L21
.L57:
	movq	56(%rsp), %rdi
	call	cudaFree@PLT
	movl	%eax, %ebx
	testl	%eax, %eax
	je	.L35
	movl	%eax, %edi
	call	cudaGetErrorString@PLT
	movl	%ebx, %ecx
	leaq	.LC15(%rip), %rdx
	movq	%rax, %r8
	jmp	.L59
.L35:
	movq	64(%rsp), %rdi
	call	cudaFree@PLT
	movl	%eax, %ebx
	testl	%eax, %eax
	je	.L36
	movl	%eax, %edi
	call	cudaGetErrorString@PLT
	movl	%ebx, %ecx
	leaq	.LC16(%rip), %rdx
	movq	%rax, %r8
	jmp	.L59
.L36:
	movq	80(%rsp), %rdi
	call	cudaFree@PLT
	movl	%eax, %ebx
	testl	%eax, %eax
	je	.L37
	movl	%eax, %edi
	call	cudaGetErrorString@PLT
	movl	%ebx, %ecx
	leaq	.LC17(%rip), %rdx
	movq	%rax, %r8
	jmp	.L59
.L37:
	movq	72(%rsp), %rdi
	call	cudaFree@PLT
	movl	%eax, %ebx
	testl	%eax, %eax
	je	.L38
	movl	%eax, %edi
	call	cudaGetErrorString@PLT
	movl	%ebx, %ecx
	leaq	.LC18(%rip), %rdx
	movq	%rax, %r8
	jmp	.L59
.L38:
	movsd	16(%rsp), %xmm0
	movsd	8(%rsp), %xmm2
	movb	$3, %al
	leaq	.LC19(%rip), %rsi
	movsd	24(%rsp), %xmm1
	movl	$2, %edi
	leaq	120(%rsp), %rbx
	call	__printf_chk@PLT
	movq	%rbx, %rsi
	movl	$1, %edi
	call	clock_gettime@PLT
	movq	32(%rsp), %rdi
	leaq	88(%rsp), %rdx
	movq	%rbx, %rsi
	call	_Z15time_differenceP8timespecS0_Px
	movq	88(%rsp), %rdx
	leaq	.LC21(%rip), %rsi
	movb	$1, %al
	movl	$2, %edi
	cvtsi2sdq	%rdx, %xmm0
	divsd	.LC20(%rip), %xmm0
	call	__printf_chk@PLT
	movq	8392(%rsp), %rax
	subq	%fs:40, %rax
	je	.L39
	call	__stack_chk_fail@PLT
.L39:
	addq	$8408, %rsp
	.cfi_def_cfa_offset 56
	xorl	%eax, %eax
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%rbp
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r13
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE2044:
	.size	main, .-main
	.section	.rodata.str1.1
.LC24:
	.string	"_Z11d_rms_errorPdS_S_P7point_t"
.LC25:
	.string	"d_n_data"
	.section	.text.startup
	.type	_ZL24__sti____cudaRegisterAllv, @function
_ZL24__sti____cudaRegisterAllv:
.LFB2072:
	.cfi_startproc
	endbr64
	pushq	%rbx
	.cfi_def_cfa_offset 16
	.cfi_offset 3, -16
	leaq	_ZL15__fatDeviceText(%rip), %rdi
	call	__cudaRegisterFatBinary@PLT
	pushq	$0
	.cfi_def_cfa_offset 24
	xorl	%r9d, %r9d
	orl	$-1, %r8d
	pushq	$0
	.cfi_def_cfa_offset 32
	leaq	.LC24(%rip), %rdx
	movq	%rax, %rdi
	movq	%rax, %rbx
	pushq	$0
	.cfi_def_cfa_offset 40
	movq	%rdx, %rcx
	leaq	_Z11d_rms_errorPdS_S_P7point_t(%rip), %rsi
	pushq	$0
	.cfi_def_cfa_offset 48
	movq	%rax, _ZL20__cudaFatCubinHandle(%rip)
	call	__cudaRegisterFunction@PLT
	addq	$32, %rsp
	.cfi_def_cfa_offset 16
	movq	%rbx, %rdi
	xorl	%r8d, %r8d
	pushq	$0
	.cfi_def_cfa_offset 24
	leaq	.LC25(%rip), %rdx
	movl	$4, %r9d
	leaq	_ZL8d_n_data(%rip), %rsi
	pushq	$0
	.cfi_def_cfa_offset 32
	movq	%rdx, %rcx
	call	__cudaRegisterVar@PLT
	movq	_ZL20__cudaFatCubinHandle(%rip), %rdi
	popq	%rax
	.cfi_def_cfa_offset 24
	popq	%rdx
	.cfi_def_cfa_offset 16
	call	__cudaRegisterFatBinaryEnd@PLT
	leaq	_ZL26__cudaUnregisterBinaryUtilv(%rip), %rdi
	popq	%rbx
	.cfi_def_cfa_offset 8
	jmp	atexit@PLT
	.cfi_endproc
.LFE2072:
	.size	_ZL24__sti____cudaRegisterAllv, .-_ZL24__sti____cudaRegisterAllv
	.section	.init_array,"aw"
	.align 8
	.quad	_ZL24__sti____cudaRegisterAllv
	.section	.nvFatBinSegment,"aw"
	.align 8
	.type	_ZL15__fatDeviceText, @object
	.size	_ZL15__fatDeviceText, 24
_ZL15__fatDeviceText:
	.long	1180844977
	.long	1
	.quad	fatbinData
	.quad	0
	.local	_ZL20__cudaFatCubinHandle
	.comm	_ZL20__cudaFatCubinHandle,8,8
	.globl	data
	.data
	.align 32
	.type	data, @object
	.size	data, 16000
data:
	.long	-343597384
	.long	1079015505
	.long	858993459
	.long	1079792435
	.long	343597384
	.long	1079297966
	.long	-1030792151
	.long	1079630069
	.long	-1546188227
	.long	1079127408
	.long	-1717986918
	.long	1080107417
	.long	-687194767
	.long	1079181475
	.long	1202590843
	.long	1079958241
	.long	-1889785610
	.long	1079076290
	.long	343597384
	.long	1079797678
	.long	-171798692
	.long	1079143464
	.long	-515396076
	.long	1079821434
	.long	-1546188227
	.long	1079106928
	.long	687194767
	.long	1079578460
	.long	687194767
	.long	1079131996
	.long	1374389535
	.long	1079881400
	.long	0
	.long	1079058432
	.long	1717986918
	.long	1079539302
	.long	515396076
	.long	1079008133
	.long	171798692
	.long	1079628759
	.long	1546188227
	.long	1079399055
	.long	1717986918
	.long	1080073830
	.long	-2061584302
	.long	1078792683
	.long	-687194767
	.long	1079279779
	.long	1717986918
	.long	1078445670
	.long	-1717986918
	.long	1079171481
	.long	1717986918
	.long	1079195238
	.long	-1889785610
	.long	1079756226
	.long	-687194767
	.long	1079050403
	.long	-1717986918
	.long	1079822745
	.long	-858993459
	.long	1077267660
	.long	-1030792151
	.long	1078675701
	.long	1546188227
	.long	1079411343
	.long	-1546188227
	.long	1079905648
	.long	-858993459
	.long	1078750412
	.long	1889785610
	.long	1079622205
	.long	1030792151
	.long	1073862410
	.long	1202590843
	.long	1078090465
	.long	-2061584302
	.long	1079357931
	.long	-1546188227
	.long	1079860592
	.long	-515396076
	.long	1075451002
	.long	1889785610
	.long	1078381117
	.long	-515396076
	.long	1079530618
	.long	1546188227
	.long	1080195727
	.long	-1030792151
	.long	1077340405
	.long	-1889785610
	.long	1078662594
	.long	-1889785610
	.long	1079223746
	.long	-2061584302
	.long	1079685611
	.long	515396076
	.long	1078332293
	.long	-1546188227
	.long	1079098736
	.long	-1030792151
	.long	1079159029
	.long	515396076
	.long	1079536517
	.long	-687194767
	.long	1079419043
	.long	687194767
	.long	1080090460
	.long	-1717986918
	.long	1079511449
	.long	-343597384
	.long	1080158289
	.long	1546188227
	.long	1078805135
	.long	-858993459
	.long	1079389388
	.long	-1889785610
	.long	1078834626
	.long	343597384
	.long	1079588782
	.long	-687194767
	.long	1079038115
	.long	1202590843
	.long	1079724769
	.long	687194767
	.long	1078742876
	.long	-2061584302
	.long	1079443947
	.long	-1717986918
	.long	1079110041
	.long	0
	.long	1079762944
	.long	1374389535
	.long	1074929336
	.long	-1202590843
	.long	1077986590
	.long	1717986918
	.long	1079293542
	.long	1030792151
	.long	1079940874
	.long	1889785610
	.long	1079503421
	.long	-1546188227
	.long	1080251760
	.long	343597384
	.long	1079257006
	.long	1030792151
	.long	1079568138
	.long	1717986918
	.long	1078371942
	.long	1717986918
	.long	1079289446
	.long	1717986918
	.long	1078101606
	.long	-687194767
	.long	1079259299
	.long	-1546188227
	.long	1078902128
	.long	1374389535
	.long	1079553720
	.long	-2061584302
	.long	1078571499
	.long	858993459
	.long	1079554867
	.long	-1889785610
	.long	1077310914
	.long	1030792151
	.long	1078974218
	.long	-2061584302
	.long	1079390699
	.long	-2061584302
	.long	1079878123
	.long	1889785610
	.long	1079478845
	.long	-1889785610
	.long	1080157634
	.long	-171798692
	.long	1078180904
	.long	1374389535
	.long	1079107256
	.long	1546188227
	.long	1075692175
	.long	-2061584302
	.long	1078473195
	.long	2061584302
	.long	1078586900
	.long	343597384
	.long	1079691182
	.long	-2061584302
	.long	1079353835
	.long	1717986918
	.long	1080112742
	.long	-2061584302
	.long	1079304683
	.long	-515396076
	.long	1079960698
	.long	-343597384
	.long	1075755089
	.long	-343597384
	.long	1078581329
	.long	-1889785610
	.long	1077081538
	.long	-343597384
	.long	1078810705
	.long	515396076
	.long	1077291909
	.long	1889785610
	.long	1079224893
	.long	-1717986918
	.long	1078327705
	.long	-2061584302
	.long	1079112171
	.long	1546188227
	.long	1079448207
	.long	-858993459
	.long	1080089804
	.long	2061584302
	.long	1079197204
	.long	-2061584302
	.long	1079595499
	.long	-1546188227
	.long	1077362032
	.long	171798692
	.long	1078461399
	.long	1202590843
	.long	1077590753
	.long	-2061584302
	.long	1079013867
	.long	0
	.long	1079382016
	.long	-515396076
	.long	1080163450
	.long	343597384
	.long	1079494574
	.long	-1546188227
	.long	1079983472
	.long	-171798692
	.long	1076190248
	.long	1030792151
	.long	1079031562
	.long	171798692
	.long	1078977495
	.long	1374389535
	.long	1079881400
	.long	-171798692
	.long	1077599272
	.long	-171798692
	.long	1079065640
	.long	858993459
	.long	1075786547
	.long	-1889785610
	.long	1078564290
	.long	1717986918
	.long	1077454438
	.long	-687194767
	.long	1078653091
	.long	-1202590843
	.long	1078330654
	.long	1546188227
	.long	1079161487
	.long	1546188227
	.long	1079366287
	.long	515396076
	.long	1080122245
	.long	-858993459
	.long	1079532748
	.long	-1546188227
	.long	1080065392
	.long	171798692
	.long	1079514071
	.long	343597384
	.long	1080151982
	.long	1717986918
	.long	1078388326
	.long	-1030792151
	.long	1079458037
	.long	-515396076
	.long	1079260282
	.long	2061584302
	.long	1080049172
	.long	-858993459
	.long	1078398156
	.long	687194767
	.long	1079406428
	.long	-1374389535
	.long	1078698311
	.long	-1030792151
	.long	1079204085
	.long	-1889785610
	.long	1075967426
	.long	0
	.long	1078525952
	.long	343597384
	.long	1076185006
	.long	-2061584302
	.long	1077907947
	.long	-1546188227
	.long	1079516528
	.long	515396076
	.long	1080175493
	.long	-2061584302
	.long	1075925483
	.long	-1202590843
	.long	1078166814
	.long	1717986918
	.long	1079215718
	.long	-171798692
	.long	1079647272
	.long	-1374389535
	.long	1079488839
	.long	-1030792151
	.long	1080070389
	.long	687194767
	.long	1078423388
	.long	-858993459
	.long	1079184588
	.long	343597384
	.long	1078462382
	.long	0
	.long	1079451648
	.long	-515396076
	.long	1078056058
	.long	-1889785610
	.long	1079236034
	.long	-171798692
	.long	1079446568
	.long	1546188227
	.long	1080226447
	.long	-2061584302
	.long	1079464427
	.long	-1717986918
	.long	1079822745
	.long	515396076
	.long	1077750661
	.long	1374389535
	.long	1078861496
	.long	-1889785610
	.long	1077687746
	.long	-1717986918
	.long	1078573465
	.long	171798692
	.long	1074963415
	.long	-2061584302
	.long	1078637035
	.long	1202590843
	.long	1079483105
	.long	-2061584302
	.long	1080164843
	.long	-1889785610
	.long	1077441986
	.long	1202590843
	.long	1079024353
	.long	1889785610
	.long	1077758525
	.long	1202590843
	.long	1079048929
	.long	1546188227
	.long	1078919823
	.long	1546188227
	.long	1079730831
	.long	858993459
	.long	1076769587
	.long	-687194767
	.long	1078669475
	.long	-2061584302
	.long	1075466731
	.long	-1030792151
	.long	1078520053
	.long	-1889785610
	.long	1079440834
	.long	1374389535
	.long	1080073912
	.long	2061584302
	.long	1079021076
	.long	1374389535
	.long	1079676600
	.long	1546188227
	.long	1079087759
	.long	1202590843
	.long	1079679713
	.long	1202590843
	.long	1077639905
	.long	-1889785610
	.long	1078425026
	.long	-2061584302
	.long	1077662187
	.long	-515396076
	.long	1079272570
	.long	-1374389535
	.long	1077485895
	.long	-1202590843
	.long	1079055646
	.long	0
	.long	1079291904
	.long	171798692
	.long	1080064983
	.long	-858993459
	.long	1075760332
	.long	-1030792151
	.long	1078216949
	.long	171798692
	.long	1078166487
	.long	1546188227
	.long	1079349903
	.long	1202590843
	.long	1078246113
	.long	2061584302
	.long	1079033364
	.long	171798692
	.long	1077355479
	.long	-1030792151
	.long	1078438133
	.long	1202590843
	.long	1079446241
	.long	1030792151
	.long	1079977738
	.long	343597384
	.long	1079117742
	.long	-1202590843
	.long	1079493918
	.long	-1889785610
	.long	1079403970
	.long	1374389535
	.long	1080266424
	.long	-515396076
	.long	1078400122
	.long	0
	.long	1079447552
	.long	-1030792151
	.long	1078724853
	.long	-1374389535
	.long	1079243079
	.long	1717986918
	.long	1078224486
	.long	-515396076
	.long	1079202938
	.long	-2061584302
	.long	1078694379
	.long	858993459
	.long	1079604019
	.long	-1374389535
	.long	1077436743
	.long	-858993459
	.long	1078496460
	.long	1717986918
	.long	1071015526
	.long	1202590843
	.long	1078336225
	.long	-858993459
	.long	1071959244
	.long	-2061584302
	.long	1078309355
	.long	-1546188227
	.long	1076182384
	.long	171798692
	.long	1077961687
	.long	171798692
	.long	1079440343
	.long	-1030792151
	.long	1080074485
	.long	1717986918
	.long	1078306406
	.long	-687194767
	.long	1079476387
	.long	1202590843
	.long	1079098081
	.long	-687194767
	.long	1079955619
	.long	-1717986918
	.long	1078851993
	.long	-1374389535
	.long	1079603527
	.long	-343597384
	.long	1077229649
	.long	-171798692
	.long	1078795304
	.long	1889785610
	.long	1078143549
	.long	858993459
	.long	1079305011
	.long	515396076
	.long	1077259141
	.long	343597384
	.long	1078364078
	.long	-858993459
	.long	1078111436
	.long	1374389535
	.long	1079176888
	.long	1202590843
	.long	1075411681
	.long	2061584302
	.long	1077620244
	.long	-1374389535
	.long	1079103815
	.long	-858993459
	.long	1079569612
	.long	2061584302
	.long	1076473364
	.long	0
	.long	1078837248
	.long	1202590843
	.long	1077263073
	.long	-1374389535
	.long	1078042951
	.long	-1889785610
	.long	1079272898
	.long	-1717986918
	.long	1080062361
	.long	1030792151
	.long	1079011082
	.long	-343597384
	.long	1079851089
	.long	-1717986918
	.long	1078147481
	.long	1202590843
	.long	1079347937
	.long	-171798692
	.long	1078860840
	.long	1889785610
	.long	1079249469
	.long	-343597384
	.long	1079310417
	.long	858993459
	.long	1080122163
	.long	2061584302
	.long	1078439444
	.long	-1202590843
	.long	1079350558
	.long	2061584302
	.long	1078390292
	.long	-343597384
	.long	1079547985
	.long	1889785610
	.long	1078151741
	.long	-2061584302
	.long	1079337451
	.long	-2061584302
	.long	1075466731
	.long	-2061584302
	.long	1078317547
	.long	343597384
	.long	1079297966
	.long	515396076
	.long	1079847813
	.long	-1889785610
	.long	1079449026
	.long	-1889785610
	.long	1080118722
	.long	-171798692
	.long	1078680616
	.long	1889785610
	.long	1079495229
	.long	-2061584302
	.long	1078989291
	.long	-343597384
	.long	1079650385
	.long	-343597384
	.long	1079400529
	.long	-687194767
	.long	1079955619
	.long	-2061584302
	.long	1077301739
	.long	-1202590843
	.long	1079039262
	.long	-1717986918
	.long	1079040409
	.long	1889785610
	.long	1080023613
	.long	-2061584302
	.long	1075991019
	.long	858993459
	.long	1078580019
	.long	-343597384
	.long	1079547985
	.long	-1374389535
	.long	1080293703
	.long	1889785610
	.long	1073678909
	.long	343597384
	.long	1077512110
	.long	-2061584302
	.long	1077580267
	.long	-1889785610
	.long	1079043522
	.long	1374389535
	.long	1078517432
	.long	-1030792151
	.long	1079159029
	.long	-2061584302
	.long	1078981099
	.long	687194767
	.long	1079779164
	.long	-858993459
	.long	1078611148
	.long	1546188227
	.long	1079485071
	.long	-1546188227
	.long	1079065968
	.long	-1202590843
	.long	1079584030
	.long	-1546188227
	.long	1078795632
	.long	515396076
	.long	1079376773
	.long	-1202590843
	.long	1078330654
	.long	-1546188227
	.long	1079340400
	.long	1717986918
	.long	1078716006
	.long	1546188227
	.long	1079530127
	.long	-1889785610
	.long	1079186882
	.long	-2061584302
	.long	1080048107
	.long	687194767
	.long	1079234396
	.long	-1030792151
	.long	1079867637
	.long	687194767
	.long	1079398236
	.long	343597384
	.long	1080096686
	.long	343597384
	.long	1076610990
	.long	687194767
	.long	1078742876
	.long	2061584302
	.long	1079148052
	.long	687194767
	.long	1079881564
	.long	343597384
	.long	1079396270
	.long	-1889785610
	.long	1080069570
	.long	515396076
	.long	1078602629
	.long	-1889785610
	.long	1079154114
	.long	-171798692
	.long	1079057448
	.long	858993459
	.long	1079755571
	.long	-1030792151
	.long	1078421749
	.long	-343597384
	.long	1079199825
	.long	343597384
	.long	1075955630
	.long	1030792151
	.long	1078302474
	.long	0
	.long	1079181312
	.long	343597384
	.long	1079887790
	.long	-171798692
	.long	1074093096
	.long	1546188227
	.long	1078633103
	.long	1374389535
	.long	1078042296
	.long	-687194767
	.long	1079054499
	.long	-1030792151
	.long	1079138549
	.long	-1374389535
	.long	1079591239
	.long	-2061584302
	.long	1078440427
	.long	171798692
	.long	1079763927
	.long	-1889785610
	.long	1078261186
	.long	515396076
	.long	1079389061
	.long	-1889785610
	.long	1079346626
	.long	1030792151
	.long	1080112906
	.long	687194767
	.long	1074827100
	.long	0
	.long	1078067200
	.long	1717986918
	.long	1078429286
	.long	-1374389535
	.long	1079554375
	.long	2061584302
	.long	1078537748
	.long	-1030792151
	.long	1079671029
	.long	1889785610
	.long	1078381117
	.long	-1202590843
	.long	1079379230
	.long	171798692
	.long	1077388247
	.long	-1717986918
	.long	1078983065
	.long	1202590843
	.long	1079081697
	.long	0
	.long	1079836672
	.long	1030792151
	.long	1073993482
	.long	-1202590843
	.long	1078199582
	.long	515396076
	.long	1078963077
	.long	-343597384
	.long	1079687249
	.long	1717986918
	.long	1079457382
	.long	1546188227
	.long	1080070799
	.long	515396076
	.long	1079446405
	.long	-171798692
	.long	1080235048
	.long	-1202590843
	.long	1079297310
	.long	-1546188227
	.long	1080075632
	.long	1717986918
	.long	1078437478
	.long	-687194767
	.long	1079632035
	.long	1889785610
	.long	1079417405
	.long	-858993459
	.long	1080227020
	.long	2061584302
	.long	1079528980
	.long	1202590843
	.long	1080130273
	.long	-343597384
	.long	1078581329
	.long	687194767
	.long	1079369564
	.long	-687194767
	.long	1078694051
	.long	171798692
	.long	1079481303
	.long	171798692
	.long	1076044759
	.long	-858993459
	.long	1078611148
	.long	-343597384
	.long	1079380049
	.long	-858993459
	.long	1080067276
	.long	-1889785610
	.long	1076524482
	.long	-858993459
	.long	1078357196
	.long	687194767
	.long	1079066460
	.long	1717986918
	.long	1079879270
	.long	515396076
	.long	1078242181
	.long	-1030792151
	.long	1079294197
	.long	-171798692
	.long	1077664808
	.long	0
	.long	1078386688
	.long	1374389535
	.long	1078009528
	.long	0
	.long	1079205888
	.long	1374389535
	.long	1078197944
	.long	-1374389535
	.long	1079234887
	.long	-171798692
	.long	1071602728
	.long	-687194767
	.long	1077670051
	.long	-1030792151
	.long	1076930805
	.long	-858993459
	.long	1078791372
	.long	-687194767
	.long	1076965539
	.long	1546188227
	.long	1078690447
	.long	0
	.long	1078009856
	.long	0
	.long	1079365632
	.long	515396076
	.long	1078995845
	.long	-343597384
	.long	1079945297
	.long	-1889785610
	.long	1073935810
	.long	1889785610
	.long	1078831677
	.long	-171798692
	.long	1079069736
	.long	1030792151
	.long	1079809802
	.long	687194767
	.long	1078480732
	.long	-687194767
	.long	1079406755
	.long	1202590843
	.long	1077639905
	.long	-858993459
	.long	1079098572
	.long	0
	.long	1078181888
	.long	1374389535
	.long	1079107256
	.long	343597384
	.long	1078454190
	.long	343597384
	.long	1079322542
	.long	687194767
	.long	1078677340
	.long	-171798692
	.long	1079237672
	.long	-687194767
	.long	1077178531
	.long	0
	.long	1079078912
	.long	1889785610
	.long	1079290429
	.long	171798692
	.long	1080071127
	.long	1889785610
	.long	1077152317
	.long	1889785610
	.long	1078184509
	.long	-343597384
	.long	1079212113
	.long	-515396076
	.long	1080161402
	.long	687194767
	.long	1072336732
	.long	-1030792151
	.long	1078339829
	.long	-1202590843
	.long	1076004126
	.long	-858993459
	.long	1078217932
	.long	-171798692
	.long	1079168040
	.long	-1889785610
	.long	1079776706
	.long	-515396076
	.long	1078432890
	.long	-1030792151
	.long	1079433461
	.long	-171798692
	.long	1077943336
	.long	515396076
	.long	1079114629
	.long	-1374389535
	.long	1078174023
	.long	1030792151
	.long	1079326474
	.long	1889785610
	.long	1078135357
	.long	-515396076
	.long	1079207034
	.long	1202590843
	.long	1078000353
	.long	0
	.long	1079160832
	.long	687194767
	.long	1079013212
	.long	-1374389535
	.long	1079730503
	.long	1717986918
	.long	1079354982
	.long	-171798692
	.long	1080192040
	.long	-343597384
	.long	1078089809
	.long	-1374389535
	.long	1078239559
	.long	-171798692
	.long	1079413800
	.long	-858993459
	.long	1080159436
	.long	1374389535
	.long	1078509240
	.long	343597384
	.long	1079527342
	.long	0
	.long	1079418880
	.long	-515396076
	.long	1080044666
	.long	-1546188227
	.long	1079319920
	.long	171798692
	.long	1079776215
	.long	-858993459
	.long	1075170508
	.long	-1889785610
	.long	1077835202
	.long	-1030792151
	.long	1075947765
	.long	-343597384
	.long	1078827089
	.long	1374389535
	.long	1079242424
	.long	-1889785610
	.long	1079821762
	.long	-858993459
	.long	1075629260
	.long	-687194767
	.long	1078603939
	.long	1374389535
	.long	1079107256
	.long	1717986918
	.long	1079637606
	.long	1030792151
	.long	1079072522
	.long	-858993459
	.long	1079721164
	.long	515396076
	.long	1079503749
	.long	515396076
	.long	1080073093
	.long	1202590843
	.long	1077361377
	.long	171798692
	.long	1078600663
	.long	-171798692
	.long	1076845608
	.long	1374389535
	.long	1078435512
	.long	858993459
	.long	1079399219
	.long	-515396076
	.long	1080132730
	.long	1717986918
	.long	1079563878
	.long	-1030792151
	.long	1080125685
	.long	687194767
	.long	1075220316
	.long	1546188227
	.long	1078174351
	.long	-1889785610
	.long	1075934658
	.long	-1030792151
	.long	1078839541
	.long	0
	.long	1078001664
	.long	343597384
	.long	1079003054
	.long	-343597384
	.long	1077655633
	.long	1374389535
	.long	1079008952
	.long	-515396076
	.long	1075254394
	.long	858993459
	.long	1078809395
	.long	1030792151
	.long	1078466314
	.long	171798692
	.long	1079153623
	.long	-1030792151
	.long	1077930229
	.long	-1717986918
	.long	1079261593
	.long	-515396076
	.long	1077171322
	.long	-2061584302
	.long	1078882795
	.long	343597384
	.long	1077807022
	.long	-1546188227
	.long	1079188848
	.long	343597384
	.long	1073039278
	.long	858993459
	.long	1078358835
	.long	-1202590843
	.long	1079207198
	.long	1202590843
	.long	1079790305
	.long	-1717986918
	.long	1078434201
	.long	1202590843
	.long	1079356129
	.long	687194767
	.long	1079398236
	.long	-858993459
	.long	1080167628
	.long	1030792151
	.long	1078064906
	.long	-1374389535
	.long	1079480647
	.long	-2061584302
	.long	1079247339
	.long	-2061584302
	.long	1079943659
	.long	-1374389535
	.long	1075831111
	.long	171798692
	.long	1078191063
	.long	515396076
	.long	1079257989
	.long	-1202590843
	.long	1079833886
	.long	1030792151
	.long	1076958986
	.long	-1717986918
	.long	1078524313
	.long	-1717986918
	.long	1078303129
	.long	-1546188227
	.long	1079352688
	.long	-1374389535
	.long	1076994375
	.long	858993459
	.long	1078252339
	.long	1030792151
	.long	1078400778
	.long	171798692
	.long	1079247831
	.long	-2061584302
	.long	1079366123
	.long	-1889785610
	.long	1079981506
	.long	-343597384
	.long	1074968657
	.long	515396076
	.long	1078152069
	.long	-1546188227
	.long	1079344496
	.long	171798692
	.long	1080171479
	.long	-515396076
	.long	1075319930
	.long	-687194767
	.long	1078218915
	.long	687194767
	.long	1078882140
	.long	-687194767
	.long	1079558307
	.long	-2061584302
	.long	1078243819
	.long	-1717986918
	.long	1079249305
	.long	-2061584302
	.long	1078448619
	.long	1202590843
	.long	1079278305
	.long	1717986918
	.long	1078183526
	.long	171798692
	.long	1079292887
	.long	1374389535
	.long	1078353592
	.long	-1030792151
	.long	1079613685
	.long	-1374389535
	.long	1078034759
	.long	858993459
	.long	1079218995
	.long	2061584302
	.long	1078193684
	.long	1546188227
	.long	1079259791
	.long	687194767
	.long	1079394140
	.long	-1717986918
	.long	1080179097
	.long	-1202590843
	.long	1074890014
	.long	-858993459
	.long	1077480652
	.long	-687194767
	.long	1077031075
	.long	-343597384
	.long	1078827089
	.long	-1202590843
	.long	1078674718
	.long	-171798692
	.long	1079712808
	.long	-343597384
	.long	1078220881
	.long	-1889785610
	.long	1079027138
	.long	-2061584302
	.long	1077367275
	.long	-858993459
	.long	1079004364
	.long	858993459
	.long	1076638515
	.long	-1546188227
	.long	1079020912
	.long	-1374389535
	.long	1078296903
	.long	1717986918
	.long	1079215718
	.long	-1202590843
	.long	1078347038
	.long	-343597384
	.long	1079285841
	.long	1546188227
	.long	1077756559
	.long	343597384
	.long	1079248814
	.long	-343597384
	.long	1077147729
	.long	-1374389535
	.long	1079099719
	.long	171798692
	.long	1079296983
	.long	858993459
	.long	1080152883
	.long	171798692
	.long	1079423959
	.long	-1546188227
	.long	1080114544
	.long	-343597384
	.long	1079265361
	.long	687194767
	.long	1080000348
	.long	858993459
	.long	1079558963
	.long	687194767
	.long	1080143708
	.long	343597384
	.long	1078183854
	.long	687194767
	.long	1079193436
	.long	-515396076
	.long	1078310010
	.long	-2061584302
	.long	1079087595
	.long	-171798692
	.long	1078541352
	.long	-687194767
	.long	1079795875
	.long	1374389535
	.long	1077632696
	.long	-687194767
	.long	1078784163
	.long	1546188227
	.long	1079136911
	.long	1889785610
	.long	1079831101
	.long	515396076
	.long	1078201221
	.long	343597384
	.long	1079461806
	.long	1889785610
	.long	1073809981
	.long	1202590843
	.long	1078434529
	.long	-171798692
	.long	1079110696
	.long	1374389535
	.long	1079910072
	.long	1546188227
	.long	1079341711
	.long	-1374389535
	.long	1080009031
	.long	1889785610
	.long	1077398077
	.long	1717986918
	.long	1078904422
	.long	-171798692
	.long	1077746728
	.long	1030792151
	.long	1079203594
	.long	1030792151
	.long	1077696266
	.long	2061584302
	.long	1079258644
	.long	-1717986918
	.long	1078466969
	.long	-2061584302
	.long	1079206379
	.long	2061584302
	.long	1079352852
	.long	515396076
	.long	1080177541
	.long	-1202590843
	.long	1079178526
	.long	1717986918
	.long	1079854694
	.long	1546188227
	.long	1078641295
	.long	-1546188227
	.long	1079090544
	.long	0
	.long	1078247424
	.long	1202590843
	.long	1079290593
	.long	515396076
	.long	1079413637
	.long	-1202590843
	.long	1079911710
	.long	-515396076
	.long	1077171322
	.long	-1030792151
	.long	1078151413
	.long	-515396076
	.long	1079358586
	.long	-1030792151
	.long	1079970037
	.long	-515396076
	.long	1078367354
	.long	171798692
	.long	1079538647
	.long	-2061584302
	.long	1078948331
	.long	0
	.long	1079578624
	.long	0
	.long	1078173696
	.long	1202590843
	.long	1079524065
	.long	1546188227
	.long	1077232271
	.long	-1546188227
	.long	1078254960
	.long	1889785610
	.long	1079421501
	.long	-858993459
	.long	1080077516
	.long	1202590843
	.long	1078745825
	.long	858993459
	.long	1079259955
	.long	1202590843
	.long	1072462561
	.long	1546188227
	.long	1078624911
	.long	687194767
	.long	1078194012
	.long	171798692
	.long	1079317463
	.long	1717986918
	.long	1076455014
	.long	-1374389535
	.long	1078403399
	.long	-1030792151
	.long	1078561013
	.long	-1546188227
	.long	1079336304
	.long	858993459
	.long	1078752051
	.long	0
	.long	1079578624
	.long	-1202590843
	.long	1079166238
	.long	-858993459
	.long	1079844044
	.long	-1202590843
	.long	1078396190
	.long	1889785610
	.long	1079401021
	.long	-1374389535
	.long	1078108487
	.long	-1030792151
	.long	1079290101
	.long	1889785610
	.long	1079339581
	.long	1717986918
	.long	1079989862
	.long	1374389535
	.long	1079406264
	.long	343597384
	.long	1079859118
	.long	687194767
	.long	1076924252
	.long	-343597384
	.long	1078827089
	.long	-1717986918
	.long	1079073177
	.long	1889785610
	.long	1079847485
	.long	-858993459
	.long	1079172300
	.long	-171798692
	.long	1079917608
	.long	-515396076
	.long	1078604922
	.long	1030792151
	.long	1079355146
	.long	-515396076
	.long	1075975290
	.long	1374389535
	.long	1078075064
	.long	1717986918
	.long	1078560358
	.long	-1374389535
	.long	1079460167
	.long	343597384
	.long	1079543726
	.long	687194767
	.long	1080049500
	.long	1030792151
	.long	1079367434
	.long	1889785610
	.long	1079831101
	.long	-1202590843
	.long	1078256926
	.long	-515396076
	.long	1079456890
	.long	0
	.long	1078747136
	.long	0
	.long	1079508992
	.long	171798692
	.long	1077953495
	.long	1546188227
	.long	1079419535
	.long	-1546188227
	.long	1079221616
	.long	-1374389535
	.long	1079361863
	.long	1546188227
	.long	1079485071
	.long	343597384
	.long	1080143790
	.long	515396076
	.long	1079106437
	.long	343597384
	.long	1079826350
	.long	-858993459
	.long	1078504652
	.long	687194767
	.long	1079246684
	.long	687194767
	.long	1079123804
	.long	-343597384
	.long	1079760977
	.long	-343597384
	.long	1078442065
	.long	171798692
	.long	1079432151
	.long	1202590843
	.long	1079556833
	.long	-1030792151
	.long	1080056053
	.long	-687194767
	.long	1074819235
	.long	687194767
	.long	1078611804
	.long	-1546188227
	.long	1077181808
	.long	-1889785610
	.long	1078244802
	.long	1030792151
	.long	1079547658
	.long	1546188227
	.long	1080171151
	.long	1374389535
	.long	1078763192
	.long	-171798692
	.long	1079528488
	.long	-1546188227
	.long	1077230960
	.long	-858993459
	.long	1078234316
	.long	1030792151
	.long	1078613770
	.long	-1889785610
	.long	1079281090
	.long	687194767
	.long	1078759260
	.long	-1717986918
	.long	1079593369
	.long	-1889785610
	.long	1079027138
	.long	-1717986918
	.long	1079839129
	.long	-1374389535
	.long	1079161159
	.long	1546188227
	.long	1079829135
	.long	1717986918
	.long	1076946534
	.long	687194767
	.long	1078972252
	.long	0
	.long	1077977088
	.long	1717986918
	.long	1078871654
	.long	-1546188227
	.long	1074281840
	.long	171798692
	.long	1078412247
	.long	-1030792151
	.long	1077930229
	.long	171798692
	.long	1078821847
	.long	-343597384
	.long	1078327377
	.long	-2061584302
	.long	1079149035
	.long	1030792151
	.long	1079006986
	.long	-1202590843
	.long	1079686430
	.long	-1546188227
	.long	1079131504
	.long	0
	.long	1079988224
	.long	1717986918
	.long	1077438054
	.long	-1717986918
	.long	1079044505
	.long	-1374389535
	.long	1077272903
	.long	171798692
	.long	1078690775
	.long	0
	.long	1077968896
	.long	-1717986918
	.long	1079228825
	.long	515396076
	.long	1079339909
	.long	515396076
	.long	1080130437
	.long	-515396076
	.long	1078994042
	.long	687194767
	.long	1079709532
	.long	-1374389535
	.long	1077387591
	.long	2061584302
	.long	1078701588
	.long	-687194767
	.long	1078628515
	.long	171798692
	.long	1079370711
	.long	1374389535
	.long	1076764344
	.long	2061584302
	.long	1078996500
	.long	-687194767
	.long	1076932771
	.long	-515396076
	.long	1078408314
	.long	-1374389535
	.long	1078829383
	.long	-1202590843
	.long	1079096606
	.long	-1202590843
	.long	1079207198
	.long	1717986918
	.long	1079993958
	.long	858993459
	.long	1078432563
	.long	1889785610
	.long	1079306813
	.long	1030792151
	.long	1079076618
	.long	858993459
	.long	1079812915
	.long	1546188227
	.long	1079489167
	.long	-1374389535
	.long	1080136007
	.long	2061584302
	.long	1079033364
	.long	-515396076
	.long	1079739514
	.long	1546188227
	.long	1077854863
	.long	2061584302
	.long	1079238164
	.long	1889785610
	.long	1079503421
	.long	-515396076
	.long	1080083578
	.long	-2061584302
	.long	1079333355
	.long	1717986918
	.long	1079838310
	.long	1889785610
	.long	1078315581
	.long	687194767
	.long	1079414620
	.long	687194767
	.long	1078292316
	.long	-2061584302
	.long	1079435755
	.long	-2061584302
	.long	1077891563
	.long	343597384
	.long	1078998958
	.long	0
	.long	1078730752
	.long	-1546188227
	.long	1079545200
	.long	687194767
	.long	1079209820
	.long	-1202590843
	.long	1079711006
	.long	1030792151
	.long	1079400202
	.long	1030792151
	.long	1079990026
	.long	-1202590843
	.long	1078977822
	.long	-1717986918
	.long	1079794073
	.long	-687194767
	.long	1072525475
	.long	-858993459
	.long	1077398732
	.long	-1717986918
	.long	1078155673
	.long	171798692
	.long	1079493591
	.long	1889785610
	.long	1078446653
	.long	-1717986918
	.long	1079429529
	.long	858993459
	.long	1075786547
	.long	-515396076
	.long	1078760570
	.long	-687194767
	.long	1079410851
	.long	1374389535
	.long	1080073912
	.long	-1717986918
	.long	1077983641
	.long	1889785610
	.long	1079339581
	.long	-858993459
	.long	1077611724
	.long	1717986918
	.long	1079551590
	.long	-1374389535
	.long	1074585927
	.long	343597384
	.long	1078421422
	.long	1546188227
	.long	1078518415
	.long	1717986918
	.long	1079404134
	.long	343597384
	.long	1079543726
	.long	343597384
	.long	1080133550
	.long	-1546188227
	.long	1079184752
	.long	-1546188227
	.long	1079770480
	.long	2061584302
	.long	1078324756
	.long	0
	.long	1079484416
	.long	-1889785610
	.long	1076229570
	.long	-515396076
	.long	1078072442
	.long	-343597384
	.long	1079261265
	.long	1030792151
	.long	1080006410
	.long	171798692
	.long	1079083991
	.long	1374389535
	.long	1079525048
	.long	171798692
	.long	1078977495
	.long	-858993459
	.long	1079491788
	.long	343597384
	.long	1070679982
	.long	1202590843
	.long	1078082273
	.long	858993459
	.long	1077080883
	.long	-515396076
	.long	1078850682
	.long	171798692
	.long	1074832343
	.long	-515396076
	.long	1076991098
	.long	1717986918
	.long	1077454438
	.long	-2061584302
	.long	1078727147
	.long	171798692
	.long	1078453207
	.long	-2061584302
	.long	1079349739
	.long	-1374389535
	.long	1079234887
	.long	-1889785610
	.long	1079993794
	.long	515396076
	.long	1078061957
	.long	1202590843
	.long	1079237345
	.long	-1030792151
	.long	1077815541
	.long	1374389535
	.long	1079172792
	.long	687194767
	.long	1077727068
	.long	-858993459
	.long	1079037132
	.long	-515396076
	.long	1078375546
	.long	-2061584302
	.long	1079394795
	.long	-1202590843
	.long	1075479838
	.long	1717986918
	.long	1077880422
	.long	-1374389535
	.long	1078042951
	.long	687194767
	.long	1079299932
	.long	2061584302
	.long	1076178452
	.long	-687194767
	.long	1078636707
	.long	-858993459
	.long	1074908364
	.long	1717986918
	.long	1077683814
	.long	-343597384
	.long	1078261841
	.long	-515396076
	.long	1079157882
	.long	687194767
	.long	1079476060
	.long	-1717986918
	.long	1080156569
	.long	1889785610
	.long	1077217853
	.long	343597384
	.long	1078978478
	.long	343597384
	.long	1079531438
	.long	1717986918
	.long	1080057446
	.long	687194767
	.long	1076907868
	.long	-1546188227
	.long	1078549872
	.long	343597384
	.long	1075464110
	.long	343597384
	.long	1078552494
	.long	-1202590843
	.long	1078789406
	.long	171798692
	.long	1079694295
	.long	687194767
	.long	1077055324
	.long	-858993459
	.long	1078578380
	.long	-1202590843
	.long	1078379806
	.long	-1374389535
	.long	1079374151
	.long	1717986918
	.long	1079440998
	.long	-343597384
	.long	1080125521
	.long	1546188227
	.long	1078018703
	.long	-1030792151
	.long	1078995189
	.long	-1030792151
	.long	1078315253
	.long	-1030792151
	.long	1079363829
	.long	-2061584302
	.long	1076580843
	.long	1546188227
	.long	1078403727
	.long	-1374389535
	.long	1077043527
	.long	858993459
	.long	1078891315
	.long	2061584302
	.long	1079016980
	.long	-515396076
	.long	1079489658
	.long	2061584302
	.long	1079049748
	.long	1030792151
	.long	1079744266
	.long	-1202590843
	.long	1077167390
	.long	-1546188227
	.long	1078246768
	.long	171798692
	.long	1078879191
	.long	-1374389535
	.long	1079574855
	.long	1030792151
	.long	1079494410
	.long	-687194767
	.long	1080062115
	.long	-1546188227
	.long	1078517104
	.long	687194767
	.long	1079525212
	.long	1374389535
	.long	1077845688
	.long	-1546188227
	.long	1079131504
	.long	343597384
	.long	1079236526
	.long	343597384
	.long	1080049582
	.long	-687194767
	.long	1076064419
	.long	343597384
	.long	1078003630
	.long	-171798692
	.long	1078852648
	.long	171798692
	.long	1079727063
	.long	2061584302
	.long	1077939732
	.long	343597384
	.long	1079076782
	.long	-858993459
	.long	1077218508
	.long	515396076
	.long	1078471557
	.long	1202590843
	.long	1078622945
	.long	343597384
	.long	1079465902
	.long	687194767
	.long	1079512924
	.long	858993459
	.long	1080251187
	.long	687194767
	.long	1079443292
	.long	-1717986918
	.long	1080062361
	.long	-1030792151
	.long	1078135029
	.long	-2061584302
	.long	1079239147
	.long	-858993459
	.long	1078144204
	.long	-687194767
	.long	1079349411
	.long	2061584302
	.long	1076211220
	.long	-687194767
	.long	1078333603
	.long	-343597384
	.long	1079216209
	.long	1889785610
	.long	1080183357
	.long	1889785610
	.long	1079032381
	.long	2061584302
	.long	1079459348
	.long	515396076
	.long	1076554629
	.long	-687194767
	.long	1078366371
	.long	1889785610
	.long	1078061629
	.long	-515396076
	.long	1078842490
	.long	1030792151
	.long	1076877066
	.long	0
	.long	1078460416
	.long	687194767
	.long	1078996828
	.long	-1889785610
	.long	1079576002
	.long	2061584302
	.long	1077800468
	.long	858993459
	.long	1079251763
	.long	-171798692
	.long	1072127016
	.long	-1889785610
	.long	1077990850
	.long	-515396076
	.long	1077548154
	.long	-1889785610
	.long	1078654402
	.long	-515396076
	.long	1078654074
	.long	858993459
	.long	1079305011
	.long	-515396076
	.long	1079268474
	.long	-343597384
	.long	1079732305
	.long	-2061584302
	.long	1079206379
	.long	858993459
	.long	1079903027
	.long	-2061584302
	.long	1078727147
	.long	1717986918
	.long	1079338598
	.long	-2061584302
	.long	1079484907
	.long	-858993459
	.long	1080063180
	.long	343597384
	.long	1078216622
	.long	1374389535
	.long	1079328440
	.long	-1374389535
	.long	1079365959
	.long	687194767
	.long	1079897948
	.long	-1202590843
	.long	1078789406
	.long	-1030792151
	.long	1079769333
	.long	858993459
	.long	1076245299
	.long	1717986918
	.long	1078675046
	.long	515396076
	.long	1076751237
	.long	-343597384
	.long	1078319185
	.long	858993459
	.long	1076310835
	.long	1030792151
	.long	1078474506
	.long	1030792151
	.long	1079006986
	.long	1030792151
	.long	1079863050
	.long	-1374389535
	.long	1078640967
	.long	343597384
	.long	1079416750
	.long	1717986918
	.long	1079297638
	.long	0
	.long	1079922688
	.long	-858993459
	.long	1077906636
	.long	1374389535
	.long	1079111352
	.long	-343597384
	.long	1079072849
	.long	-2061584302
	.long	1080062443
	.long	-515396076
	.long	1079530618
	.long	-1374389535
	.long	1080246599
	.long	-343597384
	.long	1077409873
	.long	-2061584302
	.long	1079013867
	.long	1717986918
	.long	1079289446
	.long	1202590843
	.long	1080038113
	.long	-1717986918
	.long	1078229401
	.long	-1202590843
	.long	1079285022
	.long	-2061584302
	.long	1075204587
	.long	-515396076
	.long	1076827258
	.long	515396076
	.long	1078635397
	.long	2061584302
	.long	1079709204
	.long	-1889785610
	.long	1079199170
	.long	-171798692
	.long	1079921704
	.long	343597384
	.long	1078200238
	.long	-171798692
	.long	1079176232
	.long	-1374389535
	.long	1077092679
	.long	-515396076
	.long	1079129210
	.long	-1546188227
	.long	1078164848
	.long	-858993459
	.long	1079327948
	.long	1202590843
	.long	1077689057
	.long	1546188227
	.long	1079333519
	.long	-2061584302
	.long	1077547499
	.long	1889785610
	.long	1077955133
	.long	1030792151
	.long	1079383818
	.long	-1374389535
	.long	1080203591
	.long	-687194767
	.long	1078554787
	.long	2061584302
	.long	1079553556
	.long	1546188227
	.long	1078018703
	.long	2061584302
	.long	1079184916
	.long	1202590843
	.long	1079188193
	.long	1202590843
	.long	1079708385
	.long	-1202590843
	.long	1079371038
	.long	-2061584302
	.long	1080052203
	.long	-1030792151
	.long	1076635893
	.long	-515396076
	.long	1078318202
	.long	1374389535
	.long	1078451896
	.long	858993459
	.long	1079845683
	.long	1202590843
	.long	1079044833
	.long	-171798692
	.long	1079831592
	.long	-515396076
	.long	1079309434
	.long	-343597384
	.long	1080143953
	.long	2061584302
	.long	1078562324
	.long	1717986918
	.long	1079363174
	.long	-858993459
	.long	1078340812
	.long	-1546188227
	.long	1079590256
	.long	1889785610
	.long	1079474749
	.long	-343597384
	.long	1080113233
	.long	-1889785610
	.long	1078146498
	.long	171798692
	.long	1079350231
	.long	-1030792151
	.long	1075063029
	.long	-1546188227
	.long	1078975856
	.long	-2061584302
	.long	1079505387
	.long	2061584302
	.long	1080135188
	.long	-1546188227
	.long	1079549296
	.long	0
	.long	1080254464
	.long	-1717986918
	.long	1073060249
	.long	1717986918
	.long	1077782118
	.long	-1374389535
	.long	1079566663
	.long	-687194767
	.long	1080176803
	.long	0
	.long	1077428224
	.long	-858993459
	.long	1078987980
	.long	343597384
	.long	1076217774
	.long	1546188227
	.long	1078608527
	.long	-687194767
	.long	1078775971
	.long	-687194767
	.long	1079763107
	.long	687194767
	.long	1079213916
	.long	1030792151
	.long	1079756554
	.long	-1889785610
	.long	1078171074
	.long	1030792151
	.long	1079019274
	.long	1030792151
	.long	1078048522
	.long	-1030792151
	.long	1079298293
	.long	1374389535
	.long	1078050488
	.long	1374389535
	.long	1078959800
	.long	1030792151
	.long	1079207690
	.long	-858993459
	.long	1079745740
	.long	-1889785610
	.long	1073280450
	.long	687194767
	.long	1078300508
	.long	-2061584302
	.long	1079493099
	.long	0
	.long	1080049664
	.long	-515396076
	.long	1077531770
	.long	-1717986918
	.long	1079003545
	.long	1202590843
	.long	1079462625
	.long	1374389535
	.long	1080090296
	.long	-1374389535
	.long	1077911879
	.long	-2061584302
	.long	1079009771
	.long	-515396076
	.long	1079547002
	.long	1030792151
	.long	1080139530
	.long	687194767
	.long	1079476060
	.long	1030792151
	.long	1079854858
	.long	858993459
	.long	1079567155
	.long	171798692
	.long	1080171479
	.long	1546188227
	.long	1076118159
	.long	1717986918
	.long	1078339174
	.long	-1374389535
	.long	1077387591
	.long	343597384
	.long	1078413230
	.long	343597384
	.long	1079138222
	.long	-515396076
	.long	1079637114
	.long	-1202590843
	.long	1077691678
	.long	0
	.long	1079160832
	.long	1889785610
	.long	1079343677
	.long	-343597384
	.long	1080049745
	.long	1889785610
	.long	1078520381
	.long	1202590843
	.long	1079470817
	.long	687194767
	.long	1078439772
	.long	-687194767
	.long	1079586979
	.long	-1374389535
	.long	1079394631
	.long	-1374389535
	.long	1080041799
	.long	-1030792151
	.long	1079220469
	.long	-171798692
	.long	1079725096
	.long	-858993459
	.long	1079237836
	.long	1202590843
	.long	1079798497
	.long	2061584302
	.long	1079275028
	.long	-1202590843
	.long	1080014110
	.long	-515396076
	.long	1076925562
	.long	-858993459
	.long	1078455500
	.long	-1030792151
	.long	1079286005
	.long	-1717986918
	.long	1080093081
	.long	-1889785610
	.long	1079133634
	.long	343597384
	.long	1079781294
	.long	515396076
	.long	1078283141
	.long	343597384
	.long	1079334830
	.long	171798692
	.long	1078289367
	.long	1717986918
	.long	1079277158
	.long	858993459
	.long	1078498099
	.long	2061584302
	.long	1079549460
	.long	-1374389535
	.long	1078894919
	.long	-515396076
	.long	1079682170
	.long	1546188227
	.long	1078862479
	.long	-1546188227
	.long	1079643504
	.long	858993459
	.long	1073427251
	.long	1546188227
	.long	1078231695
	.long	-1717986918
	.long	1077303705
	.long	-1030792151
	.long	1079052533
	.long	-1030792151
	.long	1079306485
	.long	2061584302
	.long	1079840276
	.long	515396076
	.long	1079069573
	.long	-343597384
	.long	1079470161
	.long	-1030792151
	.long	1076046069
	.long	-1717986918
	.long	1078868377
	.long	1546188227
	.long	1076347535
	.long	-1717986918
	.long	1078589849
	.long	171798692
	.long	1079469015
	.long	1546188227
	.long	1080208015
	.long	171798692
	.long	1079292887
	.long	-2061584302
	.long	1079976427
	.long	-1717986918
	.long	1079200153
	.long	-343597384
	.long	1079969873
	.long	1202590843
	.long	1079261921
	.long	-1374389535
	.long	1080035655
	.long	-1030792151
	.long	1078413557
	.long	-171798692
	.long	1079495720
	.long	687194767
	.long	1079410524
	.long	-515396076
	.long	1080087674
	.long	515396076
	.long	1078274949
	.long	-1030792151
	.long	1079392501
	.long	858993459
	.long	1077179187
	.long	2061584302
	.long	1078504980
	.long	0
	.long	1075249152
	.long	515396076
	.long	1078414213
	.long	-1717986918
	.long	1079056793
	.long	-1889785610
	.long	1079358914
	.long	1717986918
	.long	1079125606
	.long	687194767
	.long	1079840604
	.long	-1546188227
	.long	1079504240
	.long	-1030792151
	.long	1080146165
	.long	-1374389535
	.long	1079468359
	.long	687194767
	.long	1079988060
	.long	1546188227
	.long	1079018127
	.long	1202590843
	.long	1079745249
	.long	1889785610
	.long	1079454269
	.long	0
	.long	1080184832
	.long	1546188227
	.long	1079448207
	.long	1030792151
	.long	1080258314
	.long	-2061584302
	.long	1076941291
	.long	-858993459
	.long	1078496460
	.long	-1889785610
	.long	1079268802
	.long	-1374389535
	.long	1079718215
	.long	343597384
	.long	1078151086
	.long	-858993459
	.long	1079307468
	.long	343597384
	.long	1079187374
	.long	-1546188227
	.long	1079962992
	.long	1546188227
	.long	1079202447
	.long	343597384
	.long	1079945134
	.long	171798692
	.long	1076536279
	.long	1717986918
	.long	1078904422
	.long	-1546188227
	.long	1079143792
	.long	1202590843
	.long	1079769825
	.long	-2061584302
	.long	1078637035
	.long	1202590843
	.long	1079716577
	.long	2061584302
	.long	1078873620
	.long	-1546188227
	.long	1079901552
	.long	-858993459
	.long	1075432652
	.long	1546188227
	.long	1078207119
	.long	1889785610
	.long	1078020669
	.long	-1030792151
	.long	1079458037
	.long	1889785610
	.long	1079417405
	.long	-1030792151
	.long	1080023285
	.long	1374389535
	.long	1079340728
	.long	-1374389535
	.long	1079796039
	.long	-515396076
	.long	1078588538
	.long	-687194767
	.long	1079689379
	.long	-1889785610
	.long	1079129538
	.long	-1374389535
	.long	1079857479
	.long	-343597384
	.long	1079216209
	.long	858993459
	.long	1079788339
	.long	-1030792151
	.long	1079257333
	.long	-1717986918
	.long	1079826841
	.long	0
	.long	1078919168
	.long	-858993459
	.long	1079540940
	.long	1546188227
	.long	1078157967
	.long	858993459
	.long	1079243571
	.long	-1030792151
	.long	1078659317
	.long	-1546188227
	.long	1079369072
	.long	-1202590843
	.long	1079555358
	.long	-515396076
	.long	1080417402
	.long	-343597384
	.long	1078491217
	.long	171798692
	.long	1079387095
	.long	2061584302
	.long	1076833812
	.long	-343597384
	.long	1078425681
	.long	858993459
	.long	1077130035
	.long	858993459
	.long	1078735667
	.long	171798692
	.long	1079464919
	.long	-1202590843
	.long	1079940382
	.long	1717986918
	.long	1075996262
	.long	-515396076
	.long	1078801530
	.long	343597384
	.long	1077561262
	.long	343597384
	.long	1078634414
	.long	171798692
	.long	1079141335
	.long	-1030792151
	.long	1079752949
	.long	1202590843
	.long	1078786785
	.long	858993459
	.long	1079604019
	.long	1202590843
	.long	1078426337
	.long	-1717986918
	.long	1079126425
	.long	-2061584302
	.long	1079362027
	.long	-343597384
	.long	1080080465
	.long	-1889785610
	.long	1078302146
	.long	2061584302
	.long	1079045652
	.long	-1889785610
	.long	1079215554
	.long	-1546188227
	.long	1079668080
	.long	1546188227
	.long	1079104143
	.long	343597384
	.long	1079879598
	.long	515396076
	.long	1074391941
	.long	-858993459
	.long	1078521036
	.long	1889785610
	.long	1075055165
	.long	-687194767
	.long	1077588131
	.long	515396076
	.long	1079147397
	.long	-343597384
	.long	1079547985
	.long	1717986918
	.long	1076487782
	.long	1717986918
	.long	1078101606
	.long	-687194767
	.long	1075966115
	.long	-1030792151
	.long	1078528245
	.long	1546188227
	.long	1075561103
	.long	858993459
	.long	1078498099
	.long	-687194767
	.long	1078833315
	.long	858993459
	.long	1079378739
	.long	1546188227
	.long	1078354575
	.long	2061584302
	.long	1079315988
	.long	-2061584302
	.long	1078989291
	.long	1030792151
	.long	1079707402
	.long	1546188227
	.long	1078313615
	.long	171798692
	.long	1079239639
	.long	858993459
	.long	1078301491
	.long	515396076
	.long	1079356293
	.long	343597384
	.long	1078806446
	.long	-1030792151
	.long	1079015669
	.long	1546188227
	.long	1075298959
	.long	-1030792151
	.long	1077537013
	.long	1202590843
	.long	1078819553
	.long	-171798692
	.long	1079585832
	.long	171798692
	.long	1079284695
	.long	-2061584302
	.long	1079656939
	.long	-687194767
	.long	1079570595
	.long	-858993459
	.long	1080216780
	.long	1546188227
	.long	1077002895
	.long	1374389535
	.long	1079008952
	.long	-687194767
	.long	1077112995
	.long	-1202590843
	.long	1078740254
	.long	687194767
	.long	1079000924
	.long	1202590843
	.long	1079618273
	.long	-2061584302
	.long	1077121515
	.long	-1717986918
	.long	1079024025
	.long	687194767
	.long	1079283548
	.long	687194767
	.long	1080074076
	.long	1374389535
	.long	1079238328
	.long	-343597384
	.long	1079875665
	.long	-1030792151
	.long	1078880501
	.long	1889785610
	.long	1079507517
	.long	1717986918
	.long	1075897958
	.long	-858993459
	.long	1078414540
	.long	687194767
	.long	1077120860
	.long	0
	.long	1078968320
	.long	-2061584302
	.long	1075925483
	.long	2061584302
	.long	1078259220
	.long	1030792151
	.long	1078605578
	.long	1202590843
	.long	1079479009
	.long	2061584302
	.long	1078365716
	.long	-1030792151
	.long	1079318773
	.long	-1546188227
	.long	1079573872
	.long	-1889785610
	.long	1080155586
	.long	-343597384
	.long	1079330897
	.long	-1546188227
	.long	1080120688
	.long	1202590843
	.long	1077099233
	.long	-515396076
	.long	1078457466
	.long	-1202590843
	.long	1078879518
	.long	858993459
	.long	1079571251
	.long	515396076
	.long	1077160837
	.long	-343597384
	.long	1078581329
	.long	-687194767
	.long	1079484579
	.long	-858993459
	.long	1079696588
	.long	1889785610
	.long	1079224893
	.long	687194767
	.long	1079992156
	.long	1717986918
	.long	1078568550
	.long	343597384
	.long	1079474094
	.long	-515396076
	.long	1077499002
	.long	-515396076
	.long	1078441082
	.long	-1030792151
	.long	1079134453
	.long	-171798692
	.long	1079548968
	.long	-2061584302
	.long	1079353835
	.long	-515396076
	.long	1080140922
	.long	-1202590843
	.long	1079268638
	.long	-1889785610
	.long	1080100290
	.long	1717986918
	.long	1077028454
	.long	-171798692
	.long	1078959144
	.long	1546188227
	.long	1078051471
	.long	2061584302
	.long	1079098900
	.long	-515396076
	.long	1075123322
	.long	-1030792151
	.long	1078102261
	.long	-1030792151
	.long	1079146741
	.long	858993459
	.long	1080070963
	.long	2061584302
	.long	1078398484
	.long	1717986918
	.long	1079408230
	.long	-1374389535
	.long	1079054663
	.long	1546188227
	.long	1079390863
	.long	-1546188227
	.long	1078631792
	.long	-171798692
	.long	1079413800
	.long	343597384
	.long	1078429614
	.long	1202590843
	.long	1079237345
	.long	-1202590843
	.long	1078641950
	.long	-1374389535
	.long	1079533895
	.long	1030792151
	.long	1078015754
	.long	-2061584302
	.long	1079161323
	.long	0
	.long	1076559872
	.long	-2061584302
	.long	1078620651
	.long	-343597384
	.long	1079187537
	.long	1889785610
	.long	1080056381
	.long	-1030792151
	.long	1079011573
	.long	-1717986918
	.long	1079544217
	.long	2061584302
	.long	1078914580
	.long	-687194767
	.long	1079820451
	.long	-171798692
	.long	1078131752
	.long	-1374389535
	.long	1079001415
	.long	1546188227
	.long	1078141583
	.long	1030792151
	.long	1079006986
	.long	1030792151
	.long	1078228746
	.long	0
	.long	1078996992
	.long	-687194767
	.long	1078694051
	.long	-515396076
	.long	1079555194
	.long	858993459
	.long	1078489907
	.long	-1374389535
	.long	1079255367
	.long	1030792151
	.long	1079473930
	.long	2061584302
	.long	1080217108
	.long	343597384
	.long	1078871982
	.long	0
	.long	1079562240
	.long	343597384
	.long	1077962670
	.long	1546188227
	.long	1079059087
	.long	0
	.long	1079107584
	.long	0
	.long	1079681024
	.long	343597384
	.long	1079052206
	.long	343597384
	.long	1079662510
	.long	2061584302
	.long	1076735508
	.long	687194767
	.long	1078382428
	.long	-1889785610
	.long	1078064578
	.long	1202590843
	.long	1079151329
	.long	858993459
	.long	1079124787
	.long	-171798692
	.long	1079962664
	.long	-171798692
	.long	1079106600
	.long	1889785610
	.long	1079908925
	.long	-1717986918
	.long	1078303129
	.long	-687194767
	.long	1079373987
	.long	171798692
	.long	1077404631
	.long	-1202590843
	.long	1078486302
	.long	1717986918
	.long	1078519398
	.long	-1030792151
	.long	1079855349
	.long	1546188227
	.long	1078911631
	.long	-515396076
	.long	1079391354
	.long	-1717986918
	.long	1079142809
	.long	515396076
	.long	1079880581
	.long	-1202590843
	.long	1078027550
	.long	1030792151
	.long	1079002890
	.long	-1030792151
	.long	1079331061
	.long	-858993459
	.long	1080065228
	.long	-858993459
	.long	1077415116
	.long	1030792151
	.long	1078994698
	.long	343597384
	.long	1075857326
	.long	515396076
	.long	1077988229
	.long	1546188227
	.long	1077379727
	.long	-1030792151
	.long	1079032053
	.long	1889785610
	.long	1078692413
	.long	2061584302
	.long	1079332372
	.long	1889785610
	.long	1078528573
	.long	1202590843
	.long	1079405281
	.long	-1889785610
	.long	1078994370
	.long	-1374389535
	.long	1079722311
	.long	1546188227
	.long	1078092431
	.long	-1030792151
	.long	1079212277
	.long	-858993459
	.long	1075039436
	.long	-1889785610
	.long	1078441410
	.long	515396076
	.long	1079384965
	.long	687194767
	.long	1080160092
	.long	-1889785610
	.long	1079260610
	.long	1374389535
	.long	1080049336
	.long	1202590843
	.long	1078786785
	.long	1030792151
	.long	1079564042
	.long	1546188227
	.long	1079386767
	.long	515396076
	.long	1080118149
	.long	1202590843
	.long	1078909665
	.long	-171798692
	.long	1079462952
	.long	0
	.long	1078657024
	.long	-1717986918
	.long	1079257497
	.long	1030792151
	.long	1079396106
	.long	-1030792151
	.long	1080043765
	.long	687194767
	.long	1078538076
	.long	-171798692
	.long	1079225384
	.long	-343597384
	.long	1077590097
	.long	-171798692
	.long	1078721576
	.long	2061584302
	.long	1077489172
	.long	1030792151
	.long	1078810378
	.long	-687194767
	.long	1079460003
	.long	-858993459
	.long	1080054988
	.long	2061584302
	.long	1078267412
	.long	-1202590843
	.long	1079145758
	.long	-171798692
	.long	1079151656
	.long	1717986918
	.long	1079772774
	.long	-687194767
	.long	1077670051
	.long	2061584302
	.long	1079131668
	.long	343597384
	.long	1079502766
	.long	171798692
	.long	1079993303
	.long	-1202590843
	.long	1078990110
	.long	1374389535
	.long	1079910072
	.long	1889785610
	.long	1079335485
	.long	-515396076
	.long	1080071290
	.long	-1374389535
	.long	1077649735
	.long	0
	.long	1079058432
	.long	-1202590843
	.long	1078240542
	.long	687194767
	.long	1079123804
	.long	-1889785610
	.long	1079293378
	.long	687194767
	.long	1079865180
	.long	1546188227
	.long	1077559951
	.long	-343597384
	.long	1079277649
	.long	-1889785610
	.long	1078375874
	.long	-1717986918
	.long	1079015833
	.long	343597384
	.long	1075955630
	.long	-687194767
	.long	1078726819
	.long	-2061584302
	.long	1077465579
	.long	515396076
	.long	1078782853
	.long	-2061584302
	.long	1078096363
	.long	-2061584302
	.long	1079140843
	.long	-1030792151
	.long	1078790389
	.long	1546188227
	.long	1079792271
	.long	-2061584302
	.long	1079087595
	.long	515396076
	.long	1079577477
	.long	-1202590843
	.long	1079080222
	.long	-1202590843
	.long	1079977246
	.long	0
	.long	1079123968
	.long	-1030792151
	.long	1079552245
	.long	2061584302
	.long	1078308372
	.long	343597384
	.long	1079424942
	.long	-1889785610
	.long	1079424450
	.long	-1202590843
	.long	1080157470
	.long	-858993459
	.long	1078824140
	.long	1374389535
	.long	1079602872
	.long	-1202590843
	.long	1076462878
	.long	-1030792151
	.long	1078601973
	.long	-2061584302
	.long	1077219819
	.long	1030792151
	.long	1078818570
	.long	-1374389535
	.long	1078722887
	.long	-687194767
	.long	1079414947
	.long	-1546188227
	.long	1076018544
	.long	-858993459
	.long	1078512844
	.long	1889785610
	.long	1075251773
	.long	-1889785610
	.long	1078293954
	.long	687194767
	.long	1076727644
	.long	1202590843
	.long	1078885089
	.long	343597384
	.long	1078970286
	.long	-858993459
	.long	1080054988
	.long	2061584302
	.long	1079340564
	.long	1889785610
	.long	1080062525
	.long	343597384
	.long	1075857326
	.long	-1030792151
	.long	1078274293
	.long	-1030792151
	.long	1079568629
	.long	1374389535
	.long	1080276664
	.long	1202590843
	.long	1075411681
	.long	-1546188227
	.long	1078238576
	.long	858993459
	.long	1079526195
	.long	858993459
	.long	1080068915
	.long	-1030792151
	.long	1078634741
	.long	-171798692
	.long	1079311400
	.long	1717986918
	.long	1076618854
	.long	-1202590843
	.long	1078813982
	.long	1717986918
	.long	1077536358
	.long	858993459
	.long	1078522675
	.long	1717986918
	.long	1079068262
	.long	-2061584302
	.long	1079206379
	.long	343597384
	.long	1079531438
	.long	1374389535
	.long	1080192696
	.long	1546188227
	.long	1076740751
	.long	-687194767
	.long	1078415523
	.long	1889785610
	.long	1079249469
	.long	2061584302
	.long	1080077844
	.long	1374389535
	.long	1079185080
	.long	1202590843
	.long	1079814881
	.long	687194767
	.long	1077317468
	.long	1030792151
	.long	1078908682
	.long	1030792151
	.long	1079367434
	.long	-1717986918
	.long	1080088985
	.long	-1202590843
	.long	1078641950
	.long	-515396076
	.long	1079448698
	.long	1717986918
	.long	1078568550
	.long	-1030792151
	.long	1079585013
	.long	1546188227
	.long	1079313039
	.long	171798692
	.long	1080038359
	.long	515396076
	.long	1078094725
	.long	-858993459
	.long	1079049420
	.long	-1717986918
	.long	1078778265
	.long	1717986918
	.long	1079617126
	.long	687194767
	.long	1077923676
	.long	-1546188227
	.long	1079098736
	.long	1717986918
	.long	1078445670
	.long	1202590843
	.long	1079315169
	.long	-1546188227
	.long	1075133808
	.long	-343597384
	.long	1078622289
	.long	-1374389535
	.long	1077420359
	.long	2061584302
	.long	1079086612
	.long	1202590843
	.long	1079487201
	.long	-687194767
	.long	1080058019
	.long	1374389535
	.long	1079230136
	.long	-1030792151
	.long	1079806197
	.long	1889785610
	.long	1079392829
	.long	1202590843
	.long	1080179425
	.long	-1374389535
	.long	1078010183
	.long	2061584302
	.long	1078726164
	.long	-1889785610
	.long	1079379394
	.long	858993459
	.long	1080036147
	.long	0
	.long	1077641216
	.long	-515396076
	.long	1079207034
	.long	171798692
	.long	1078518743
	.long	1889785610
	.long	1079564861
	.long	-1889785610
	.long	1078949314
	.long	1889785610
	.long	1079491133
	.long	-1546188227
	.long	1079037296
	.long	1030792151
	.long	1079559946
	.long	1030792151
	.long	1077352202
	.long	-2061584302
	.long	1078219243
	.long	343597384
	.long	1078658990
	.long	1374389535
	.long	1079451320
	.long	858993459
	.long	1074213683
	.long	687194767
	.long	1078480732
	.long	-1030792151
	.long	1077750005
	.long	-2061584302
	.long	1079026155
	.long	1717986918
	.long	1075930726
	.long	-1546188227
	.long	1078607216
	.long	858993459
	.long	1079419699
	.long	-1717986918
	.long	1079810457
	.long	-1717986918
	.long	1078327705
	.long	1030792151
	.long	1079219978
	.long	1546188227
	.long	1075036815
	.long	1374389535
	.long	1078066872
	.long	-343597384
	.long	1078687825
	.long	-1030792151
	.long	1079388405
	.long	-515396076
	.long	1078678650
	.long	1374389535
	.long	1079283384
	.long	1717986918
	.long	1078101606
	.long	1374389535
	.long	1079213752
	.long	-171798692
	.long	1078393896
	.long	-1374389535
	.long	1079357767
	.long	-858993459
	.long	1079487692
	.long	-1546188227
	.long	1080157552
	.long	515396076
	.long	1078430597
	.long	1030792151
	.long	1079449354
	.long	-515396076
	.long	1078793338
	.long	-515396076
	.long	1079399546
	.long	-1374389535
	.long	1071833415
	.long	1030792151
	.long	1077384970
	.long	-515396076
	.long	1078621306
	.long	515396076
	.long	1079397253
	.long	-858993459
	.long	1079364812
	.long	-687194767
	.long	1080072355
	.long	1374389535
	.long	1077157560
	.long	1030792151
	.long	1079142154
	.long	-1030792151
	.long	1078741237
	.long	-687194767
	.long	1079722147
	.long	-171798692
	.long	1076616232
	.long	-1717986918
	.long	1078466969
	.long	343597384
	.long	1077610414
	.long	-1889785610
	.long	1079006658
	.long	-1717986918
	.long	1077582233
	.long	1546188227
	.long	1079263887
	.long	-858993459
	.long	1076743372
	.long	-2061584302
	.long	1079132651
	.long	-343597384
	.long	1077950545
	.long	-858993459
	.long	1079094476
	.long	-171798692
	.long	1078115368
	.long	1546188227
	.long	1079321231
	.long	-1202590843
	.long	1078306078
	.long	1374389535
	.long	1079008952
	.long	1202590843
	.long	1078672097
	.long	-2061584302
	.long	1079415275
	.long	-687194767
	.long	1079308451
	.long	515396076
	.long	1080109957
	.long	-858993459
	.long	1076972748
	.long	-2061584302
	.long	1078833643
	.long	1546188227
	.long	1078608527
	.long	-2061584302
	.long	1079460331
	.long	-1374389535
	.long	1077010759
	.long	-687194767
	.long	1078923427
	.long	2061584302
	.long	1076981268
	.long	1717986918
	.long	1078847078
	.long	-1202590843
	.long	1074758942
	.long	343597384
	.long	1078282158
	.long	-515396076
	.long	1078891642
	.long	-1546188227
	.long	1079598448
	.long	1889785610
	.long	1078028861
	.long	687194767
	.long	1079037788
	.long	0
	.long	1078099968
	.long	2061584302
	.long	1079275028
	.long	-1717986918
	.long	1075550617
	.long	1889785610
	.long	1078372925
	.long	858993459
	.long	1077424947
	.long	343597384
	.long	1079166894
	.long	0
	.long	1077706752
	.long	2061584302
	.long	1078980116
	.long	-2061584302
	.long	1078985195
	.long	0
	.long	1079664640
	.long	-1546188227
	.long	1079450992
	.long	-2061584302
	.long	1080121835
	.long	-1889785610
	.long	1074984386
	.long	1202590843
	.long	1078500065
	.long	-1889785610
	.long	1078834626
	.long	-2061584302
	.long	1079337451
	.long	-1374389535
	.long	1077354823
	.long	-515396076
	.long	1078994042
	.long	687194767
	.long	1078234972
	.long	1202590843
	.long	1079069409
	.long	1717986918
	.long	1079129702
	.long	-515396076
	.long	1080030330
	.long	0
	.long	1077968896
	.long	-1202590843
	.long	1079112990
	.long	-2061584302
	.long	1076892139
	.long	-343597384
	.long	1077917777
	.long	-687194767
	.long	1076932771
	.long	-1030792151
	.long	1078999285
	.long	0
	.long	1079566336
	.long	-1889785610
	.long	1080094146
	.long	171798692
	.long	1076372439
	.long	-1202590843
	.long	1078912286
	.long	1546188227
	.long	1077166735
	.long	343597384
	.long	1078863790
	.long	-687194767
	.long	1079169187
	.long	-1374389535
	.long	1079746887
	.long	-687194767
	.long	1075900579
	.long	-515396076
	.long	1078850682
	.long	687194767
	.long	1076973404
	.long	171798692
	.long	1078617047
	.long	-1889785610
	.long	1079342530
	.long	858993459
	.long	1079931699
	.long	171798692
	.long	1078969303
	.long	-1717986918
	.long	1079990681
	.long	515396076
	.long	1079303045
	.long	-1546188227
	.long	1080098160
	.long	1374389535
	.long	1078337208
	.long	-687194767
	.long	1079279779
	.long	1546188227
	.long	1079235215
	.long	687194767
	.long	1079922524
	.long	343597384
	.long	1078118318
	.long	-1202590843
	.long	1079026974
	.long	2061584302
	.long	1079287316
	.long	-1546188227
	.long	1079766384
	.long	-515396076
	.long	1079477370
	.long	-1030792151
	.long	1080174837
	.long	858993459
	.long	1077326643
	.long	1374389535
	.long	1078845112
	.long	687194767
	.long	1077235548
	.long	-2061584302
	.long	1078645227
	.long	1374389535
	.long	1078173368
	.long	1546188227
	.long	1079366287
	.long	1030792151
	.long	1076893450
	.long	-1374389535
	.long	1078985031
	.long	-1717986918
	.long	1078139289
	.long	1546188227
	.long	1079116431
	.long	-1546188227
	.long	1079070064
	.long	858993459
	.long	1079833395
	.long	343597384
	.long	1079216046
	.long	171798692
	.long	1080095703
	.long	2061584302
	.long	1078218260
	.long	1546188227
	.long	1079313039
	.long	-1889785610
	.long	1079481794
	.long	0
	.long	1080035328
	.long	-1889785610
	.long	1079408066
	.long	-1889785610
	.long	1080133058
	.long	-687194767
	.long	1075081379
	.long	171798692
	.long	1078485975
	.long	171798692
	.long	1076929495
	.long	-343597384
	.long	1078638673
	.long	-171798692
	.long	1079135272
	.long	-171798692
	.long	1079835688
	.long	-1889785610
	.long	1079510466
	.long	171798692
	.long	1080263639
	.long	1030792151
	.long	1079240458
	.long	1374389535
	.long	1080049336
	.long	-2061584302
	.long	1079505387
	.long	1202590843
	.long	1080011489
	.long	-515396076
	.long	1076728954
	.long	1202590843
	.long	1078508257
	.long	-343597384
	.long	1079494737
	.long	-1717986918
	.long	1080240537
	.long	687194767
	.long	1072336732
	.long	-1374389535
	.long	1078001991
	.long	-515396076
	.long	1078506618
	.long	-1717986918
	.long	1079347609
	.long	1030792151
	.long	1078982410
	.long	858993459
	.long	1079808819
	.long	1202590843
	.long	1079200481
	.long	-1374389535
	.long	1079988551
	.long	-1546188227
	.long	1079012720
	.long	-1889785610
	.long	1079809474
	.long	-1202590843
	.long	1077945630
	.long	171798692
	.long	1079010263
	.long	-858993459
	.long	1078242508
	.long	-858993459
	.long	1079262412
	.long	1030792151
	.long	1077548810
	.long	1889785610
	.long	1078970941
	.long	171798692
	.long	1079149527
	.long	2061584302
	.long	1079832084
	.long	1030792151
	.long	1079453450
	.long	-343597384
	.long	1080229969
	.long	-1202590843
	.long	1077085470
	.long	-1374389535
	.long	1078632775
	.long	343597384
	.long	1079060398
	.long	-1546188227
	.long	1079782768
	.long	687194767
	.long	1076891484
	.long	-343597384
	.long	1079019601
	.long	2061584302
	.long	1078971924
	.long	2061584302
	.long	1079770644
	.long	2061584302
	.long	1075818004
	.long	1889785610
	.long	1077643837
	.long	1546188227
	.long	1078067855
	.long	1546188227
	.long	1079464591
	.long	687194767
	.long	1078603612
	.long	-1717986918
	.long	1079515545
	.long	-1202590843
	.long	1079432478
	.long	-1717986918
	.long	1080185241
	.long	1717986918
	.long	1079567974
	.long	-1374389535
	.long	1080150343
	.long	0
	.long	1076297728
	.long	-1374389535
	.long	1078313287
	.long	858993459
	.long	1077867315
	.long	-171798692
	.long	1079176232
	.long	858993459
	.long	1078326067
	.long	-1202590843
	.long	1079510302
	.long	-171798692
	.long	1079561256
	.long	-515396076
	.long	1080163450
	.long	-858993459
	.long	1077464268
	.long	-515396076
	.long	1079129210
	.long	343597384
	.long	1078405038
	.long	2061584302
	.long	1079332372
	.long	1374389535
	.long	1076436664
	.long	858993459
	.long	1078326067
	.long	-687194767
	.long	1076228259
	.long	2061584302
	.long	1078349332
	.long	-343597384
	.long	1077213265
	.long	343597384
	.long	1078929326
	.long	0
	.long	1074266112
	.long	858993459
	.long	1077424947
	.long	1889785610
	.long	1078118973
	.long	-687194767
	.long	1079173283
	.long	2061584302
	.long	1076112916
	.long	687194767
	.long	1078251356
	.long	343597384
	.long	1076021166
	.long	1030792151
	.long	1078515466
	.long	-1717986918
	.long	1077516697
	.long	1546188227
	.long	1078223503
	.long	-687194767
	.long	1079218339
	.long	687194767
	.long	1079717724
	.long	-858993459
	.long	1079397580
	.long	515396076
	.long	1080138629
	.long	-171798692
	.long	1077582888
	.long	-1374389535
	.long	1078903111
	.long	-171798692
	.long	1078541352
	.long	0
	.long	1079255040
	.long	-1030792151
	.long	1078479093
	.long	1889785610
	.long	1079458365
	.long	1889785610
	.long	1078184509
	.long	-515396076
	.long	1079252090
	.long	-1202590843
	.long	1078002974
	.long	-2061584302
	.long	1078981099
	.long	-1889785610
	.long	1078703554
	.long	-343597384
	.long	1079752785
	.long	-515396076
	.long	1076958330
	.long	1202590843
	.long	1078754017
	.long	687194767
	.long	1079082844
	.long	-1030792151
	.long	1079838965
	.long	515396076
	.long	1077988229
	.long	2061584302
	.long	1079152148
	.long	-171798692
	.long	1076812840
	.long	1889785610
	.long	1078102589
	.long	171798692
	.long	1078404055
	.long	687194767
	.long	1079291740
	.long	-343597384
	.long	1079306321
	.long	-687194767
	.long	1080096931
	.long	2061584302
	.long	1077980692
	.long	-1374389535
	.long	1079202119
	.long	1030792151
	.long	1078138634
	.long	-1202590843
	.long	1078912286
	.long	1546188227
	.long	1077953167
	.long	-2061584302
	.long	1079419371
	.long	2061584302
	.long	1079250452
	.long	858993459
	.long	1079980851
	.long	-1202590843
	.long	1079465246
	.long	343597384
	.long	1079867310
	.long	515396076
	.long	1078217605
	.long	1717986918
	.long	1079498342
	.long	858993459
	.long	1070805811
	.long	1546188227
	.long	1078264463
	.long	1202590843
	.long	1077967585
	.long	515396076
	.long	1078635397
	.long	687194767
	.long	1078497116
	.long	-858993459
	.long	1079139532
	.long	1717986918
	.long	1072588390
	.long	515396076
	.long	1078373253
	.long	-2061584302
	.long	1078628843
	.long	-171798692
	.long	1079540776
	.long	-343597384
	.long	1072085073
	.long	-1202590843
	.long	1078134046
	.long	-1030792151
	.long	1077815541
	.long	-1717986918
	.long	1079105945
	.long	1374389535
	.long	1079205560
	.long	-1374389535
	.long	1079918919
	.long	-1374389535
	.long	1078550855
	.long	1202590843
	.long	1079249633
	.long	-1202590843
	.long	1077363998
	.long	1546188227
	.long	1079046799
	.long	-1202590843
	.long	1077265694
	.long	-1546188227
	.long	1078263152
	.long	-1030792151
	.long	1078356213
	.long	-343597384
	.long	1079130193
	.long	1374389535
	.long	1078492856
	.long	-1202590843
	.long	1079760158
	.long	-687194767
	.long	1074950307
	.long	-2061584302
	.long	1078637035
	.long	-1717986918
	.long	1079335321
	.long	-1374389535
	.long	1080004935
	.long	1202590843
	.long	1079048929
	.long	-1546188227
	.long	1079954800
	.long	-515396076
	.long	1078269050
	.long	-1202590843
	.long	1079354654
	.long	-1374389535
	.long	1077453127
	.long	1717986918
	.long	1078789734
	.long	1717986918
	.long	1078691430
	.long	858993459
	.long	1079403315
	.long	-1889785610
	.long	1079268802
	.long	515396076
	.long	1079991173
	.long	343597384
	.long	1073563566
	.long	687194767
	.long	1078718300
	.long	-1717986918
	.long	1078426009
	.long	-1202590843
	.long	1079596318
	.long	687194767
	.long	1079119708
	.long	1717986918
	.long	1080141414
	.long	343597384
	.long	1079453614
	.long	171798692
	.long	1080026071
	.long	171798692
	.long	1078420439
	.long	-1717986918
	.long	1079359897
	.long	-1889785610
	.long	1077638594
	.long	858993459
	.long	1078866739
	.long	343597384
	.long	1077725102
	.long	-2061584302
	.long	1078989291
	.long	1374389535
	.long	1077403320
	.long	1546188227
	.long	1078338191
	.long	-687194767
	.long	1079509155
	.long	-1717986918
	.long	1080269209
	.long	515396076
	.long	1079442309
	.long	-2061584302
	.long	1080152555
	.long	687194767
	.long	1078992732
	.long	-1030792151
	.long	1079556341
	.long	858993459
	.long	1079501619
	.long	515396076
	.long	1079954309
	.long	-1030792151
	.long	1079429365
	.long	-343597384
	.long	1080213585
	.long	687194767
	.long	1076940636
	.long	1546188227
	.long	1078575759
	.long	-1202590843
	.long	1077576990
	.long	343597384
	.long	1078998958
	.long	-1030792151
	.long	1077324021
	.long	-1889785610
	.long	1078998466
	.long	687194767
	.long	1079504732
	.long	1374389535
	.long	1080123064
	.long	-2061584302
	.long	1079300587
	.long	-171798692
	.long	1079675944
	.long	-1546188227
	.long	1078631792
	.long	-171798692
	.long	1079819304
	.long	515396076
	.long	1078946693
	.long	343597384
	.long	1079986094
	.long	1889785610
	.long	1077971517
	.long	-515396076
	.long	1079198842
	.long	687194767
	.long	1075285852
	.long	-2061584302
	.long	1078276587
	.long	-2061584302
	.long	1079280107
	.long	343597384
	.long	1079850926
	.long	1030792151
	.long	1078572810
	.long	-1202590843
	.long	1079493918
	.long	-171798692
	.long	1078033448
	.long	515396076
	.long	1079106437
	.long	1202590843
	.long	1076394721
	.long	-1717986918
	.long	1078303129
	.long	0
	.long	1078181888
	.long	515396076
	.long	1079249797
	.long	1717986918
	.long	1077208678
	.long	515396076
	.long	1078610821
	.long	858993459
	.long	1079489331
	.long	-1889785610
	.long	1080151490
	.long	-1202590843
	.long	1077724446
	.long	1717986918
	.long	1079182950
	.long	1717986918
	.long	1077225062
	.long	858993459
	.long	1079006003
	.long	-1202590843
	.long	1077945630
	.long	515396076
	.long	1079081861
	.long	-1717986918
	.long	1078049177
	.long	343597384
	.long	1079277486
	.long	1546188227
	.long	1078346383
	.long	515396076
	.long	1079147397
	.long	1202590843
	.long	1078106849
	.long	515396076
	.long	1079393157
	.long	-2061584302
	.long	1079194091
	.long	1030792151
	.long	1079965450
	.long	-858993459
	.long	1077923020
	.long	1202590843
	.long	1079261921
	.long	858993459
	.long	1079534387
	.long	1030792151
	.long	1080264458
	.long	515396076
	.long	1079327621
	.long	2061584302
	.long	1080047124
	.long	171798692
	.long	1075487703
	.long	-2061584302
	.long	1077940715
	.long	-1374389535
	.long	1077698887
	.long	1030792151
	.long	1079088906
	.long	1374389535
	.long	1078943416
	.long	-343597384
	.long	1079199825
	.long	-1717986918
	.long	1079220633
	.long	343597384
	.long	1079547822
	.long	687194767
	.long	1079476060
	.long	171798692
	.long	1080200151
	.long	-2061584302
	.long	1077105131
	.long	-515396076
	.long	1078994042
	.long	858993459
	.long	1078915891
	.long	2061584302
	.long	1079950868
	.long	-343597384
	.long	1078769745
	.long	1030792151
	.long	1079310090
	.long	687194767
	.long	1077808988
	.long	-1030792151
	.long	1079232757
	.long	515396076
	.long	1078283141
	.long	-1717986918
	.long	1079339417
	.long	-1889785610
	.long	1079092674
	.long	-1889785610
	.long	1079694786
	.long	2061584302
	.long	1079533076
	.long	515396076
	.long	1080155013
	.long	687194767
	.long	1079234396
	.long	515396076
	.long	1080107909
	.long	515396076
	.long	1077308293
	.long	-2061584302
	.long	1078776299
	.long	-1202590843
	.long	1078519070
	.long	1889785610
	.long	1079511613
	.long	-515396076
	.long	1074140282
	.long	-2061584302
	.long	1078858219
	.long	-1202590843
	.long	1078740254
	.long	-343597384
	.long	1079412817
	.long	-515396076
	.long	1078047866
	.long	0
	.long	1079226368
	.long	-2061584302
	.long	1077727723
	.long	-515396076
	.long	1079067770
	.long	-1889785610
	.long	1079375298
	.long	343597384
	.long	1080139694
	.long	2061584302
	.long	1079295508
	.long	1546188227
	.long	1079927439
	.long	1030792151
	.long	1078564618
	.long	-1374389535
	.long	1079320903
	.long	1374389535
	.long	1078705848
	.long	2061584302
	.long	1079803412
	.long	-1717986918
	.long	1079495065
	.long	-343597384
	.long	1080102993
	.long	858993459
	.long	1076179763
	.long	343597384
	.long	1078601646
	.long	-2061584302
	.long	1079296491
	.long	687194767
	.long	1080155996
	.long	858993459
	.long	1076310835
	.long	1889785610
	.long	1078340157
	.long	-858993459
	.long	1076350156
	.long	1374389535
	.long	1078140600
	.long	1374389535
	.long	1079062200
	.long	1546188227
	.long	1079648911
	.long	858993459
	.long	1078645555
	.long	1889785610
	.long	1079511613
	.long	858993459
	.long	1078244147
	.long	-343597384
	.long	1079171153
	.long	1889785610
	.long	1078323773
	.long	515396076
	.long	1079446405
	.long	1546188227
	.long	1079485071
	.long	-1202590843
	.long	1080155422
	.long	-343597384
	.long	1077196881
	.long	-515396076
	.long	1079084154
	.long	343597384
	.long	1079187374
	.long	-171798692
	.long	1079876648
	.long	171798692
	.long	1077797847
	.long	858993459
	.long	1078956851
	.long	687194767
	.long	1079263068
	.long	1374389535
	.long	1079811768
	.long	-1202590843
	.long	1078371614
	.long	858993459
	.long	1079546675
	.long	1374389535
	.long	1079398072
	.long	1202590843
	.long	1080115937
	.long	-858993459
	.long	1075989708
	.long	515396076
	.long	1078373253
	.long	-1202590843
	.long	1077380382
	.long	-687194767
	.long	1078898851
	.long	1374389535
	.long	1074339512
	.long	-1717986918
	.long	1078450585
	.long	-515396076
	.long	1079108730
	.long	-1202590843
	.long	1079829790
	.long	-1546188227
	.long	1078631792
	.long	687194767
	.long	1079443292
	.long	-687194767
	.long	1078505635
	.long	-1717986918
	.long	1079429529
	.long	1546188227
	.long	1078387343
	.long	515396076
	.long	1079118725
	.long	343597384
	.long	1078708142
	.long	1374389535
	.long	1079594680
	.long	1889785610
	.long	1074072125
	.long	-1030792151
	.long	1078110453
	.long	-858993459
	.long	1079307468
	.long	-858993459
	.long	1079565516
	.long	-1546188227
	.long	1079086448
	.long	-343597384
	.long	1079707729
	.long	-858993459
	.long	1078545612
	.long	-2061584302
	.long	1079489003
	.long	343597384
	.long	1078626222
	.long	687194767
	.long	1079258972
	.long	1889785610
	.long	1074989629
	.long	-1202590843
	.long	1078306078
	.long	-2061584302
	.long	1079099883
	.long	-1546188227
	.long	1079803248
	.long	-515396076
	.long	1079153786
	.long	343597384
	.long	1079965614
	.long	2061584302
	.long	1078726164
	.long	171798692
	.long	1079522263
	.long	-858993459
	.long	1077660876
	.long	-1030792151
	.long	1078446325
	.long	1889785610
	.long	1076988477
	.long	1546188227
	.long	1078788751
	.long	1202590843
	.long	1078622945
	.long	-515396076
	.long	1079415930
	.long	-1030792151
	.long	1077618933
	.long	1889785610
	.long	1079110205
	.long	-343597384
	.long	1078048849
	.long	0
	.long	1078812672
	.long	-1030792151
	.long	1078397173
	.long	-343597384
	.long	1079515217
	.long	-1374389535
	.long	1079353671
	.long	-2061584302
	.long	1080148459
	.long	171798692
	.long	1078240215
	.long	-2061584302
	.long	1079509483
	.long	-1202590843
	.long	1078535454
	.long	-1889785610
	.long	1079244226
	.local	_ZL8d_n_data
	.comm	_ZL8d_n_data,4,4
	.globl	n_data
	.align 4
	.type	n_data, @object
	.size	n_data, 4
n_data:
	.long	1000
	.section	.rodata.cst8,"aM",@progbits,8
	.align 8
.LC3:
	.long	-8388608
	.long	1104006500
	.align 8
.LC4:
	.long	0
	.long	1076101120
	.align 8
.LC5:
	.long	-858993459
	.long	1073007820
	.align 8
.LC10:
	.long	1202590843
	.long	1065646817
	.align 8
.LC20:
	.long	0
	.long	1104006501
	.ident	"GCC: (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0"
	.section	.note.GNU-stack,"",@progbits
	.section	.note.gnu.property,"a"
	.align 8
	.long	1f - 0f
	.long	4f - 1f
	.long	5
0:
	.string	"GNU"
1:
	.align 8
	.long	0xc0000002
	.long	3f - 2f
2:
	.long	0x3
3:
	.align 8
4:


#include <hip/hip_runtime.h>
#include <stdio.h>
#include <math.h>
#include <time.h>
#include <unistd.h>
#include <hip/hip_runtime_api.h>
#include <errno.h>
#include <unistd.h>

/******************************************************************************
 * This program takes an initial estimate of m and c and finds the associated 
 * rms error. It is then as a base to generate and evaluate 8 new estimates, 
 * which are steps in different directions in m-c space. The best estimate is 
 * then used as the base for another iteration of "generate and evaluate". This 
 * continues until none of the new estimates are better than the base. This is
 * a gradient search for a minimum in mc-space.
 * 
 * To compile:
 *   nvcc -o lr_cuda lr_using_cuda.cu -lm
 * 
 * To run:
 *   ./lr_cuda
 * 
 * Dr Kevan Buckley, University of Wolverhampton, 2018
 *****************************************************************************/

typedef struct point_t {
  double x;
  double y;
} point_t;

int n_data = 1000;
__device__ int d_n_data = 1000;


point_t data[] = {
  {65.88,113.30},{83.12,103.39},{72.71,137.05},{76.01,123.42},
  {69.59,113.62},{73.69,115.07},{71.46,100.24},{72.99,118.73},
  {68.50,97.85},{65.43,103.31},{89.29,132.95},{58.14,82.01},
  {47.55,75.40},{76.85,111.09},{68.01,115.15},{21.80,54.57},
  {90.04,120.21},{56.85,102.91},{ 2.23,36.71},{86.78,117.46},
  { 6.52,45.58},{97.32,147.83},{22.91,54.17},{78.59,106.78},
  {44.09,70.96},{74.64,97.68},{90.51,134.98},{96.15,143.26},
  {58.52,88.70},{59.42,100.87},{67.26,109.17},{56.62,92.03},
  {71.65,111.50},{ 4.53,33.54},{82.85,122.36},{95.66,154.67},
  {80.62,99.61},{45.30,82.60},{37.05,80.76},{61.48,98.73},
  {51.39,98.80},{22.46,63.68},{88.78,118.53},{94.16,143.18},
  {39.47,71.48},{ 7.44,48.39},{51.86,107.12},{86.53,137.70},
  {83.53,123.57},{ 7.68,51.69},{18.96,58.69},{22.17,78.66},
  {43.95,71.78},{92.29,134.90},{76.97,101.28},{23.24,48.03},
  {26.73,65.78},{88.25,143.89},{95.12,124.96},{10.68,66.86},
  {63.78,118.73},{26.86,68.94},{ 7.80,51.17},{24.65,53.88},
  {44.04,74.79},{87.29,138.86},{97.45,131.92},{96.31,142.49},
  {45.80,92.89},{80.82,129.94},{46.10,89.74},{55.26,77.39},
  { 8.98,50.00},{10.64,31.57},{96.46,145.36},{ 8.66,39.04},
  {78.10,104.44},{94.77,132.53},{46.87,76.20},{48.06,92.50},
  {35.66,79.34},{92.19,151.58},{93.28,115.15},{29.17,60.24},
  {28.21,51.45},{ 4.66,53.39},{94.42,144.06},{24.46,66.42},
  {29.29,67.92},{62.02,109.54},{15.10,54.38},{ 6.58,49.82},
  {91.84,132.96},{66.22,106.23},{70.29,106.42},{27.48,46.92},
  {27.82,81.57},{25.13,68.33},{82.75,131.87},{ 7.70,40.57},
  {39.03,86.29},{41.46,66.97},{23.14,47.32},{92.17,124.61},
  {72.12,95.08},{89.59,156.46},{46.16,92.25},{56.07,79.77},
  {40.80,77.32},{55.14,101.80},{24.38,49.10},{ 0.35,44.21},
  { 0.65,43.39},{10.62,32.78},{91.81,133.03},{43.30,94.01},
  {70.92,123.26},{59.95,101.77},{21.22,58.22},{38.33,83.55},
  {21.67,45.06},{37.35,75.73},{ 6.37,27.18},{71.27,99.70},
  {12.84,59.50},{21.73,35.26},{81.59,131.55},{65.61,116.88},
  {38.45,86.17},{60.22,80.16},{83.88,138.85},{47.36,86.33},
  {45.86,98.38},{38.58,85.53},{ 6.58,43.64},{83.12,116.68},
  {92.34,138.43},{54.72,95.16},{64.28,104.63},{89.38,123.26},
  {22.32,67.33},{67.40,127.41},{ 9.16,51.65},{98.38,159.79},
  { 1.94,25.53},{26.57,67.59},{49.74,74.64},{63.89,112.49},
  {52.60,94.54},{68.96,100.58},{58.23,87.93},{44.04,85.71},
  {55.80,97.29},{76.34,129.81},{79.24,117.89},{89.24,135.74},
  {13.89,56.62},{73.97,118.74},{89.12,132.43},{52.34,74.34},
  {68.44,111.05},{46.82,77.13},{ 8.89,43.18},{76.00,119.12},
  { 2.67,53.27},{35.24,68.26},{73.39,101.02},{47.39,111.56},
  {41.92,88.68},{86.09,137.72},{ 4.14,36.00},{47.05,98.77},
  {50.36,105.89},{45.58,88.08},{23.64,63.95},{69.92,116.00},
  { 2.48,40.04},{63.34,106.88},{92.85,132.58},{92.18,152.63},
  {83.08,133.17},{47.30,103.51},{90.41,151.65},{97.22,139.84},
  {51.69,87.49},{55.13,94.31},{ 9.57,52.60},{88.13,132.15},
  {13.23,44.85},{68.99,118.60},{41.34,82.89},{27.86,45.75},
  {34.24,77.50},{39.99,79.27},{ 0.49,27.94},{16.66,58.10},
  {17.19,55.02},{34.25,87.25},{64.68,122.63},{ 2.37,59.33},
  {69.19,114.36},{48.62,89.76},{27.48,70.95},{39.50,71.48},
  {47.81,84.62},{54.62,79.44},{20.44,69.75},{82.66,132.62},
  {20.04,39.58},{77.88,143.64},{ 0.83,44.32},{ 9.26,40.60},
  {75.19,112.34},{47.16,91.39},{32.22,71.93},{39.26,84.86},
  {38.08,77.57},{33.96,74.75},{65.74,109.52},{86.60,147.38},
  {36.69,41.26},{90.19,143.40},{49.49,97.12},{90.50,129.39},
  {84.46,112.31},{ 5.45,30.46},{ 8.83,59.19},{79.73,115.09},
  { 7.20,52.38},{71.48,103.85},{69.36,108.95},{95.68,132.86},
  {23.23,52.28},{15.68,47.24},{89.30,140.14},{99.35,139.28},
  { 5.64,39.27},{ 8.73,59.57},{34.00,65.12},{27.72,65.48},
  { 5.77,58.65},{48.18,74.31},{31.91,80.90},{20.33,60.89},
  {30.03,76.46},{ 1.33,44.90},{77.58,113.17},{47.20,86.67},
  {89.24,144.40},{35.93,94.27},{80.03,122.53},{ 7.97,39.78},
  {80.68,115.83},{17.09,49.95},{43.20,86.46},{17.63,41.65},
  {46.18,80.06},{87.28,124.84},{ 4.68,38.59},{85.96,144.87},
  { 6.02,40.63},{60.87,99.01},{41.39,80.15},{47.64,81.92},
  {39.55,82.81},{44.74,102.39},{35.01,78.30},{39.86,80.79},
  {88.99,145.80},{ 4.38,25.05},{18.19,59.19},{54.54,108.44},
  {40.69,66.59},{23.32,65.20},{14.10,66.21},{43.01,78.10},
  {44.54,82.38},{29.26,80.12},{19.97,71.02},{83.06,142.60},
  {90.81,137.92},{81.13,125.99},{99.05,141.48},{39.56,76.74},
  {43.41,70.28},{50.47,113.51},{27.37,57.88},{73.29,115.66},
  {40.09,93.12},{ 2.13,47.21},{71.69,120.48},{85.79,126.52},
  {23.79,61.55},{29.11,77.36},{28.34,80.72},{48.20,77.53},
  {86.47,145.61},{75.83,117.10},{53.52,70.46},{41.50,82.67},
  {90.18,120.58},{20.33,38.57},{86.82,124.14},{45.16,97.81},
  {62.89,100.25},{39.25,96.92},{21.26,41.73},{90.66,133.40},
  {56.71,80.80},{ 0.89,53.02},{39.87,84.31},{12.70,46.26},
  {51.07,85.46},{56.90,100.25},{75.08,116.45},{46.04,89.41},
  {37.26,82.64},{85.66,125.35},{89.73,117.37},{16.56,59.19},
  {69.40,116.66},{75.45,120.94},{52.41,86.61},{ 9.04,36.24},
  {51.05,93.02},{98.12,129.98},{87.36,115.66},{41.79,92.82},
  {56.75,96.00},{32.53,90.54},{78.46,87.02},{94.54,141.49},
  {71.43,115.37},{49.35,79.99},{72.49,111.38},{47.44,91.31},
  {98.92,130.78},{ 4.11,52.62},{20.49,41.42},{98.36,144.83},
  {57.24,97.19},{21.24,41.10},{52.68,82.09},{57.12,101.15},
  {66.59,116.15},{74.77,115.54},{16.90,63.62},{33.25,60.55},
  { 3.03,46.53},{31.91,59.03},{43.94,74.03},{65.36,106.83},
  {72.96,125.25},{24.40,67.65},{21.88,55.03},{33.00,78.90},
  {85.68,139.86},{64.57,108.24},{23.63,55.36},{53.13,87.56},
  {15.06,64.72},{16.69,46.41},{59.26,70.83},{77.58,125.60},
  {47.15,83.66},{69.61,114.55},{94.79,140.54},{66.97,110.07},
  {30.76,79.47},{95.66,134.14},{85.28,116.10},{43.58,90.24},
  {42.87,91.53},{31.32,64.87},{56.25,98.21},{77.74,108.33},
  {89.36,125.36},{63.79,113.40},{ 0.92,23.80},{38.70,95.06},
  {47.58,91.15},{ 7.80,57.16},{90.01,132.96},{33.45,85.66},
  {27.05,98.60},{ 3.61,46.81},{49.77,89.60},{98.12,140.24},
  {76.21,111.96},{43.86,94.50},{10.98,36.16},{80.88,126.36},
  {70.06,96.98},{63.78,94.95},{ 0.27,36.46},{18.95,59.91},
  { 4.16,17.58},{24.65,56.14},{47.78,86.28},{79.27,125.59},
  {35.84,79.42},{30.16,75.48},{28.81,67.20},{45.41,89.03},
  { 6.63,31.15},{35.26,83.24},{10.59,53.38},{ 4.45,28.15},
  {41.94,74.57},{93.99,143.05},{21.04,63.81},{97.37,130.95},
  {16.31,50.73},{ 6.57,50.81},{58.04,107.31},{18.56,51.60},
  {45.54,87.77},{91.85,139.26},{34.52,64.64},{43.57,87.14},
  {13.66,46.27},{18.38,61.15},{65.97,94.82},{67.97,110.36},
  {20.27,41.48},{60.78,100.02},{95.11,131.52},{49.73,96.99},
  {30.62,72.96},{79.37,129.99},{ 9.72,34.06},{59.97,109.31},
  {32.11,69.62},{21.05,48.34},{52.96,93.37},{96.24,154.60},
  {91.99,131.55},{38.07,79.53},{38.35,86.26},{10.84,44.13},
  {78.13,146.32},{66.91,92.97},{13.46,45.13},{35.83,59.66},
  {15.92,48.00},{64.74,100.09},{29.93,80.30},{ 0.73,33.67},
  {26.08,53.92},{53.91,83.55},{81.32,109.63},{77.53,120.05},
  {56.14,85.60},{94.53,131.65},{40.56,84.98},{87.27,119.74},
  {58.04,111.89},{11.10,54.55},{14.96,43.69},{11.60,48.43},
  {65.36,117.61},{53.51,90.37},{83.10,121.25},{31.55,71.73},
  {69.38,131.56},{97.32,154.04},{23.97,65.78},{82.60,128.59},
  {40.95,82.33},{ 5.58,15.54},{53.34,108.22},{77.09,121.19},
  {40.06,75.69},{19.13,72.82},{38.98,84.95},{28.23,85.29},
  {26.07,32.58},{88.36,148.79},{50.88,98.72},{34.52,76.22},
  {76.42,108.17},{87.58,130.31},{14.08,43.66},{47.74,116.55},
  {67.67,115.69},{83.82,141.51},{51.11,87.10},{44.35,100.96},
  {93.91,137.76},{38.42,86.31},{ 5.04,63.73},{95.78,140.44},
  {98.46,155.00},{ 1.35,29.65},{99.52,145.52},{24.25,64.20},
  {10.89,52.52},{57.63,111.51},{77.99,111.11},{39.17,66.11},
  {35.43,83.14},{35.49,63.24},{77.61,110.45},{ 1.56,43.12},
  {95.03,130.00},{25.83,65.15},{93.17,134.96},{31.63,65.53},
  {98.32,140.97},{93.99,117.11},{99.55,144.87},{10.13,44.30},
  {23.63,46.56},{73.37,103.82},{28.27,74.75},{85.91,130.01},
  {49.83,93.67},{47.37,100.76},{89.02,129.04},{78.39,109.19},
  {79.45,113.67},{81.72,126.83},{16.58,47.85},{82.39,135.30},
  {73.09,112.62},{42.59,85.37},{42.78,81.85},{49.15,98.47},
  {61.26,106.57},{60.27,104.21},{ 1.70,41.02},{22.35,68.14},
  {83.64,116.22},{69.18,93.63},{ 9.58,60.45},{11.88,51.95},
  {93.56,149.33},{82.81,124.53},{77.15,124.13},{80.92,128.29},
  {46.57,95.19},{89.99,134.64},{42.34,88.89},{20.45,49.36},
  { 5.75,46.59},{68.40,86.84},{72.60,116.24},{95.71,141.78},
  {93.52,125.24},{66.04,110.42},{92.66,146.50},{92.29,155.47},
  {16.82,49.10},{81.34,108.77},{38.56,83.70},{76.37,123.71},
  {77.29,122.62},{13.32,61.55},{73.71,111.92},{53.39,108.67},
  {60.61,119.96},{ 6.45,40.27},{34.58,92.89},{90.41,127.39},
  {85.73,113.52},{51.91,107.01},{72.84,117.27},{78.13,113.05},
  {80.64,115.40},{62.00,97.95},{38.77,79.80},{54.07,87.46},
  {98.83,174.89},{48.94,88.56},{15.59,46.94},{19.70,56.40},
  {93.31,122.33},{ 9.20,58.41},{26.28,53.31},{73.56,110.89},
  {57.96,101.80},{46.96,72.65},{87.03,133.76},{43.17,67.72},
  {78.09,105.71},{71.29,118.62},{ 3.24,49.85},{ 5.01,26.69},
  {73.93,98.38},{12.95,37.05},{ 8.97,50.07},{ 6.94,49.15},
  {59.38,88.05},{44.77,84.22},{64.28,108.11},{43.52,79.56},
  {43.15,86.68},{58.56,65.89},{ 5.94,25.91},{58.96,100.69},
  {82.31,105.03},{99.76,150.40},{17.76,65.48},{19.44,56.54},
  {64.99,102.67},{19.57,66.40},{82.24,132.98},{79.48,118.38},
  {60.82,95.91},{ 8.45,46.60},{19.56,63.50},{ 8.66,41.86},
  {52.43,94.17},{45.11,84.39},{99.96,142.93},{85.13,138.67},
  {19.23,47.91},{60.79,99.80},{20.17,51.69},{94.51,107.45},
  {78.66,125.49},{51.30,93.87},{25.33,47.41},{73.14,98.44},
  {86.53,141.14},{81.33,136.18},{18.15,63.22},{35.52,70.97},
  { 5.27,37.07},{73.89,132.60},{46.11,89.85},{68.27,88.79},
  {53.23,90.19},{47.06,79.42},{53.54,97.52},{34.43,74.78},
  {13.50,52.89},{76.38,130.82},{65.64,98.15},{61.86,115.01},
  {37.97,65.02},{38.27,65.36},{40.93,64.75},{55.13,98.82},
  {48.90,80.52},{93.86,150.44},{60.56,99.25},{32.81,68.54},
  {71.50,106.50},{68.12,105.37},{14.84,45.62},{35.92,74.17},
  {72.55,123.69},{71.44,120.41},{43.20,87.76},{23.89,48.79},
  {49.80,117.14},{61.77,88.82},{73.65,118.68},{34.79,65.11},
  {85.14,131.90},{24.05,64.61},{ 8.14,33.59},{23.51,66.89},
  {55.08,85.22},{50.08,89.67},{64.59,109.02},{36.77,77.89},
  { 4.95,47.42},{88.43,143.48},{80.84,129.96},{57.96,99.36},
  {88.54,138.36},{61.71,93.19},{54.00,80.65},{89.11,129.28},
  {50.37,78.69},{26.72,55.97},{25.18,58.68},{93.01,130.65},
  {42.11,73.83},{74.19,112.10},{27.94,72.97},{95.62,125.56},
  {64.33,120.48},{85.41,132.64},{27.63,68.50},{41.29,72.49},
  {82.84,117.74},{26.26,81.88},{45.42,65.90},{ 8.89,56.13},
  {24.82,57.84},{36.89,73.53},{58.07,113.29},{70.28,100.18},
  {69.83,124.58},{72.50,98.64},{43.36,90.87},{90.84,143.16},
  {59.10,101.73},{12.76,52.32},{21.07,58.93},{56.01,90.26},
  { 9.37,49.60},{ 5.76,42.92},{14.78,60.96},{63.56,130.65},
  {85.72,131.57},{ 8.14,42.32},{99.64,157.71},{ 6.37,41.23},
  {97.05,132.35},{53.32,83.94},{13.95,58.79},{25.90,49.90},
  {69.10,77.53},{97.37,147.46},{14.88,46.63},{80.16,133.44},
  {76.23,114.67},{22.56,61.68},{87.36,134.80},{53.54,92.32},
  {51.30,100.64},{84.04,128.62},{36.84,67.95},{57.70,102.60},
  {31.81,70.96},{47.55,84.17},{ 5.31,52.94},{24.13,70.22},
  {94.67,131.02},{78.98,114.14},{88.91,145.84},{34.26,56.11},
  {88.09,128.35},{27.50,77.57},{49.78,99.41},{62.92,94.91},
  {67.21,99.11},{23.09,40.64},{54.06,92.48},{ 2.90,48.62},
  {29.16,66.53},{ 8.70,52.48},{90.55,114.40},{43.95,78.36},
  { 4.94,35.99},{54.94,88.64},{54.66,82.23},{37.05,77.98},
  {45.97,86.77},{94.70,143.17},{47.09,92.36},{58.16,89.32},
  { 0.59,23.59},{52.91,89.18},{87.20,132.77},{20.12,73.61},
  {56.57,109.01},{13.93,48.20},{27.03,65.34},{26.60,81.04},
  {14.90,73.03},{32.44,70.70},{37.47,84.54},{43.29,65.48},
  {54.46,90.28},{83.76,137.36},{17.30,59.39},{52.52,93.03},
  {17.88,62.13},{17.43,59.80},{ 3.94,42.56},{61.16,101.46},
  {34.83,67.24},{37.00,81.72},{ 6.90,45.33},{24.20,75.12},
  {28.50,63.86},{64.03,105.50},{92.46,138.81},{ 4.74,49.21},
  {59.42,85.53},{23.13,64.57},{41.12,69.17},{72.85,127.82},
  {33.00,71.83},{16.07,31.72},{16.69,64.89},{99.50,135.43},
  {12.07,61.79},{20.26,60.31},{75.26,110.52},{ 8.47,59.91},
  {17.31,52.78},{85.84,121.80},{63.53,125.40},{83.43,135.92},
  {44.24,82.01},{79.29,121.24},{37.56,66.58},{82.47,111.71},
  {94.07,145.28},{22.70,59.74},{21.31,53.64},{39.24,87.29},
  {16.09,64.02},{38.20,72.04},{69.21,115.80},{78.12,135.62},
  {40.61,84.04},{94.34,128.25},{89.84,140.18},{ 5.11,48.78},
  {16.64,53.44},{73.19,115.94},{96.09,156.12},{79.61,129.96},
  {95.78,126.67},{14.79,49.46},{95.13,153.30},{ 0.83,34.01},
  {49.41,86.15},{63.93,114.30},{77.17,125.27},{65.71,114.34},
  {32.29,65.56},{41.35,80.95},{26.09,63.58},{74.06,115.72},
  {92.61,152.01},{19.02,53.26},{68.62,112.71},{16.06,66.13},
  {63.61,111.97},{ 7.92,27.54},{36.02,93.29},{52.37,96.40},
  {91.33,146.55},{99.60,142.29},{11.50,43.51},{30.95,75.69},
  {43.90,96.08},{99.19,143.89},{24.80,72.82},{46.31,85.22},
  {12.56,43.90},{10.97,44.61},{20.97,62.31},{ 3.00,24.20},
  {37.58,75.51},{10.09,41.62},{ 9.39,49.68},{25.60,40.77},
  {78.26,108.74},{89.20,140.86},{26.61,61.51},{50.47,80.50},
  {48.57,92.91},{39.58,80.32},{34.04,63.89},{55.42,110.88},
  {17.08,56.96},{69.99,116.14},{33.59,74.22},{15.43,37.08},
  {46.28,82.74},{83.63,135.77},{33.36,77.27},{38.18,61.79},
  {32.52,90.53},{80.22,124.80},{93.33,117.87},{40.59,95.35},
  { 0.30,42.02},{32.96,53.34},{49.12,73.45},{ 0.95,45.34},
  {53.14,97.94},{ 0.71,38.04},{30.16,71.40},{77.48,121.02},
  {50.76,80.17},{23.27,67.79},{21.77,41.98},{44.82,72.88},
  {48.99,111.33},{ 4.61,53.39},{85.40,126.27},{67.92,123.21},
  {42.16,86.58},{24.63,58.05},{55.05,89.55},{81.34,125.43},
  { 1.83,55.87},{46.95,101.33},{72.24,141.20},{92.62,127.56},
  {46.78,86.90},{27.46,60.40},{28.78,64.28},{23.87,44.27},
  {96.01,156.80},{91.93,142.56},{64.49,98.89},{95.55,123.18},
  {91.14,150.01},{16.81,51.52},{26.52,64.87},{22.66,64.84},
  {95.74,138.96},{83.28,106.19},{53.23,114.94},{62.84,125.12},
  {33.08,77.07},{ 5.89,42.39},{82.03,116.87},{51.43,95.08},
  {34.97,71.43},{12.24,43.20},{39.50,80.18},{20.90,52.59},
  {94.80,142.43},{28.77,76.10},{21.15,65.30},{32.29,69.93},
  {35.45,81.87},{44.52,73.93},{37.21,88.93},{76.78,123.86},
  {31.80,80.92},{97.55,156.22},{84.93,129.69},{ 6.66,32.14},
  {28.38,70.36},{62.74,77.13},{78.40,98.37},{93.99,148.37},
  {19.32,64.57},{61.90,122.97},{57.44,83.86},{30.06,79.14},
  {42.59,85.65},{70.59,107.34},{97.47,142.86},{79.24,137.11},
  {22.42,57.64},{49.79,96.16},{ 2.76,60.14},{56.54,90.13},
  {35.41,78.75},{28.82,69.07},{87.84,140.99},{82.97,121.54},
  {51.18,84.52},{55.49,113.97},{95.15,136.51},{10.60,52.31},
  {83.03,142.98},{11.60,44.33},{11.90,38.24},{68.73,104.54},
  {53.65,96.16},{41.40,75.38},{43.83,92.18},{94.54,142.91},
  {20.72,70.07},{76.37,118.44},{29.89,63.15},{80.99,114.48},
  {45.29,98.30},{89.23,138.09},{ 9.15,45.34},{23.52,61.38},
  { 3.14,47.70},{71.57,115.58},{53.23,91.99},{49.38,91.15},
  {45.77,72.18},{55.56,101.23},{ 2.63,37.32},{83.70,99.45},
  {70.21,108.13},{50.60,94.78},{53.06,80.74},{ 4.76,43.29},
  {71.03,113.96},{74.32,123.87},{56.11,96.81},{27.80,47.57},
  {17.54,58.02},{52.96,90.32},{27.16,71.66},{35.44,58.75},
  {46.07,96.38},{86.52,142.06},{41.28,96.03},{50.29,79.84}
};

double residual_error(double x, double y, double m, double c) {
  double e = (m * x) + c - y;
  return e * e;
}

__device__ double d_residual_error(double x, double y, double m, double c) {
  double e = (m * x) + c - y;
  return e * e;
}

double rms_error(double m, double c) {
  int i;
  double mean;
  double error_sum = 0;
  
  for(i=0; i<n_data; i++) {
    error_sum += residual_error(data[i].x, data[i].y, m, c);
  }
  
  mean = error_sum / n_data;
  
  return sqrt(mean);
}

__global__ void d_rms_error(double *m, double *c, double *error_sum_arr, point_t *d_data) {
	/*
		Calculate the current index by using:
		- The thread id
		- The block id
		- The number of threads per block
	*/
	int i = threadIdx.x + blockIdx.x * blockDim.x;

	//Work out the error sum 1000 times and store them in an array.
  error_sum_arr[i] = d_residual_error(d_data[i].x, d_data[i].y, *m, *c);
}

int time_difference(struct timespec *start, struct timespec *finish, 
                              long long int *difference) {
  long long int ds =  finish->tv_sec - start->tv_sec; 
  long long int dn =  finish->tv_nsec - start->tv_nsec; 

  if(dn < 0 ) {
    ds--;
    dn += 1000000000; 
  } 
  *difference = ds * 1000000000 + dn;
  return !(*difference > 0);
}

int main() {
  int i;
  double bm = 1.3;
  double bc = 10;
  double be;
  double dm[8];
  double dc[8];
  double e[8];
  double step = 0.01;
  double best_error = 999999999;
  int best_error_i;
  int minimum_found = 0;
  
  double om[] = {0,1,1, 1, 0,-1,-1,-1};
  double oc[] = {1,1,0,-1,-1,-1, 0, 1};

	struct timespec start, finish;   
  long long int time_elapsed;

	//Get the system time before we begin the linear regression.
  clock_gettime(CLOCK_MONOTONIC, &start);

	hipError_t error;

	//Device variables
	double *d_dm;
  double *d_dc;
	double *d_error_sum_arr;
	point_t *d_data;
	
  be = rms_error(bm, bc);

	//Allocate memory for d_dm
	error = hipMalloc(&d_dm, (sizeof(double) * 8));
 	if(error){
   	fprintf(stderr, "hipMalloc on d_dm returned %d %s\n", error,
    	hipGetErrorString(error));
   	exit(1);
 	}
	
	//Allocate memory for d_dc
	error = hipMalloc(&d_dc, (sizeof(double) * 8));
 	if(error){
   	fprintf(stderr, "hipMalloc on d_dc returned %d %s\n", error,
  	  hipGetErrorString(error));
   	exit(1);
 	}
	
	//Allocate memory for d_error_sum_arr
	error = hipMalloc(&d_error_sum_arr, (sizeof(double) * 1000));
 	if(error){
   	fprintf(stderr, "hipMalloc on d_error_sum_arr returned %d %s\n", error,
   	  hipGetErrorString(error));
   	exit(1);
 	}

	//Allocate memory for d_data
	error = hipMalloc(&d_data, sizeof(data));
 	if(error){
   	fprintf(stderr, "hipMalloc on d_data returned %d %s\n", error,
   	  hipGetErrorString(error));
   	exit(1);
 	}

  while(!minimum_found) {
    for(i=0;i<8;i++) {
      dm[i] = bm + (om[i] * step);
      dc[i] = bc + (oc[i] * step);    
    }

		//Copy memory for dm to d_dm
  	error = hipMemcpy(d_dm, dm, (sizeof(double) * 8), hipMemcpyHostToDevice);  
  	if(error){
    	fprintf(stderr, "hipMemcpy to d_dm returned %d %s\n", error,
      hipGetErrorString(error));
  	}

		//Copy memory for dc to d_dc
  	error = hipMemcpy(d_dc, dc, (sizeof(double) * 8), hipMemcpyHostToDevice);  
  	if(error){
    	fprintf(stderr, "hipMemcpy to d_dc returned %d %s\n", error,
      hipGetErrorString(error));
  	}

		//Copy memory for data to d_data
  	error = hipMemcpy(d_data, data, sizeof(data), hipMemcpyHostToDevice);  
  	if(error){
    	fprintf(stderr, "hipMemcpy to d_data returned %d %s\n", error,
      hipGetErrorString(error));
  	}
		
    for(i=0;i<8;i++) {
			//Host variable storing the array returned from the kernel function.
			double h_error_sum_arr[1000];
			
			//Stores the total sum of the values from the error sum array.
			double error_sum_total;

			//Stores the mean of the total sum of the error sums.
			double error_sum_mean;

			//Call the rms_error function using 100 blocks and 10 threads.
			d_rms_error <<<100,10>>>(&d_dm[i], &d_dc[i], d_error_sum_arr, d_data);
			hipDeviceSynchronize();

			//Copy memory for d_error_sum_arr
		  error = hipMemcpy(&h_error_sum_arr, d_error_sum_arr, (sizeof(double) * 1000), hipMemcpyDeviceToHost);  
		  if(error){
	    fprintf(stderr, "hipMemcpy to error_sum returned %d %s\n", error,
	      hipGetErrorString(error));
		  }

			//Loop through the error sum array returned from the kernel function
			for(int j=0; j<n_data; j++) {
				//Add each error sum to the error sum total.
    		error_sum_total += h_error_sum_arr[j];
  		}

			//Calculate the mean for the error sum.
			error_sum_mean = error_sum_total / n_data;

			//Calculate the square root for the error sum mean.
			e[i] = sqrt(error_sum_mean);

      if(e[i] < best_error) {
        best_error = e[i];
        best_error_i = i;
      }

			//Reset the error sum total.
			error_sum_total = 0;
    }

    //printf("best m,c is %lf,%lf with error %lf in direction %d\n", 
      //dm[best_error_i], dc[best_error_i], best_error, best_error_i);

    if(best_error < be) {
      be = best_error;
      bm = dm[best_error_i];
      bc = dc[best_error_i];
    } else {
      minimum_found = 1;
    }
  }

	//Free memory for d_dm
	error = hipFree(d_dm);
	if(error){
		fprintf(stderr, "hipFree on d_dm returned %d %s\n", error,
	  	hipGetErrorString(error));
		exit(1);
	}
	
	//Free memory for d_dc
	error = hipFree(d_dc);
	if(error){
		fprintf(stderr, "hipFree on d_dc returned %d %s\n", error,
			hipGetErrorString(error));
		exit(1);
	}

	//Free memory for d_data
	error = hipFree(d_data);
	if(error){
		fprintf(stderr, "hipFree on d_data returned %d %s\n", error,
	  	hipGetErrorString(error));
	 	exit(1);
	}
		
	//Free memory for d_error_sum_arr
	error = hipFree(d_error_sum_arr);
	if(error){
		fprintf(stderr, "hipFree on d_error_sum_arr returned %d %s\n", error,
	  	hipGetErrorString(error));
	 	exit(1);
	}

  printf("minimum m,c is %lf,%lf with error %lf\n", bm, bc, be);

	//Get the system time after we have run the linear regression function.
	clock_gettime(CLOCK_MONOTONIC, &finish);

	//Calculate the time spent between the start time and end time.
  time_difference(&start, &finish, &time_elapsed);

	//Output the time spent running the program.
  printf("Time elapsed was %lldns or %0.9lfs\n", time_elapsed, 
         (time_elapsed/1.0e9));
	
  return 0;
}

	.text
	.file	"lr_using_cuda.hip"
	.globl	_Z14residual_errordddd          # -- Begin function _Z14residual_errordddd
	.type	_Z14residual_errordddd,@function
_Z14residual_errordddd:                 # @_Z14residual_errordddd
	.cfi_startproc
# %bb.0:
	mulsd	%xmm2, %xmm0
	addsd	%xmm3, %xmm0
	subsd	%xmm1, %xmm0
	mulsd	%xmm0, %xmm0
	retq
.Lfunc_end0:
	.size	_Z14residual_errordddd, .Lfunc_end0-_Z14residual_errordddd
	.cfi_endproc
                                        # -- End function
	.globl	_Z9rms_errordd                  # -- Begin function _Z9rms_errordd
	.type	_Z9rms_errordd,@function
_Z9rms_errordd:                         # @_Z9rms_errordd
	.cfi_startproc
# %bb.0:
	movapd	%xmm0, %xmm2
	movl	n_data(%rip), %eax
	xorpd	%xmm3, %xmm3
	xorpd	%xmm0, %xmm0
	testl	%eax, %eax
	jle	.LBB1_3
# %bb.1:                                # %.lr.ph.preheader
	movq	%rax, %rcx
	shlq	$4, %rcx
	xorl	%edx, %edx
.LBB1_2:                                # %.lr.ph
                                        # =>This Inner Loop Header: Depth=1
	movsd	data(%rdx), %xmm4               # xmm4 = mem[0],zero
	mulsd	%xmm2, %xmm4
	addsd	%xmm1, %xmm4
	subsd	data+8(%rdx), %xmm4
	mulsd	%xmm4, %xmm4
	addsd	%xmm4, %xmm0
	addq	$16, %rdx
	cmpq	%rdx, %rcx
	jne	.LBB1_2
.LBB1_3:                                # %._crit_edge
	xorps	%xmm1, %xmm1
	cvtsi2sd	%eax, %xmm1
	divsd	%xmm1, %xmm0
	ucomisd	%xmm3, %xmm0
	jb	sqrt                            # TAILCALL
# %bb.4:                                # %._crit_edge.split
	sqrtsd	%xmm0, %xmm0
	retq
.Lfunc_end1:
	.size	_Z9rms_errordd, .Lfunc_end1-_Z9rms_errordd
	.cfi_endproc
                                        # -- End function
	.globl	_Z26__device_stub__d_rms_errorPdS_S_P7point_t # -- Begin function _Z26__device_stub__d_rms_errorPdS_S_P7point_t
	.type	_Z26__device_stub__d_rms_errorPdS_S_P7point_t,@function
_Z26__device_stub__d_rms_errorPdS_S_P7point_t: # @_Z26__device_stub__d_rms_errorPdS_S_P7point_t
	.cfi_startproc
# %bb.0:
	pushq	%r15
	.cfi_def_cfa_offset 16
	pushq	%r14
	.cfi_def_cfa_offset 24
	pushq	%r13
	.cfi_def_cfa_offset 32
	pushq	%r12
	.cfi_def_cfa_offset 40
	pushq	%rbx
	.cfi_def_cfa_offset 48
	subq	$112, %rsp
	.cfi_def_cfa_offset 160
	.cfi_offset %rbx, -48
	.cfi_offset %r12, -40
	.cfi_offset %r13, -32
	.cfi_offset %r14, -24
	.cfi_offset %r15, -16
	leaq	40(%rsp), %rax
	movq	%rdi, (%rax)
	leaq	32(%rsp), %rdi
	movq	%rsi, (%rdi)
	leaq	24(%rsp), %rsi
	movq	%rdx, (%rsi)
	leaq	16(%rsp), %rdx
	movq	%rcx, (%rdx)
	leaq	80(%rsp), %rbx
	movq	%rax, (%rbx)
	movq	%rdi, 8(%rbx)
	movq	%rsi, 16(%rbx)
	movq	%rdx, 24(%rbx)
	leaq	64(%rsp), %r14
	leaq	48(%rsp), %r15
	leaq	8(%rsp), %r12
	movq	%rsp, %r13
	movq	%r14, %rdi
	movq	%r15, %rsi
	movq	%r12, %rdx
	movq	%r13, %rcx
	callq	__hipPopCallConfiguration
	movq	(%r14), %rsi
	movl	8(%r14), %edx
	movq	(%r15), %rcx
	movl	8(%r15), %r8d
	movl	$_Z11d_rms_errorPdS_S_P7point_t, %edi
	movq	%rbx, %r9
	pushq	(%r13)
	.cfi_adjust_cfa_offset 8
	pushq	(%r12)
	.cfi_adjust_cfa_offset 8
	callq	hipLaunchKernel
	addq	$128, %rsp
	.cfi_adjust_cfa_offset -128
	popq	%rbx
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r13
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	retq
.Lfunc_end2:
	.size	_Z26__device_stub__d_rms_errorPdS_S_P7point_t, .Lfunc_end2-_Z26__device_stub__d_rms_errorPdS_S_P7point_t
	.cfi_endproc
                                        # -- End function
	.globl	_Z15time_differenceP8timespecS0_Px # -- Begin function _Z15time_differenceP8timespecS0_Px
	.type	_Z15time_differenceP8timespecS0_Px,@function
_Z15time_differenceP8timespecS0_Px:     # @_Z15time_differenceP8timespecS0_Px
	.cfi_startproc
# %bb.0:
	movq	(%rsi), %rax
	subq	(%rdi), %rax
	movq	8(%rsi), %rcx
	subq	8(%rdi), %rcx
	leaq	1000000000(%rcx), %rsi
	movq	%rcx, %rdi
	sarq	$63, %rdi
	addq	%rax, %rdi
	testq	%rcx, %rcx
	cmovnsq	%rcx, %rsi
	imulq	$1000000000, %rdi, %rcx         # imm = 0x3B9ACA00
	xorl	%eax, %eax
	addq	%rsi, %rcx
	movq	%rcx, (%rdx)
	setle	%al
	retq
.Lfunc_end3:
	.size	_Z15time_differenceP8timespecS0_Px, .Lfunc_end3-_Z15time_differenceP8timespecS0_Px
	.cfi_endproc
                                        # -- End function
	.section	.rodata.cst8,"aM",@progbits,8
	.p2align	3, 0x0                          # -- Begin function main
.LCPI4_0:
	.quad	0x3ff4cccccccccccd              # double 1.3
.LCPI4_1:
	.quad	0x4024000000000000              # double 10
.LCPI4_2:
	.quad	0x41cdcd64ff800000              # double 999999999
.LCPI4_3:
	.quad	0x3f847ae147ae147b              # double 0.01
.LCPI4_4:
	.quad	0x41cdcd6500000000              # double 1.0E+9
.LCPI4_5:
	.quad	0x0000000000000000              # double 0
	.text
	.globl	main
	.type	main,@function
main:                                   # @main
	.cfi_startproc
# %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	pushq	%r15
	.cfi_def_cfa_offset 24
	pushq	%r14
	.cfi_def_cfa_offset 32
	pushq	%r13
	.cfi_def_cfa_offset 40
	pushq	%r12
	.cfi_def_cfa_offset 48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	subq	$8344, %rsp                     # imm = 0x2098
	.cfi_def_cfa_offset 8400
	.cfi_offset %rbx, -56
	.cfi_offset %r12, -48
	.cfi_offset %r13, -40
	.cfi_offset %r14, -32
	.cfi_offset %r15, -24
	.cfi_offset %rbp, -16
	xorps	%xmm0, %xmm0
	movaps	%xmm0, 144(%rsp)
	movaps	%xmm0, 160(%rsp)
	movaps	%xmm0, 176(%rsp)
	movabsq	$4607182418800017408, %rax      # imm = 0x3FF0000000000000
	movq	%rax, 152(%rsp)
	movq	%rax, 160(%rsp)
	movq	%rax, 168(%rsp)
	movabsq	$-4616189618054758400, %rcx     # imm = 0xBFF0000000000000
	movq	%rcx, 184(%rsp)
	movq	%rcx, 192(%rsp)
	movq	%rcx, 200(%rsp)
	movaps	%xmm0, 96(%rsp)
	movaps	%xmm0, 112(%rsp)
	movaps	%xmm0, 128(%rsp)
	movq	%rax, 80(%rsp)
	movq	%rax, 88(%rsp)
	movq	%rcx, 104(%rsp)
	movq	%rcx, 112(%rsp)
	movq	%rcx, 120(%rsp)
	movq	%rax, 136(%rsp)
	leaq	64(%rsp), %rsi
	movl	$1, %edi
	callq	clock_gettime
	movsd	.LCPI4_0(%rip), %xmm0           # xmm0 = mem[0],zero
	movsd	.LCPI4_1(%rip), %xmm1           # xmm1 = mem[0],zero
	callq	_Z9rms_errordd
	movsd	%xmm0, 8(%rsp)                  # 8-byte Spill
	leaq	40(%rsp), %rdi
	movl	$64, %esi
	callq	hipMalloc
	testl	%eax, %eax
	jne	.LBB4_1
# %bb.3:
	leaq	32(%rsp), %rdi
	movl	$64, %esi
	callq	hipMalloc
	testl	%eax, %eax
	jne	.LBB4_4
# %bb.5:
	leaq	24(%rsp), %rdi
	movl	$8000, %esi                     # imm = 0x1F40
	callq	hipMalloc
	testl	%eax, %eax
	jne	.LBB4_6
# %bb.7:
	leaq	16(%rsp), %rdi
	movl	$16000, %esi                    # imm = 0x3E80
	callq	hipMalloc
	testl	%eax, %eax
	jne	.LBB4_40
# %bb.8:                                # %.preheader.preheader
	movsd	.LCPI4_2(%rip), %xmm0           # xmm0 = mem[0],zero
	movsd	%xmm0, (%rsp)                   # 8-byte Spill
	movabsq	$4294967306, %r14               # imm = 0x10000000A
	movsd	.LCPI4_3(%rip), %xmm3           # xmm3 = mem[0],zero
	leaq	90(%r14), %r12
	leaq	336(%rsp), %r13
                                        # implicit-def: $r15d
	movsd	.LCPI4_0(%rip), %xmm1           # xmm1 = mem[0],zero
	movsd	.LCPI4_1(%rip), %xmm2           # xmm2 = mem[0],zero
.LBB4_9:                                # %.preheader
                                        # =>This Loop Header: Depth=1
                                        #     Child Loop BB4_10 Depth 2
                                        #     Child Loop BB4_18 Depth 2
                                        #       Child Loop BB4_30 Depth 3
	xorl	%eax, %eax
.LBB4_10:                               #   Parent Loop BB4_9 Depth=1
                                        # =>  This Inner Loop Header: Depth=2
	movsd	144(%rsp,%rax,8), %xmm0         # xmm0 = mem[0],zero
	mulsd	%xmm3, %xmm0
	addsd	%xmm1, %xmm0
	movsd	%xmm0, 272(%rsp,%rax,8)
	movsd	80(%rsp,%rax,8), %xmm0          # xmm0 = mem[0],zero
	mulsd	%xmm3, %xmm0
	addsd	%xmm2, %xmm0
	movsd	%xmm0, 208(%rsp,%rax,8)
	incq	%rax
	cmpq	$8, %rax
	jne	.LBB4_10
# %bb.11:                               #   in Loop: Header=BB4_9 Depth=1
	movsd	%xmm2, 48(%rsp)                 # 8-byte Spill
	movsd	%xmm1, 56(%rsp)                 # 8-byte Spill
	movq	40(%rsp), %rdi
	movl	$64, %edx
	leaq	272(%rsp), %rsi
	movl	$1, %ecx
	callq	hipMemcpy
	testl	%eax, %eax
	jne	.LBB4_12
.LBB4_13:                               #   in Loop: Header=BB4_9 Depth=1
	movq	32(%rsp), %rdi
	movl	$64, %edx
	leaq	208(%rsp), %rsi
	movl	$1, %ecx
	callq	hipMemcpy
	testl	%eax, %eax
	jne	.LBB4_14
.LBB4_15:                               #   in Loop: Header=BB4_9 Depth=1
	movq	16(%rsp), %rdi
	movl	$data, %esi
	movl	$16000, %edx                    # imm = 0x3E80
	movl	$1, %ecx
	callq	hipMemcpy
	testl	%eax, %eax
	jne	.LBB4_16
.LBB4_17:                               # %.preheader149
                                        #   in Loop: Header=BB4_9 Depth=1
	xorl	%ebx, %ebx
.LBB4_18:                               #   Parent Loop BB4_9 Depth=1
                                        # =>  This Loop Header: Depth=2
                                        #       Child Loop BB4_30 Depth 3
	movq	%r12, %rdi
	movl	$1, %esi
	movq	%r14, %rdx
	movl	$1, %ecx
	xorl	%r8d, %r8d
	xorl	%r9d, %r9d
	callq	__hipPushCallConfiguration
	testl	%eax, %eax
	jne	.LBB4_20
# %bb.19:                               #   in Loop: Header=BB4_18 Depth=2
	leaq	(,%rbx,8), %rsi
	movq	40(%rsp), %rdi
	addq	%rsi, %rdi
	addq	32(%rsp), %rsi
	movq	24(%rsp), %rdx
	movq	16(%rsp), %rcx
	callq	_Z26__device_stub__d_rms_errorPdS_S_P7point_t
.LBB4_20:                               #   in Loop: Header=BB4_18 Depth=2
	callq	hipDeviceSynchronize
	movq	24(%rsp), %rsi
	movl	$8000, %edx                     # imm = 0x1F40
	movq	%r13, %rdi
	movl	$2, %ecx
	callq	hipMemcpy
	testl	%eax, %eax
	jne	.LBB4_21
.LBB4_22:                               #   in Loop: Header=BB4_18 Depth=2
	movl	n_data(%rip), %eax
	xorpd	%xmm0, %xmm0
	testl	%eax, %eax
	jle	.LBB4_23
# %bb.29:                               # %.lr.ph.preheader
                                        #   in Loop: Header=BB4_18 Depth=2
	xorl	%ecx, %ecx
.LBB4_30:                               # %.lr.ph
                                        #   Parent Loop BB4_9 Depth=1
                                        #     Parent Loop BB4_18 Depth=2
                                        # =>    This Inner Loop Header: Depth=3
	addsd	336(%rsp,%rcx,8), %xmm0
	incq	%rcx
	cmpq	%rcx, %rax
	jne	.LBB4_30
.LBB4_23:                               # %._crit_edge
                                        #   in Loop: Header=BB4_18 Depth=2
	xorps	%xmm1, %xmm1
	cvtsi2sd	%eax, %xmm1
	divsd	%xmm1, %xmm0
	ucomisd	.LCPI4_5(%rip), %xmm0
	jb	.LBB4_25
# %bb.24:                               #   in Loop: Header=BB4_18 Depth=2
	sqrtsd	%xmm0, %xmm0
	jmp	.LBB4_26
.LBB4_25:                               # %call.sqrt
                                        #   in Loop: Header=BB4_18 Depth=2
	callq	sqrt
.LBB4_26:                               # %._crit_edge.split
                                        #   in Loop: Header=BB4_18 Depth=2
	movsd	(%rsp), %xmm1                   # 8-byte Reload
                                        # xmm1 = mem[0],zero
	ucomisd	%xmm0, %xmm1
	cmoval	%ebx, %r15d
	minsd	%xmm1, %xmm0
	incq	%rbx
	movsd	%xmm0, (%rsp)                   # 8-byte Spill
	cmpq	$8, %rbx
	jne	.LBB4_18
	jmp	.LBB4_27
.LBB4_21:                               #   in Loop: Header=BB4_18 Depth=2
	movl	%eax, %ebp
	movq	stderr(%rip), %r14
	movl	%eax, %edi
	callq	hipGetErrorString
	movl	$.L.str.7, %esi
	movq	%r14, %rdi
	movabsq	$4294967306, %r14               # imm = 0x10000000A
	movl	%ebp, %edx
	movq	%rax, %rcx
	xorl	%eax, %eax
	callq	fprintf
	jmp	.LBB4_22
.LBB4_27:                               #   in Loop: Header=BB4_9 Depth=1
	movsd	8(%rsp), %xmm1                  # 8-byte Reload
                                        # xmm1 = mem[0],zero
	ucomisd	%xmm0, %xmm1
	movsd	.LCPI4_3(%rip), %xmm3           # xmm3 = mem[0],zero
	jbe	.LBB4_31
# %bb.28:                               #   in Loop: Header=BB4_9 Depth=1
	movslq	%r15d, %rax
	movsd	272(%rsp,%rax,8), %xmm1         # xmm1 = mem[0],zero
	movsd	208(%rsp,%rax,8), %xmm2         # xmm2 = mem[0],zero
	movsd	%xmm0, 8(%rsp)                  # 8-byte Spill
	movsd	%xmm0, (%rsp)                   # 8-byte Spill
	jmp	.LBB4_9
.LBB4_12:                               #   in Loop: Header=BB4_9 Depth=1
	movl	%eax, %ebp
	movq	stderr(%rip), %r14
	movl	%eax, %edi
	callq	hipGetErrorString
	movl	$.L.str.4, %esi
	movq	%r14, %rdi
	movabsq	$4294967306, %r14               # imm = 0x10000000A
	movl	%ebp, %edx
	movq	%rax, %rcx
	xorl	%eax, %eax
	callq	fprintf
	jmp	.LBB4_13
.LBB4_14:                               #   in Loop: Header=BB4_9 Depth=1
	movl	%eax, %ebp
	movq	stderr(%rip), %r14
	movl	%eax, %edi
	callq	hipGetErrorString
	movl	$.L.str.5, %esi
	movq	%r14, %rdi
	movabsq	$4294967306, %r14               # imm = 0x10000000A
	movl	%ebp, %edx
	movq	%rax, %rcx
	xorl	%eax, %eax
	callq	fprintf
	jmp	.LBB4_15
.LBB4_16:                               #   in Loop: Header=BB4_9 Depth=1
	movl	%eax, %ebp
	movq	stderr(%rip), %r14
	movl	%eax, %edi
	callq	hipGetErrorString
	movl	$.L.str.6, %esi
	movq	%r14, %rdi
	movabsq	$4294967306, %r14               # imm = 0x10000000A
	movl	%ebp, %edx
	movq	%rax, %rcx
	xorl	%eax, %eax
	callq	fprintf
	jmp	.LBB4_17
.LBB4_31:
	movq	40(%rsp), %rdi
	callq	hipFree
	testl	%eax, %eax
	jne	.LBB4_32
# %bb.33:
	movq	32(%rsp), %rdi
	callq	hipFree
	testl	%eax, %eax
	jne	.LBB4_34
# %bb.35:
	movq	16(%rsp), %rdi
	callq	hipFree
	testl	%eax, %eax
	jne	.LBB4_36
# %bb.37:
	movq	24(%rsp), %rdi
	callq	hipFree
	testl	%eax, %eax
	jne	.LBB4_38
# %bb.39:
	movl	$.L.str.12, %edi
	movsd	56(%rsp), %xmm0                 # 8-byte Reload
                                        # xmm0 = mem[0],zero
	movsd	48(%rsp), %xmm1                 # 8-byte Reload
                                        # xmm1 = mem[0],zero
	movsd	8(%rsp), %xmm2                  # 8-byte Reload
                                        # xmm2 = mem[0],zero
	movb	$3, %al
	callq	printf
	leaq	336(%rsp), %rbx
	movl	$1, %edi
	movq	%rbx, %rsi
	callq	clock_gettime
	movq	(%rbx), %rax
	subq	64(%rsp), %rax
	movq	8(%rbx), %rcx
	subq	72(%rsp), %rcx
	leaq	1000000000(%rcx), %rdx
	movq	%rcx, %rsi
	sarq	$63, %rsi
	addq	%rax, %rsi
	testq	%rcx, %rcx
	cmovnsq	%rcx, %rdx
	imulq	$1000000000, %rsi, %rsi         # imm = 0x3B9ACA00
	addq	%rdx, %rsi
	xorps	%xmm0, %xmm0
	cvtsi2sd	%rsi, %xmm0
	divsd	.LCPI4_4(%rip), %xmm0
	movl	$.L.str.13, %edi
	movb	$1, %al
	callq	printf
	xorl	%eax, %eax
	addq	$8344, %rsp                     # imm = 0x2098
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%r12
	.cfi_def_cfa_offset 40
	popq	%r13
	.cfi_def_cfa_offset 32
	popq	%r14
	.cfi_def_cfa_offset 24
	popq	%r15
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	retq
.LBB4_1:
	.cfi_def_cfa_offset 8400
	movl	%eax, %ebx
	movq	stderr(%rip), %r14
	movl	%eax, %edi
	callq	hipGetErrorString
	movl	$.L.str, %esi
	jmp	.LBB4_2
.LBB4_4:
	movl	%eax, %ebx
	movq	stderr(%rip), %r14
	movl	%eax, %edi
	callq	hipGetErrorString
	movl	$.L.str.1, %esi
	jmp	.LBB4_2
.LBB4_6:
	movl	%eax, %ebx
	movq	stderr(%rip), %r14
	movl	%eax, %edi
	callq	hipGetErrorString
	movl	$.L.str.2, %esi
	jmp	.LBB4_2
.LBB4_40:
	movl	%eax, %ebx
	movq	stderr(%rip), %r14
	movl	%eax, %edi
	callq	hipGetErrorString
	movl	$.L.str.3, %esi
	jmp	.LBB4_2
.LBB4_32:
	movl	%eax, %ebx
	movq	stderr(%rip), %r14
	movl	%eax, %edi
	callq	hipGetErrorString
	movl	$.L.str.8, %esi
	jmp	.LBB4_2
.LBB4_34:
	movl	%eax, %ebx
	movq	stderr(%rip), %r14
	movl	%eax, %edi
	callq	hipGetErrorString
	movl	$.L.str.9, %esi
	jmp	.LBB4_2
.LBB4_36:
	movl	%eax, %ebx
	movq	stderr(%rip), %r14
	movl	%eax, %edi
	callq	hipGetErrorString
	movl	$.L.str.10, %esi
	jmp	.LBB4_2
.LBB4_38:
	movl	%eax, %ebx
	movq	stderr(%rip), %r14
	movl	%eax, %edi
	callq	hipGetErrorString
	movl	$.L.str.11, %esi
.LBB4_2:
	movq	%r14, %rdi
	movl	%ebx, %edx
	movq	%rax, %rcx
	xorl	%eax, %eax
	callq	fprintf
	movl	$1, %edi
	callq	exit
.Lfunc_end4:
	.size	main, .Lfunc_end4-main
	.cfi_endproc
                                        # -- End function
	.p2align	4, 0x90                         # -- Begin function __hip_module_ctor
	.type	__hip_module_ctor,@function
__hip_module_ctor:                      # @__hip_module_ctor
	.cfi_startproc
# %bb.0:
	pushq	%rbx
	.cfi_def_cfa_offset 16
	subq	$32, %rsp
	.cfi_def_cfa_offset 48
	.cfi_offset %rbx, -16
	movq	__hip_gpubin_handle(%rip), %rbx
	testq	%rbx, %rbx
	jne	.LBB5_2
# %bb.1:
	movl	$__hip_fatbin_wrapper, %edi
	callq	__hipRegisterFatBinary
	movq	%rax, %rbx
	movq	%rax, __hip_gpubin_handle(%rip)
.LBB5_2:
	xorps	%xmm0, %xmm0
	movups	%xmm0, 16(%rsp)
	movups	%xmm0, (%rsp)
	movl	$_Z11d_rms_errorPdS_S_P7point_t, %esi
	movl	$.L__unnamed_1, %edx
	movl	$.L__unnamed_1, %ecx
	movq	%rbx, %rdi
	movl	$-1, %r8d
	xorl	%r9d, %r9d
	callq	__hipRegisterFunction
	movl	$0, 8(%rsp)
	movl	$0, (%rsp)
	movl	$d_n_data, %esi
	movl	$.L__unnamed_2, %edx
	movl	$.L__unnamed_2, %ecx
	movl	$4, %r9d
	movq	%rbx, %rdi
	xorl	%r8d, %r8d
	callq	__hipRegisterVar
	movl	$__hip_module_dtor, %edi
	addq	$32, %rsp
	.cfi_def_cfa_offset 16
	popq	%rbx
	.cfi_def_cfa_offset 8
	jmp	atexit                          # TAILCALL
.Lfunc_end5:
	.size	__hip_module_ctor, .Lfunc_end5-__hip_module_ctor
	.cfi_endproc
                                        # -- End function
	.p2align	4, 0x90                         # -- Begin function __hip_module_dtor
	.type	__hip_module_dtor,@function
__hip_module_dtor:                      # @__hip_module_dtor
	.cfi_startproc
# %bb.0:
	movq	__hip_gpubin_handle(%rip), %rdi
	testq	%rdi, %rdi
	je	.LBB6_2
# %bb.1:
	pushq	%rax
	.cfi_def_cfa_offset 16
	callq	__hipUnregisterFatBinary
	movq	$0, __hip_gpubin_handle(%rip)
	addq	$8, %rsp
	.cfi_def_cfa_offset 8
.LBB6_2:
	retq
.Lfunc_end6:
	.size	__hip_module_dtor, .Lfunc_end6-__hip_module_dtor
	.cfi_endproc
                                        # -- End function
	.type	n_data,@object                  # @n_data
	.data
	.globl	n_data
	.p2align	2, 0x0
n_data:
	.long	1000                            # 0x3e8
	.size	n_data, 4

	.type	d_n_data,@object                # @d_n_data
	.local	d_n_data
	.comm	d_n_data,4,4
	.type	data,@object                    # @data
	.globl	data
	.p2align	4, 0x0
data:
	.quad	0x40507851eb851eb8              # double 65.879999999999995
	.quad	0x405c533333333333              # double 113.3
	.quad	0x4054c7ae147ae148              # double 83.120000000000005
	.quad	0x4059d8f5c28f5c29              # double 103.39
	.quad	0x40522d70a3d70a3d              # double 72.709999999999994
	.quad	0x406121999999999a              # double 137.05000000000001
	.quad	0x405300a3d70a3d71              # double 76.010000000000005
	.quad	0x405edae147ae147b              # double 123.42
	.quad	0x405165c28f5c28f6              # double 69.590000000000003
	.quad	0x405c67ae147ae148              # double 113.62
	.quad	0x40526c28f5c28f5c              # double 73.689999999999998
	.quad	0x405cc47ae147ae14              # double 115.06999999999999
	.quad	0x4051dd70a3d70a3d              # double 71.459999999999994
	.quad	0x40590f5c28f5c28f              # double 100.23999999999999
	.quad	0x40523f5c28f5c28f              # double 72.989999999999995
	.quad	0x405daeb851eb851f              # double 118.73
	.quad	0x4051200000000000              # double 68.5
	.quad	0x4058766666666666              # double 97.849999999999994
	.quad	0x40505b851eb851ec              # double 65.430000000000007
	.quad	0x4059d3d70a3d70a4              # double 103.31
	.quad	0x4056528f5c28f5c3              # double 89.290000000000006
	.quad	0x40609e6666666666              # double 132.94999999999999
	.quad	0x404d11eb851eb852              # double 58.140000000000001
	.quad	0x405480a3d70a3d71              # double 82.010000000000005
	.quad	0x4047c66666666666              # double 47.549999999999997
	.quad	0x4052d9999999999a              # double 75.400000000000006
	.quad	0x4053366666666666              # double 76.849999999999994
	.quad	0x405bc5c28f5c28f6              # double 111.09
	.quad	0x405100a3d70a3d71              # double 68.010000000000005
	.quad	0x405cc9999999999a              # double 115.15000000000001
	.quad	0x4035cccccccccccd              # double 21.800000000000001
	.quad	0x404b48f5c28f5c29              # double 54.57
	.quad	0x4056828f5c28f5c3              # double 90.040000000000006
	.quad	0x405e0d70a3d70a3d              # double 120.20999999999999
	.quad	0x404c6ccccccccccd              # double 56.850000000000001
	.quad	0x4059ba3d70a3d70a              # double 102.91
	.quad	0x4001d70a3d70a3d7              # double 2.23
	.quad	0x40425ae147ae147b              # double 36.710000000000001
	.quad	0x4055b1eb851eb852              # double 86.780000000000001
	.quad	0x405d5d70a3d70a3d              # double 117.45999999999999
	.quad	0x401a147ae147ae14              # double 6.5199999999999996
	.quad	0x4046ca3d70a3d70a              # double 45.579999999999998
	.quad	0x4058547ae147ae14              # double 97.319999999999993
	.quad	0x40627a8f5c28f5c3              # double 147.83000000000001
	.quad	0x4036e8f5c28f5c29              # double 22.91
	.quad	0x404b15c28f5c28f6              # double 54.170000000000002
	.quad	0x4053a5c28f5c28f6              # double 78.590000000000003
	.quad	0x405ab1eb851eb852              # double 106.78
	.quad	0x40460b851eb851ec              # double 44.090000000000003
	.quad	0x4051bd70a3d70a3d              # double 70.959999999999994
	.quad	0x4052a8f5c28f5c29              # double 74.64
	.quad	0x40586b851eb851ec              # double 97.680000000000007
	.quad	0x4056a0a3d70a3d71              # double 90.510000000000005
	.quad	0x4060df5c28f5c28f              # double 134.97999999999999
	.quad	0x405809999999999a              # double 96.150000000000005
	.quad	0x4061e851eb851eb8              # double 143.25999999999999
	.quad	0x404d428f5c28f5c3              # double 58.520000000000003
	.quad	0x40562ccccccccccd              # double 88.700000000000002
	.quad	0x404db5c28f5c28f6              # double 59.420000000000002
	.quad	0x405937ae147ae148              # double 100.87
	.quad	0x4050d0a3d70a3d71              # double 67.260000000000005
	.quad	0x405b4ae147ae147b              # double 109.17
	.quad	0x404c4f5c28f5c28f              # double 56.619999999999997
	.quad	0x405701eb851eb852              # double 92.030000000000001
	.quad	0x4051e9999999999a              # double 71.650000000000006
	.quad	0x405be00000000000              # double 111.5
	.quad	0x40121eb851eb851f              # double 4.5300000000000002
	.quad	0x4040c51eb851eb85              # double 33.539999999999999
	.quad	0x4054b66666666666              # double 82.849999999999994
	.quad	0x405e970a3d70a3d7              # double 122.36
	.quad	0x4057ea3d70a3d70a              # double 95.659999999999996
	.quad	0x40635570a3d70a3d              # double 154.66999999999999
	.quad	0x405427ae147ae148              # double 80.620000000000005
	.quad	0x4058e70a3d70a3d7              # double 99.609999999999999
	.quad	0x4046a66666666666              # double 45.299999999999997
	.quad	0x4054a66666666666              # double 82.599999999999994
	.quad	0x4042866666666666              # double 37.049999999999997
	.quad	0x405430a3d70a3d71              # double 80.760000000000005
	.quad	0x404ebd70a3d70a3d              # double 61.479999999999997
	.quad	0x4058aeb851eb851f              # double 98.730000000000003
	.quad	0x4049b1eb851eb852              # double 51.390000000000001
	.quad	0x4058b33333333333              # double 98.799999999999997
	.quad	0x403675c28f5c28f6              # double 22.460000000000001
	.quad	0x404fd70a3d70a3d7              # double 63.68
	.quad	0x405631eb851eb852              # double 88.780000000000001
	.quad	0x405da1eb851eb852              # double 118.53
	.quad	0x40578a3d70a3d70a              # double 94.159999999999996
	.quad	0x4061e5c28f5c28f6              # double 143.18000000000001
	.quad	0x4043bc28f5c28f5c              # double 39.469999999999999
	.quad	0x4051deb851eb851f              # double 71.480000000000004
	.quad	0x401dc28f5c28f5c3              # double 7.4400000000000004
	.quad	0x404831eb851eb852              # double 48.390000000000001
	.quad	0x4049ee147ae147ae              # double 51.859999999999999
	.quad	0x405ac7ae147ae148              # double 107.12
	.quad	0x4055a1eb851eb852              # double 86.530000000000001
	.quad	0x4061366666666666              # double 137.69999999999999
	.quad	0x4054e1eb851eb852              # double 83.530000000000001
	.quad	0x405ee47ae147ae14              # double 123.56999999999999
	.quad	0x401eb851eb851eb8              # double 7.6799999999999997
	.quad	0x4049d851eb851eb8              # double 51.689999999999998
	.quad	0x4032f5c28f5c28f6              # double 18.960000000000001
	.quad	0x404d5851eb851eb8              # double 58.689999999999998
	.quad	0x40362b851eb851ec              # double 22.170000000000002
	.quad	0x4053aa3d70a3d70a              # double 78.659999999999997
	.quad	0x4045f9999999999a              # double 43.950000000000003
	.quad	0x4051f1eb851eb852              # double 71.780000000000001
	.quad	0x4057128f5c28f5c3              # double 92.290000000000006
	.quad	0x4060dccccccccccd              # double 134.90000000000001
	.quad	0x40533e147ae147ae              # double 76.969999999999999
	.quad	0x405951eb851eb852              # double 101.28
	.quad	0x40373d70a3d70a3d              # double 23.239999999999998
	.quad	0x404803d70a3d70a4              # double 48.030000000000001
	.quad	0x403abae147ae147b              # double 26.73
	.quad	0x405071eb851eb852              # double 65.780000000000001
	.quad	0x4056100000000000              # double 88.25
	.quad	0x4061fc7ae147ae14              # double 143.88999999999999
	.quad	0x4057c7ae147ae148              # double 95.120000000000005
	.quad	0x405f3d70a3d70a3d              # double 124.95999999999999
	.quad	0x40255c28f5c28f5c              # double 10.68
	.quad	0x4050b70a3d70a3d7              # double 66.859999999999999
	.quad	0x404fe3d70a3d70a4              # double 63.780000000000001
	.quad	0x405daeb851eb851f              # double 118.73
	.quad	0x403adc28f5c28f5c              # double 26.859999999999999
	.quad	0x40513c28f5c28f5c              # double 68.939999999999998
	.quad	0x401f333333333333              # double 7.7999999999999998
	.quad	0x404995c28f5c28f6              # double 51.170000000000002
	.quad	0x4038a66666666666              # double 24.649999999999999
	.quad	0x404af0a3d70a3d71              # double 53.880000000000003
	.quad	0x4046051eb851eb85              # double 44.039999999999999
	.quad	0x4052b28f5c28f5c3              # double 74.790000000000006
	.quad	0x4055d28f5c28f5c3              # double 87.290000000000006
	.quad	0x40615b851eb851ec              # double 138.86000000000001
	.quad	0x40585ccccccccccd              # double 97.450000000000002
	.quad	0x40607d70a3d70a3d              # double 131.91999999999999
	.quad	0x405813d70a3d70a4              # double 96.310000000000002
	.quad	0x4061cfae147ae148              # double 142.49000000000001
	.quad	0x4046e66666666666              # double 45.799999999999997
	.quad	0x405738f5c28f5c29              # double 92.89
	.quad	0x4054347ae147ae14              # double 80.819999999999993
	.quad	0x40603e147ae147ae              # double 129.94
	.quad	0x40470ccccccccccd              # double 46.100000000000001
	.quad	0x40566f5c28f5c28f              # double 89.739999999999994
	.quad	0x404ba147ae147ae1              # double 55.259999999999998
	.quad	0x405358f5c28f5c29              # double 77.39
	.quad	0x4021f5c28f5c28f6              # double 8.9800000000000004
	.quad	0x4049000000000000              # double 50
	.quad	0x402547ae147ae148              # double 10.640000000000001
	.quad	0x403f91eb851eb852              # double 31.57
	.quad	0x40581d70a3d70a3d              # double 96.459999999999993
	.quad	0x40622b851eb851ec              # double 145.36000000000001
	.quad	0x402151eb851eb852              # double 8.6600000000000001
	.quad	0x4043851eb851eb85              # double 39.039999999999999
	.quad	0x4053866666666666              # double 78.099999999999994
	.quad	0x405a1c28f5c28f5c              # double 104.44
	.quad	0x4057b147ae147ae1              # double 94.769999999999996
	.quad	0x406090f5c28f5c29              # double 132.53
	.quad	0x40476f5c28f5c28f              # double 46.869999999999997
	.quad	0x40530ccccccccccd              # double 76.200000000000002
	.quad	0x404807ae147ae148              # double 48.060000000000002
	.quad	0x4057200000000000              # double 92.5
	.quad	0x4041d47ae147ae14              # double 35.659999999999997
	.quad	0x4053d5c28f5c28f6              # double 79.340000000000003
	.quad	0x40570c28f5c28f5c              # double 92.189999999999998
	.quad	0x4062f28f5c28f5c3              # double 151.58000000000001
	.quad	0x405751eb851eb852              # double 93.280000000000001
	.quad	0x405cc9999999999a              # double 115.15000000000001
	.quad	0x403d2b851eb851ec              # double 29.170000000000002
	.quad	0x404e1eb851eb851f              # double 60.240000000000002
	.quad	0x403c35c28f5c28f6              # double 28.210000000000001
	.quad	0x4049b9999999999a              # double 51.450000000000003
	.quad	0x4012a3d70a3d70a4              # double 4.6600000000000001
	.quad	0x404ab1eb851eb852              # double 53.390000000000001
	.quad	0x40579ae147ae147b              # double 94.420000000000001
	.quad	0x406201eb851eb852              # double 144.06
	.quad	0x403875c28f5c28f6              # double 24.460000000000001
	.quad	0x40509ae147ae147b              # double 66.420000000000002
	.quad	0x403d4a3d70a3d70a              # double 29.289999999999999
	.quad	0x4050fae147ae147b              # double 67.920000000000002
	.quad	0x404f028f5c28f5c3              # double 62.020000000000003
	.quad	0x405b628f5c28f5c3              # double 109.54000000000001
	.quad	0x402e333333333333              # double 15.1
	.quad	0x404b30a3d70a3d71              # double 54.380000000000003
	.quad	0x401a51eb851eb852              # double 6.5800000000000001
	.quad	0x4048e8f5c28f5c29              # double 49.82
	.quad	0x4056f5c28f5c28f6              # double 91.840000000000003
	.quad	0x40609eb851eb851f              # double 132.96000000000001
	.quad	0x40508e147ae147ae              # double 66.219999999999999
	.quad	0x405a8eb851eb851f              # double 106.23
	.quad	0x4051928f5c28f5c3              # double 70.290000000000006
	.quad	0x405a9ae147ae147b              # double 106.42
	.quad	0x403b7ae147ae147b              # double 27.48
	.quad	0x404775c28f5c28f6              # double 46.920000000000002
	.quad	0x403bd1eb851eb852              # double 27.82
	.quad	0x4054647ae147ae14              # double 81.569999999999993
	.quad	0x40392147ae147ae1              # double 25.129999999999999
	.quad	0x4051151eb851eb85              # double 68.329999999999998
	.quad	0x4054b00000000000              # double 82.75
	.quad	0x40607bd70a3d70a4              # double 131.87
	.quad	0x401ecccccccccccd              # double 7.7000000000000001
	.quad	0x404448f5c28f5c29              # double 40.57
	.quad	0x404383d70a3d70a4              # double 39.030000000000001
	.quad	0x4055928f5c28f5c3              # double 86.290000000000006
	.quad	0x4044bae147ae147b              # double 41.460000000000001
	.quad	0x4050be147ae147ae              # double 66.969999999999999
	.quad	0x403723d70a3d70a4              # double 23.140000000000001
	.quad	0x4047a8f5c28f5c29              # double 47.32
	.quad	0x40570ae147ae147b              # double 92.170000000000001
	.quad	0x405f270a3d70a3d7              # double 124.61
	.quad	0x405207ae147ae148              # double 72.120000000000005
	.quad	0x4057c51eb851eb85              # double 95.079999999999998
	.quad	0x405665c28f5c28f6              # double 89.590000000000003
	.quad	0x40638eb851eb851f              # double 156.46000000000001
	.quad	0x4047147ae147ae14              # double 46.159999999999997
	.quad	0x4057100000000000              # double 92.25
	.quad	0x404c08f5c28f5c29              # double 56.07
	.quad	0x4053f147ae147ae1              # double 79.769999999999996
	.quad	0x4044666666666666              # double 40.799999999999997
	.quad	0x4053547ae147ae14              # double 77.319999999999993
	.quad	0x404b91eb851eb852              # double 55.140000000000001
	.quad	0x4059733333333333              # double 101.8
	.quad	0x40386147ae147ae1              # double 24.379999999999999
	.quad	0x40488ccccccccccd              # double 49.100000000000001
	.quad	0x3fd6666666666666              # double 0.34999999999999998
	.quad	0x40461ae147ae147b              # double 44.210000000000001
	.quad	0x3fe4cccccccccccd              # double 0.65000000000000002
	.quad	0x4045b1eb851eb852              # double 43.390000000000001
	.quad	0x40253d70a3d70a3d              # double 10.619999999999999
	.quad	0x404063d70a3d70a4              # double 32.780000000000001
	.quad	0x4056f3d70a3d70a4              # double 91.810000000000002
	.quad	0x4060a0f5c28f5c29              # double 133.03
	.quad	0x4045a66666666666              # double 43.299999999999997
	.quad	0x405780a3d70a3d71              # double 94.010000000000005
	.quad	0x4051bae147ae147b              # double 70.920000000000002
	.quad	0x405ed0a3d70a3d71              # double 123.26000000000001
	.quad	0x404df9999999999a              # double 59.950000000000003
	.quad	0x40597147ae147ae1              # double 101.77
	.quad	0x40353851eb851eb8              # double 21.219999999999999
	.quad	0x404d1c28f5c28f5c              # double 58.219999999999999
	.quad	0x40432a3d70a3d70a              # double 38.329999999999998
	.quad	0x4054e33333333333              # double 83.549999999999997
	.quad	0x4035ab851eb851ec              # double 21.670000000000002
	.quad	0x404687ae147ae148              # double 45.060000000000002
	.quad	0x4042accccccccccd              # double 37.350000000000001
	.quad	0x4052eeb851eb851f              # double 75.730000000000003
	.quad	0x40197ae147ae147b              # double 6.3700000000000001
	.quad	0x403b2e147ae147ae              # double 27.18
	.quad	0x4051d147ae147ae1              # double 71.269999999999996
	.quad	0x4058eccccccccccd              # double 99.700000000000002
	.quad	0x4029ae147ae147ae              # double 12.84
	.quad	0x404dc00000000000              # double 59.5
	.quad	0x4035bae147ae147b              # double 21.73
	.quad	0x4041a147ae147ae1              # double 35.259999999999998
	.quad	0x405465c28f5c28f6              # double 81.590000000000003
	.quad	0x406071999999999a              # double 131.55000000000001
	.quad	0x4050670a3d70a3d7              # double 65.609999999999999
	.quad	0x405d3851eb851eb8              # double 116.88
	.quad	0x404339999999999a              # double 38.450000000000003
	.quad	0x40558ae147ae147b              # double 86.170000000000001
	.quad	0x404e1c28f5c28f5c              # double 60.219999999999999
	.quad	0x40540a3d70a3d70a              # double 80.159999999999997
	.quad	0x4054f851eb851eb8              # double 83.879999999999995
	.quad	0x40615b3333333333              # double 138.84999999999999
	.quad	0x4047ae147ae147ae              # double 47.359999999999999
	.quad	0x4055951eb851eb85              # double 86.329999999999998
	.quad	0x4046ee147ae147ae              # double 45.859999999999999
	.quad	0x40589851eb851eb8              # double 98.379999999999995
	.quad	0x40434a3d70a3d70a              # double 38.579999999999998
	.quad	0x405561eb851eb852              # double 85.530000000000001
	.quad	0x401a51eb851eb852              # double 6.5800000000000001
	.quad	0x4045d1eb851eb852              # double 43.640000000000001
	.quad	0x4054c7ae147ae148              # double 83.120000000000005
	.quad	0x405d2b851eb851ec              # double 116.68000000000001
	.quad	0x405715c28f5c28f6              # double 92.340000000000003
	.quad	0x40614dc28f5c28f6              # double 138.43000000000001
	.quad	0x404b5c28f5c28f5c              # double 54.719999999999999
	.quad	0x4057ca3d70a3d70a              # double 95.159999999999996
	.quad	0x405011eb851eb852              # double 64.280000000000001
	.quad	0x405a2851eb851eb8              # double 104.63
	.quad	0x40565851eb851eb8              # double 89.379999999999995
	.quad	0x405ed0a3d70a3d71              # double 123.26000000000001
	.quad	0x403651eb851eb852              # double 22.32
	.quad	0x4050d51eb851eb85              # double 67.329999999999998
	.quad	0x4050d9999999999a              # double 67.400000000000006
	.quad	0x405fda3d70a3d70a              # double 127.41
	.quad	0x402251eb851eb852              # double 9.1600000000000001
	.quad	0x4049d33333333333              # double 51.649999999999999
	.quad	0x40589851eb851eb8              # double 98.379999999999995
	.quad	0x4063f947ae147ae1              # double 159.78999999999999
	.quad	0x3fff0a3d70a3d70a              # double 1.9399999999999999
	.quad	0x403987ae147ae148              # double 25.530000000000001
	.quad	0x403a91eb851eb852              # double 26.57
	.quad	0x4050e5c28f5c28f6              # double 67.590000000000003
	.quad	0x4048deb851eb851f              # double 49.740000000000002
	.quad	0x4052a8f5c28f5c29              # double 74.64
	.quad	0x404ff1eb851eb852              # double 63.890000000000001
	.quad	0x405c1f5c28f5c28f              # double 112.48999999999999
	.quad	0x404a4ccccccccccd              # double 52.600000000000001
	.quad	0x4057a28f5c28f5c3              # double 94.540000000000006
	.quad	0x40513d70a3d70a3d              # double 68.959999999999994
	.quad	0x4059251eb851eb85              # double 100.58
	.quad	0x404d1d70a3d70a3d              # double 58.229999999999997
	.quad	0x4055fb851eb851ec              # double 87.930000000000007
	.quad	0x4046051eb851eb85              # double 44.039999999999999
	.quad	0x40556d70a3d70a3d              # double 85.709999999999993
	.quad	0x404be66666666666              # double 55.799999999999997
	.quad	0x4058528f5c28f5c3              # double 97.290000000000006
	.quad	0x405315c28f5c28f6              # double 76.340000000000003
	.quad	0x406039eb851eb852              # double 129.81
	.quad	0x4053cf5c28f5c28f              # double 79.239999999999994
	.quad	0x405d78f5c28f5c29              # double 117.89
	.quad	0x40564f5c28f5c28f              # double 89.239999999999994
	.quad	0x4060f7ae147ae148              # double 135.74000000000001
	.quad	0x402bc7ae147ae148              # double 13.890000000000001
	.quad	0x404c4f5c28f5c28f              # double 56.619999999999997
	.quad	0x40527e147ae147ae              # double 73.969999999999999
	.quad	0x405daf5c28f5c28f              # double 118.73999999999999
	.quad	0x405647ae147ae148              # double 89.120000000000005
	.quad	0x40608dc28f5c28f6              # double 132.43000000000001
	.quad	0x404a2b851eb851ec              # double 52.340000000000003
	.quad	0x405295c28f5c28f6              # double 74.340000000000003
	.quad	0x40511c28f5c28f5c              # double 68.439999999999998
	.quad	0x405bc33333333333              # double 111.05
	.quad	0x404768f5c28f5c29              # double 46.82
	.quad	0x40534851eb851eb8              # double 77.129999999999995
	.quad	0x4021c7ae147ae148              # double 8.8900000000000006
	.quad	0x4045970a3d70a3d7              # double 43.18
	.quad	0x4053000000000000              # double 76
	.quad	0x405dc7ae147ae148              # double 119.12
	.quad	0x40055c28f5c28f5c              # double 2.6699999999999999
	.quad	0x404aa28f5c28f5c3              # double 53.270000000000003
	.quad	0x40419eb851eb851f              # double 35.240000000000002
	.quad	0x405110a3d70a3d71              # double 68.260000000000005
	.quad	0x405258f5c28f5c29              # double 73.39
	.quad	0x40594147ae147ae1              # double 101.02
	.quad	0x4047b1eb851eb852              # double 47.390000000000001
	.quad	0x405be3d70a3d70a4              # double 111.56
	.quad	0x4044f5c28f5c28f6              # double 41.920000000000002
	.quad	0x40562b851eb851ec              # double 88.680000000000007
	.quad	0x405585c28f5c28f6              # double 86.090000000000003
	.quad	0x4061370a3d70a3d7              # double 137.72
	.quad	0x40108f5c28f5c28f              # double 4.1399999999999997
	.quad	0x4042000000000000              # double 36
	.quad	0x4047866666666666              # double 47.049999999999997
	.quad	0x4058b147ae147ae1              # double 98.769999999999996
	.quad	0x40492e147ae147ae              # double 50.359999999999999
	.quad	0x405a78f5c28f5c29              # double 105.89
	.quad	0x4046ca3d70a3d70a              # double 45.579999999999998
	.quad	0x4056051eb851eb85              # double 88.079999999999998
	.quad	0x4037a3d70a3d70a4              # double 23.640000000000001
	.quad	0x404ff9999999999a              # double 63.950000000000003
	.quad	0x40517ae147ae147b              # double 69.920000000000002
	.quad	0x405d000000000000              # double 116
	.quad	0x4003d70a3d70a3d7              # double 2.48
	.quad	0x4044051eb851eb85              # double 40.039999999999999
	.quad	0x404fab851eb851ec              # double 63.340000000000003
	.quad	0x405ab851eb851eb8              # double 106.88
	.quad	0x4057366666666666              # double 92.849999999999994
	.quad	0x4060928f5c28f5c3              # double 132.58000000000001
	.quad	0x40570b851eb851ec              # double 92.180000000000007
	.quad	0x40631428f5c28f5c              # double 152.63
	.quad	0x4054c51eb851eb85              # double 83.079999999999998
	.quad	0x4060a570a3d70a3d              # double 133.16999999999999
	.quad	0x4047a66666666666              # double 47.299999999999997
	.quad	0x4059e0a3d70a3d71              # double 103.51000000000001
	.quad	0x40569a3d70a3d70a              # double 90.409999999999997
	.quad	0x4062f4cccccccccd              # double 151.65000000000001
	.quad	0x40584e147ae147ae              # double 97.219999999999998
	.quad	0x40617ae147ae147b              # double 139.84
	.quad	0x4049d851eb851eb8              # double 51.689999999999998
	.quad	0x4055df5c28f5c28f              # double 87.489999999999994
	.quad	0x404b90a3d70a3d71              # double 55.130000000000003
	.quad	0x405793d70a3d70a4              # double 94.310000000000002
	.quad	0x402323d70a3d70a4              # double 9.5700000000000002
	.quad	0x404a4ccccccccccd              # double 52.600000000000001
	.quad	0x40560851eb851eb8              # double 88.129999999999995
	.quad	0x406084cccccccccd              # double 132.15000000000001
	.quad	0x402a75c28f5c28f6              # double 13.23
	.quad	0x40466ccccccccccd              # double 44.850000000000001
	.quad	0x40513f5c28f5c28f              # double 68.989999999999995
	.quad	0x405da66666666666              # double 118.59999999999999
	.quad	0x4044ab851eb851ec              # double 41.340000000000003
	.quad	0x4054b8f5c28f5c29              # double 82.89
	.quad	0x403bdc28f5c28f5c              # double 27.859999999999999
	.quad	0x4046e00000000000              # double 45.75
	.quad	0x40411eb851eb851f              # double 34.240000000000002
	.quad	0x4053600000000000              # double 77.5
	.quad	0x4043feb851eb851f              # double 39.990000000000002
	.quad	0x4053d147ae147ae1              # double 79.269999999999996
	.quad	0x3fdf5c28f5c28f5c              # double 0.48999999999999999
	.quad	0x403bf0a3d70a3d71              # double 27.940000000000001
	.quad	0x4030a8f5c28f5c29              # double 16.66
	.quad	0x404d0ccccccccccd              # double 58.100000000000001
	.quad	0x403130a3d70a3d71              # double 17.190000000000001
	.quad	0x404b828f5c28f5c3              # double 55.020000000000003
	.quad	0x4041200000000000              # double 34.25
	.quad	0x4055d00000000000              # double 87.25
	.quad	0x40502b851eb851ec              # double 64.680000000000007
	.quad	0x405ea851eb851eb8              # double 122.63
	.quad	0x4002f5c28f5c28f6              # double 2.3700000000000001
	.quad	0x404daa3d70a3d70a              # double 59.329999999999998
	.quad	0x40514c28f5c28f5c              # double 69.189999999999998
	.quad	0x405c970a3d70a3d7              # double 114.36
	.quad	0x40484f5c28f5c28f              # double 48.619999999999997
	.quad	0x405670a3d70a3d71              # double 89.760000000000005
	.quad	0x403b7ae147ae147b              # double 27.48
	.quad	0x4051bccccccccccd              # double 70.950000000000003
	.quad	0x4043c00000000000              # double 39.5
	.quad	0x4051deb851eb851f              # double 71.480000000000004
	.quad	0x4047e7ae147ae148              # double 47.810000000000002
	.quad	0x405527ae147ae148              # double 84.620000000000005
	.quad	0x404b4f5c28f5c28f              # double 54.619999999999997
	.quad	0x4053dc28f5c28f5c              # double 79.439999999999998
	.quad	0x403470a3d70a3d71              # double 20.440000000000001
	.quad	0x4051700000000000              # double 69.75
	.quad	0x4054aa3d70a3d70a              # double 82.659999999999997
	.quad	0x406093d70a3d70a4              # double 132.62
	.quad	0x40340a3d70a3d70a              # double 20.039999999999999
	.quad	0x4043ca3d70a3d70a              # double 39.579999999999998
	.quad	0x40537851eb851eb8              # double 77.879999999999995
	.quad	0x4061f47ae147ae14              # double 143.63999999999999
	.quad	0x3fea8f5c28f5c28f              # double 0.82999999999999996
	.quad	0x404628f5c28f5c29              # double 44.32
	.quad	0x4022851eb851eb85              # double 9.2599999999999998
	.quad	0x40444ccccccccccd              # double 40.600000000000001
	.quad	0x4052cc28f5c28f5c              # double 75.189999999999998
	.quad	0x405c15c28f5c28f6              # double 112.34
	.quad	0x4047947ae147ae14              # double 47.159999999999997
	.quad	0x4056d8f5c28f5c29              # double 91.39
	.quad	0x40401c28f5c28f5c              # double 32.219999999999999
	.quad	0x4051fb851eb851ec              # double 71.930000000000007
	.quad	0x4043a147ae147ae1              # double 39.259999999999998
	.quad	0x4055370a3d70a3d7              # double 84.859999999999999
	.quad	0x40430a3d70a3d70a              # double 38.079999999999998
	.quad	0x4053647ae147ae14              # double 77.569999999999993
	.quad	0x4040fae147ae147b              # double 33.960000000000001
	.quad	0x4052b00000000000              # double 74.75
	.quad	0x40506f5c28f5c28f              # double 65.739999999999995
	.quad	0x405b6147ae147ae1              # double 109.52
	.quad	0x4055a66666666666              # double 86.599999999999994
	.quad	0x40626c28f5c28f5c              # double 147.38
	.quad	0x40425851eb851eb8              # double 36.689999999999998
	.quad	0x4044a147ae147ae1              # double 41.259999999999998
	.quad	0x40568c28f5c28f5c              # double 90.189999999999998
	.quad	0x4061eccccccccccd              # double 143.40000000000001
	.quad	0x4048beb851eb851f              # double 49.490000000000002
	.quad	0x405847ae147ae148              # double 97.120000000000005
	.quad	0x4056a00000000000              # double 90.5
	.quad	0x40602c7ae147ae14              # double 129.38999999999999
	.quad	0x40551d70a3d70a3d              # double 84.459999999999993
	.quad	0x405c13d70a3d70a4              # double 112.31
	.quad	0x4015cccccccccccd              # double 5.4500000000000002
	.quad	0x403e75c28f5c28f6              # double 30.460000000000001
	.quad	0x4021a8f5c28f5c29              # double 8.8300000000000001
	.quad	0x404d9851eb851eb8              # double 59.189999999999998
	.quad	0x4053eeb851eb851f              # double 79.730000000000003
	.quad	0x405cc5c28f5c28f6              # double 115.09
	.quad	0x401ccccccccccccd              # double 7.2000000000000002
	.quad	0x404a30a3d70a3d71              # double 52.380000000000003
	.quad	0x4051deb851eb851f              # double 71.480000000000004
	.quad	0x4059f66666666666              # double 103.84999999999999
	.quad	0x4051570a3d70a3d7              # double 69.359999999999999
	.quad	0x405b3ccccccccccd              # double 108.95
	.quad	0x4057eb851eb851ec              # double 95.680000000000007
	.quad	0x40609b851eb851ec              # double 132.86000000000001
	.quad	0x40373ae147ae147b              # double 23.23
	.quad	0x404a23d70a3d70a4              # double 52.280000000000001
	.quad	0x402f5c28f5c28f5c              # double 15.68
	.quad	0x40479eb851eb851f              # double 47.240000000000002
	.quad	0x4056533333333333              # double 89.299999999999997
	.quad	0x4061847ae147ae14              # double 140.13999999999999
	.quad	0x4058d66666666666              # double 99.349999999999994
	.quad	0x406168f5c28f5c29              # double 139.28
	.quad	0x40168f5c28f5c28f              # double 5.6399999999999997
	.quad	0x4043a28f5c28f5c3              # double 39.270000000000003
	.quad	0x402175c28f5c28f6              # double 8.7300000000000004
	.quad	0x404dc8f5c28f5c29              # double 59.57
	.quad	0x4041000000000000              # double 34
	.quad	0x405047ae147ae148              # double 65.120000000000005
	.quad	0x403bb851eb851eb8              # double 27.719999999999999
	.quad	0x40505eb851eb851f              # double 65.480000000000004
	.quad	0x4017147ae147ae14              # double 5.7699999999999996
	.quad	0x404d533333333333              # double 58.649999999999999
	.quad	0x4048170a3d70a3d7              # double 48.18
	.quad	0x405293d70a3d70a4              # double 74.310000000000002
	.quad	0x403fe8f5c28f5c29              # double 31.91
	.quad	0x405439999999999a              # double 80.900000000000006
	.quad	0x4034547ae147ae14              # double 20.329999999999998
	.quad	0x404e71eb851eb852              # double 60.890000000000001
	.quad	0x403e07ae147ae148              # double 30.030000000000001
	.quad	0x40531d70a3d70a3d              # double 76.459999999999993
	.quad	0x3ff547ae147ae148              # double 1.3300000000000001
	.quad	0x4046733333333333              # double 44.899999999999999
	.quad	0x4053651eb851eb85              # double 77.579999999999998
	.quad	0x405c4ae147ae147b              # double 113.17
	.quad	0x404799999999999a              # double 47.200000000000003
	.quad	0x4055aae147ae147b              # double 86.670000000000001
	.quad	0x40564f5c28f5c28f              # double 89.239999999999994
	.quad	0x40620ccccccccccd              # double 144.40000000000001
	.quad	0x4041f70a3d70a3d7              # double 35.93
	.quad	0x40579147ae147ae1              # double 94.269999999999996
	.quad	0x405401eb851eb852              # double 80.030000000000001
	.quad	0x405ea1eb851eb852              # double 122.53
	.quad	0x401fe147ae147ae1              # double 7.9699999999999997
	.quad	0x4043e3d70a3d70a4              # double 39.780000000000001
	.quad	0x40542b851eb851ec              # double 80.680000000000007
	.quad	0x405cf51eb851eb85              # double 115.83
	.quad	0x4031170a3d70a3d7              # double 17.09
	.quad	0x4048f9999999999a              # double 49.950000000000003
	.quad	0x404599999999999a              # double 43.200000000000003
	.quad	0x40559d70a3d70a3d              # double 86.459999999999993
	.quad	0x4031a147ae147ae1              # double 17.629999999999999
	.quad	0x4044d33333333333              # double 41.649999999999999
	.quad	0x4047170a3d70a3d7              # double 46.18
	.quad	0x405403d70a3d70a4              # double 80.060000000000002
	.quad	0x4055d1eb851eb852              # double 87.280000000000001
	.quad	0x405f35c28f5c28f6              # double 124.84
	.quad	0x4012b851eb851eb8              # double 4.6799999999999997
	.quad	0x40434b851eb851ec              # double 38.590000000000003
	.quad	0x40557d70a3d70a3d              # double 85.959999999999993
	.quad	0x40621bd70a3d70a4              # double 144.87
	.quad	0x4018147ae147ae14              # double 6.0199999999999996
	.quad	0x404450a3d70a3d71              # double 40.630000000000003
	.quad	0x404e6f5c28f5c28f              # double 60.869999999999997
	.quad	0x4058c0a3d70a3d71              # double 99.010000000000005
	.quad	0x4044b1eb851eb852              # double 41.390000000000001
	.quad	0x405409999999999a              # double 80.150000000000006
	.quad	0x4047d1eb851eb852              # double 47.640000000000001
	.quad	0x40547ae147ae147b              # double 81.920000000000001
	.quad	0x4043c66666666666              # double 39.549999999999997
	.quad	0x4054b3d70a3d70a4              # double 82.810000000000002
	.quad	0x40465eb851eb851f              # double 44.740000000000002
	.quad	0x405998f5c28f5c29              # double 102.39
	.quad	0x40418147ae147ae1              # double 35.009999999999998
	.quad	0x4053933333333333              # double 78.299999999999997
	.quad	0x4043ee147ae147ae              # double 39.859999999999999
	.quad	0x4054328f5c28f5c3              # double 80.790000000000006
	.quad	0x40563f5c28f5c28f              # double 88.989999999999994
	.quad	0x406239999999999a              # double 145.80000000000001
	.quad	0x4011851eb851eb85              # double 4.3799999999999999
	.quad	0x40390ccccccccccd              # double 25.050000000000001
	.quad	0x403230a3d70a3d71              # double 18.190000000000001
	.quad	0x404d9851eb851eb8              # double 59.189999999999998
	.quad	0x404b451eb851eb85              # double 54.539999999999999
	.quad	0x405b1c28f5c28f5c              # double 108.44
	.quad	0x40445851eb851eb8              # double 40.689999999999998
	.quad	0x4050a5c28f5c28f6              # double 66.590000000000003
	.quad	0x403751eb851eb852              # double 23.32
	.quad	0x40504ccccccccccd              # double 65.200000000000003
	.quad	0x402c333333333333              # double 14.1
	.quad	0x40508d70a3d70a3d              # double 66.209999999999994
	.quad	0x40458147ae147ae1              # double 43.009999999999998
	.quad	0x4053866666666666              # double 78.099999999999994
	.quad	0x4046451eb851eb85              # double 44.539999999999999
	.quad	0x40549851eb851eb8              # double 82.379999999999995
	.quad	0x403d428f5c28f5c3              # double 29.260000000000002
	.quad	0x405407ae147ae148              # double 80.120000000000005
	.quad	0x4033f851eb851eb8              # double 19.969999999999999
	.quad	0x4051c147ae147ae1              # double 71.019999999999996
	.quad	0x4054c3d70a3d70a4              # double 83.060000000000002
	.quad	0x4061d33333333333              # double 142.59999999999999
	.quad	0x4056b3d70a3d70a4              # double 90.810000000000002
	.quad	0x40613d70a3d70a3d              # double 137.91999999999999
	.quad	0x40544851eb851eb8              # double 81.129999999999995
	.quad	0x405f7f5c28f5c28f              # double 125.98999999999999
	.quad	0x4058c33333333333              # double 99.049999999999997
	.quad	0x4061af5c28f5c28f              # double 141.47999999999999
	.quad	0x4043c7ae147ae148              # double 39.560000000000002
	.quad	0x40532f5c28f5c28f              # double 76.739999999999994
	.quad	0x4045b47ae147ae14              # double 43.409999999999997
	.quad	0x405191eb851eb852              # double 70.280000000000001
	.quad	0x40493c28f5c28f5c              # double 50.469999999999999
	.quad	0x405c60a3d70a3d71              # double 113.51000000000001
	.quad	0x403b5eb851eb851f              # double 27.370000000000001
	.quad	0x404cf0a3d70a3d71              # double 57.880000000000003
	.quad	0x4052528f5c28f5c3              # double 73.290000000000006
	.quad	0x405cea3d70a3d70a              # double 115.66
	.quad	0x40440b851eb851ec              # double 40.090000000000003
	.quad	0x405747ae147ae148              # double 93.120000000000005
	.quad	0x40010a3d70a3d70a              # double 2.1299999999999999
	.quad	0x40479ae147ae147b              # double 47.210000000000001
	.quad	0x4051ec28f5c28f5c              # double 71.689999999999998
	.quad	0x405e1eb851eb851f              # double 120.48
	.quad	0x4055728f5c28f5c3              # double 85.790000000000006
	.quad	0x405fa147ae147ae1              # double 126.52
	.quad	0x4037ca3d70a3d70a              # double 23.789999999999999
	.quad	0x404ec66666666666              # double 61.549999999999997
	.quad	0x403d1c28f5c28f5c              # double 29.109999999999999
	.quad	0x4053570a3d70a3d7              # double 77.359999999999999
	.quad	0x403c570a3d70a3d7              # double 28.34
	.quad	0x40542e147ae147ae              # double 80.719999999999999
	.quad	0x404819999999999a              # double 48.200000000000003
	.quad	0x405361eb851eb852              # double 77.530000000000001
	.quad	0x40559e147ae147ae              # double 86.469999999999999
	.quad	0x406233851eb851ec              # double 145.61000000000001
	.quad	0x4052f51eb851eb85              # double 75.829999999999998
	.quad	0x405d466666666666              # double 117.09999999999999
	.quad	0x404ac28f5c28f5c3              # double 53.520000000000003
	.quad	0x40519d70a3d70a3d              # double 70.459999999999994
	.quad	0x4044c00000000000              # double 41.5
	.quad	0x4054aae147ae147b              # double 82.670000000000001
	.quad	0x40568b851eb851ec              # double 90.180000000000007
	.quad	0x405e251eb851eb85              # double 120.58
	.quad	0x4034547ae147ae14              # double 20.329999999999998
	.quad	0x404348f5c28f5c29              # double 38.57
	.quad	0x4055b47ae147ae14              # double 86.819999999999993
	.quad	0x405f08f5c28f5c29              # double 124.14
	.quad	0x4046947ae147ae14              # double 45.159999999999997
	.quad	0x405873d70a3d70a4              # double 97.810000000000002
	.quad	0x404f71eb851eb852              # double 62.890000000000001
	.quad	0x4059100000000000              # double 100.25
	.quad	0x4043a00000000000              # double 39.25
	.quad	0x40583ae147ae147b              # double 96.920000000000001
	.quad	0x4035428f5c28f5c3              # double 21.260000000000002
	.quad	0x4044dd70a3d70a3d              # double 41.729999999999997
	.quad	0x4056aa3d70a3d70a              # double 90.659999999999997
	.quad	0x4060accccccccccd              # double 133.40000000000001
	.quad	0x404c5ae147ae147b              # double 56.710000000000001
	.quad	0x4054333333333333              # double 80.799999999999997
	.quad	0x3fec7ae147ae147b              # double 0.89000000000000001
	.quad	0x404a828f5c28f5c3              # double 53.020000000000003
	.quad	0x4043ef5c28f5c28f              # double 39.869999999999997
	.quad	0x405513d70a3d70a4              # double 84.310000000000002
	.quad	0x4029666666666666              # double 12.699999999999999
	.quad	0x40472147ae147ae1              # double 46.259999999999998
	.quad	0x404988f5c28f5c29              # double 51.07
	.quad	0x40555d70a3d70a3d              # double 85.459999999999993
	.quad	0x404c733333333333              # double 56.899999999999999
	.quad	0x4059100000000000              # double 100.25
	.quad	0x4052c51eb851eb85              # double 75.079999999999998
	.quad	0x405d1ccccccccccd              # double 116.45
	.quad	0x4047051eb851eb85              # double 46.039999999999999
	.quad	0x40565a3d70a3d70a              # double 89.409999999999997
	.quad	0x4042a147ae147ae1              # double 37.259999999999998
	.quad	0x4054a8f5c28f5c29              # double 82.64
	.quad	0x40556a3d70a3d70a              # double 85.659999999999997
	.quad	0x405f566666666666              # double 125.34999999999999
	.quad	0x40566eb851eb851f              # double 89.730000000000003
	.quad	0x405d57ae147ae148              # double 117.37
	.quad	0x40308f5c28f5c28f              # double 16.559999999999999
	.quad	0x404d9851eb851eb8              # double 59.189999999999998
	.quad	0x405159999999999a              # double 69.400000000000006
	.quad	0x405d2a3d70a3d70a              # double 116.66
	.quad	0x4052dccccccccccd              # double 75.450000000000002
	.quad	0x405e3c28f5c28f5c              # double 120.94
	.quad	0x404a347ae147ae14              # double 52.409999999999997
	.quad	0x4055a70a3d70a3d7              # double 86.609999999999999
	.quad	0x4022147ae147ae14              # double 9.0399999999999991
	.quad	0x40421eb851eb851f              # double 36.240000000000002
	.quad	0x4049866666666666              # double 51.049999999999997
	.quad	0x40574147ae147ae1              # double 93.019999999999996
	.quad	0x405887ae147ae148              # double 98.120000000000005
	.quad	0x40603f5c28f5c28f              # double 129.97999999999999
	.quad	0x4055d70a3d70a3d7              # double 87.359999999999999
	.quad	0x405cea3d70a3d70a              # double 115.66
	.quad	0x4044e51eb851eb85              # double 41.789999999999999
	.quad	0x4057347ae147ae14              # double 92.819999999999993
	.quad	0x404c600000000000              # double 56.75
	.quad	0x4058000000000000              # double 96
	.quad	0x404043d70a3d70a4              # double 32.530000000000001
	.quad	0x4056a28f5c28f5c3              # double 90.540000000000006
	.quad	0x40539d70a3d70a3d              # double 78.459999999999993
	.quad	0x4055c147ae147ae1              # double 87.019999999999996
	.quad	0x4057a28f5c28f5c3              # double 94.540000000000006
	.quad	0x4061afae147ae148              # double 141.49000000000001
	.quad	0x4051db851eb851ec              # double 71.430000000000007
	.quad	0x405cd7ae147ae148              # double 115.37
	.quad	0x4048accccccccccd              # double 49.350000000000001
	.quad	0x4053ff5c28f5c28f              # double 79.989999999999994
	.quad	0x40521f5c28f5c28f              # double 72.489999999999995
	.quad	0x405bd851eb851eb8              # double 111.38
	.quad	0x4047b851eb851eb8              # double 47.439999999999998
	.quad	0x4056d3d70a3d70a4              # double 91.310000000000002
	.quad	0x4058bae147ae147b              # double 98.920000000000001
	.quad	0x406058f5c28f5c29              # double 130.78
	.quad	0x401070a3d70a3d71              # double 4.1100000000000003
	.quad	0x404a4f5c28f5c28f              # double 52.619999999999997
	.quad	0x40347d70a3d70a3d              # double 20.489999999999998
	.quad	0x4044b5c28f5c28f6              # double 41.420000000000002
	.quad	0x4058970a3d70a3d7              # double 98.359999999999999
	.quad	0x40621a8f5c28f5c3              # double 144.83000000000001
	.quad	0x404c9eb851eb851f              # double 57.240000000000002
	.quad	0x40584c28f5c28f5c              # double 97.189999999999998
	.quad	0x40353d70a3d70a3d              # double 21.239999999999998
	.quad	0x40448ccccccccccd              # double 41.100000000000001
	.quad	0x404a570a3d70a3d7              # double 52.68
	.quad	0x405485c28f5c28f6              # double 82.090000000000003
	.quad	0x404c8f5c28f5c28f              # double 57.119999999999997
	.quad	0x405949999999999a              # double 101.15000000000001
	.quad	0x4050a5c28f5c28f6              # double 66.590000000000003
	.quad	0x405d09999999999a              # double 116.15000000000001
	.quad	0x4052b147ae147ae1              # double 74.769999999999996
	.quad	0x405ce28f5c28f5c3              # double 115.54000000000001
	.quad	0x4030e66666666666              # double 16.899999999999999
	.quad	0x404fcf5c28f5c28f              # double 63.619999999999997
	.quad	0x4040a00000000000              # double 33.25
	.quad	0x404e466666666666              # double 60.549999999999997
	.quad	0x40083d70a3d70a3d              # double 3.0299999999999998
	.quad	0x404743d70a3d70a4              # double 46.530000000000001
	.quad	0x403fe8f5c28f5c29              # double 31.91
	.quad	0x404d83d70a3d70a4              # double 59.030000000000001
	.quad	0x4045f851eb851eb8              # double 43.939999999999998
	.quad	0x405281eb851eb852              # double 74.030000000000001
	.quad	0x4050570a3d70a3d7              # double 65.359999999999999
	.quad	0x405ab51eb851eb85              # double 106.83
	.quad	0x40523d70a3d70a3d              # double 72.959999999999994
	.quad	0x405f500000000000              # double 125.25
	.quad	0x4038666666666666              # double 24.399999999999999
	.quad	0x4050e9999999999a              # double 67.650000000000006
	.quad	0x4035e147ae147ae1              # double 21.879999999999999
	.quad	0x404b83d70a3d70a4              # double 55.030000000000001
	.quad	0x4040800000000000              # double 33
	.quad	0x4053b9999999999a              # double 78.900000000000006
	.quad	0x40556b851eb851ec              # double 85.680000000000007
	.quad	0x40617b851eb851ec              # double 139.86000000000001
	.quad	0x4050247ae147ae14              # double 64.569999999999993
	.quad	0x405b0f5c28f5c28f              # double 108.23999999999999
	.quad	0x4037a147ae147ae1              # double 23.629999999999999
	.quad	0x404bae147ae147ae              # double 55.359999999999999
	.quad	0x404a90a3d70a3d71              # double 53.130000000000003
	.quad	0x4055e3d70a3d70a4              # double 87.560000000000002
	.quad	0x402e1eb851eb851f              # double 15.06
	.quad	0x40502e147ae147ae              # double 64.719999999999999
	.quad	0x4030b0a3d70a3d71              # double 16.690000000000001
	.quad	0x4047347ae147ae14              # double 46.409999999999997
	.quad	0x404da147ae147ae1              # double 59.259999999999998
	.quad	0x4051b51eb851eb85              # double 70.829999999999998
	.quad	0x4053651eb851eb85              # double 77.579999999999998
	.quad	0x405f666666666666              # double 125.59999999999999
	.quad	0x4047933333333333              # double 47.149999999999999
	.quad	0x4054ea3d70a3d70a              # double 83.659999999999997
	.quad	0x4051670a3d70a3d7              # double 69.609999999999999
	.quad	0x405ca33333333333              # double 114.55
	.quad	0x4057b28f5c28f5c3              # double 94.790000000000006
	.quad	0x40619147ae147ae1              # double 140.53999999999999
	.quad	0x4050be147ae147ae              # double 66.969999999999999
	.quad	0x405b847ae147ae14              # double 110.06999999999999
	.quad	0x403ec28f5c28f5c3              # double 30.760000000000002
	.quad	0x4053de147ae147ae              # double 79.469999999999999
	.quad	0x4057ea3d70a3d70a              # double 95.659999999999996
	.quad	0x4060c47ae147ae14              # double 134.13999999999999
	.quad	0x405551eb851eb852              # double 85.280000000000001
	.quad	0x405d066666666666              # double 116.09999999999999
	.quad	0x4045ca3d70a3d70a              # double 43.579999999999998
	.quad	0x40568f5c28f5c28f              # double 90.239999999999994
	.quad	0x40456f5c28f5c28f              # double 42.869999999999997
	.quad	0x4056e1eb851eb852              # double 91.530000000000001
	.quad	0x403f51eb851eb852              # double 31.32
	.quad	0x405037ae147ae148              # double 64.870000000000005
	.quad	0x404c200000000000              # double 56.25
	.quad	0x40588d70a3d70a3d              # double 98.209999999999993
	.quad	0x40536f5c28f5c28f              # double 77.739999999999994
	.quad	0x405b151eb851eb85              # double 108.33
	.quad	0x4056570a3d70a3d7              # double 89.359999999999999
	.quad	0x405f570a3d70a3d7              # double 125.36
	.quad	0x404fe51eb851eb85              # double 63.789999999999999
	.quad	0x405c59999999999a              # double 113.40000000000001
	.quad	0x3fed70a3d70a3d71              # double 0.92000000000000004
	.quad	0x4037cccccccccccd              # double 23.800000000000001
	.quad	0x404359999999999a              # double 38.700000000000003
	.quad	0x4057c3d70a3d70a4              # double 95.060000000000002
	.quad	0x4047ca3d70a3d70a              # double 47.579999999999998
	.quad	0x4056c9999999999a              # double 91.150000000000006
	.quad	0x401f333333333333              # double 7.7999999999999998
	.quad	0x404c947ae147ae14              # double 57.159999999999997
	.quad	0x405680a3d70a3d71              # double 90.010000000000005
	.quad	0x40609eb851eb851f              # double 132.96000000000001
	.quad	0x4040b9999999999a              # double 33.450000000000003
	.quad	0x40556a3d70a3d70a              # double 85.659999999999997
	.quad	0x403b0ccccccccccd              # double 27.050000000000001
	.quad	0x4058a66666666666              # double 98.599999999999994
	.quad	0x400ce147ae147ae1              # double 3.6099999999999999
	.quad	0x404767ae147ae148              # double 46.810000000000002
	.quad	0x4048e28f5c28f5c3              # double 49.770000000000003
	.quad	0x4056666666666666              # double 89.599999999999994
	.quad	0x405887ae147ae148              # double 98.120000000000005
	.quad	0x406187ae147ae148              # double 140.24000000000001
	.quad	0x40530d70a3d70a3d              # double 76.209999999999993
	.quad	0x405bfd70a3d70a3d              # double 111.95999999999999
	.quad	0x4045ee147ae147ae              # double 43.859999999999999
	.quad	0x4057a00000000000              # double 94.5
	.quad	0x4025f5c28f5c28f6              # double 10.98
	.quad	0x4042147ae147ae14              # double 36.159999999999997
	.quad	0x40543851eb851eb8              # double 80.879999999999995
	.quad	0x405f970a3d70a3d7              # double 126.36
	.quad	0x405183d70a3d70a4              # double 70.060000000000002
	.quad	0x40583eb851eb851f              # double 96.980000000000003
	.quad	0x404fe3d70a3d70a4              # double 63.780000000000001
	.quad	0x4057bccccccccccd              # double 94.950000000000002
	.quad	0x3fd147ae147ae148              # double 0.27000000000000002
	.quad	0x40423ae147ae147b              # double 36.460000000000001
	.quad	0x4032f33333333333              # double 18.949999999999999
	.quad	0x404df47ae147ae14              # double 59.909999999999997
	.quad	0x4010a3d70a3d70a4              # double 4.1600000000000001
	.quad	0x4031947ae147ae14              # double 17.579999999999998
	.quad	0x4038a66666666666              # double 24.649999999999999
	.quad	0x404c11eb851eb852              # double 56.140000000000001
	.quad	0x4047e3d70a3d70a4              # double 47.780000000000001
	.quad	0x405591eb851eb852              # double 86.280000000000001
	.quad	0x4053d147ae147ae1              # double 79.269999999999996
	.quad	0x405f65c28f5c28f6              # double 125.59
	.quad	0x4041eb851eb851ec              # double 35.840000000000003
	.quad	0x4053dae147ae147b              # double 79.420000000000001
	.quad	0x403e28f5c28f5c29              # double 30.16
	.quad	0x4052deb851eb851f              # double 75.480000000000003
	.quad	0x403ccf5c28f5c28f              # double 28.809999999999999
	.quad	0x4050cccccccccccd              # double 67.200000000000003
	.quad	0x4046b47ae147ae14              # double 45.409999999999997
	.quad	0x405641eb851eb852              # double 89.030000000000001
	.quad	0x401a851eb851eb85              # double 6.6299999999999999
	.quad	0x403f266666666666              # double 31.149999999999999
	.quad	0x4041a147ae147ae1              # double 35.259999999999998
	.quad	0x4054cf5c28f5c28f              # double 83.239999999999994
	.quad	0x40252e147ae147ae              # double 10.59
	.quad	0x404ab0a3d70a3d71              # double 53.380000000000003
	.quad	0x4011cccccccccccd              # double 4.4500000000000002
	.quad	0x403c266666666666              # double 28.149999999999999
	.quad	0x4044f851eb851eb8              # double 41.939999999999998
	.quad	0x4052a47ae147ae14              # double 74.569999999999993
	.quad	0x40577f5c28f5c28f              # double 93.989999999999994
	.quad	0x4061e1999999999a              # double 143.05000000000001
	.quad	0x40350a3d70a3d70a              # double 21.039999999999999
	.quad	0x404fe7ae147ae148              # double 63.810000000000002
	.quad	0x405857ae147ae148              # double 97.370000000000005
	.quad	0x40605e6666666666              # double 130.94999999999999
	.quad	0x40304f5c28f5c28f              # double 16.309999999999999
	.quad	0x40495d70a3d70a3d              # double 50.729999999999997
	.quad	0x401a47ae147ae148              # double 6.5700000000000003
	.quad	0x404967ae147ae148              # double 50.810000000000002
	.quad	0x404d051eb851eb85              # double 58.039999999999999
	.quad	0x405ad3d70a3d70a4              # double 107.31
	.quad	0x40328f5c28f5c28f              # double 18.559999999999999
	.quad	0x4049cccccccccccd              # double 51.600000000000001
	.quad	0x4046c51eb851eb85              # double 45.539999999999999
	.quad	0x4055f147ae147ae1              # double 87.769999999999996
	.quad	0x4056f66666666666              # double 91.849999999999994
	.quad	0x40616851eb851eb8              # double 139.25999999999999
	.quad	0x4041428f5c28f5c3              # double 34.520000000000003
	.quad	0x405028f5c28f5c29              # double 64.640000000000001
	.quad	0x4045c8f5c28f5c29              # double 43.57
	.quad	0x4055c8f5c28f5c29              # double 87.14
	.quad	0x402b51eb851eb852              # double 13.66
	.quad	0x4047228f5c28f5c3              # double 46.270000000000003
	.quad	0x40326147ae147ae1              # double 18.379999999999999
	.quad	0x404e933333333333              # double 61.149999999999999
	.quad	0x40507e147ae147ae              # double 65.969999999999999
	.quad	0x4057b47ae147ae14              # double 94.819999999999993
	.quad	0x4050fe147ae147ae              # double 67.969999999999999
	.quad	0x405b970a3d70a3d7              # double 110.36
	.quad	0x4034451eb851eb85              # double 20.27
	.quad	0x4044bd70a3d70a3d              # double 41.479999999999997
	.quad	0x404e63d70a3d70a4              # double 60.780000000000001
	.quad	0x40590147ae147ae1              # double 100.02
	.quad	0x4057c70a3d70a3d7              # double 95.109999999999999
	.quad	0x406070a3d70a3d71              # double 131.52000000000001
	.quad	0x4048dd70a3d70a3d              # double 49.729999999999997
	.quad	0x40583f5c28f5c28f              # double 96.989999999999994
	.quad	0x403e9eb851eb851f              # double 30.620000000000001
	.quad	0x40523d70a3d70a3d              # double 72.959999999999994
	.quad	0x4053d7ae147ae148              # double 79.370000000000005
	.quad	0x40603fae147ae148              # double 129.99000000000001
	.quad	0x402370a3d70a3d71              # double 9.7200000000000006
	.quad	0x404107ae147ae148              # double 34.060000000000002
	.quad	0x404dfc28f5c28f5c              # double 59.969999999999999
	.quad	0x405b53d70a3d70a4              # double 109.31
	.quad	0x40400e147ae147ae              # double 32.109999999999999
	.quad	0x405167ae147ae148              # double 69.620000000000005
	.quad	0x40350ccccccccccd              # double 21.050000000000001
	.quad	0x40482b851eb851ec              # double 48.340000000000003
	.quad	0x404a7ae147ae147b              # double 52.960000000000001
	.quad	0x405757ae147ae148              # double 93.370000000000005
	.quad	0x40580f5c28f5c28f              # double 96.239999999999994
	.quad	0x4063533333333333              # double 154.59999999999999
	.quad	0x4056ff5c28f5c28f              # double 91.989999999999994
	.quad	0x406071999999999a              # double 131.55000000000001
	.quad	0x404308f5c28f5c29              # double 38.07
	.quad	0x4053e1eb851eb852              # double 79.530000000000001
	.quad	0x40432ccccccccccd              # double 38.350000000000001
	.quad	0x405590a3d70a3d71              # double 86.260000000000005
	.quad	0x4025ae147ae147ae              # double 10.84
	.quad	0x404610a3d70a3d71              # double 44.130000000000003
	.quad	0x40538851eb851eb8              # double 78.129999999999995
	.quad	0x40624a3d70a3d70a              # double 146.31999999999999
	.quad	0x4050ba3d70a3d70a              # double 66.909999999999997
	.quad	0x40573e147ae147ae              # double 92.969999999999998
	.quad	0x402aeb851eb851ec              # double 13.460000000000001
	.quad	0x404690a3d70a3d71              # double 45.130000000000003
	.quad	0x4041ea3d70a3d70a              # double 35.829999999999998
	.quad	0x404dd47ae147ae14              # double 59.659999999999997
	.quad	0x402fd70a3d70a3d7              # double 15.92
	.quad	0x4048000000000000              # double 48
	.quad	0x40502f5c28f5c28f              # double 64.739999999999995
	.quad	0x405905c28f5c28f6              # double 100.09
	.quad	0x403dee147ae147ae              # double 29.93
	.quad	0x4054133333333333              # double 80.299999999999997
	.quad	0x3fe75c28f5c28f5c              # double 0.72999999999999998
	.quad	0x4040d5c28f5c28f6              # double 33.670000000000002
	.quad	0x403a147ae147ae14              # double 26.079999999999998
	.quad	0x404af5c28f5c28f6              # double 53.920000000000002
	.quad	0x404af47ae147ae14              # double 53.909999999999997
	.quad	0x4054e33333333333              # double 83.549999999999997
	.quad	0x4054547ae147ae14              # double 81.319999999999993
	.quad	0x405b6851eb851eb8              # double 109.63
	.quad	0x405361eb851eb852              # double 77.530000000000001
	.quad	0x405e033333333333              # double 120.05
	.quad	0x404c11eb851eb852              # double 56.140000000000001
	.quad	0x4055666666666666              # double 85.599999999999994
	.quad	0x4057a1eb851eb852              # double 94.530000000000001
	.quad	0x406074cccccccccd              # double 131.65000000000001
	.quad	0x404447ae147ae148              # double 40.560000000000002
	.quad	0x40553eb851eb851f              # double 84.980000000000003
	.quad	0x4055d147ae147ae1              # double 87.269999999999996
	.quad	0x405def5c28f5c28f              # double 119.73999999999999
	.quad	0x404d051eb851eb85              # double 58.039999999999999
	.quad	0x405bf8f5c28f5c29              # double 111.89
	.quad	0x4026333333333333              # double 11.1
	.quad	0x404b466666666666              # double 54.549999999999997
	.quad	0x402deb851eb851ec              # double 14.960000000000001
	.quad	0x4045d851eb851eb8              # double 43.689999999999998
	.quad	0x4027333333333333              # double 11.6
	.quad	0x4048370a3d70a3d7              # double 48.43
	.quad	0x4050570a3d70a3d7              # double 65.359999999999999
	.quad	0x405d670a3d70a3d7              # double 117.61
	.quad	0x404ac147ae147ae1              # double 53.509999999999998
	.quad	0x405697ae147ae148              # double 90.370000000000005
	.quad	0x4054c66666666666              # double 83.099999999999994
	.quad	0x405e500000000000              # double 121.25
	.quad	0x403f8ccccccccccd              # double 31.550000000000001
	.quad	0x4051eeb851eb851f              # double 71.730000000000004
	.quad	0x40515851eb851eb8              # double 69.379999999999995
	.quad	0x406071eb851eb852              # double 131.56
	.quad	0x4058547ae147ae14              # double 97.319999999999993
	.quad	0x40634147ae147ae1              # double 154.03999999999999
	.quad	0x4037f851eb851eb8              # double 23.969999999999999
	.quad	0x405071eb851eb852              # double 65.780000000000001
	.quad	0x4054a66666666666              # double 82.599999999999994
	.quad	0x406012e147ae147b              # double 128.59
	.quad	0x404479999999999a              # double 40.950000000000003
	.quad	0x4054951eb851eb85              # double 82.329999999999998
	.quad	0x401651eb851eb852              # double 5.5800000000000001
	.quad	0x402f147ae147ae14              # double 15.539999999999999
	.quad	0x404aab851eb851ec              # double 53.340000000000003
	.quad	0x405b0e147ae147ae              # double 108.22
	.quad	0x405345c28f5c28f6              # double 77.090000000000003
	.quad	0x405e4c28f5c28f5c              # double 121.19
	.quad	0x404407ae147ae148              # double 40.060000000000002
	.quad	0x4052ec28f5c28f5c              # double 75.689999999999998
	.quad	0x40332147ae147ae1              # double 19.129999999999999
	.quad	0x4052347ae147ae14              # double 72.819999999999993
	.quad	0x40437d70a3d70a3d              # double 38.979999999999997
	.quad	0x40553ccccccccccd              # double 84.950000000000002
	.quad	0x403c3ae147ae147b              # double 28.23
	.quad	0x4055528f5c28f5c3              # double 85.290000000000006
	.quad	0x403a11eb851eb852              # double 26.07
	.quad	0x40404a3d70a3d70a              # double 32.579999999999998
	.quad	0x4056170a3d70a3d7              # double 88.359999999999999
	.quad	0x40629947ae147ae1              # double 148.78999999999999
	.quad	0x404970a3d70a3d71              # double 50.880000000000003
	.quad	0x4058ae147ae147ae              # double 98.719999999999998
	.quad	0x4041428f5c28f5c3              # double 34.520000000000003
	.quad	0x40530e147ae147ae              # double 76.219999999999999
	.quad	0x40531ae147ae147b              # double 76.420000000000001
	.quad	0x405b0ae147ae147b              # double 108.17
	.quad	0x4055e51eb851eb85              # double 87.579999999999998
	.quad	0x406049eb851eb852              # double 130.31
	.quad	0x402c28f5c28f5c29              # double 14.08
	.quad	0x4045d47ae147ae14              # double 43.659999999999997
	.quad	0x4047deb851eb851f              # double 47.740000000000002
	.quad	0x405d233333333333              # double 116.55
	.quad	0x4050eae147ae147b              # double 67.670000000000002
	.quad	0x405cec28f5c28f5c              # double 115.69
	.quad	0x4054f47ae147ae14              # double 83.819999999999993
	.quad	0x4061b051eb851eb8              # double 141.50999999999999
	.quad	0x40498e147ae147ae              # double 51.109999999999999
	.quad	0x4055c66666666666              # double 87.099999999999994
	.quad	0x40462ccccccccccd              # double 44.350000000000001
	.quad	0x40593d70a3d70a3d              # double 100.95999999999999
	.quad	0x40577a3d70a3d70a              # double 93.909999999999996
	.quad	0x40613851eb851eb8              # double 137.75999999999999
	.quad	0x404335c28f5c28f6              # double 38.420000000000002
	.quad	0x405593d70a3d70a4              # double 86.310000000000002
	.quad	0x401428f5c28f5c29              # double 5.04
	.quad	0x404fdd70a3d70a3d              # double 63.729999999999997
	.quad	0x4057f1eb851eb852              # double 95.780000000000001
	.quad	0x40618e147ae147ae              # double 140.44
	.quad	0x40589d70a3d70a3d              # double 98.459999999999993
	.quad	0x4063600000000000              # double 155
	.quad	0x3ff599999999999a              # double 1.3500000000000001
	.quad	0x403da66666666666              # double 29.649999999999999
	.quad	0x4058e147ae147ae1              # double 99.519999999999996
	.quad	0x406230a3d70a3d71              # double 145.52000000000001
	.quad	0x4038400000000000              # double 24.25
	.quad	0x40500ccccccccccd              # double 64.200000000000003
	.quad	0x4025c7ae147ae148              # double 10.890000000000001
	.quad	0x404a428f5c28f5c3              # double 52.520000000000003
	.quad	0x404cd0a3d70a3d71              # double 57.630000000000003
	.quad	0x405be0a3d70a3d71              # double 111.51000000000001
	.quad	0x40537f5c28f5c28f              # double 77.989999999999994
	.quad	0x405bc70a3d70a3d7              # double 111.11
	.quad	0x404395c28f5c28f6              # double 39.170000000000002
	.quad	0x4050870a3d70a3d7              # double 66.109999999999999
	.quad	0x4041b70a3d70a3d7              # double 35.43
	.quad	0x4054c8f5c28f5c29              # double 83.14
	.quad	0x4041beb851eb851f              # double 35.490000000000002
	.quad	0x404f9eb851eb851f              # double 63.240000000000002
	.quad	0x4053670a3d70a3d7              # double 77.609999999999999
	.quad	0x405b9ccccccccccd              # double 110.45
	.quad	0x3ff8f5c28f5c28f6              # double 1.5600000000000001
	.quad	0x40458f5c28f5c28f              # double 43.119999999999997
	.quad	0x4057c1eb851eb852              # double 95.030000000000001
	.quad	0x4060400000000000              # double 130
	.quad	0x4039d47ae147ae14              # double 25.829999999999998
	.quad	0x405049999999999a              # double 65.150000000000006
	.quad	0x40574ae147ae147b              # double 93.170000000000001
	.quad	0x4060deb851eb851f              # double 134.96000000000001
	.quad	0x403fa147ae147ae1              # double 31.629999999999999
	.quad	0x405061eb851eb852              # double 65.530000000000001
	.quad	0x4058947ae147ae14              # double 98.319999999999993
	.quad	0x40619f0a3d70a3d7              # double 140.97
	.quad	0x40577f5c28f5c28f              # double 93.989999999999994
	.quad	0x405d470a3d70a3d7              # double 117.11
	.quad	0x4058e33333333333              # double 99.549999999999997
	.quad	0x40621bd70a3d70a4              # double 144.87
	.quad	0x4024428f5c28f5c3              # double 10.130000000000001
	.quad	0x4046266666666666              # double 44.299999999999997
	.quad	0x4037a147ae147ae1              # double 23.629999999999999
	.quad	0x404747ae147ae148              # double 46.560000000000002
	.quad	0x405257ae147ae148              # double 73.370000000000005
	.quad	0x4059f47ae147ae14              # double 103.81999999999999
	.quad	0x403c451eb851eb85              # double 28.27
	.quad	0x4052b00000000000              # double 74.75
	.quad	0x40557a3d70a3d70a              # double 85.909999999999997
	.quad	0x40604051eb851eb8              # double 130.00999999999999
	.quad	0x4048ea3d70a3d70a              # double 49.829999999999998
	.quad	0x40576ae147ae147b              # double 93.670000000000001
	.quad	0x4047af5c28f5c28f              # double 47.369999999999997
	.quad	0x405930a3d70a3d71              # double 100.76000000000001
	.quad	0x40564147ae147ae1              # double 89.019999999999996
	.quad	0x40602147ae147ae1              # double 129.03999999999999
	.quad	0x405398f5c28f5c29              # double 78.39
	.quad	0x405b4c28f5c28f5c              # double 109.19
	.quad	0x4053dccccccccccd              # double 79.450000000000002
	.quad	0x405c6ae147ae147b              # double 113.67
	.quad	0x40546e147ae147ae              # double 81.719999999999999
	.quad	0x405fb51eb851eb85              # double 126.83
	.quad	0x4030947ae147ae14              # double 16.579999999999998
	.quad	0x4047eccccccccccd              # double 47.850000000000001
	.quad	0x405498f5c28f5c29              # double 82.39
	.quad	0x4060e9999999999a              # double 135.30000000000001
	.quad	0x405245c28f5c28f6              # double 73.090000000000003
	.quad	0x405c27ae147ae148              # double 112.62
	.quad	0x40454b851eb851ec              # double 42.590000000000003
	.quad	0x405557ae147ae148              # double 85.370000000000005
	.quad	0x404563d70a3d70a4              # double 42.780000000000001
	.quad	0x4054766666666666              # double 81.849999999999994
	.quad	0x4048933333333333              # double 49.149999999999999
	.quad	0x40589e147ae147ae              # double 98.469999999999998
	.quad	0x404ea147ae147ae1              # double 61.259999999999998
	.quad	0x405aa47ae147ae14              # double 106.56999999999999
	.quad	0x404e228f5c28f5c3              # double 60.270000000000003
	.quad	0x405a0d70a3d70a3d              # double 104.20999999999999
	.quad	0x3ffb333333333333              # double 1.7
	.quad	0x4044828f5c28f5c3              # double 41.020000000000003
	.quad	0x403659999999999a              # double 22.350000000000001
	.quad	0x405108f5c28f5c29              # double 68.140000000000001
	.quad	0x4054e8f5c28f5c29              # double 83.64
	.quad	0x405d0e147ae147ae              # double 116.22
	.quad	0x40514b851eb851ec              # double 69.180000000000007
	.quad	0x40576851eb851eb8              # double 93.629999999999995
	.quad	0x402328f5c28f5c29              # double 9.58
	.quad	0x404e39999999999a              # double 60.450000000000003
	.quad	0x4027c28f5c28f5c3              # double 11.880000000000001
	.quad	0x4049f9999999999a              # double 51.950000000000003
	.quad	0x405763d70a3d70a4              # double 93.560000000000002
	.quad	0x4062aa8f5c28f5c3              # double 149.33000000000001
	.quad	0x4054b3d70a3d70a4              # double 82.810000000000002
	.quad	0x405f21eb851eb852              # double 124.53
	.quad	0x405349999999999a              # double 77.150000000000006
	.quad	0x405f0851eb851eb8              # double 124.13
	.quad	0x40543ae147ae147b              # double 80.920000000000001
	.quad	0x40600947ae147ae1              # double 128.28999999999999
	.quad	0x404748f5c28f5c29              # double 46.57
	.quad	0x4057cc28f5c28f5c              # double 95.189999999999998
	.quad	0x40567f5c28f5c28f              # double 89.989999999999994
	.quad	0x4060d47ae147ae14              # double 134.63999999999999
	.quad	0x40452b851eb851ec              # double 42.340000000000003
	.quad	0x405638f5c28f5c29              # double 88.89
	.quad	0x4034733333333333              # double 20.449999999999999
	.quad	0x4048ae147ae147ae              # double 49.359999999999999
	.quad	0x4017000000000000              # double 5.75
	.quad	0x40474b851eb851ec              # double 46.590000000000003
	.quad	0x405119999999999a              # double 68.400000000000006
	.quad	0x4055b5c28f5c28f6              # double 86.840000000000003
	.quad	0x4052266666666666              # double 72.599999999999994
	.quad	0x405d0f5c28f5c28f              # double 116.23999999999999
	.quad	0x4057ed70a3d70a3d              # double 95.709999999999993
	.quad	0x4061b8f5c28f5c29              # double 141.78
	.quad	0x40576147ae147ae1              # double 93.519999999999996
	.quad	0x405f4f5c28f5c28f              # double 125.23999999999999
	.quad	0x4050828f5c28f5c3              # double 66.040000000000006
	.quad	0x405b9ae147ae147b              # double 110.42
	.quad	0x40572a3d70a3d70a              # double 92.659999999999996
	.quad	0x4062500000000000              # double 146.5
	.quad	0x4057128f5c28f5c3              # double 92.290000000000006
	.quad	0x40636f0a3d70a3d7              # double 155.47
	.quad	0x4030d1eb851eb852              # double 16.82
	.quad	0x40488ccccccccccd              # double 49.100000000000001
	.quad	0x405455c28f5c28f6              # double 81.340000000000003
	.quad	0x405b3147ae147ae1              # double 108.77
	.quad	0x404347ae147ae148              # double 38.560000000000002
	.quad	0x4054eccccccccccd              # double 83.700000000000002
	.quad	0x405317ae147ae148              # double 76.370000000000005
	.quad	0x405eed70a3d70a3d              # double 123.70999999999999
	.quad	0x4053528f5c28f5c3              # double 77.290000000000006
	.quad	0x405ea7ae147ae148              # double 122.62
	.quad	0x402aa3d70a3d70a4              # double 13.32
	.quad	0x404ec66666666666              # double 61.549999999999997
	.quad	0x40526d70a3d70a3d              # double 73.709999999999993
	.quad	0x405bfae147ae147b              # double 111.92
	.quad	0x404ab1eb851eb852              # double 53.390000000000001
	.quad	0x405b2ae147ae147b              # double 108.67
	.quad	0x404e4e147ae147ae              # double 60.609999999999999
	.quad	0x405dfd70a3d70a3d              # double 119.95999999999999
	.quad	0x4019cccccccccccd              # double 6.4500000000000002
	.quad	0x4044228f5c28f5c3              # double 40.270000000000003
	.quad	0x40414a3d70a3d70a              # double 34.579999999999998
	.quad	0x405738f5c28f5c29              # double 92.89
	.quad	0x40569a3d70a3d70a              # double 90.409999999999997
	.quad	0x405fd8f5c28f5c29              # double 127.39
	.quad	0x40556eb851eb851f              # double 85.730000000000003
	.quad	0x405c6147ae147ae1              # double 113.52
	.quad	0x4049f47ae147ae14              # double 51.909999999999997
	.quad	0x405ac0a3d70a3d71              # double 107.01000000000001
	.quad	0x405235c28f5c28f6              # double 72.840000000000003
	.quad	0x405d5147ae147ae1              # double 117.27
	.quad	0x40538851eb851eb8              # double 78.129999999999995
	.quad	0x405c433333333333              # double 113.05
	.quad	0x405428f5c28f5c29              # double 80.64
	.quad	0x405cd9999999999a              # double 115.40000000000001
	.quad	0x404f000000000000              # double 62
	.quad	0x40587ccccccccccd              # double 97.950000000000002
	.quad	0x4043628f5c28f5c3              # double 38.770000000000003
	.quad	0x4053f33333333333              # double 79.799999999999997
	.quad	0x404b08f5c28f5c29              # double 54.07
	.quad	0x4055dd70a3d70a3d              # double 87.459999999999993
	.quad	0x4058b51eb851eb85              # double 98.829999999999998
	.quad	0x4065dc7ae147ae14              # double 174.88999999999999
	.quad	0x40487851eb851eb8              # double 48.939999999999998
	.quad	0x405623d70a3d70a4              # double 88.560000000000002
	.quad	0x402f2e147ae147ae              # double 15.59
	.quad	0x40477851eb851eb8              # double 46.939999999999998
	.quad	0x4033b33333333333              # double 19.699999999999999
	.quad	0x404c333333333333              # double 56.399999999999999
	.quad	0x405753d70a3d70a4              # double 93.310000000000002
	.quad	0x405e951eb851eb85              # double 122.33
	.quad	0x4022666666666666              # double 9.1999999999999993
	.quad	0x404d347ae147ae14              # double 58.409999999999997
	.quad	0x403a47ae147ae148              # double 26.280000000000001
	.quad	0x404aa7ae147ae148              # double 53.310000000000002
	.quad	0x405263d70a3d70a4              # double 73.560000000000002
	.quad	0x405bb8f5c28f5c29              # double 110.89
	.quad	0x404cfae147ae147b              # double 57.960000000000001
	.quad	0x4059733333333333              # double 101.8
	.quad	0x40477ae147ae147b              # double 46.960000000000001
	.quad	0x405229999999999a              # double 72.650000000000006
	.quad	0x4055c1eb851eb852              # double 87.030000000000001
	.quad	0x4060b851eb851eb8              # double 133.75999999999999
	.quad	0x404595c28f5c28f6              # double 43.170000000000002
	.quad	0x4050ee147ae147ae              # double 67.719999999999999
	.quad	0x405385c28f5c28f6              # double 78.090000000000003
	.quad	0x405a6d70a3d70a3d              # double 105.70999999999999
	.quad	0x4051d28f5c28f5c3              # double 71.290000000000006
	.quad	0x405da7ae147ae148              # double 118.62
	.quad	0x4009eb851eb851ec              # double 3.2400000000000002
	.quad	0x4048eccccccccccd              # double 49.850000000000001
	.quad	0x40140a3d70a3d70a              # double 5.0099999999999998
	.quad	0x403ab0a3d70a3d71              # double 26.690000000000001
	.quad	0x40527b851eb851ec              # double 73.930000000000007
	.quad	0x40589851eb851eb8              # double 98.379999999999995
	.quad	0x4029e66666666666              # double 12.949999999999999
	.quad	0x4042866666666666              # double 37.049999999999997
	.quad	0x4021f0a3d70a3d71              # double 8.9700000000000006
	.quad	0x404908f5c28f5c29              # double 50.07
	.quad	0x401bc28f5c28f5c3              # double 6.9400000000000004
	.quad	0x4048933333333333              # double 49.149999999999999
	.quad	0x404db0a3d70a3d71              # double 59.380000000000003
	.quad	0x4056033333333333              # double 88.049999999999997
	.quad	0x4046628f5c28f5c3              # double 44.770000000000003
	.quad	0x40550e147ae147ae              # double 84.219999999999999
	.quad	0x405011eb851eb852              # double 64.280000000000001
	.quad	0x405b070a3d70a3d7              # double 108.11
	.quad	0x4045c28f5c28f5c3              # double 43.520000000000003
	.quad	0x4053e3d70a3d70a4              # double 79.560000000000002
	.quad	0x4045933333333333              # double 43.149999999999999
	.quad	0x4055ab851eb851ec              # double 86.680000000000007
	.quad	0x404d47ae147ae148              # double 58.560000000000002
	.quad	0x405078f5c28f5c29              # double 65.890000000000001
	.quad	0x4017c28f5c28f5c3              # double 5.9400000000000004
	.quad	0x4039e8f5c28f5c29              # double 25.91
	.quad	0x404d7ae147ae147b              # double 58.960000000000001
	.quad	0x40592c28f5c28f5c              # double 100.69
	.quad	0x405493d70a3d70a4              # double 82.310000000000002
	.quad	0x405a41eb851eb852              # double 105.03
	.quad	0x4058f0a3d70a3d71              # double 99.760000000000005
	.quad	0x4062cccccccccccd              # double 150.40000000000001
	.quad	0x4031c28f5c28f5c3              # double 17.760000000000002
	.quad	0x40505eb851eb851f              # double 65.480000000000004
	.quad	0x403370a3d70a3d71              # double 19.440000000000001
	.quad	0x404c451eb851eb85              # double 56.539999999999999
	.quad	0x40503f5c28f5c28f              # double 64.989999999999995
	.quad	0x4059aae147ae147b              # double 102.67
	.quad	0x403391eb851eb852              # double 19.57
	.quad	0x405099999999999a              # double 66.400000000000006
	.quad	0x40548f5c28f5c28f              # double 82.239999999999994
	.quad	0x40609f5c28f5c28f              # double 132.97999999999999
	.quad	0x4053deb851eb851f              # double 79.480000000000003
	.quad	0x405d9851eb851eb8              # double 118.38
	.quad	0x404e68f5c28f5c29              # double 60.82
	.quad	0x4057fa3d70a3d70a              # double 95.909999999999996
	.quad	0x4020e66666666666              # double 8.4499999999999993
	.quad	0x40474ccccccccccd              # double 46.600000000000001
	.quad	0x40338f5c28f5c28f              # double 19.559999999999999
	.quad	0x404fc00000000000              # double 63.5
	.quad	0x402151eb851eb852              # double 8.6600000000000001
	.quad	0x4044ee147ae147ae              # double 41.859999999999999
	.quad	0x404a370a3d70a3d7              # double 52.43
	.quad	0x40578ae147ae147b              # double 94.170000000000001
	.quad	0x40468e147ae147ae              # double 45.109999999999999
	.quad	0x405518f5c28f5c29              # double 84.39
	.quad	0x4058fd70a3d70a3d              # double 99.959999999999993
	.quad	0x4061ddc28f5c28f6              # double 142.93000000000001
	.quad	0x40554851eb851eb8              # double 85.129999999999995
	.quad	0x40615570a3d70a3d              # double 138.66999999999999
	.quad	0x40333ae147ae147b              # double 19.23
	.quad	0x4047f47ae147ae14              # double 47.909999999999997
	.quad	0x404e651eb851eb85              # double 60.789999999999999
	.quad	0x4058f33333333333              # double 99.799999999999997
	.quad	0x40342b851eb851ec              # double 20.170000000000002
	.quad	0x4049d851eb851eb8              # double 51.689999999999998
	.quad	0x4057a0a3d70a3d71              # double 94.510000000000005
	.quad	0x405adccccccccccd              # double 107.45
	.quad	0x4053aa3d70a3d70a              # double 78.659999999999997
	.quad	0x405f5f5c28f5c28f              # double 125.48999999999999
	.quad	0x4049a66666666666              # double 51.299999999999997
	.quad	0x405777ae147ae148              # double 93.870000000000005
	.quad	0x4039547ae147ae14              # double 25.329999999999998
	.quad	0x4047b47ae147ae14              # double 47.409999999999997
	.quad	0x405248f5c28f5c29              # double 73.14
	.quad	0x40589c28f5c28f5c              # double 98.439999999999998
	.quad	0x4055a1eb851eb852              # double 86.530000000000001
	.quad	0x4061a47ae147ae14              # double 141.13999999999999
	.quad	0x4054551eb851eb85              # double 81.329999999999998
	.quad	0x406105c28f5c28f6              # double 136.18000000000001
	.quad	0x4032266666666666              # double 18.149999999999999
	.quad	0x404f9c28f5c28f5c              # double 63.219999999999999
	.quad	0x4041c28f5c28f5c3              # double 35.520000000000003
	.quad	0x4051be147ae147ae              # double 70.969999999999999
	.quad	0x4015147ae147ae14              # double 5.2699999999999996
	.quad	0x404288f5c28f5c29              # double 37.07
	.quad	0x405278f5c28f5c29              # double 73.89
	.quad	0x4060933333333333              # double 132.59999999999999
	.quad	0x40470e147ae147ae              # double 46.109999999999999
	.quad	0x4056766666666666              # double 89.849999999999994
	.quad	0x40511147ae147ae1              # double 68.269999999999996
	.quad	0x4056328f5c28f5c3              # double 88.790000000000006
	.quad	0x404a9d70a3d70a3d              # double 53.229999999999997
	.quad	0x40568c28f5c28f5c              # double 90.189999999999998
	.quad	0x404787ae147ae148              # double 47.060000000000002
	.quad	0x4053dae147ae147b              # double 79.420000000000001
	.quad	0x404ac51eb851eb85              # double 53.539999999999999
	.quad	0x40586147ae147ae1              # double 97.519999999999996
	.quad	0x4041370a3d70a3d7              # double 34.43
	.quad	0x4052b1eb851eb852              # double 74.780000000000001
	.quad	0x402b000000000000              # double 13.5
	.quad	0x404a71eb851eb852              # double 52.890000000000001
	.quad	0x40531851eb851eb8              # double 76.379999999999995
	.quad	0x40605a3d70a3d70a              # double 130.81999999999999
	.quad	0x405068f5c28f5c29              # double 65.640000000000001
	.quad	0x405889999999999a              # double 98.150000000000005
	.quad	0x404eee147ae147ae              # double 61.859999999999999
	.quad	0x405cc0a3d70a3d71              # double 115.01000000000001
	.quad	0x4042fc28f5c28f5c              # double 37.969999999999999
	.quad	0x40504147ae147ae1              # double 65.019999999999996
	.quad	0x4043228f5c28f5c3              # double 38.270000000000003
	.quad	0x4050570a3d70a3d7              # double 65.359999999999999
	.quad	0x4044770a3d70a3d7              # double 40.93
	.quad	0x4050300000000000              # double 64.75
	.quad	0x404b90a3d70a3d71              # double 55.130000000000003
	.quad	0x4058b47ae147ae14              # double 98.819999999999993
	.quad	0x4048733333333333              # double 48.899999999999999
	.quad	0x40542147ae147ae1              # double 80.519999999999996
	.quad	0x4057770a3d70a3d7              # double 93.859999999999999
	.quad	0x4062ce147ae147ae              # double 150.44
	.quad	0x404e47ae147ae148              # double 60.560000000000002
	.quad	0x4058d00000000000              # double 99.25
	.quad	0x404067ae147ae148              # double 32.810000000000002
	.quad	0x4051228f5c28f5c3              # double 68.540000000000006
	.quad	0x4051e00000000000              # double 71.5
	.quad	0x405aa00000000000              # double 106.5
	.quad	0x405107ae147ae148              # double 68.120000000000005
	.quad	0x405a57ae147ae148              # double 105.37
	.quad	0x402dae147ae147ae              # double 14.84
	.quad	0x4046cf5c28f5c28f              # double 45.619999999999997
	.quad	0x4041f5c28f5c28f6              # double 35.920000000000002
	.quad	0x40528ae147ae147b              # double 74.170000000000001
	.quad	0x4052233333333333              # double 72.549999999999997
	.quad	0x405eec28f5c28f5c              # double 123.69
	.quad	0x4051dc28f5c28f5c              # double 71.439999999999998
	.quad	0x405e1a3d70a3d70a              # double 120.41
	.quad	0x404599999999999a              # double 43.200000000000003
	.quad	0x4055f0a3d70a3d71              # double 87.760000000000005
	.quad	0x4037e3d70a3d70a4              # double 23.890000000000001
	.quad	0x4048651eb851eb85              # double 48.789999999999999
	.quad	0x4048e66666666666              # double 49.799999999999997
	.quad	0x405d48f5c28f5c29              # double 117.14
	.quad	0x404ee28f5c28f5c3              # double 61.770000000000003
	.quad	0x4056347ae147ae14              # double 88.819999999999993
	.quad	0x405269999999999a              # double 73.650000000000006
	.quad	0x405dab851eb851ec              # double 118.68000000000001
	.quad	0x4041651eb851eb85              # double 34.789999999999999
	.quad	0x4050470a3d70a3d7              # double 65.109999999999999
	.quad	0x405548f5c28f5c29              # double 85.14
	.quad	0x40607ccccccccccd              # double 131.90000000000001
	.quad	0x40380ccccccccccd              # double 24.050000000000001
	.quad	0x4050270a3d70a3d7              # double 64.609999999999999
	.quad	0x402047ae147ae148              # double 8.1400000000000006
	.quad	0x4040cb851eb851ec              # double 33.590000000000003
	.quad	0x4037828f5c28f5c3              # double 23.510000000000002
	.quad	0x4050b8f5c28f5c29              # double 66.890000000000001
	.quad	0x404b8a3d70a3d70a              # double 55.079999999999998
	.quad	0x40554e147ae147ae              # double 85.219999999999999
	.quad	0x40490a3d70a3d70a              # double 50.079999999999998
	.quad	0x40566ae147ae147b              # double 89.670000000000001
	.quad	0x405025c28f5c28f6              # double 64.590000000000003
	.quad	0x405b4147ae147ae1              # double 109.02
	.quad	0x4042628f5c28f5c3              # double 36.770000000000003
	.quad	0x405378f5c28f5c29              # double 77.89
	.quad	0x4013cccccccccccd              # double 4.9500000000000002
	.quad	0x4047b5c28f5c28f6              # double 47.420000000000002
	.quad	0x40561b851eb851ec              # double 88.430000000000007
	.quad	0x4061ef5c28f5c28f              # double 143.47999999999999
	.quad	0x405435c28f5c28f6              # double 80.840000000000003
	.quad	0x40603eb851eb851f              # double 129.96000000000001
	.quad	0x404cfae147ae147b              # double 57.960000000000001
	.quad	0x4058d70a3d70a3d7              # double 99.359999999999999
	.quad	0x4056228f5c28f5c3              # double 88.540000000000006
	.quad	0x40614b851eb851ec              # double 138.36000000000001
	.quad	0x404edae147ae147b              # double 61.710000000000001
	.quad	0x40574c28f5c28f5c              # double 93.189999999999998
	.quad	0x404b000000000000              # double 54
	.quad	0x405429999999999a              # double 80.650000000000006
	.quad	0x4056470a3d70a3d7              # double 89.109999999999999
	.quad	0x406028f5c28f5c29              # double 129.28
	.quad	0x40492f5c28f5c28f              # double 50.369999999999997
	.quad	0x4053ac28f5c28f5c              # double 78.689999999999998
	.quad	0x403ab851eb851eb8              # double 26.719999999999999
	.quad	0x404bfc28f5c28f5c              # double 55.969999999999999
	.quad	0x40392e147ae147ae              # double 25.18
	.quad	0x404d570a3d70a3d7              # double 58.68
	.quad	0x405740a3d70a3d71              # double 93.010000000000005
	.quad	0x406054cccccccccd              # double 130.65000000000001
	.quad	0x40450e147ae147ae              # double 42.109999999999999
	.quad	0x4052751eb851eb85              # double 73.829999999999998
	.quad	0x40528c28f5c28f5c              # double 74.189999999999998
	.quad	0x405c066666666666              # double 112.09999999999999
	.quad	0x403bf0a3d70a3d71              # double 27.940000000000001
	.quad	0x40523e147ae147ae              # double 72.969999999999999
	.quad	0x4057e7ae147ae148              # double 95.620000000000005
	.quad	0x405f63d70a3d70a4              # double 125.56
	.quad	0x4050151eb851eb85              # double 64.329999999999998
	.quad	0x405e1eb851eb851f              # double 120.48
	.quad	0x40555a3d70a3d70a              # double 85.409999999999997
	.quad	0x4060947ae147ae14              # double 132.63999999999999
	.quad	0x403ba147ae147ae1              # double 27.629999999999999
	.quad	0x4051200000000000              # double 68.5
	.quad	0x4044a51eb851eb85              # double 41.289999999999999
	.quad	0x40521f5c28f5c28f              # double 72.489999999999995
	.quad	0x4054b5c28f5c28f6              # double 82.840000000000003
	.quad	0x405d6f5c28f5c28f              # double 117.73999999999999
	.quad	0x403a428f5c28f5c3              # double 26.260000000000002
	.quad	0x40547851eb851eb8              # double 81.879999999999995
	.quad	0x4046b5c28f5c28f6              # double 45.420000000000002
	.quad	0x405079999999999a              # double 65.900000000000006
	.quad	0x4021c7ae147ae148              # double 8.8900000000000006
	.quad	0x404c10a3d70a3d71              # double 56.130000000000003
	.quad	0x4038d1eb851eb852              # double 24.82
	.quad	0x404ceb851eb851ec              # double 57.840000000000003
	.quad	0x404271eb851eb852              # double 36.890000000000001
	.quad	0x405261eb851eb852              # double 73.530000000000001
	.quad	0x404d08f5c28f5c29              # double 58.07
	.quad	0x405c528f5c28f5c3              # double 113.29000000000001
	.quad	0x405191eb851eb852              # double 70.280000000000001
	.quad	0x40590b851eb851ec              # double 100.18000000000001
	.quad	0x4051751eb851eb85              # double 69.829999999999998
	.quad	0x405f251eb851eb85              # double 124.58
	.quad	0x4052200000000000              # double 72.5
	.quad	0x4058a8f5c28f5c29              # double 98.64
	.quad	0x4045ae147ae147ae              # double 43.359999999999999
	.quad	0x4056b7ae147ae148              # double 90.870000000000005
	.quad	0x4056b5c28f5c28f6              # double 90.840000000000003
	.quad	0x4061e51eb851eb85              # double 143.16
	.quad	0x404d8ccccccccccd              # double 59.100000000000001
	.quad	0x40596eb851eb851f              # double 101.73
	.quad	0x4029851eb851eb85              # double 12.76
	.quad	0x404a28f5c28f5c29              # double 52.32
	.quad	0x403511eb851eb852              # double 21.07
	.quad	0x404d770a3d70a3d7              # double 58.93
	.quad	0x404c0147ae147ae1              # double 56.009999999999998
	.quad	0x405690a3d70a3d71              # double 90.260000000000005
	.quad	0x4022bd70a3d70a3d              # double 9.3699999999999992
	.quad	0x4048cccccccccccd              # double 49.600000000000001
	.quad	0x40170a3d70a3d70a              # double 5.7599999999999998
	.quad	0x404575c28f5c28f6              # double 42.920000000000002
	.quad	0x402d8f5c28f5c28f              # double 14.779999999999999
	.quad	0x404e7ae147ae147b              # double 60.960000000000001
	.quad	0x404fc7ae147ae148              # double 63.560000000000002
	.quad	0x406054cccccccccd              # double 130.65000000000001
	.quad	0x40556e147ae147ae              # double 85.719999999999999
	.quad	0x4060723d70a3d70a              # double 131.56999999999999
	.quad	0x402047ae147ae148              # double 8.1400000000000006
	.quad	0x404528f5c28f5c29              # double 42.32
	.quad	0x4058e8f5c28f5c29              # double 99.64
	.quad	0x4063b6b851eb851f              # double 157.71000000000001
	.quad	0x40197ae147ae147b              # double 6.3700000000000001
	.quad	0x40449d70a3d70a3d              # double 41.229999999999997
	.quad	0x4058433333333333              # double 97.049999999999997
	.quad	0x40608b3333333333              # double 132.34999999999999
	.quad	0x404aa8f5c28f5c29              # double 53.32
	.quad	0x4054fc28f5c28f5c              # double 83.939999999999998
	.quad	0x402be66666666666              # double 13.949999999999999
	.quad	0x404d651eb851eb85              # double 58.789999999999999
	.quad	0x4039e66666666666              # double 25.899999999999999
	.quad	0x4048f33333333333              # double 49.899999999999999
	.quad	0x4051466666666666              # double 69.099999999999994
	.quad	0x405361eb851eb852              # double 77.530000000000001
	.quad	0x405857ae147ae148              # double 97.370000000000005
	.quad	0x40626eb851eb851f              # double 147.46000000000001
	.quad	0x402dc28f5c28f5c3              # double 14.880000000000001
	.quad	0x404750a3d70a3d71              # double 46.630000000000003
	.quad	0x40540a3d70a3d70a              # double 80.159999999999997
	.quad	0x4060ae147ae147ae              # double 133.44
	.quad	0x40530eb851eb851f              # double 76.230000000000003
	.quad	0x405caae147ae147b              # double 114.67
	.quad	0x40368f5c28f5c28f              # double 22.559999999999999
	.quad	0x404ed70a3d70a3d7              # double 61.68
	.quad	0x4055d70a3d70a3d7              # double 87.359999999999999
	.quad	0x4060d9999999999a              # double 134.80000000000001
	.quad	0x404ac51eb851eb85              # double 53.539999999999999
	.quad	0x4057147ae147ae14              # double 92.319999999999993
	.quad	0x4049a66666666666              # double 51.299999999999997
	.quad	0x405928f5c28f5c29              # double 100.64
	.quad	0x4055028f5c28f5c3              # double 84.040000000000006
	.quad	0x406013d70a3d70a4              # double 128.62
	.quad	0x40426b851eb851ec              # double 36.840000000000003
	.quad	0x4050fccccccccccd              # double 67.950000000000003
	.quad	0x404cd9999999999a              # double 57.700000000000003
	.quad	0x4059a66666666666              # double 102.59999999999999
	.quad	0x403fcf5c28f5c28f              # double 31.809999999999999
	.quad	0x4051bd70a3d70a3d              # double 70.959999999999994
	.quad	0x4047c66666666666              # double 47.549999999999997
	.quad	0x40550ae147ae147b              # double 84.170000000000001
	.quad	0x40153d70a3d70a3d              # double 5.3099999999999996
	.quad	0x404a7851eb851eb8              # double 52.939999999999998
	.quad	0x40382147ae147ae1              # double 24.129999999999999
	.quad	0x40518e147ae147ae              # double 70.219999999999999
	.quad	0x4057aae147ae147b              # double 94.670000000000001
	.quad	0x406060a3d70a3d71              # double 131.02000000000001
	.quad	0x4053beb851eb851f              # double 78.980000000000003
	.quad	0x405c88f5c28f5c29              # double 114.14
	.quad	0x40563a3d70a3d70a              # double 88.909999999999997
	.quad	0x40623ae147ae147b              # double 145.84
	.quad	0x40412147ae147ae1              # double 34.259999999999998
	.quad	0x404c0e147ae147ae              # double 56.109999999999999
	.quad	0x405605c28f5c28f6              # double 88.090000000000003
	.quad	0x40600b3333333333              # double 128.34999999999999
	.quad	0x403b800000000000              # double 27.5
	.quad	0x4053647ae147ae14              # double 77.569999999999993
	.quad	0x4048e3d70a3d70a4              # double 49.780000000000001
	.quad	0x4058da3d70a3d70a              # double 99.409999999999996
	.quad	0x404f75c28f5c28f6              # double 62.920000000000002
	.quad	0x4057ba3d70a3d70a              # double 94.909999999999996
	.quad	0x4050cd70a3d70a3d              # double 67.209999999999994
	.quad	0x4058c70a3d70a3d7              # double 99.109999999999999
	.quad	0x4037170a3d70a3d7              # double 23.09
	.quad	0x404451eb851eb852              # double 40.640000000000001
	.quad	0x404b07ae147ae148              # double 54.060000000000002
	.quad	0x40571eb851eb851f              # double 92.480000000000003
	.quad	0x4007333333333333              # double 2.8999999999999999
	.quad	0x40484f5c28f5c28f              # double 48.619999999999997
	.quad	0x403d28f5c28f5c29              # double 29.16
	.quad	0x4050a1eb851eb852              # double 66.530000000000001
	.quad	0x4021666666666666              # double 8.6999999999999993
	.quad	0x404a3d70a3d70a3d              # double 52.479999999999997
	.quad	0x4056a33333333333              # double 90.549999999999997
	.quad	0x405c99999999999a              # double 114.40000000000001
	.quad	0x4045f9999999999a              # double 43.950000000000003
	.quad	0x4053970a3d70a3d7              # double 78.359999999999999
	.quad	0x4013c28f5c28f5c3              # double 4.9400000000000004
	.quad	0x4041feb851eb851f              # double 35.990000000000002
	.quad	0x404b7851eb851eb8              # double 54.939999999999998
	.quad	0x405628f5c28f5c29              # double 88.64
	.quad	0x404b547ae147ae14              # double 54.659999999999997
	.quad	0x40548eb851eb851f              # double 82.230000000000003
	.quad	0x4042866666666666              # double 37.049999999999997
	.quad	0x40537eb851eb851f              # double 77.980000000000003
	.quad	0x4046fc28f5c28f5c              # double 45.969999999999999
	.quad	0x4055b147ae147ae1              # double 86.769999999999996
	.quad	0x4057accccccccccd              # double 94.700000000000002
	.quad	0x4061e570a3d70a3d              # double 143.16999999999999
	.quad	0x40478b851eb851ec              # double 47.090000000000003
	.quad	0x4057170a3d70a3d7              # double 92.359999999999999
	.quad	0x404d147ae147ae14              # double 58.159999999999997
	.quad	0x4056547ae147ae14              # double 89.319999999999993
	.quad	0x3fe2e147ae147ae1              # double 0.58999999999999997
	.quad	0x4037970a3d70a3d7              # double 23.59
	.quad	0x404a747ae147ae14              # double 52.909999999999997
	.quad	0x40564b851eb851ec              # double 89.180000000000007
	.quad	0x4055cccccccccccd              # double 87.200000000000002
	.quad	0x406098a3d70a3d71              # double 132.77000000000001
	.quad	0x40341eb851eb851f              # double 20.120000000000001
	.quad	0x4052670a3d70a3d7              # double 73.609999999999999
	.quad	0x404c48f5c28f5c29              # double 56.57
	.quad	0x405b40a3d70a3d71              # double 109.01000000000001
	.quad	0x402bdc28f5c28f5c              # double 13.93
	.quad	0x404819999999999a              # double 48.200000000000003
	.quad	0x403b07ae147ae148              # double 27.030000000000001
	.quad	0x405055c28f5c28f6              # double 65.340000000000003
	.quad	0x403a99999999999a              # double 26.600000000000001
	.quad	0x4054428f5c28f5c3              # double 81.040000000000006
	.quad	0x402dcccccccccccd              # double 14.9
	.quad	0x405241eb851eb852              # double 73.030000000000001
	.quad	0x40403851eb851eb8              # double 32.439999999999998
	.quad	0x4051accccccccccd              # double 70.700000000000003
	.quad	0x4042bc28f5c28f5c              # double 37.469999999999999
	.quad	0x4055228f5c28f5c3              # double 84.540000000000006
	.quad	0x4045a51eb851eb85              # double 43.289999999999999
	.quad	0x40505eb851eb851f              # double 65.480000000000004
	.quad	0x404b3ae147ae147b              # double 54.460000000000001
	.quad	0x405691eb851eb852              # double 90.280000000000001
	.quad	0x4054f0a3d70a3d71              # double 83.760000000000005
	.quad	0x40612b851eb851ec              # double 137.36000000000001
	.quad	0x40314ccccccccccd              # double 17.300000000000001
	.quad	0x404db1eb851eb852              # double 59.390000000000001
	.quad	0x404a428f5c28f5c3              # double 52.520000000000003
	.quad	0x405741eb851eb852              # double 93.030000000000001
	.quad	0x4031e147ae147ae1              # double 17.879999999999999
	.quad	0x404f10a3d70a3d71              # double 62.130000000000003
	.quad	0x40316e147ae147ae              # double 17.43
	.quad	0x404de66666666666              # double 59.799999999999997
	.quad	0x400f851eb851eb85              # double 3.9399999999999999
	.quad	0x404547ae147ae148              # double 42.560000000000002
	.quad	0x404e947ae147ae14              # double 61.159999999999997
	.quad	0x40595d70a3d70a3d              # double 101.45999999999999
	.quad	0x40416a3d70a3d70a              # double 34.829999999999998
	.quad	0x4050cf5c28f5c28f              # double 67.239999999999995
	.quad	0x4042800000000000              # double 37
	.quad	0x40546e147ae147ae              # double 81.719999999999999
	.quad	0x401b99999999999a              # double 6.9000000000000004
	.quad	0x4046aa3d70a3d70a              # double 45.329999999999998
	.quad	0x4038333333333333              # double 24.199999999999999
	.quad	0x4052c7ae147ae148              # double 75.120000000000005
	.quad	0x403c800000000000              # double 28.5
	.quad	0x404fee147ae147ae              # double 63.859999999999999
	.quad	0x405001eb851eb852              # double 64.030000000000001
	.quad	0x405a600000000000              # double 105.5
	.quad	0x40571d70a3d70a3d              # double 92.459999999999993
	.quad	0x406159eb851eb852              # double 138.81
	.quad	0x4012f5c28f5c28f6              # double 4.7400000000000002
	.quad	0x40489ae147ae147b              # double 49.210000000000001
	.quad	0x404db5c28f5c28f6              # double 59.420000000000002
	.quad	0x405561eb851eb852              # double 85.530000000000001
	.quad	0x40372147ae147ae1              # double 23.129999999999999
	.quad	0x4050247ae147ae14              # double 64.569999999999993
	.quad	0x40448f5c28f5c28f              # double 41.119999999999997
	.quad	0x40514ae147ae147b              # double 69.170000000000002
	.quad	0x4052366666666666              # double 72.849999999999994
	.quad	0x405ff47ae147ae14              # double 127.81999999999999
	.quad	0x4040800000000000              # double 33
	.quad	0x4051f51eb851eb85              # double 71.829999999999998
	.quad	0x403011eb851eb852              # double 16.07
	.quad	0x403fb851eb851eb8              # double 31.719999999999999
	.quad	0x4030b0a3d70a3d71              # double 16.690000000000001
	.quad	0x405038f5c28f5c29              # double 64.890000000000001
	.quad	0x4058e00000000000              # double 99.5
	.quad	0x4060edc28f5c28f6              # double 135.43000000000001
	.quad	0x402823d70a3d70a4              # double 12.07
	.quad	0x404ee51eb851eb85              # double 61.789999999999999
	.quad	0x4034428f5c28f5c3              # double 20.260000000000002
	.quad	0x404e27ae147ae148              # double 60.310000000000002
	.quad	0x4052d0a3d70a3d71              # double 75.260000000000005
	.quad	0x405ba147ae147ae1              # double 110.52
	.quad	0x4020f0a3d70a3d71              # double 8.4700000000000006
	.quad	0x404df47ae147ae14              # double 59.909999999999997
	.quad	0x40314f5c28f5c28f              # double 17.309999999999999
	.quad	0x404a63d70a3d70a4              # double 52.780000000000001
	.quad	0x405575c28f5c28f6              # double 85.840000000000003
	.quad	0x405e733333333333              # double 121.8
	.quad	0x404fc3d70a3d70a4              # double 63.530000000000001
	.quad	0x405f59999999999a              # double 125.40000000000001
	.quad	0x4054db851eb851ec              # double 83.430000000000007
	.quad	0x4060fd70a3d70a3d              # double 135.91999999999999
	.quad	0x40461eb851eb851f              # double 44.240000000000002
	.quad	0x405480a3d70a3d71              # double 82.010000000000005
	.quad	0x4053d28f5c28f5c3              # double 79.290000000000006
	.quad	0x405e4f5c28f5c28f              # double 121.23999999999999
	.quad	0x4042c7ae147ae148              # double 37.560000000000002
	.quad	0x4050a51eb851eb85              # double 66.579999999999998
	.quad	0x40549e147ae147ae              # double 82.469999999999999
	.quad	0x405bed70a3d70a3d              # double 111.70999999999999
	.quad	0x4057847ae147ae14              # double 94.069999999999993
	.quad	0x406228f5c28f5c29              # double 145.28
	.quad	0x4036b33333333333              # double 22.699999999999999
	.quad	0x404ddeb851eb851f              # double 59.740000000000002
	.quad	0x40354f5c28f5c28f              # double 21.309999999999999
	.quad	0x404ad1eb851eb852              # double 53.640000000000001
	.quad	0x40439eb851eb851f              # double 39.240000000000002
	.quad	0x4055d28f5c28f5c3              # double 87.290000000000006
	.quad	0x4030170a3d70a3d7              # double 16.09
	.quad	0x40500147ae147ae1              # double 64.019999999999996
	.quad	0x404319999999999a              # double 38.200000000000003
	.quad	0x4052028f5c28f5c3              # double 72.040000000000006
	.quad	0x40514d70a3d70a3d              # double 69.209999999999994
	.quad	0x405cf33333333333              # double 115.8
	.quad	0x405387ae147ae148              # double 78.120000000000005
	.quad	0x4060f3d70a3d70a4              # double 135.62
	.quad	0x40444e147ae147ae              # double 40.609999999999999
	.quad	0x4055028f5c28f5c3              # double 84.040000000000006
	.quad	0x405795c28f5c28f6              # double 94.340000000000003
	.quad	0x4060080000000000              # double 128.25
	.quad	0x405675c28f5c28f6              # double 89.840000000000003
	.quad	0x406185c28f5c28f6              # double 140.18000000000001
	.quad	0x401470a3d70a3d71              # double 5.1100000000000003
	.quad	0x404863d70a3d70a4              # double 48.780000000000001
	.quad	0x4030a3d70a3d70a4              # double 16.640000000000001
	.quad	0x404ab851eb851eb8              # double 53.439999999999998
	.quad	0x40524c28f5c28f5c              # double 73.189999999999998
	.quad	0x405cfc28f5c28f5c              # double 115.94
	.quad	0x405805c28f5c28f6              # double 96.090000000000003
	.quad	0x406383d70a3d70a4              # double 156.12
	.quad	0x4053e70a3d70a3d7              # double 79.609999999999999
	.quad	0x40603eb851eb851f              # double 129.96000000000001
	.quad	0x4057f1eb851eb852              # double 95.780000000000001
	.quad	0x405faae147ae147b              # double 126.67
	.quad	0x402d947ae147ae14              # double 14.789999999999999
	.quad	0x4048bae147ae147b              # double 49.460000000000001
	.quad	0x4057c851eb851eb8              # double 95.129999999999995
	.quad	0x406329999999999a              # double 153.30000000000001
	.quad	0x3fea8f5c28f5c28f              # double 0.82999999999999996
	.quad	0x40410147ae147ae1              # double 34.009999999999998
	.quad	0x4048b47ae147ae14              # double 49.409999999999997
	.quad	0x405589999999999a              # double 86.150000000000006
	.quad	0x404ff70a3d70a3d7              # double 63.93
	.quad	0x405c933333333333              # double 114.3
	.quad	0x40534ae147ae147b              # double 77.170000000000001
	.quad	0x405f5147ae147ae1              # double 125.27
	.quad	0x40506d70a3d70a3d              # double 65.709999999999994
	.quad	0x405c95c28f5c28f6              # double 114.34
	.quad	0x4040251eb851eb85              # double 32.289999999999999
	.quad	0x405063d70a3d70a4              # double 65.560000000000002
	.quad	0x4044accccccccccd              # double 41.350000000000001
	.quad	0x40543ccccccccccd              # double 80.950000000000002
	.quad	0x403a170a3d70a3d7              # double 26.09
	.quad	0x404fca3d70a3d70a              # double 63.579999999999998
	.quad	0x405283d70a3d70a4              # double 74.060000000000002
	.quad	0x405cee147ae147ae              # double 115.72
	.quad	0x4057270a3d70a3d7              # double 92.609999999999999
	.quad	0x40630051eb851eb8              # double 152.00999999999999
	.quad	0x4033051eb851eb85              # double 19.02
	.quad	0x404aa147ae147ae1              # double 53.259999999999998
	.quad	0x405127ae147ae148              # double 68.620000000000005
	.quad	0x405c2d70a3d70a3d              # double 112.70999999999999
	.quad	0x40300f5c28f5c28f              # double 16.059999999999999
	.quad	0x40508851eb851eb8              # double 66.129999999999995
	.quad	0x404fce147ae147ae              # double 63.609999999999999
	.quad	0x405bfe147ae147ae              # double 111.97
	.quad	0x401fae147ae147ae              # double 7.9199999999999999
	.quad	0x403b8a3d70a3d70a              # double 27.539999999999999
	.quad	0x4042028f5c28f5c3              # double 36.020000000000003
	.quad	0x4057528f5c28f5c3              # double 93.290000000000006
	.quad	0x404a2f5c28f5c28f              # double 52.369999999999997
	.quad	0x405819999999999a              # double 96.400000000000005
	.quad	0x4056d51eb851eb85              # double 91.329999999999998
	.quad	0x406251999999999a              # double 146.55000000000001
	.quad	0x4058e66666666666              # double 99.599999999999994
	.quad	0x4061c947ae147ae1              # double 142.28999999999999
	.quad	0x4027000000000000              # double 11.5
	.quad	0x4045c147ae147ae1              # double 43.509999999999998
	.quad	0x403ef33333333333              # double 30.949999999999999
	.quad	0x4052ec28f5c28f5c              # double 75.689999999999998
	.quad	0x4045f33333333333              # double 43.899999999999999
	.quad	0x4058051eb851eb85              # double 96.079999999999998
	.quad	0x4058cc28f5c28f5c              # double 99.189999999999998
	.quad	0x4061fc7ae147ae14              # double 143.88999999999999
	.quad	0x4038cccccccccccd              # double 24.800000000000001
	.quad	0x4052347ae147ae14              # double 72.819999999999993
	.quad	0x404727ae147ae148              # double 46.310000000000002
	.quad	0x40554e147ae147ae              # double 85.219999999999999
	.quad	0x40291eb851eb851f              # double 12.56
	.quad	0x4045f33333333333              # double 43.899999999999999
	.quad	0x4025f0a3d70a3d71              # double 10.970000000000001
	.quad	0x40464e147ae147ae              # double 44.609999999999999
	.quad	0x4034f851eb851eb8              # double 20.969999999999999
	.quad	0x404f27ae147ae148              # double 62.310000000000002
	.quad	0x4008000000000000              # double 3
	.quad	0x4038333333333333              # double 24.199999999999999
	.quad	0x4042ca3d70a3d70a              # double 37.579999999999998
	.quad	0x4052e0a3d70a3d71              # double 75.510000000000005
	.quad	0x40242e147ae147ae              # double 10.09
	.quad	0x4044cf5c28f5c28f              # double 41.619999999999997
	.quad	0x4022c7ae147ae148              # double 9.3900000000000005
	.quad	0x4048d70a3d70a3d7              # double 49.68
	.quad	0x403999999999999a              # double 25.600000000000001
	.quad	0x4044628f5c28f5c3              # double 40.770000000000003
	.quad	0x405390a3d70a3d71              # double 78.260000000000005
	.quad	0x405b2f5c28f5c28f              # double 108.73999999999999
	.quad	0x40564ccccccccccd              # double 89.200000000000002
	.quad	0x40619b851eb851ec              # double 140.86000000000001
	.quad	0x403a9c28f5c28f5c              # double 26.609999999999999
	.quad	0x404ec147ae147ae1              # double 61.509999999999998
	.quad	0x40493c28f5c28f5c              # double 50.469999999999999
	.quad	0x4054200000000000              # double 80.5
	.quad	0x404848f5c28f5c29              # double 48.57
	.quad	0x40573a3d70a3d70a              # double 92.909999999999996
	.quad	0x4043ca3d70a3d70a              # double 39.579999999999998
	.quad	0x4054147ae147ae14              # double 80.319999999999993
	.quad	0x4041051eb851eb85              # double 34.039999999999999
	.quad	0x404ff1eb851eb852              # double 63.890000000000001
	.quad	0x404bb5c28f5c28f6              # double 55.420000000000002
	.quad	0x405bb851eb851eb8              # double 110.88
	.quad	0x4031147ae147ae14              # double 17.079999999999998
	.quad	0x404c7ae147ae147b              # double 56.960000000000001
	.quad	0x40517f5c28f5c28f              # double 69.989999999999995
	.quad	0x405d08f5c28f5c29              # double 116.14
	.quad	0x4040cb851eb851ec              # double 33.590000000000003
	.quad	0x40528e147ae147ae              # double 74.219999999999999
	.quad	0x402edc28f5c28f5c              # double 15.43
	.quad	0x40428a3d70a3d70a              # double 37.079999999999998
	.quad	0x404723d70a3d70a4              # double 46.280000000000001
	.quad	0x4054af5c28f5c28f              # double 82.739999999999994
	.quad	0x4054e851eb851eb8              # double 83.629999999999995
	.quad	0x4060f8a3d70a3d71              # double 135.77000000000001
	.quad	0x4040ae147ae147ae              # double 33.359999999999999
	.quad	0x40535147ae147ae1              # double 77.269999999999996
	.quad	0x4043170a3d70a3d7              # double 38.18
	.quad	0x404ee51eb851eb85              # double 61.789999999999999
	.quad	0x4040428f5c28f5c3              # double 32.520000000000003
	.quad	0x4056a1eb851eb852              # double 90.530000000000001
	.quad	0x40540e147ae147ae              # double 80.219999999999999
	.quad	0x405f333333333333              # double 124.8
	.quad	0x4057551eb851eb85              # double 93.329999999999998
	.quad	0x405d77ae147ae148              # double 117.87
	.quad	0x40444b851eb851ec              # double 40.590000000000003
	.quad	0x4057d66666666666              # double 95.349999999999994
	.quad	0x3fd3333333333333              # double 0.29999999999999999
	.quad	0x4045028f5c28f5c3              # double 42.020000000000003
	.quad	0x40407ae147ae147b              # double 32.960000000000001
	.quad	0x404aab851eb851ec              # double 53.340000000000003
	.quad	0x40488f5c28f5c28f              # double 49.119999999999997
	.quad	0x40525ccccccccccd              # double 73.450000000000002
	.quad	0x3fee666666666666              # double 0.94999999999999996
	.quad	0x4046ab851eb851ec              # double 45.340000000000003
	.quad	0x404a91eb851eb852              # double 53.140000000000001
	.quad	0x40587c28f5c28f5c              # double 97.939999999999998
	.quad	0x3fe6b851eb851eb8              # double 0.70999999999999996
	.quad	0x4043051eb851eb85              # double 38.039999999999999
	.quad	0x403e28f5c28f5c29              # double 30.16
	.quad	0x4051d9999999999a              # double 71.400000000000006
	.quad	0x40535eb851eb851f              # double 77.480000000000003
	.quad	0x405e4147ae147ae1              # double 121.02
	.quad	0x40496147ae147ae1              # double 50.759999999999998
	.quad	0x40540ae147ae147b              # double 80.170000000000001
	.quad	0x4037451eb851eb85              # double 23.27
	.quad	0x4050f28f5c28f5c3              # double 67.790000000000006
	.quad	0x4035c51eb851eb85              # double 21.77
	.quad	0x4044fd70a3d70a3d              # double 41.979999999999997
	.quad	0x404668f5c28f5c29              # double 44.82
	.quad	0x40523851eb851eb8              # double 72.879999999999995
	.quad	0x40487eb851eb851f              # double 48.990000000000002
	.quad	0x405bd51eb851eb85              # double 111.33
	.quad	0x401270a3d70a3d71              # double 4.6100000000000003
	.quad	0x404ab1eb851eb852              # double 53.390000000000001
	.quad	0x405559999999999a              # double 85.400000000000006
	.quad	0x405f9147ae147ae1              # double 126.27
	.quad	0x4050fae147ae147b              # double 67.920000000000002
	.quad	0x405ecd70a3d70a3d              # double 123.20999999999999
	.quad	0x4045147ae147ae14              # double 42.159999999999997
	.quad	0x4055a51eb851eb85              # double 86.579999999999998
	.quad	0x4038a147ae147ae1              # double 24.629999999999999
	.quad	0x404d066666666666              # double 58.049999999999997
	.quad	0x404b866666666666              # double 55.049999999999997
	.quad	0x4056633333333333              # double 89.549999999999997
	.quad	0x405455c28f5c28f6              # double 81.340000000000003
	.quad	0x405f5b851eb851ec              # double 125.43000000000001
	.quad	0x3ffd47ae147ae148              # double 1.8300000000000001
	.quad	0x404bef5c28f5c28f              # double 55.869999999999997
	.quad	0x404779999999999a              # double 46.950000000000003
	.quad	0x4059551eb851eb85              # double 101.33
	.quad	0x40520f5c28f5c28f              # double 72.239999999999995
	.quad	0x4061a66666666666              # double 141.19999999999999
	.quad	0x405727ae147ae148              # double 92.620000000000005
	.quad	0x405fe3d70a3d70a4              # double 127.56
	.quad	0x404763d70a3d70a4              # double 46.780000000000001
	.quad	0x4055b9999999999a              # double 86.900000000000006
	.quad	0x403b75c28f5c28f6              # double 27.460000000000001
	.quad	0x404e333333333333              # double 60.399999999999999
	.quad	0x403cc7ae147ae148              # double 28.780000000000001
	.quad	0x405011eb851eb852              # double 64.280000000000001
	.quad	0x4037deb851eb851f              # double 23.870000000000001
	.quad	0x4046228f5c28f5c3              # double 44.270000000000003
	.quad	0x405800a3d70a3d71              # double 96.010000000000005
	.quad	0x406399999999999a              # double 156.80000000000001
	.quad	0x4056fb851eb851ec              # double 91.930000000000007
	.quad	0x4061d1eb851eb852              # double 142.56
	.quad	0x40501f5c28f5c28f              # double 64.489999999999995
	.quad	0x4058b8f5c28f5c29              # double 98.89
	.quad	0x4057e33333333333              # double 95.549999999999997
	.quad	0x405ecb851eb851ec              # double 123.18000000000001
	.quad	0x4056c8f5c28f5c29              # double 91.14
	.quad	0x4062c051eb851eb8              # double 150.00999999999999
	.quad	0x4030cf5c28f5c28f              # double 16.809999999999999
	.quad	0x4049c28f5c28f5c3              # double 51.520000000000003
	.quad	0x403a851eb851eb85              # double 26.52
	.quad	0x405037ae147ae148              # double 64.870000000000005
	.quad	0x4036a8f5c28f5c29              # double 22.66
	.quad	0x405035c28f5c28f6              # double 64.840000000000003
	.quad	0x4057ef5c28f5c28f              # double 95.739999999999994
	.quad	0x40615eb851eb851f              # double 138.96000000000001
	.quad	0x4054d1eb851eb852              # double 83.280000000000001
	.quad	0x405a8c28f5c28f5c              # double 106.19
	.quad	0x404a9d70a3d70a3d              # double 53.229999999999997
	.quad	0x405cbc28f5c28f5c              # double 114.94
	.quad	0x404f6b851eb851ec              # double 62.840000000000003
	.quad	0x405f47ae147ae148              # double 125.12
	.quad	0x40408a3d70a3d70a              # double 33.079999999999998
	.quad	0x4053447ae147ae14              # double 77.069999999999993
	.quad	0x40178f5c28f5c28f              # double 5.8899999999999997
	.quad	0x404531eb851eb852              # double 42.390000000000001
	.quad	0x405481eb851eb852              # double 82.030000000000001
	.quad	0x405d37ae147ae148              # double 116.87
	.quad	0x4049b70a3d70a3d7              # double 51.43
	.quad	0x4057c51eb851eb85              # double 95.079999999999998
	.quad	0x40417c28f5c28f5c              # double 34.969999999999999
	.quad	0x4051db851eb851ec              # double 71.430000000000007
	.quad	0x40287ae147ae147b              # double 12.24
	.quad	0x404599999999999a              # double 43.200000000000003
	.quad	0x4043c00000000000              # double 39.5
	.quad	0x40540b851eb851ec              # double 80.180000000000007
	.quad	0x4034e66666666666              # double 20.899999999999999
	.quad	0x404a4b851eb851ec              # double 52.590000000000003
	.quad	0x4057b33333333333              # double 94.799999999999997
	.quad	0x4061cdc28f5c28f6              # double 142.43000000000001
	.quad	0x403cc51eb851eb85              # double 28.77
	.quad	0x4053066666666666              # double 76.099999999999994
	.quad	0x4035266666666666              # double 21.149999999999999
	.quad	0x4050533333333333              # double 65.299999999999997
	.quad	0x4040251eb851eb85              # double 32.289999999999999
	.quad	0x40517b851eb851ec              # double 69.930000000000007
	.quad	0x4041b9999999999a              # double 35.450000000000003
	.quad	0x405477ae147ae148              # double 81.870000000000005
	.quad	0x4046428f5c28f5c3              # double 44.520000000000003
	.quad	0x40527b851eb851ec              # double 73.930000000000007
	.quad	0x40429ae147ae147b              # double 37.210000000000001
	.quad	0x40563b851eb851ec              # double 88.930000000000007
	.quad	0x405331eb851eb852              # double 76.780000000000001
	.quad	0x405ef70a3d70a3d7              # double 123.86
	.quad	0x403fcccccccccccd              # double 31.800000000000001
	.quad	0x40543ae147ae147b              # double 80.920000000000001
	.quad	0x4058633333333333              # double 97.549999999999997
	.quad	0x4063870a3d70a3d7              # double 156.22
	.quad	0x40553b851eb851ec              # double 84.930000000000007
	.quad	0x406036147ae147ae              # double 129.69
	.quad	0x401aa3d70a3d70a4              # double 6.6600000000000001
	.quad	0x404011eb851eb852              # double 32.140000000000001
	.quad	0x403c6147ae147ae1              # double 28.379999999999999
	.quad	0x4051970a3d70a3d7              # double 70.359999999999999
	.quad	0x404f5eb851eb851f              # double 62.740000000000002
	.quad	0x40534851eb851eb8              # double 77.129999999999995
	.quad	0x405399999999999a              # double 78.400000000000006
	.quad	0x405897ae147ae148              # double 98.370000000000005
	.quad	0x40577f5c28f5c28f              # double 93.989999999999994
	.quad	0x40628bd70a3d70a4              # double 148.37
	.quad	0x403351eb851eb852              # double 19.32
	.quad	0x4050247ae147ae14              # double 64.569999999999993
	.quad	0x404ef33333333333              # double 61.899999999999999
	.quad	0x405ebe147ae147ae              # double 122.97
	.quad	0x404cb851eb851eb8              # double 57.439999999999998
	.quad	0x4054f70a3d70a3d7              # double 83.859999999999999
	.quad	0x403e0f5c28f5c28f              # double 30.059999999999999
	.quad	0x4053c8f5c28f5c29              # double 79.14
	.quad	0x40454b851eb851ec              # double 42.590000000000003
	.quad	0x405569999999999a              # double 85.650000000000006
	.quad	0x4051a5c28f5c28f6              # double 70.590000000000003
	.quad	0x405ad5c28f5c28f6              # double 107.34
	.quad	0x40585e147ae147ae              # double 97.469999999999998
	.quad	0x4061db851eb851ec              # double 142.86000000000001
	.quad	0x4053cf5c28f5c28f              # double 79.239999999999994
	.quad	0x406123851eb851ec              # double 137.11000000000001
	.quad	0x40366b851eb851ec              # double 22.420000000000002
	.quad	0x404cd1eb851eb852              # double 57.640000000000001
	.quad	0x4048e51eb851eb85              # double 49.789999999999999
	.quad	0x40580a3d70a3d70a              # double 96.159999999999996
	.quad	0x4006147ae147ae14              # double 2.7599999999999998
	.quad	0x404e11eb851eb852              # double 60.140000000000001
	.quad	0x404c451eb851eb85              # double 56.539999999999999
	.quad	0x40568851eb851eb8              # double 90.129999999999995
	.quad	0x4041b47ae147ae14              # double 35.409999999999997
	.quad	0x4053b00000000000              # double 78.75
	.quad	0x403cd1eb851eb852              # double 28.82
	.quad	0x4051447ae147ae14              # double 69.069999999999993
	.quad	0x4055f5c28f5c28f6              # double 87.840000000000003
	.quad	0x40619fae147ae148              # double 140.99000000000001
	.quad	0x4054be147ae147ae              # double 82.969999999999999
	.quad	0x405e628f5c28f5c3              # double 121.54000000000001
	.quad	0x4049970a3d70a3d7              # double 51.18
	.quad	0x40552147ae147ae1              # double 84.519999999999996
	.quad	0x404bbeb851eb851f              # double 55.490000000000002
	.quad	0x405c7e147ae147ae              # double 113.97
	.quad	0x4057c9999999999a              # double 95.150000000000005
	.quad	0x40611051eb851eb8              # double 136.50999999999999
	.quad	0x4025333333333333              # double 10.6
	.quad	0x404a27ae147ae148              # double 52.310000000000002
	.quad	0x4054c1eb851eb852              # double 83.030000000000001
	.quad	0x4061df5c28f5c28f              # double 142.97999999999999
	.quad	0x4027333333333333              # double 11.6
	.quad	0x40462a3d70a3d70a              # double 44.329999999999998
	.quad	0x4027cccccccccccd              # double 11.9
	.quad	0x40431eb851eb851f              # double 38.240000000000002
	.quad	0x40512eb851eb851f              # double 68.730000000000004
	.quad	0x405a228f5c28f5c3              # double 104.54000000000001
	.quad	0x404ad33333333333              # double 53.649999999999999
	.quad	0x40580a3d70a3d70a              # double 96.159999999999996
	.quad	0x4044b33333333333              # double 41.399999999999999
	.quad	0x4052d851eb851eb8              # double 75.379999999999995
	.quad	0x4045ea3d70a3d70a              # double 43.829999999999998
	.quad	0x40570b851eb851ec              # double 92.180000000000007
	.quad	0x4057a28f5c28f5c3              # double 94.540000000000006
	.quad	0x4061dd1eb851eb85              # double 142.91
	.quad	0x4034b851eb851eb8              # double 20.719999999999999
	.quad	0x4051847ae147ae14              # double 70.069999999999993
	.quad	0x405317ae147ae148              # double 76.370000000000005
	.quad	0x405d9c28f5c28f5c              # double 118.44
	.quad	0x403de3d70a3d70a4              # double 29.890000000000001
	.quad	0x404f933333333333              # double 63.149999999999999
	.quad	0x40543f5c28f5c28f              # double 80.989999999999994
	.quad	0x405c9eb851eb851f              # double 114.48
	.quad	0x4046a51eb851eb85              # double 45.289999999999999
	.quad	0x4058933333333333              # double 98.299999999999997
	.quad	0x40564eb851eb851f              # double 89.230000000000003
	.quad	0x406142e147ae147b              # double 138.09
	.quad	0x40224ccccccccccd              # double 9.1500000000000004
	.quad	0x4046ab851eb851ec              # double 45.340000000000003
	.quad	0x4037851eb851eb85              # double 23.52
	.quad	0x404eb0a3d70a3d71              # double 61.380000000000003
	.quad	0x40091eb851eb851f              # double 3.1400000000000001
	.quad	0x4047d9999999999a              # double 47.700000000000003
	.quad	0x4051e47ae147ae14              # double 71.569999999999993
	.quad	0x405ce51eb851eb85              # double 115.58
	.quad	0x404a9d70a3d70a3d              # double 53.229999999999997
	.quad	0x4056ff5c28f5c28f              # double 91.989999999999994
	.quad	0x4048b0a3d70a3d71              # double 49.380000000000003
	.quad	0x4056c9999999999a              # double 91.150000000000006
	.quad	0x4046e28f5c28f5c3              # double 45.770000000000003
	.quad	0x40520b851eb851ec              # double 72.180000000000007
	.quad	0x404bc7ae147ae148              # double 55.560000000000002
	.quad	0x40594eb851eb851f              # double 101.23
	.quad	0x40050a3d70a3d70a              # double 2.6299999999999999
	.quad	0x4042a8f5c28f5c29              # double 37.32
	.quad	0x4054eccccccccccd              # double 83.700000000000002
	.quad	0x4058dccccccccccd              # double 99.450000000000002
	.quad	0x40518d70a3d70a3d              # double 70.209999999999994
	.quad	0x405b0851eb851eb8              # double 108.13
	.quad	0x40494ccccccccccd              # double 50.600000000000001
	.quad	0x4057b1eb851eb852              # double 94.780000000000001
	.quad	0x404a87ae147ae148              # double 53.060000000000002
	.quad	0x40542f5c28f5c28f              # double 80.739999999999994
	.quad	0x40130a3d70a3d70a              # double 4.7599999999999998
	.quad	0x4045a51eb851eb85              # double 43.289999999999999
	.quad	0x4051c1eb851eb852              # double 71.030000000000001
	.quad	0x405c7d70a3d70a3d              # double 113.95999999999999
	.quad	0x4052947ae147ae14              # double 74.319999999999993
	.quad	0x405ef7ae147ae148              # double 123.87
	.quad	0x404c0e147ae147ae              # double 56.109999999999999
	.quad	0x405833d70a3d70a4              # double 96.810000000000002
	.quad	0x403bcccccccccccd              # double 27.800000000000001
	.quad	0x4047c8f5c28f5c29              # double 47.57
	.quad	0x40318a3d70a3d70a              # double 17.539999999999999
	.quad	0x404d028f5c28f5c3              # double 58.020000000000003
	.quad	0x404a7ae147ae147b              # double 52.960000000000001
	.quad	0x4056947ae147ae14              # double 90.319999999999993
	.quad	0x403b28f5c28f5c29              # double 27.16
	.quad	0x4051ea3d70a3d70a              # double 71.659999999999997
	.quad	0x4041b851eb851eb8              # double 35.439999999999998
	.quad	0x404d600000000000              # double 58.75
	.quad	0x404708f5c28f5c29              # double 46.07
	.quad	0x40581851eb851eb8              # double 96.379999999999995
	.quad	0x4055a147ae147ae1              # double 86.519999999999996
	.quad	0x4061c1eb851eb852              # double 142.06
	.quad	0x4044a3d70a3d70a4              # double 41.280000000000001
	.quad	0x405801eb851eb852              # double 96.030000000000001
	.quad	0x4049251eb851eb85              # double 50.289999999999999
	.quad	0x4053f5c28f5c28f6              # double 79.840000000000003
	.size	data, 16000

	.type	_Z11d_rms_errorPdS_S_P7point_t,@object # @_Z11d_rms_errorPdS_S_P7point_t
	.section	.rodata,"a",@progbits
	.globl	_Z11d_rms_errorPdS_S_P7point_t
	.p2align	3, 0x0
_Z11d_rms_errorPdS_S_P7point_t:
	.quad	_Z26__device_stub__d_rms_errorPdS_S_P7point_t
	.size	_Z11d_rms_errorPdS_S_P7point_t, 8

	.type	.L.str,@object                  # @.str
	.section	.rodata.str1.1,"aMS",@progbits,1
.L.str:
	.asciz	"hipMalloc on d_dm returned %d %s\n"
	.size	.L.str, 34

	.type	.L.str.1,@object                # @.str.1
.L.str.1:
	.asciz	"hipMalloc on d_dc returned %d %s\n"
	.size	.L.str.1, 34

	.type	.L.str.2,@object                # @.str.2
.L.str.2:
	.asciz	"hipMalloc on d_error_sum_arr returned %d %s\n"
	.size	.L.str.2, 45

	.type	.L.str.3,@object                # @.str.3
.L.str.3:
	.asciz	"hipMalloc on d_data returned %d %s\n"
	.size	.L.str.3, 36

	.type	.L.str.4,@object                # @.str.4
.L.str.4:
	.asciz	"hipMemcpy to d_dm returned %d %s\n"
	.size	.L.str.4, 34

	.type	.L.str.5,@object                # @.str.5
.L.str.5:
	.asciz	"hipMemcpy to d_dc returned %d %s\n"
	.size	.L.str.5, 34

	.type	.L.str.6,@object                # @.str.6
.L.str.6:
	.asciz	"hipMemcpy to d_data returned %d %s\n"
	.size	.L.str.6, 36

	.type	.L.str.7,@object                # @.str.7
.L.str.7:
	.asciz	"hipMemcpy to error_sum returned %d %s\n"
	.size	.L.str.7, 39

	.type	.L.str.8,@object                # @.str.8
.L.str.8:
	.asciz	"hipFree on d_dm returned %d %s\n"
	.size	.L.str.8, 32

	.type	.L.str.9,@object                # @.str.9
.L.str.9:
	.asciz	"hipFree on d_dc returned %d %s\n"
	.size	.L.str.9, 32

	.type	.L.str.10,@object               # @.str.10
.L.str.10:
	.asciz	"hipFree on d_data returned %d %s\n"
	.size	.L.str.10, 34

	.type	.L.str.11,@object               # @.str.11
.L.str.11:
	.asciz	"hipFree on d_error_sum_arr returned %d %s\n"
	.size	.L.str.11, 43

	.type	.L.str.12,@object               # @.str.12
.L.str.12:
	.asciz	"minimum m,c is %lf,%lf with error %lf\n"
	.size	.L.str.12, 39

	.type	.L.str.13,@object               # @.str.13
.L.str.13:
	.asciz	"Time elapsed was %lldns or %0.9lfs\n"
	.size	.L.str.13, 36

	.type	.L__unnamed_1,@object           # @0
.L__unnamed_1:
	.asciz	"_Z11d_rms_errorPdS_S_P7point_t"
	.size	.L__unnamed_1, 31

	.type	.L__unnamed_2,@object           # @1
.L__unnamed_2:
	.asciz	"d_n_data"
	.size	.L__unnamed_2, 9

	.type	__hip_fatbin_wrapper,@object    # @__hip_fatbin_wrapper
	.section	.hipFatBinSegment,"a",@progbits
	.p2align	3, 0x0
__hip_fatbin_wrapper:
	.long	1212764230                      # 0x48495046
	.long	1                               # 0x1
	.quad	__hip_fatbin
	.quad	0
	.size	__hip_fatbin_wrapper, 24

	.type	__hip_gpubin_handle,@object     # @__hip_gpubin_handle
	.local	__hip_gpubin_handle
	.comm	__hip_gpubin_handle,8,8
	.section	.init_array,"aw",@init_array
	.p2align	3, 0x0
	.quad	__hip_module_ctor
	.type	__hip_cuid_,@object             # @__hip_cuid_
	.bss
	.globl	__hip_cuid_
__hip_cuid_:
	.byte	0                               # 0x0
	.size	__hip_cuid_, 1

	.ident	"AMD clang version 18.0.0git (https://github.com/RadeonOpenCompute/llvm-project roc-6.3.2 25012 e5bf7e55c91490b07c49d8960fa7983d864936c4)"
	.section	".note.GNU-stack","",@progbits
	.addrsig
	.addrsig_sym _Z26__device_stub__d_rms_errorPdS_S_P7point_t
	.addrsig_sym __hip_module_ctor
	.addrsig_sym __hip_module_dtor
	.addrsig_sym d_n_data
	.addrsig_sym data
	.addrsig_sym _Z11d_rms_errorPdS_S_P7point_t
	.addrsig_sym __hip_fatbin
	.addrsig_sym __hip_fatbin_wrapper
	.addrsig_sym __hip_cuid_

	.text
	.amdgcn_target "amdgcn-amd-amdhsa--gfx1100"
	.protected	_Z11d_rms_errorPdS_S_P7point_t ; -- Begin function _Z11d_rms_errorPdS_S_P7point_t
	.globl	_Z11d_rms_errorPdS_S_P7point_t
	.p2align	8
	.type	_Z11d_rms_errorPdS_S_P7point_t,@function
_Z11d_rms_errorPdS_S_P7point_t:         ; @_Z11d_rms_errorPdS_S_P7point_t
; %bb.0:
	s_clause 0x1
	s_load_b32 s8, s[0:1], 0x2c
	s_load_b256 s[0:7], s[0:1], 0x0
	s_waitcnt lgkmcnt(0)
	s_and_b32 s8, s8, 0xffff
	s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_mad_u64_u32 v[4:5], null, s15, s8, v[0:1]
	v_ashrrev_i32_e32 v5, 31, v4
	s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
	v_lshlrev_b64 v[0:1], 4, v[4:5]
	v_add_co_u32 v0, vcc_lo, s6, v0
	s_delay_alu instid0(VALU_DEP_2)
	v_add_co_ci_u32_e32 v1, vcc_lo, s7, v1, vcc_lo
	global_load_b128 v[0:3], v[0:1], off
	s_load_b64 s[0:1], s[0:1], 0x0
	s_load_b64 s[2:3], s[2:3], 0x0
	s_waitcnt vmcnt(0) lgkmcnt(0)
	v_fma_f64 v[0:1], v[0:1], s[0:1], s[2:3]
	s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)
	v_add_f64 v[0:1], v[0:1], -v[2:3]
	v_lshlrev_b64 v[2:3], 3, v[4:5]
	v_add_co_u32 v2, vcc_lo, s4, v2
	s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_4)
	v_add_co_ci_u32_e32 v3, vcc_lo, s5, v3, vcc_lo
	v_mul_f64 v[0:1], v[0:1], v[0:1]
	global_store_b64 v[2:3], v[0:1], off
	s_nop 0
	s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
	s_endpgm
	.section	.rodata,"a",@progbits
	.p2align	6, 0x0
	.amdhsa_kernel _Z11d_rms_errorPdS_S_P7point_t
		.amdhsa_group_segment_fixed_size 0
		.amdhsa_private_segment_fixed_size 0
		.amdhsa_kernarg_size 288
		.amdhsa_user_sgpr_count 15
		.amdhsa_user_sgpr_dispatch_ptr 0
		.amdhsa_user_sgpr_queue_ptr 0
		.amdhsa_user_sgpr_kernarg_segment_ptr 1
		.amdhsa_user_sgpr_dispatch_id 0
		.amdhsa_user_sgpr_private_segment_size 0
		.amdhsa_wavefront_size32 1
		.amdhsa_uses_dynamic_stack 0
		.amdhsa_enable_private_segment 0
		.amdhsa_system_sgpr_workgroup_id_x 1
		.amdhsa_system_sgpr_workgroup_id_y 0
		.amdhsa_system_sgpr_workgroup_id_z 0
		.amdhsa_system_sgpr_workgroup_info 0
		.amdhsa_system_vgpr_workitem_id 0
		.amdhsa_next_free_vgpr 6
		.amdhsa_next_free_sgpr 16
		.amdhsa_float_round_mode_32 0
		.amdhsa_float_round_mode_16_64 0
		.amdhsa_float_denorm_mode_32 3
		.amdhsa_float_denorm_mode_16_64 3
		.amdhsa_dx10_clamp 1
		.amdhsa_ieee_mode 1
		.amdhsa_fp16_overflow 0
		.amdhsa_workgroup_processor_mode 1
		.amdhsa_memory_ordered 1
		.amdhsa_forward_progress 0
		.amdhsa_shared_vgpr_count 0
		.amdhsa_exception_fp_ieee_invalid_op 0
		.amdhsa_exception_fp_denorm_src 0
		.amdhsa_exception_fp_ieee_div_zero 0
		.amdhsa_exception_fp_ieee_overflow 0
		.amdhsa_exception_fp_ieee_underflow 0
		.amdhsa_exception_fp_ieee_inexact 0
		.amdhsa_exception_int_div_zero 0
	.end_amdhsa_kernel
	.text
.Lfunc_end0:
	.size	_Z11d_rms_errorPdS_S_P7point_t, .Lfunc_end0-_Z11d_rms_errorPdS_S_P7point_t
                                        ; -- End function
	.section	.AMDGPU.csdata,"",@progbits
; Kernel info:
; codeLenInByte = 176
; NumSgprs: 18
; NumVgprs: 6
; ScratchSize: 0
; MemoryBound: 0
; FloatMode: 240
; IeeeMode: 1
; LDSByteSize: 0 bytes/workgroup (compile time only)
; SGPRBlocks: 2
; VGPRBlocks: 0
; NumSGPRsForWavesPerEU: 18
; NumVGPRsForWavesPerEU: 6
; Occupancy: 16
; WaveLimiterHint : 0
; COMPUTE_PGM_RSRC2:SCRATCH_EN: 0
; COMPUTE_PGM_RSRC2:USER_SGPR: 15
; COMPUTE_PGM_RSRC2:TRAP_HANDLER: 0
; COMPUTE_PGM_RSRC2:TGID_X_EN: 1
; COMPUTE_PGM_RSRC2:TGID_Y_EN: 0
; COMPUTE_PGM_RSRC2:TGID_Z_EN: 0
; COMPUTE_PGM_RSRC2:TIDIG_COMP_CNT: 0
	.text
	.p2alignl 7, 3214868480
	.fill 96, 4, 3214868480
	.protected	d_n_data                ; @d_n_data
	.type	d_n_data,@object
	.data
	.globl	d_n_data
	.p2align	2, 0x0
d_n_data:
	.long	1000                            ; 0x3e8
	.size	d_n_data, 4

	.type	__hip_cuid_,@object             ; @__hip_cuid_
	.section	.bss,"aw",@nobits
	.globl	__hip_cuid_
__hip_cuid_:
	.byte	0                               ; 0x0
	.size	__hip_cuid_, 1

	.ident	"AMD clang version 18.0.0git (https://github.com/RadeonOpenCompute/llvm-project roc-6.3.2 25012 e5bf7e55c91490b07c49d8960fa7983d864936c4)"
	.section	".note.GNU-stack","",@progbits
	.addrsig
	.addrsig_sym __hip_cuid_
	.amdgpu_metadata
---
amdhsa.kernels:
  - .args:
      - .address_space:  global
        .offset:         0
        .size:           8
        .value_kind:     global_buffer
      - .address_space:  global
        .offset:         8
        .size:           8
        .value_kind:     global_buffer
      - .address_space:  global
        .offset:         16
        .size:           8
        .value_kind:     global_buffer
      - .address_space:  global
        .offset:         24
        .size:           8
        .value_kind:     global_buffer
      - .offset:         32
        .size:           4
        .value_kind:     hidden_block_count_x
      - .offset:         36
        .size:           4
        .value_kind:     hidden_block_count_y
      - .offset:         40
        .size:           4
        .value_kind:     hidden_block_count_z
      - .offset:         44
        .size:           2
        .value_kind:     hidden_group_size_x
      - .offset:         46
        .size:           2
        .value_kind:     hidden_group_size_y
      - .offset:         48
        .size:           2
        .value_kind:     hidden_group_size_z
      - .offset:         50
        .size:           2
        .value_kind:     hidden_remainder_x
      - .offset:         52
        .size:           2
        .value_kind:     hidden_remainder_y
      - .offset:         54
        .size:           2
        .value_kind:     hidden_remainder_z
      - .offset:         72
        .size:           8
        .value_kind:     hidden_global_offset_x
      - .offset:         80
        .size:           8
        .value_kind:     hidden_global_offset_y
      - .offset:         88
        .size:           8
        .value_kind:     hidden_global_offset_z
      - .offset:         96
        .size:           2
        .value_kind:     hidden_grid_dims
    .group_segment_fixed_size: 0
    .kernarg_segment_align: 8
    .kernarg_segment_size: 288
    .language:       OpenCL C
    .language_version:
      - 2
      - 0
    .max_flat_workgroup_size: 1024
    .name:           _Z11d_rms_errorPdS_S_P7point_t
    .private_segment_fixed_size: 0
    .sgpr_count:     18
    .sgpr_spill_count: 0
    .symbol:         _Z11d_rms_errorPdS_S_P7point_t.kd
    .uniform_work_group_size: 1
    .uses_dynamic_stack: false
    .vgpr_count:     6
    .vgpr_spill_count: 0
    .wavefront_size: 32
    .workgroup_processor_mode: 1
amdhsa.target:   amdgcn-amd-amdhsa--gfx1100
amdhsa.version:
  - 1
  - 2
...

	.end_amdgpu_metadata
