#
# This file is part of the GROMACS molecular simulation package.
#
-# Copyright (c) 2012,2013,2020, by the GROMACS development team, led by
+# Copyright (c) 2012,2013,2020,2021, by the GROMACS development team, led by
# Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
# and including many others, as listed in the AUTHORS file in the
# top-level source directory and at http://www.gromacs.org.
# To help us fund GROMACS development, we humbly ask that you cite
# the research papers on the package. Check out http://www.gromacs.org.
-gmx_add_unit_test(FFTUnitTests fft-test
- CPP_SOURCE_FILES
+gmx_add_unit_test(FFTUnitTests fft-test HARDWARE_DETECTION
+ GPU_CPP_SOURCE_FILES
fft.cpp
)
#include "gromacs/fft/fft.h"
+#include "config.h"
+
#include <algorithm>
#include <vector>
+#include <gmock/gmock.h>
#include <gtest/gtest.h>
+#include "gromacs/fft/gpu_3dfft.h"
#include "gromacs/fft/parallel_3dfft.h"
+#include "gromacs/gpu_utils/clfftinitializer.h"
+#if GMX_GPU
+# include "gromacs/gpu_utils/devicebuffer.h"
+#endif
#include "gromacs/utility/stringutil.h"
#include "testutils/refdata.h"
+#include "testutils/test_hardware_environment.h"
#include "testutils/testasserts.h"
+#include "testutils/testmatchers.h"
-namespace
+namespace gmx
+{
+namespace test
{
/*! \brief Input data for FFT tests.
class BaseFFTTest : public ::testing::Test
{
public:
- BaseFFTTest() : checker_(data_.rootChecker()), flags_(GMX_FFT_FLAG_CONSERVATIVE)
- {
- // TODO: These tolerances are just something that has been observed
- // to be sufficient to pass the tests. It would be nicer to
- // actually argue about why they are sufficient (or what is).
- checker_.setDefaultTolerance(gmx::test::relativeToleranceAsPrecisionDependentUlp(10.0, 64, 512));
- }
+ BaseFFTTest() : flags_(GMX_FFT_FLAG_CONSERVATIVE) {}
~BaseFFTTest() override { gmx_fft_cleanup(); }
- gmx::test::TestReferenceData data_;
- gmx::test::TestReferenceChecker checker_;
- std::vector<real> in_, out_;
- int flags_;
+ TestReferenceData data_;
+ std::vector<real> in_, out_;
+ int flags_;
+ // TODO: These tolerances are just something that has been observed
+ // to be sufficient to pass the tests. It would be nicer to
+ // actually argue about why they are sufficient (or what is).
+ // Should work for both one-way and forward+backward transform.
+ FloatingPointTolerance defaultTolerance_ = relativeToleranceAsPrecisionDependentUlp(10.0, 64, 512);
};
class FFTTest : public BaseFFTTest
{
public:
- FFTTest() : fft_(nullptr) {}
+ FFTTest() : fft_(nullptr) { checker_.setDefaultTolerance(defaultTolerance_); }
~FFTTest() override
{
if (fft_)
gmx_fft_destroy(fft_);
}
}
- gmx_fft_t fft_;
+ TestReferenceChecker checker_ = data_.rootChecker();
+ gmx_fft_t fft_;
};
class ManyFFTTest : public BaseFFTTest
{
public:
- ManyFFTTest() : fft_(nullptr) {}
+ ManyFFTTest() : fft_(nullptr) { checker_.setDefaultTolerance(defaultTolerance_); }
~ManyFFTTest() override
{
if (fft_)
gmx_many_fft_destroy(fft_);
}
}
- gmx_fft_t fft_;
+ TestReferenceChecker checker_ = data_.rootChecker();
+ gmx_fft_t fft_;
};
{
};
-class FFFTest3D : public BaseFFTTest
+class FFTTest3D : public BaseFFTTest
{
public:
- FFFTest3D() : fft_(nullptr) {}
- ~FFFTest3D() override
+ FFTTest3D() : fft_(nullptr) {}
+ ~FFTTest3D() override
{
if (fft_)
{
// _checker.checkSequenceArray(rx*ny, out, "backward");
}
+namespace
+{
+
+/*! \brief Check that the real grid after forward and backward
+ * 3D transforms matches the input real grid. */
+void checkRealGrid(const ivec realGridSize,
+ const ivec realGridSizePadded,
+ ArrayRef<const real> inputRealGrid,
+ ArrayRef<real> outputRealGridValues)
+{
+ // Normalize the output (as the implementation does not
+ // normalize either FFT)
+ const real normalizationConstant = 1.0 / (realGridSize[XX] * realGridSize[YY] * realGridSize[ZZ]);
+ std::transform(outputRealGridValues.begin(),
+ outputRealGridValues.end(),
+ outputRealGridValues.begin(),
+ [normalizationConstant](const real r) { return r * normalizationConstant; });
+ // Check the real grid, skipping unused data from the padding
+ const auto realGridTolerance = relativeToleranceAsFloatingPoint(10, 1e-6);
+ for (int i = 0; i < realGridSize[XX] * realGridSize[YY]; i++)
+ {
+ auto expected =
+ arrayRefFromArray(inputRealGrid.data() + i * realGridSizePadded[ZZ], realGridSize[ZZ]);
+ auto actual = arrayRefFromArray(outputRealGridValues.data() + i * realGridSizePadded[ZZ],
+ realGridSize[ZZ]);
+ EXPECT_THAT(actual, Pointwise(RealEq(realGridTolerance), expected))
+ << formatString("checking backward transform part %d", i);
+ }
+}
+
+} // namespace
+
// TODO: test with threads and more than 1 MPI ranks
-TEST_F(FFFTest3D, Real5_6_9)
+TEST_F(FFTTest3D, Real5_6_9)
{
- int ndata[] = { 5, 6, 9 };
- MPI_Comm comm[] = { MPI_COMM_NULL, MPI_COMM_NULL };
+ int realGridSize[] = { 5, 6, 9 };
+ MPI_Comm comm[] = { MPI_COMM_NULL, MPI_COMM_NULL };
real* rdata;
t_complex* cdata;
- ivec local_ndata, offset, rsize, csize, complex_order;
+ ivec local_ndata, offset, realGridSizePadded, complexGridSizePadded, complex_order;
+ TestReferenceChecker checker(data_.rootChecker());
+ checker.setDefaultTolerance(defaultTolerance_);
- gmx_parallel_3dfft_init(&fft_, ndata, &rdata, &cdata, comm, TRUE, 1);
+ gmx_parallel_3dfft_init(&fft_, realGridSize, &rdata, &cdata, comm, TRUE, 1);
- gmx_parallel_3dfft_real_limits(fft_, local_ndata, offset, rsize);
- gmx_parallel_3dfft_complex_limits(fft_, complex_order, local_ndata, offset, csize);
- checker_.checkVector(rsize, "rsize");
- checker_.checkVector(csize, "csize");
- int size = csize[0] * csize[1] * csize[2];
+ gmx_parallel_3dfft_real_limits(fft_, local_ndata, offset, realGridSizePadded);
+ gmx_parallel_3dfft_complex_limits(fft_, complex_order, local_ndata, offset, complexGridSizePadded);
+ checker.checkVector(realGridSizePadded, "realGridSizePadded");
+ checker.checkVector(complexGridSizePadded, "complexGridSizePadded");
+ int size = complexGridSizePadded[0] * complexGridSizePadded[1] * complexGridSizePadded[2];
int sizeInBytes = size * sizeof(t_complex);
int sizeInReals = sizeInBytes / sizeof(real);
+ // Prepare the real grid
in_ = std::vector<real>(sizeInReals);
// Use std::copy to convert from double to real easily
std::copy(inputdata, inputdata + sizeInReals, in_.begin());
// Use memcpy to convert to t_complex easily
memcpy(rdata, in_.data(), sizeInBytes);
+
+ // Do the forward FFT to compute the complex grid
gmx_parallel_3dfft_execute(fft_, GMX_FFT_REAL_TO_COMPLEX, 0, nullptr);
- // TODO use std::complex and add checkComplex for it
- checker_.checkSequenceArray(size * 2, reinterpret_cast<real*>(cdata), "forward");
- // Use std::copy to convert from double to real easily
- std::copy(inputdata, inputdata + sizeInReals, in_.begin());
- // Use memcpy to convert to t_complex easily
- memcpy(cdata, in_.data(), sizeInBytes);
+ // Check the complex grid (NB this data has not been normalized)
+ ArrayRef<real> complexGridValues = arrayRefFromArray(reinterpret_cast<real*>(cdata), size * 2);
+ checker.checkSequence(
+ complexGridValues.begin(), complexGridValues.end(), "ComplexGridAfterRealToComplex");
+
+ // Do the back transform
gmx_parallel_3dfft_execute(fft_, GMX_FFT_COMPLEX_TO_REAL, 0, nullptr);
- for (int i = 0; i < ndata[0] * ndata[1]; i++) // check sequence but skip unused data
+
+ ArrayRef<real> outputRealGridValues = arrayRefFromArray(
+ rdata, realGridSizePadded[XX] * realGridSizePadded[YY] * realGridSizePadded[ZZ]);
+ checkRealGrid(realGridSize, realGridSizePadded, in_, outputRealGridValues);
+}
+
+#if GMX_GPU
+TEST_F(FFTTest3D, GpuReal5_6_9)
+{
+ // Ensure library resources are managed appropriately
+ ClfftInitializer clfftInitializer;
+ for (const auto& testDevice : getTestHardwareEnvironment()->getTestDeviceList())
{
- checker_.checkSequenceArray(
- ndata[2], rdata + i * rsize[2], gmx::formatString("backward %d", i).c_str());
+ TestReferenceChecker checker(data_.rootChecker()); // Must be inside the loop to avoid warnings
+ checker.setDefaultTolerance(defaultTolerance_);
+
+ const DeviceContext& deviceContext = testDevice->deviceContext();
+ setActiveDevice(testDevice->deviceInfo());
+ const DeviceStream& deviceStream = testDevice->deviceStream();
+
+ ivec realGridSize = { 5, 6, 9 };
+ ivec realGridSizePadded = { realGridSize[XX], realGridSize[YY], (realGridSize[ZZ] / 2 + 1) * 2 };
+ ivec complexGridSizePadded = { realGridSize[XX], realGridSize[YY], (realGridSize[ZZ] / 2) + 1 };
+
+ checker.checkVector(realGridSizePadded, "realGridSizePadded");
+ checker.checkVector(complexGridSizePadded, "complexGridSizePadded");
+
+ int size = complexGridSizePadded[0] * complexGridSizePadded[1] * complexGridSizePadded[2];
+ int sizeInReals = size * 2;
+
+ // Set up the complex grid. Complex numbers take twice the
+ // memory.
+ std::vector<float> complexGridValues(sizeInReals);
+ in_.resize(sizeInReals);
+ // Use std::copy to convert from double to real easily
+ std::copy(inputdata, inputdata + sizeInReals, in_.begin());
+
+ // Allocate the device buffers
+ DeviceBuffer<float> realGrid, complexGrid;
+ allocateDeviceBuffer(&realGrid, in_.size(), deviceContext);
+ allocateDeviceBuffer(&complexGrid, complexGridValues.size(), deviceContext);
+
+ const bool useDecomposition = false;
+ const bool performOutOfPlaceFFT = true;
+ Gpu3dFft gpu3dFft(realGridSize,
+ realGridSizePadded,
+ complexGridSizePadded,
+ useDecomposition,
+ performOutOfPlaceFFT,
+ deviceContext,
+ deviceStream,
+ realGrid,
+ complexGrid);
+
+ // Transfer the real grid input data for the FFT
+ copyToDeviceBuffer(
+ &realGrid, in_.data(), 0, in_.size(), deviceStream, GpuApiCallBehavior::Sync, nullptr);
+
+ // Do the forward FFT to compute the complex grid
+ CommandEvent* timingEvent = nullptr;
+ gpu3dFft.perform3dFft(GMX_FFT_REAL_TO_COMPLEX, timingEvent);
+ deviceStream.synchronize();
+
+ // Check the complex grid (NB this data has not been normalized)
+ copyFromDeviceBuffer(complexGridValues.data(),
+ &complexGrid,
+ 0,
+ complexGridValues.size(),
+ deviceStream,
+ GpuApiCallBehavior::Sync,
+ nullptr);
+ checker.checkSequence(
+ complexGridValues.begin(), complexGridValues.end(), "ComplexGridAfterRealToComplex");
+
+ // Do the back transform
+ gpu3dFft.perform3dFft(GMX_FFT_COMPLEX_TO_REAL, timingEvent);
+ deviceStream.synchronize();
+
+ // Transfer the real grid back from the device
+ std::vector<float> outputRealGridValues(in_.size());
+ copyFromDeviceBuffer(outputRealGridValues.data(),
+ &realGrid,
+ 0,
+ outputRealGridValues.size(),
+ deviceStream,
+ GpuApiCallBehavior::Sync,
+ nullptr);
+
+ checkRealGrid(realGridSize, realGridSizePadded, in_, outputRealGridValues);
+
+ freeDeviceBuffer(&realGrid);
+ freeDeviceBuffer(&complexGrid);
}
}
-} // namespace
+#endif
+
+} // namespace test
+} // namespace gmx
+++ /dev/null
-<?xml version="1.0"?>
-<?xml-stylesheet type="text/xsl" href="referencedata.xsl"?>
-<ReferenceData>
- <Vector Name="rsize">
- <Int Name="X">5</Int>
- <Int Name="Y">6</Int>
- <Int Name="Z">10</Int>
- </Vector>
- <Vector Name="csize">
- <Int Name="X">5</Int>
- <Int Name="Y">6</Int>
- <Int Name="Z">5</Int>
- </Vector>
- <Sequence Name="forward">
- <Int Name="Length">300</Int>
- <Real>136.09999999999999</Real>
- <Real>0</Real>
- <Real>6.1046777798672718</Real>
- <Real>-9.6927915189833946</Real>
- <Real>-156.90467777986728</Real>
- <Real>-44.500278567324997</Real>
- <Real>-156.90467777986728</Real>
- <Real>44.500278567324997</Real>
- <Real>6.1046777798672718</Real>
- <Real>9.6927915189833946</Real>
- <Real>109.33089836200787</Real>
- <Real>144.0174147413677</Real>
- <Real>110.98910420129505</Real>
- <Real>-75.428066165741754</Real>
- <Real>-28.957680459929328</Real>
- <Real>-35.773394870359915</Real>
- <Real>12.909729603318853</Real>
- <Real>-51.326604840195436</Real>
- <Real>-17.828427811489327</Real>
- <Real>-51.168418460828008</Real>
- <Real>80.282164734026082</Real>
- <Real>-30.151275351195387</Real>
- <Real>46.266467708046036</Real>
- <Real>-2.5678489670789695</Real>
- <Real>-79.201790713534407</Real>
- <Real>-57.924296703634695</Real>
- <Real>82.000686192249177</Real>
- <Real>-94.147447732293045</Real>
- <Real>79.405763443152921</Real>
- <Real>-57.639099104105966</Real>
- <Real>174.5</Real>
- <Real>-82.099208278764806</Real>
- <Real>-1.0211355262416717</Real>
- <Real>-80.952112737709058</Real>
- <Real>115.14489096295327</Real>
- <Real>-67.412953751874596</Real>
- <Real>65.004908445660504</Real>
- <Real>16.143174029504717</Real>
- <Real>-55.628663882372045</Real>
- <Real>-81.859587355434371</Real>
- <Real>-73.063063096033957</Real>
- <Real>-35.171612785160626</Real>
- <Real>22.705466420779317</Real>
- <Real>46.342233241626971</Real>
- <Real>-37.809610613745839</Real>
- <Real>-14.488888242266853</Real>
- <Real>-79.566298372895176</Real>
- <Real>40.132587632371795</Real>
- <Real>171.53659040275272</Real>
- <Real>-43.288340582509605</Real>
- <Real>-53.849999999999994</Real>
- <Real>8.7468565782228325</Real>
- <Real>-37.527983739057511</Real>
- <Real>-76.662755634952219</Real>
- <Real>-46.050013953391961</Real>
- <Real>82.151413216948384</Real>
- <Real>93.26075304045446</Real>
- <Real>71.72939427904592</Real>
- <Real>82.167244651995048</Real>
- <Real>-68.64440036357621</Real>
- <Real>34.447925708729784</Real>
- <Real>-46.679698485304449</Real>
- <Real>47.084315355518264</Real>
- <Real>53.226361938057281</Real>
- <Real>-39.940061988556401</Real>
- <Real>-56.889712822841695</Real>
- <Real>-54.133563551261311</Real>
- <Real>162.86277437335812</Real>
- <Real>0.13978000683655267</Real>
- <Real>-83.154435988355104</Real>
- <Real>77.450843683464598</Real>
- <Real>99.232127419610549</Real>
- <Real>25.603100973672902</Real>
- <Real>-41.980268634661634</Real>
- <Real>-63.660910025502318</Real>
- <Real>0.38754591548317308</Real>
- <Real>-14.140629179993443</Real>
- <Real>-109.4766531704594</Real>
- <Real>-1.8193728170681087</Real>
- <Real>-50.783752164257926</Real>
- <Real>-28.349999999999952</Real>
- <Real>66.250943389509573</Real>
- <Real>41.767316918315906</Real>
- <Real>141.31781715474784</Real>
- <Real>-98.532415917009445</Real>
- <Real>-56.132356053022541</Real>
- <Real>-26.039172227730639</Real>
- <Real>-32.616671442082939</Real>
- <Real>43.404271226424349</Real>
- <Real>74.736944696670093</Real>
- <Real>-75.394910708698106</Real>
- <Real>-63.045733778267902</Real>
- <Real>58.365744569582262</Real>
- <Real>39.770614495173518</Real>
- <Real>-89.180292566745976</Real>
- <Real>-54.385841985238315</Real>
- <Real>-23.894931563229392</Real>
- <Real>99.576471973869459</Real>
- <Real>1.8243953109653859</Real>
- <Real>79.398509308323142</Real>
- <Real>-93.249999999999986</Real>
- <Real>-38.19172030689375</Real>
- <Real>71.020497976742078</Real>
- <Real>-1.7414685014859375</Real>
- <Real>-45.144746631885752</Real>
- <Real>136.91007840098462</Real>
- <Real>76.807385747829073</Real>
- <Real>-61.008015162243666</Real>
- <Real>83.066862907314615</Real>
- <Real>-10.854137720612538</Real>
- <Real>11.146194900875926</Real>
- <Real>-39.325905869819678</Real>
- <Real>-44.096266736330733</Real>
- <Real>-54.376841765161188</Real>
- <Real>38.091494194864921</Real>
- <Real>-10.091555063687309</Real>
- <Real>28.417313488040552</Real>
- <Real>104.61453969853031</Real>
- <Real>-132.63257919812122</Real>
- <Real>13.423985690353295</Real>
- <Real>-89.798336147192956</Real>
- <Real>-124.42587252332874</Real>
- <Real>-177.69961189145357</Real>
- <Real>-86.970199597566591</Real>
- <Real>93.17963732706697</Real>
- <Real>-17.907496809528595</Real>
- <Real>21.200096591640985</Real>
- <Real>-170.3504082897976</Real>
- <Real>-56.000998352042203</Real>
- <Real>-18.570020938666069</Real>
- <Real>-41.500000000000043</Real>
- <Real>70.148057706539575</Real>
- <Real>92.677142033179237</Real>
- <Real>12.237494316957232</Real>
- <Real>63.749995048043708</Real>
- <Real>-69.490209658536372</Real>
- <Real>59.724306187452875</Real>
- <Real>16.675397899553808</Real>
- <Real>-41.651443268675777</Real>
- <Real>8.5343775020010852</Real>
- <Real>13.130336383741636</Real>
- <Real>-22.927176864452179</Real>
- <Real>116.12111228365779</Real>
- <Real>-45.760745866170936</Real>
- <Real>-29.881200055227058</Real>
- <Real>24.907824000483362</Real>
- <Real>-39.485004753366795</Real>
- <Real>-8.2658722859128169</Real>
- <Real>60.512645744111403</Real>
- <Real>100.43935627235211</Real>
- <Real>-12.299999999999983</Real>
- <Real>-1.532107773982716e-14</Real>
- <Real>-105.67236454974396</Real>
- <Real>-26.742612718204111</Real>
- <Real>23.572364549743824</Real>
- <Real>-22.442318619165579</Real>
- <Real>23.572364549743931</Real>
- <Real>22.442318619165665</Real>
- <Real>-105.67236454974388</Real>
- <Real>26.74261271820416</Real>
- <Real>42.035849450475915</Real>
- <Real>-41.135575070858103</Real>
- <Real>101.09538167141052</Real>
- <Real>13.414183590793666</Real>
- <Real>-72.121180894777268</Real>
- <Real>-60.285029492264044</Real>
- <Real>-4.2385225536985374</Real>
- <Real>-12.733879099379028</Real>
- <Real>-2.2031334820560886</Real>
- <Real>-5.9043348756325251</Real>
- <Real>80.964834850820381</Real>
- <Real>-8.4039231702524511</Real>
- <Real>-131.61904089627444</Real>
- <Real>-28.451722994458656</Real>
- <Real>-9.7116784144650872</Real>
- <Real>-28.127997000734677</Real>
- <Real>-10.749861458489509</Real>
- <Real>-19.317475675829929</Real>
- <Real>20.460493103348547</Real>
- <Real>99.431367993784676</Real>
- <Real>-3.3000000000000114</Real>
- <Real>-11.085125168440795</Real>
- <Real>-22.328371106147429</Real>
- <Real>9.1879447293819183</Real>
- <Real>-85.659284275876232</Real>
- <Real>-7.1290511976147108</Real>
- <Real>-68.632393167495465</Real>
- <Real>-26.374469875305937</Real>
- <Real>-61.079951450481019</Real>
- <Real>-80.646702595135139</Real>
- <Real>-53.250684301296275</Real>
- <Real>-70.41197369012103</Real>
- <Real>41.788374988548171</Real>
- <Real>32.640898630438265</Real>
- <Real>-34.654631341454106</Real>
- <Real>137.86853343714677</Real>
- <Real>22.242615745077465</Real>
- <Real>81.318379495452149</Real>
- <Real>-23.038816467169607</Real>
- <Real>-59.640953773067203</Real>
- <Real>-93.249999999999986</Real>
- <Real>38.19172030689375</Real>
- <Real>83.066862907314615</Real>
- <Real>10.854137720612538</Real>
- <Real>76.807385747829073</Real>
- <Real>61.008015162243666</Real>
- <Real>-45.144746631885752</Real>
- <Real>-136.91007840098462</Real>
- <Real>71.020497976742078</Real>
- <Real>1.7414685014859375</Real>
- <Real>-29.122549319509069</Real>
- <Real>-55.548007164359561</Real>
- <Real>-91.848515147247426</Real>
- <Real>25.06854222882243</Real>
- <Real>7.3660985224634778</Real>
- <Real>-19.841635066202443</Real>
- <Real>-54.161343304004404</Real>
- <Real>32.336599137264542</Real>
- <Real>48.259353160853109</Real>
- <Real>-110.07063552157047</Real>
- <Real>-25.626531284617432</Real>
- <Real>-34.453667272791314</Real>
- <Real>40.635846175667098</Real>
- <Real>152.67975355881111</Real>
- <Real>91.78484627866203</Real>
- <Real>79.680065800736912</Real>
- <Real>-91.796318858791864</Real>
- <Real>60.323017825477706</Real>
- <Real>-163.82188856316603</Real>
- <Real>25.244915999312511</Real>
- <Real>52.850000000000058</Real>
- <Real>-2.3382685902179858</Real>
- <Real>-19.91408137475327</Real>
- <Real>-59.783730527586336</Real>
- <Real>32.573560897852467</Real>
- <Real>39.669307866057125</Real>
- <Real>31.658633708141917</Real>
- <Real>-44.218290841443348</Real>
- <Real>-33.918113231241179</Real>
- <Real>-63.665841176367557</Real>
- <Real>-106.97911453329807</Real>
- <Real>64.66325190459132</Real>
- <Real>45.356186666025032</Real>
- <Real>34.173035237197205</Real>
- <Real>-39.799606476905076</Real>
- <Real>-13.643005636820957</Real>
- <Real>44.499372603779527</Real>
- <Real>33.891599639990183</Real>
- <Real>-140.20066970017646</Real>
- <Real>-124.76439777461155</Real>
- <Real>-53.850000000000009</Real>
- <Real>-8.7468565782228183</Real>
- <Real>82.167244651995205</Real>
- <Real>68.644400363576096</Real>
- <Real>93.260753040454404</Real>
- <Real>-71.729394279046062</Real>
- <Real>-46.050013953392131</Real>
- <Real>-82.151413216948328</Real>
- <Real>-37.527983739057447</Real>
- <Real>76.662755634952305</Real>
- <Real>-7.3610436092304763</Real>
- <Real>-30.547454539791147</Real>
- <Real>-18.733928727339173</Real>
- <Real>-18.102923805155882</Real>
- <Real>-62.82063554018734</Real>
- <Real>30.062829944592039</Real>
- <Real>25.151783100728036</Real>
- <Real>-44.495797289735151</Real>
- <Real>-26.734819466231169</Real>
- <Real>62.413919808452206</Real>
- <Real>-48.153015000031743</Real>
- <Real>47.71798614443874</Real>
- <Real>-22.179018783043063</Real>
- <Real>5.6175083821953766</Real>
- <Real>-9.6620741626321305</Real>
- <Real>-2.8341625358714282</Real>
- <Real>-79.862998875491655</Real>
- <Real>28.256495771921998</Real>
- <Real>53.788706248057551</Real>
- <Real>-29.917919391540103</Real>
- <Real>-3.3000000000000398</Real>
- <Real>-72.572928837136018</Real>
- <Real>-11.154757375936285</Real>
- <Real>123.56158573276491</Real>
- <Real>4.391989120832692</Real>
- <Real>-61.96304685084263</Real>
- <Real>-18.30723670508241</Real>
- <Real>116.70643860522515</Real>
- <Real>0.37000496018599804</Real>
- <Real>-218.31535114198857</Real>
- <Real>-38.139800074234053</Real>
- <Real>-30.521720281097942</Real>
- <Real>-107.60901341744089</Real>
- <Real>-90.941870214929992</Real>
- <Real>59.289174146567866</Real>
- <Real>-85.926292155264207</Real>
- <Real>-4.1465872345487398</Real>
- <Real>162.12010447830716</Real>
- <Real>102.1718381873422</Real>
- <Real>60.231632931236987</Real>
- </Sequence>
- <Sequence Name="backward 0">
- <Int Name="Length">9</Int>
- <Real>98.799999999999997</Real>
- <Real>-114.17356732757719</Real>
- <Real>53.384075393173227</Real>
- <Real>141.47199899409034</Real>
- <Real>199.50902369698844</Real>
- <Real>113.62515772012821</Real>
- <Real>-240.27199899409035</Real>
- <Real>7.0334226660655048</Real>
- <Real>165.42188785122184</Real>
- </Sequence>
- <Sequence Name="backward 1">
- <Int Name="Length">9</Int>
- <Real>-1.5752990424915652</Real>
- <Real>-2.9455394548274754</Real>
- <Real>49.95592752379568</Real>
- <Real>9.2464792224190404</Real>
- <Real>-80.868528144019606</Real>
- <Real>142.01990127005607</Real>
- <Real>-145.11209026077205</Real>
- <Real>-67.696439219454547</Real>
- <Real>-220.99493351685803</Real>
- </Sequence>
- <Sequence Name="backward 2">
- <Int Name="Length">9</Int>
- <Real>-138.07787643056315</Real>
- <Real>-95.826875135688994</Real>
- <Real>73.996428626422301</Real>
- <Real>107.42916512459894</Real>
- <Real>-172.52346162732448</Real>
- <Real>-184.75361826185093</Real>
- <Real>-99.268395609140242</Real>
- <Real>93.058202090688113</Real>
- <Real>94.74898396157765</Real>
- </Sequence>
- <Sequence Name="backward 3">
- <Int Name="Length">9</Int>
- <Real>-235.80000000000004</Real>
- <Real>81.949379543941745</Real>
- <Real>10.473869144692348</Real>
- <Real>184.41408311032413</Real>
- <Real>-37.698123461634296</Real>
- <Real>8.4715186995471896</Real>
- <Real>42.385916889675968</Real>
- <Real>0.26911387157102595</Real>
- <Real>-81.465757798118148</Real>
- </Sequence>
- <Sequence Name="backward 4">
- <Int Name="Length">9</Int>
- <Real>-78.322123569436854</Real>
- <Real>248.55977420749613</Real>
- <Real>-35.552362712469616</Real>
- <Real>-85.931604390859917</Real>
- <Real>-61.809843162557783</Real>
- <Real>-176.47551156447958</Real>
- <Real>96.170834875401255</Real>
- <Real>261.258274628913</Real>
- <Real>-104.07999105072589</Real>
- </Sequence>
- <Sequence Name="backward 5">
- <Int Name="Length">9</Int>
- <Real>155.17529904249164</Real>
- <Real>-98.054784036654695</Real>
- <Real>104.7868879046318</Real>
- <Real>38.312090260771917</Real>
- <Real>-323.53345409503578</Real>
- <Real>200.2760504100425</Real>
- <Real>44.753520777580981</Real>
- <Real>-91.192657145303485</Real>
- <Real>55.247568503627704</Real>
- </Sequence>
- <Sequence Name="backward 6">
- <Int Name="Length">9</Int>
- <Real>15.303512203673439</Real>
- <Real>305.8417773965229</Real>
- <Real>149.63642319825721</Real>
- <Real>97.994280036482849</Real>
- <Real>-119.45564486257564</Real>
- <Real>-131.61449725304536</Real>
- <Real>-137.33825432710083</Real>
- <Real>-143.59706871739439</Real>
- <Real>-83.794037618517763</Real>
- </Sequence>
- <Sequence Name="backward 7">
- <Int Name="Length">9</Int>
- <Real>142.92194440900039</Real>
- <Real>-106.94848208349096</Real>
- <Real>-177.86913088170192</Real>
- <Real>92.160865134863741</Real>
- <Real>147.52064131879024</Real>
- <Real>16.10773730651772</Real>
- <Real>99.443083231115622</Real>
- <Real>-117.64340089550609</Real>
- <Real>31.791713066080177</Real>
- </Sequence>
- <Sequence Name="backward 8">
- <Int Name="Length">9</Int>
- <Real>70.535843012407312</Real>
- <Real>-12.913960383936107</Real>
- <Real>-71.002562801141949</Real>
- <Real>-25.4614211584476</Real>
- <Real>132.79474651115487</Real>
- <Real>49.912000682648731</Real>
- <Real>-18.915377312923233</Real>
- <Real>-99.21579562065719</Real>
- <Real>-93.41662759409158</Real>
- </Sequence>
- <Sequence Name="backward 9">
- <Int Name="Length">9</Int>
- <Real>-137.81219155290859</Real>
- <Real>-270.52611638440578</Real>
- <Real>-4.9177423672470262</Real>
- <Real>-109.39818723263446</Real>
- <Real>78.202512280834114</Real>
- <Real>-56.368724642750863</Real>
- <Real>41.836966344200128</Real>
- <Real>-61.765709427318583</Real>
- <Real>63.196234058815804</Real>
- </Sequence>
- <Sequence Name="backward 10">
- <Int Name="Length">9</Int>
- <Real>95.71803428988315</Real>
- <Real>-146.68382720396653</Real>
- <Real>121.75204137987734</Real>
- <Real>-94.825717707153942</Real>
- <Real>46.993640996205691</Real>
- <Real>171.31526794671083</Real>
- <Real>-95.826292103411461</Real>
- <Real>-57.056817800871507</Real>
- <Real>-0.19397483120351922</Real>
- </Sequence>
- <Sequence Name="backward 11">
- <Int Name="Length">9</Int>
- <Real>-66.714126302558228</Real>
- <Real>-25.810599002217099</Real>
- <Real>29.393924067872003</Real>
- <Real>-151.37572573631348</Real>
- <Real>7.8342439632777641</Real>
- <Real>-94.377367003221309</Real>
- <Real>-70.206125724087329</Real>
- <Real>93.005166103691664</Real>
- <Real>139.59644081347116</Real>
- </Sequence>
- <Sequence Name="backward 12">
- <Int Name="Length">9</Int>
- <Real>115.71963314444717</Real>
- <Real>4.6312103100194264</Real>
- <Real>114.15415792126656</Real>
- <Real>37.107727028258068</Real>
- <Real>50.143704822468365</Real>
- <Real>-78.143218736964982</Real>
- <Real>-203.63187718820055</Real>
- <Real>224.71637955775333</Real>
- <Real>156.08119214541438</Real>
- </Sequence>
- <Sequence Name="backward 13">
- <Int Name="Length">9</Int>
- <Real>4.9039043456949472</Real>
- <Real>-94.431714276078111</Real>
- <Real>-169.81582884793104</Real>
- <Real>224.33382652559737</Real>
- <Real>-107.83029995230413</Real>
- <Real>30.179776667693119</Real>
- <Real>-187.17508761498954</Real>
- <Real>-133.83218721565669</Real>
- <Real>-80.841981050451608</Real>
- </Sequence>
- <Sequence Name="backward 14">
- <Int Name="Length">9</Int>
- <Real>24.096997814169889</Real>
- <Real>20.671627746028825</Real>
- <Real>190.05899316235499</Real>
- <Real>-44.652508355281228</Real>
- <Real>-190.77298632613235</Real>
- <Real>59.908926306609914</Real>
- <Real>11.267766578037357</Real>
- <Real>8.8392202928189789</Real>
- <Real>-34.897733181241406</Real>
- </Sequence>
- <Sequence Name="backward 15">
- <Int Name="Length">9</Int>
- <Real>158.84687786413161</Real>
- <Real>217.99492781212811</Real>
- <Real>-138.82594738474563</Real>
- <Real>-175.85858202022641</Real>
- <Real>76.223652279684131</Real>
- <Real>-42.485785703038268</Real>
- <Real>77.096637856218706</Real>
- <Real>153.11954350023521</Real>
- <Real>34.678306060552622</Real>
- </Sequence>
- <Sequence Name="backward 16">
- <Int Name="Length">9</Int>
- <Real>371.39502526136897</Real>
- <Real>-111.49279195570283</Real>
- <Real>158.19081873733262</Real>
- <Real>-58.925671119530691</Real>
- <Real>-144.71988972800506</Real>
- <Real>-333.32217656126909</Real>
- <Real>99.971615267290659</Real>
- <Real>-46.656629850947049</Real>
- <Real>-26.605886688390541</Real>
- </Sequence>
- <Sequence Name="backward 17">
- <Int Name="Length">9</Int>
- <Real>71.148192038040435</Real>
- <Real>-259.92390868152563</Real>
- <Real>247.14795354500208</Real>
- <Real>-74.934844862088667</Real>
- <Real>-143.74464625132174</Real>
- <Real>-90.704177181511653</Real>
- <Real>40.167190056658185</Real>
- <Real>-47.017923206913665</Real>
- <Real>-61.723971656076479</Real>
- </Sequence>
- <Sequence Name="backward 18">
- <Int Name="Length">9</Int>
- <Real>311.41576839866417</Real>
- <Real>-101.38744207132891</Real>
- <Real>-65.574456247279457</Real>
- <Real>198.43164083349166</Real>
- <Real>-59.146570193629515</Real>
- <Real>-211.97035720241863</Real>
- <Real>65.043048483196671</Real>
- <Real>374.99115856435526</Real>
- <Real>77.087652023803656</Real>
- </Sequence>
- <Sequence Name="backward 19">
- <Int Name="Length">9</Int>
- <Real>46.436607452085013</Real>
- <Real>-131.21786925466827</Real>
- <Real>-106.86294041413136</Real>
- <Real>-100.89493849076261</Real>
- <Real>91.341349703918169</Real>
- <Real>104.86826899066472</Real>
- <Real>108.13578235939831</Real>
- <Real>85.995586072325651</Real>
- <Real>138.09948488445932</Real>
- </Sequence>
- <Sequence Name="backward 20">
- <Int Name="Length">9</Int>
- <Real>276.46765016460154</Real>
- <Real>102.77535901877457</Real>
- <Real>31.422378980505727</Real>
- <Real>24.277083589916394</Real>
- <Real>209.28910333980451</Real>
- <Real>-83.071229481675232</Real>
- <Real>-55.993796282865638</Real>
- <Real>6.6343662980513045</Real>
- <Real>-98.950954485113186</Real>
- </Sequence>
- <Sequence Name="backward 21">
- <Int Name="Length">9</Int>
- <Real>-144.9876322750122</Real>
- <Real>116.62967038347652</Real>
- <Real>100.52890254175037</Real>
- <Real>-126.68456856175324</Real>
- <Real>92.689569818525527</Real>
- <Real>-95.47849048693503</Real>
- <Real>112.27134446448976</Real>
- <Real>48.48880612928285</Real>
- <Real>-88.62648315644104</Real>
- </Sequence>
- <Sequence Name="backward 22">
- <Int Name="Length">9</Int>
- <Real>115.84696057532403</Real>
- <Real>-233.43089737239819</Real>
- <Real>-201.87341723455972</Real>
- <Real>-170.12507625363628</Real>
- <Real>-157.86760046735139</Real>
- <Real>63.396270989245927</Real>
- <Real>125.96015871207827</Real>
- <Real>-31.44381153076408</Real>
- <Real>-120.66509202543989</Real>
- </Sequence>
- <Sequence Name="backward 23">
- <Int Name="Length">9</Int>
- <Real>-38.792339959068002</Real>
- <Real>-97.641243664242779</Real>
- <Real>-298.20365770657571</Real>
- <Real>32.913086466936676</Real>
- <Real>234.08951270294585</Real>
- <Real>-94.883245031360104</Real>
- <Real>154.46039443373573</Real>
- <Real>-274.26533090021292</Real>
- <Real>138.11097003299557</Real>
- </Sequence>
- <Sequence Name="backward 24">
- <Int Name="Length">9</Int>
- <Real>122.2610862532153</Real>
- <Real>-283.0427512466955</Real>
- <Real>180.15241577538353</Real>
- <Real>-9.9141066752170133</Real>
- <Real>-68.225900518696875</Real>
- <Real>-123.08567974377479</Real>
- <Real>58.107541809089128</Real>
- <Real>-150.73192370070763</Real>
- <Real>97.533476397784881</Real>
- </Sequence>
- <Sequence Name="backward 25">
- <Int Name="Length">9</Int>
- <Real>-29.801893874037276</Real>
- <Real>170.03622913088341</Real>
- <Real>-10.118556706633502</Real>
- <Real>-205.43915382732803</Real>
- <Real>-272.59639172396476</Real>
- <Real>8.7330959208887329</Real>
- <Real>94.856369991786892</Real>
- <Real>37.072909884061374</Real>
- <Real>-43.885312638696632</Real>
- </Sequence>
- <Sequence Name="backward 26">
- <Int Name="Length">9</Int>
- <Real>-122.64627960454543</Real>
- <Real>-218.25300495630358</Real>
- <Real>-66.248934921215351</Real>
- <Real>235.81218197593182</Real>
- <Real>77.755741706503443</Real>
- <Real>161.37957855282087</Real>
- <Real>-117.81520662551542</Real>
- <Real>24.181871661022953</Real>
- <Real>125.04696383150052</Real>
- </Sequence>
- <Sequence Name="backward 27">
- <Int Name="Length">9</Int>
- <Real>30.252945963789017</Real>
- <Real>-222.87322834137666</Real>
- <Real>2.2397215783475062</Real>
- <Real>-245.52203618184382</Real>
- <Real>193.95778011433887</Real>
- <Real>-126.31235607728593</Real>
- <Real>-249.54157466845032</Real>
- <Real>236.5707782492016</Real>
- <Real>125.66017916437173</Real>
- </Sequence>
- <Sequence Name="backward 28">
- <Int Name="Length">9</Int>
- <Real>-8.0142315132093813</Real>
- <Real>34.968683899269891</Real>
- <Real>-150.81461809558681</Real>
- <Real>61.533078723587487</Real>
- <Real>-96.969594117006423</Real>
- <Real>-39.411025671588746</Real>
- <Real>173.31918207192354</Real>
- <Real>-71.781263920425047</Real>
- <Real>4.8455027677415465</Real>
- </Sequence>
- <Sequence Name="backward 29">
- <Int Name="Length">9</Int>
- <Real>92.297711890842834</Real>
- <Real>240.88637294249287</Real>
- <Real>10.566089284880015</Real>
- <Real>-15.062663835846205</Real>
- <Real>54.062522273351675</Real>
- <Real>-59.442852705262901</Real>
- <Real>49.417941891322926</Real>
- <Real>-186.06049257608359</Real>
- <Real>-118.7464771685228</Real>
- </Sequence>
-</ReferenceData>
--- /dev/null
+<?xml version="1.0"?>
+<?xml-stylesheet type="text/xsl" href="referencedata.xsl"?>
+<ReferenceData>
+ <Vector Name="realGridSizePadded">
+ <Int Name="X">5</Int>
+ <Int Name="Y">6</Int>
+ <Int Name="Z">10</Int>
+ </Vector>
+ <Vector Name="complexGridSizePadded">
+ <Int Name="X">5</Int>
+ <Int Name="Y">6</Int>
+ <Int Name="Z">5</Int>
+ </Vector>
+ <Sequence Name="ComplexGridAfterRealToComplex">
+ <Int Name="Length">300</Int>
+ <Real>136.09999</Real>
+ <Real>0</Real>
+ <Real>109.33089</Real>
+ <Real>144.01743</Real>
+ <Real>80.28215</Real>
+ <Real>-30.151276</Real>
+ <Real>174.5</Real>
+ <Real>-82.099213</Real>
+ <Real>-73.063065</Real>
+ <Real>-35.171608</Real>
+ <Real>-53.849991</Real>
+ <Real>8.7468605</Real>
+ <Real>34.447918</Real>
+ <Real>-46.679695</Real>
+ <Real>77.450844</Real>
+ <Real>99.232132</Real>
+ <Real>-28.349995</Real>
+ <Real>66.250931</Real>
+ <Real>-75.394905</Real>
+ <Real>-63.045742</Real>
+ <Real>-93.249992</Real>
+ <Real>-38.191727</Real>
+ <Real>11.146183</Real>
+ <Real>-39.325916</Real>
+ <Real>-89.79834</Real>
+ <Real>-124.42588</Real>
+ <Real>-41.5</Real>
+ <Real>70.148056</Real>
+ <Real>13.130341</Real>
+ <Real>-22.927174</Real>
+ <Real>-12.300018</Real>
+ <Real>0</Real>
+ <Real>42.035843</Real>
+ <Real>-41.135578</Real>
+ <Real>80.964828</Real>
+ <Real>-8.4039288</Real>
+ <Real>-3.2999973</Real>
+ <Real>-11.085131</Real>
+ <Real>-53.250679</Real>
+ <Real>-70.411972</Real>
+ <Real>-93.249992</Real>
+ <Real>38.191727</Real>
+ <Real>-29.122549</Real>
+ <Real>-55.548016</Real>
+ <Real>-25.626528</Real>
+ <Real>-34.453659</Real>
+ <Real>52.849998</Real>
+ <Real>-2.3382683</Real>
+ <Real>-106.97911</Real>
+ <Real>64.663254</Real>
+ <Real>-53.849991</Real>
+ <Real>-8.7468605</Real>
+ <Real>-7.3610411</Real>
+ <Real>-30.547455</Real>
+ <Real>-48.153027</Real>
+ <Real>47.717995</Real>
+ <Real>-3.2999983</Real>
+ <Real>-72.572922</Real>
+ <Real>-38.139801</Real>
+ <Real>-30.521713</Real>
+ <Real>6.1046782</Real>
+ <Real>-9.692791</Real>
+ <Real>110.98911</Real>
+ <Real>-75.428078</Real>
+ <Real>46.266464</Real>
+ <Real>-2.5678482</Real>
+ <Real>-1.0211296</Real>
+ <Real>-80.952118</Real>
+ <Real>22.705467</Real>
+ <Real>46.342243</Real>
+ <Real>-37.527981</Real>
+ <Real>-76.662758</Real>
+ <Real>47.08432</Real>
+ <Real>53.226368</Real>
+ <Real>25.6031</Real>
+ <Real>-41.980274</Real>
+ <Real>41.767311</Real>
+ <Real>141.31783</Real>
+ <Real>58.365734</Real>
+ <Real>39.770599</Real>
+ <Real>71.020485</Real>
+ <Real>-1.7414665</Real>
+ <Real>-44.096264</Real>
+ <Real>-54.376839</Real>
+ <Real>-177.69962</Real>
+ <Real>-86.9702</Real>
+ <Real>92.677132</Real>
+ <Real>12.237498</Real>
+ <Real>116.1211</Real>
+ <Real>-45.76075</Real>
+ <Real>-105.67236</Real>
+ <Real>-26.742617</Real>
+ <Real>101.09538</Real>
+ <Real>13.41419</Real>
+ <Real>-131.61905</Real>
+ <Real>-28.451714</Real>
+ <Real>-22.328371</Real>
+ <Real>9.1879501</Real>
+ <Real>41.788376</Real>
+ <Real>32.6409</Real>
+ <Real>83.066856</Real>
+ <Real>10.854151</Real>
+ <Real>-91.848518</Real>
+ <Real>25.068546</Real>
+ <Real>40.635841</Real>
+ <Real>152.67975</Real>
+ <Real>-19.914082</Real>
+ <Real>-59.78373</Real>
+ <Real>45.356178</Real>
+ <Real>34.173023</Real>
+ <Real>82.167252</Real>
+ <Real>68.644402</Real>
+ <Real>-18.733931</Real>
+ <Real>-18.102921</Real>
+ <Real>-22.17901</Real>
+ <Real>5.6175013</Real>
+ <Real>-11.154749</Real>
+ <Real>123.56158</Real>
+ <Real>-107.60902</Real>
+ <Real>-90.941872</Real>
+ <Real>-156.90469</Real>
+ <Real>-44.500271</Real>
+ <Real>-28.957687</Real>
+ <Real>-35.773396</Real>
+ <Real>-79.20179</Real>
+ <Real>-57.924294</Real>
+ <Real>115.1449</Real>
+ <Real>-67.412949</Real>
+ <Real>-37.809608</Real>
+ <Real>-14.488893</Real>
+ <Real>-46.050011</Real>
+ <Real>82.151398</Real>
+ <Real>-39.940063</Real>
+ <Real>-56.889717</Real>
+ <Real>-63.660892</Real>
+ <Real>0.38755035</Real>
+ <Real>-98.53241</Real>
+ <Real>-56.132343</Real>
+ <Real>-89.180298</Real>
+ <Real>-54.385841</Real>
+ <Real>-45.144741</Real>
+ <Real>136.9101</Real>
+ <Real>38.091484</Real>
+ <Real>-10.091549</Real>
+ <Real>93.179642</Real>
+ <Real>-17.907486</Real>
+ <Real>63.75</Real>
+ <Real>-69.490211</Real>
+ <Real>-29.881189</Real>
+ <Real>24.907822</Real>
+ <Real>23.572371</Real>
+ <Real>-22.442316</Real>
+ <Real>-72.121185</Real>
+ <Real>-60.285027</Real>
+ <Real>-9.7116699</Real>
+ <Real>-28.127995</Real>
+ <Real>-85.659286</Real>
+ <Real>-7.1290541</Real>
+ <Real>-34.654629</Real>
+ <Real>137.86853</Real>
+ <Real>76.807381</Real>
+ <Real>61.008018</Real>
+ <Real>7.3661022</Real>
+ <Real>-19.84164</Real>
+ <Real>91.784836</Real>
+ <Real>79.680069</Real>
+ <Real>32.573555</Real>
+ <Real>39.669312</Real>
+ <Real>-39.799622</Real>
+ <Real>-13.642996</Real>
+ <Real>93.26075</Real>
+ <Real>-71.729401</Real>
+ <Real>-62.820633</Real>
+ <Real>30.062822</Real>
+ <Real>-9.6620827</Real>
+ <Real>-2.8341637</Real>
+ <Real>4.3919802</Real>
+ <Real>-61.963036</Real>
+ <Real>59.289169</Real>
+ <Real>-85.926285</Real>
+ <Real>-156.90469</Real>
+ <Real>44.500271</Real>
+ <Real>12.909737</Real>
+ <Real>-51.326603</Real>
+ <Real>82.000694</Real>
+ <Real>-94.147453</Real>
+ <Real>65.004913</Real>
+ <Real>16.143177</Real>
+ <Real>-79.566307</Real>
+ <Real>40.132591</Real>
+ <Real>93.26075</Real>
+ <Real>71.729401</Real>
+ <Real>-54.133568</Real>
+ <Real>162.86279</Real>
+ <Real>-14.140621</Real>
+ <Real>-109.47665</Real>
+ <Real>-26.039165</Real>
+ <Real>-32.616673</Real>
+ <Real>-23.894932</Real>
+ <Real>99.576469</Real>
+ <Real>76.807381</Real>
+ <Real>-61.008018</Real>
+ <Real>28.417313</Real>
+ <Real>104.61455</Real>
+ <Real>21.200081</Real>
+ <Real>-170.35042</Real>
+ <Real>59.724304</Real>
+ <Real>16.675398</Real>
+ <Real>-39.485001</Real>
+ <Real>-8.2658739</Real>
+ <Real>23.572371</Real>
+ <Real>22.442316</Real>
+ <Real>-4.2385178</Real>
+ <Real>-12.733873</Real>
+ <Real>-10.749865</Real>
+ <Real>-19.317474</Real>
+ <Real>-68.632401</Real>
+ <Real>-26.374466</Real>
+ <Real>22.242615</Real>
+ <Real>81.31839</Real>
+ <Real>-45.144741</Real>
+ <Real>-136.9101</Real>
+ <Real>-54.161346</Real>
+ <Real>32.336605</Real>
+ <Real>-91.79631</Real>
+ <Real>60.323013</Real>
+ <Real>31.658646</Real>
+ <Real>-44.218285</Real>
+ <Real>44.499374</Real>
+ <Real>33.891602</Real>
+ <Real>-46.050011</Real>
+ <Real>-82.151398</Real>
+ <Real>25.151779</Real>
+ <Real>-44.495792</Real>
+ <Real>-79.862991</Real>
+ <Real>28.256498</Real>
+ <Real>-18.307243</Real>
+ <Real>116.70643</Real>
+ <Real>-4.1465816</Real>
+ <Real>162.1201</Real>
+ <Real>6.1046782</Real>
+ <Real>9.692791</Real>
+ <Real>-17.828434</Real>
+ <Real>-51.168427</Real>
+ <Real>79.405762</Real>
+ <Real>-57.639107</Real>
+ <Real>-55.628658</Real>
+ <Real>-81.859589</Real>
+ <Real>171.53659</Real>
+ <Real>-43.288349</Real>
+ <Real>82.167252</Real>
+ <Real>-68.644402</Real>
+ <Real>0.13977623</Real>
+ <Real>-83.154434</Real>
+ <Real>-1.8193827</Real>
+ <Real>-50.783756</Real>
+ <Real>43.404274</Real>
+ <Real>74.736938</Real>
+ <Real>1.8243904</Real>
+ <Real>79.398506</Real>
+ <Real>83.066856</Real>
+ <Real>-10.854151</Real>
+ <Real>-132.63257</Real>
+ <Real>13.42399</Real>
+ <Real>-56.001003</Real>
+ <Real>-18.570007</Real>
+ <Real>-41.651451</Real>
+ <Real>8.5343847</Real>
+ <Real>60.512642</Real>
+ <Real>100.43935</Real>
+ <Real>-105.67236</Real>
+ <Real>26.742617</Real>
+ <Real>-2.2031364</Real>
+ <Real>-5.9043312</Real>
+ <Real>20.460499</Real>
+ <Real>99.431366</Real>
+ <Real>-61.079948</Real>
+ <Real>-80.646698</Real>
+ <Real>-23.038826</Real>
+ <Real>-59.640953</Real>
+ <Real>71.020485</Real>
+ <Real>1.7414665</Real>
+ <Real>48.259361</Real>
+ <Real>-110.07063</Real>
+ <Real>-163.82187</Real>
+ <Real>25.244911</Real>
+ <Real>-33.918114</Real>
+ <Real>-63.66584</Real>
+ <Real>-140.20068</Real>
+ <Real>-124.76439</Real>
+ <Real>-37.527981</Real>
+ <Real>76.662758</Real>
+ <Real>-26.734808</Real>
+ <Real>62.413918</Real>
+ <Real>53.788704</Real>
+ <Real>-29.917919</Real>
+ <Real>0.37000275</Real>
+ <Real>-218.31534</Real>
+ <Real>102.17184</Real>
+ <Real>60.231632</Real>
+ </Sequence>
+</ReferenceData>
--- /dev/null
+<?xml version="1.0"?>
+<?xml-stylesheet type="text/xsl" href="referencedata.xsl"?>
+<ReferenceData>
+ <Vector Name="realGridSizePadded">
+ <Int Name="X">5</Int>
+ <Int Name="Y">6</Int>
+ <Int Name="Z">10</Int>
+ </Vector>
+ <Vector Name="complexGridSizePadded">
+ <Int Name="X">5</Int>
+ <Int Name="Y">6</Int>
+ <Int Name="Z">5</Int>
+ </Vector>
+ <Sequence Name="ComplexGridAfterRealToComplex">
+ <Int Name="Length">300</Int>
+ <Real>136.09999999999999</Real>
+ <Real>0</Real>
+ <Real>6.1046777798673304</Real>
+ <Real>-9.6927915189833804</Real>
+ <Real>-156.90467777986734</Real>
+ <Real>-44.500278567325005</Real>
+ <Real>-156.90467777986734</Real>
+ <Real>44.500278567325005</Real>
+ <Real>6.1046777798673304</Real>
+ <Real>9.6927915189833804</Real>
+ <Real>109.33089836200777</Real>
+ <Real>144.01741474136767</Real>
+ <Real>110.98910420129506</Real>
+ <Real>-75.428066165741697</Real>
+ <Real>-28.9576804599293</Real>
+ <Real>-35.773394870359979</Real>
+ <Real>12.909729603318882</Real>
+ <Real>-51.326604840195373</Real>
+ <Real>-17.828427811489235</Real>
+ <Real>-51.168418460828057</Real>
+ <Real>80.282164734026082</Real>
+ <Real>-30.151275351195409</Real>
+ <Real>46.266467708046093</Real>
+ <Real>-2.5678489670789659</Real>
+ <Real>-79.201790713534393</Real>
+ <Real>-57.924296703634646</Real>
+ <Real>82.000686192249006</Real>
+ <Real>-94.147447732293045</Real>
+ <Real>79.405763443152878</Real>
+ <Real>-57.63909910410591</Real>
+ <Real>174.5</Real>
+ <Real>-82.099208278764777</Real>
+ <Real>-1.0211355262417676</Real>
+ <Real>-80.952112737709001</Real>
+ <Real>115.14489096295333</Real>
+ <Real>-67.412953751874568</Real>
+ <Real>65.004908445660561</Real>
+ <Real>16.143174029504738</Real>
+ <Real>-55.628663882372095</Real>
+ <Real>-81.859587355434371</Real>
+ <Real>-73.063063096033858</Real>
+ <Real>-35.17161278516069</Real>
+ <Real>22.705466420779416</Real>
+ <Real>46.34223324162695</Real>
+ <Real>-37.809610613745875</Real>
+ <Real>-14.488888242266809</Real>
+ <Real>-79.566298372895233</Real>
+ <Real>40.132587632371767</Real>
+ <Real>171.53659040275275</Real>
+ <Real>-43.288340582509534</Real>
+ <Real>-53.850000000000001</Real>
+ <Real>8.7468565782228254</Real>
+ <Real>-37.527983739057433</Real>
+ <Real>-76.662755634952319</Real>
+ <Real>-46.050013953392011</Real>
+ <Real>82.151413216948384</Real>
+ <Real>93.260753040454404</Real>
+ <Real>71.729394279046062</Real>
+ <Real>82.167244651995048</Real>
+ <Real>-68.644400363576196</Real>
+ <Real>34.447925708729784</Real>
+ <Real>-46.679698485304343</Real>
+ <Real>47.084315355518257</Real>
+ <Real>53.226361938057238</Real>
+ <Real>-39.940061988556415</Real>
+ <Real>-56.889712822841616</Real>
+ <Real>-54.133563551261453</Real>
+ <Real>162.86277437335798</Real>
+ <Real>0.13978000683670544</Real>
+ <Real>-83.154435988355075</Real>
+ <Real>77.450843683464541</Real>
+ <Real>99.232127419610464</Real>
+ <Real>25.603100973672952</Real>
+ <Real>-41.980268634661584</Real>
+ <Real>-63.660910025502289</Real>
+ <Real>0.38754591548313932</Real>
+ <Real>-14.140629179993454</Real>
+ <Real>-109.47665317045926</Real>
+ <Real>-1.819372817068146</Real>
+ <Real>-50.783752164257912</Real>
+ <Real>-28.349999999999991</Real>
+ <Real>66.250943389509558</Real>
+ <Real>41.767316918315899</Real>
+ <Real>141.3178171547479</Real>
+ <Real>-98.532415917009473</Real>
+ <Real>-56.132356053022612</Real>
+ <Real>-26.039172227730649</Real>
+ <Real>-32.616671442082982</Real>
+ <Real>43.404271226424243</Real>
+ <Real>74.73694469667015</Real>
+ <Real>-75.394910708698077</Real>
+ <Real>-63.045733778267945</Real>
+ <Real>58.365744569582304</Real>
+ <Real>39.770614495173604</Real>
+ <Real>-89.180292566745905</Real>
+ <Real>-54.385841985238351</Real>
+ <Real>-23.89493156322942</Real>
+ <Real>99.576471973869374</Real>
+ <Real>1.824395310965258</Real>
+ <Real>79.398509308323057</Real>
+ <Real>-93.25</Real>
+ <Real>-38.191720306893735</Real>
+ <Real>71.020497976742121</Real>
+ <Real>-1.7414685014859943</Real>
+ <Real>-45.144746631885752</Real>
+ <Real>136.91007840098462</Real>
+ <Real>76.807385747829002</Real>
+ <Real>-61.008015162243645</Real>
+ <Real>83.066862907314629</Real>
+ <Real>-10.854137720612524</Real>
+ <Real>11.146194900875905</Real>
+ <Real>-39.325905869819671</Real>
+ <Real>-44.096266736330762</Real>
+ <Real>-54.376841765161174</Real>
+ <Real>38.091494194864985</Real>
+ <Real>-10.091555063687235</Real>
+ <Real>28.417313488040527</Real>
+ <Real>104.61453969853025</Real>
+ <Real>-132.63257919812122</Real>
+ <Real>13.423985690353135</Real>
+ <Real>-89.798336147192941</Real>
+ <Real>-124.42587252332865</Real>
+ <Real>-177.69961189145363</Real>
+ <Real>-86.970199597566364</Real>
+ <Real>93.179637327066956</Real>
+ <Real>-17.907496809528642</Real>
+ <Real>21.200096591640929</Real>
+ <Real>-170.35040828979743</Real>
+ <Real>-56.000998352042323</Real>
+ <Real>-18.570020938665991</Real>
+ <Real>-41.5</Real>
+ <Real>70.148057706539518</Real>
+ <Real>92.677142033179152</Real>
+ <Real>12.23749431695725</Real>
+ <Real>63.749995048043729</Real>
+ <Real>-69.490209658536315</Real>
+ <Real>59.724306187452846</Real>
+ <Real>16.675397899553762</Real>
+ <Real>-41.651443268675749</Real>
+ <Real>8.5343775020010852</Real>
+ <Real>13.130336383741557</Real>
+ <Real>-22.927176864452125</Real>
+ <Real>116.12111228365768</Real>
+ <Real>-45.760745866170758</Real>
+ <Real>-29.881200055227175</Real>
+ <Real>24.907824000483256</Real>
+ <Real>-39.485004753366788</Real>
+ <Real>-8.2658722859129039</Real>
+ <Real>60.512645744111353</Real>
+ <Real>100.43935627235197</Real>
+ <Real>-12.299999999999997</Real>
+ <Real>0</Real>
+ <Real>-105.67236454974395</Real>
+ <Real>-26.742612718204111</Real>
+ <Real>23.572364549743916</Real>
+ <Real>-22.442318619165608</Real>
+ <Real>23.572364549743916</Real>
+ <Real>22.442318619165608</Real>
+ <Real>-105.67236454974395</Real>
+ <Real>26.742612718204111</Real>
+ <Real>42.035849450475908</Real>
+ <Real>-41.135575070858067</Real>
+ <Real>101.09538167141042</Real>
+ <Real>13.414183590793723</Real>
+ <Real>-72.121180894777183</Real>
+ <Real>-60.28502949226403</Real>
+ <Real>-4.2385225536985178</Real>
+ <Real>-12.733879099379088</Real>
+ <Real>-2.2031334820560637</Real>
+ <Real>-5.9043348756324505</Real>
+ <Real>80.964834850820353</Real>
+ <Real>-8.4039231702524546</Real>
+ <Real>-131.61904089627436</Real>
+ <Real>-28.45172299445861</Real>
+ <Real>-9.7116784144650836</Real>
+ <Real>-28.127997000734691</Real>
+ <Real>-10.749861458489534</Real>
+ <Real>-19.317475675829904</Real>
+ <Real>20.460493103348522</Real>
+ <Real>99.431367993784619</Real>
+ <Real>-3.3000000000000043</Real>
+ <Real>-11.085125168440822</Real>
+ <Real>-22.328371106147358</Real>
+ <Real>9.187944729381897</Real>
+ <Real>-85.659284275876232</Real>
+ <Real>-7.1290511976147215</Real>
+ <Real>-68.632393167495422</Real>
+ <Real>-26.374469875305898</Real>
+ <Real>-61.079951450480984</Real>
+ <Real>-80.646702595135253</Real>
+ <Real>-53.250684301296232</Real>
+ <Real>-70.41197369012103</Real>
+ <Real>41.788374988548</Real>
+ <Real>32.640898630438166</Real>
+ <Real>-34.654631341454191</Real>
+ <Real>137.86853343714668</Real>
+ <Real>22.242615745077437</Real>
+ <Real>81.318379495452191</Real>
+ <Real>-23.038816467169443</Real>
+ <Real>-59.640953773067181</Real>
+ <Real>-93.25</Real>
+ <Real>38.191720306893735</Real>
+ <Real>83.066862907314629</Real>
+ <Real>10.854137720612524</Real>
+ <Real>76.807385747829002</Real>
+ <Real>61.008015162243645</Real>
+ <Real>-45.144746631885752</Real>
+ <Real>-136.91007840098462</Real>
+ <Real>71.020497976742121</Real>
+ <Real>1.7414685014859943</Real>
+ <Real>-29.12254931950897</Real>
+ <Real>-55.548007164359511</Real>
+ <Real>-91.848515147247383</Real>
+ <Real>25.068542228822352</Real>
+ <Real>7.3660985224634832</Real>
+ <Real>-19.841635066202368</Real>
+ <Real>-54.161343304004355</Real>
+ <Real>32.3365991372645</Real>
+ <Real>48.259353160853053</Real>
+ <Real>-110.07063552157035</Real>
+ <Real>-25.626531284617528</Real>
+ <Real>-34.453667272791314</Real>
+ <Real>40.635846175667027</Real>
+ <Real>152.67975355881092</Real>
+ <Real>91.784846278662059</Real>
+ <Real>79.680065800736799</Real>
+ <Real>-91.796318858791764</Real>
+ <Real>60.323017825477706</Real>
+ <Real>-163.82188856316591</Real>
+ <Real>25.244915999312568</Real>
+ <Real>52.850000000000009</Real>
+ <Real>-2.3382685902179645</Real>
+ <Real>-19.91408137475328</Real>
+ <Real>-59.783730527586329</Real>
+ <Real>32.573560897852502</Real>
+ <Real>39.669307866057082</Real>
+ <Real>31.658633708141942</Real>
+ <Real>-44.218290841443263</Real>
+ <Real>-33.918113231241179</Real>
+ <Real>-63.665841176367543</Real>
+ <Real>-106.97911453329806</Real>
+ <Real>64.663251904591306</Real>
+ <Real>45.356186666024996</Real>
+ <Real>34.173035237197176</Real>
+ <Real>-39.79960647690492</Real>
+ <Real>-13.643005636820892</Real>
+ <Real>44.499372603779499</Real>
+ <Real>33.891599639990183</Real>
+ <Real>-140.20066970017635</Real>
+ <Real>-124.76439777461135</Real>
+ <Real>-53.850000000000001</Real>
+ <Real>-8.7468565782228254</Real>
+ <Real>82.167244651995048</Real>
+ <Real>68.644400363576196</Real>
+ <Real>93.260753040454404</Real>
+ <Real>-71.729394279046062</Real>
+ <Real>-46.050013953392011</Real>
+ <Real>-82.151413216948384</Real>
+ <Real>-37.527983739057433</Real>
+ <Real>76.662755634952319</Real>
+ <Real>-7.3610436092305136</Real>
+ <Real>-30.547454539791165</Real>
+ <Real>-18.73392872733908</Real>
+ <Real>-18.10292380515591</Real>
+ <Real>-62.820635540187361</Real>
+ <Real>30.062829944591893</Real>
+ <Real>25.151783100728075</Real>
+ <Real>-44.495797289734995</Real>
+ <Real>-26.734819466231212</Real>
+ <Real>62.413919808452086</Real>
+ <Real>-48.153015000031722</Real>
+ <Real>47.717986144438648</Real>
+ <Real>-22.179018783043063</Real>
+ <Real>5.6175083821953571</Real>
+ <Real>-9.6620741626321376</Real>
+ <Real>-2.8341625358714371</Real>
+ <Real>-79.862998875491698</Real>
+ <Real>28.256495771921948</Real>
+ <Real>53.788706248057593</Real>
+ <Real>-29.91791939154006</Real>
+ <Real>-3.3000000000000007</Real>
+ <Real>-72.572928837135976</Real>
+ <Real>-11.154757375936294</Real>
+ <Real>123.5615857327648</Real>
+ <Real>4.3919891208326618</Real>
+ <Real>-61.963046850842439</Real>
+ <Real>-18.307236705082499</Real>
+ <Real>116.70643860522506</Real>
+ <Real>0.37000496018613305</Real>
+ <Real>-218.31535114198851</Real>
+ <Real>-38.13980007423406</Real>
+ <Real>-30.52172028109797</Real>
+ <Real>-107.60901341744066</Real>
+ <Real>-90.941870214929978</Real>
+ <Real>59.289174146567873</Real>
+ <Real>-85.926292155263994</Real>
+ <Real>-4.1465872345488588</Real>
+ <Real>162.1201044783071</Real>
+ <Real>102.1718381873421</Real>
+ <Real>60.231632931236973</Real>
+ </Sequence>
+</ReferenceData>