diff --git a/src/field_descriptor.cpp b/src/field_descriptor.cpp index 59550a6dd7b16be0085c4eb1fa668e4a6d4ebde1..d6cd7c515ef02772cb35c4d520d364f0c21db244 100644 --- a/src/field_descriptor.cpp +++ b/src/field_descriptor.cpp @@ -438,6 +438,31 @@ int field_descriptor::interleave( return EXIT_SUCCESS; } +int field_descriptor::switch_endianness( + float *a) +{ + for (int i = 0; i < this->local_size; i++) + { + *a = btle(*a); + a++; + } + return EXIT_SUCCESS; +} + +int field_descriptor::switch_endianness( + fftwf_complex *b) +{ + float *a = (float*)b; + for (int i = 0; i < this->local_size; i++) + { + *a = btle(*a); + a++; + *a = btle(*a); + a++; + } + return EXIT_SUCCESS; +} + field_descriptor* field_descriptor::get_transpose() { int n[this->ndims]; diff --git a/src/field_descriptor.hpp b/src/field_descriptor.hpp index 29b8c292488c87073cf20c6d7ca8ba95d8acc838..a2510841a9f24e5ce1ded568b597074148b0a99a 100644 --- a/src/field_descriptor.hpp +++ b/src/field_descriptor.hpp @@ -84,6 +84,11 @@ class field_descriptor int interleave( fftwf_complex *input, int dim); + + int switch_endianness( + float *a); + int switch_endianness( + fftwf_complex *a); }; diff --git a/src/p3DFFT_to_iR.cpp b/src/p3DFFT_to_iR.cpp index fe15f0079a01881dffe8678e02d7291111117494..fd2960f7dd92546127ef6f1f1a0c168c7b341fde 100644 --- a/src/p3DFFT_to_iR.cpp +++ b/src/p3DFFT_to_iR.cpp @@ -130,6 +130,8 @@ int p3DFFT_to_iR::read( this->f0c->read( ifile[i], (void*)(this->c3 + i*this->f3c->local_size)); + this->f0c->switch_endianness( + (this->c3 + i*this->f3c->local_size)); DEBUG_MSG("p3DFFT_to_iR::read " "this->f0c->transpose(...);\n"); this->f0c->transpose( diff --git a/test3.ipynb b/test3.ipynb index 1cacdb0eec355b0e550a9b03f64cade04a18378c..a4beedc247e155d322c1378a7bde449abde7fabc 100644 --- a/test3.ipynb +++ b/test3.ipynb @@ -1,7 +1,7 @@ { "metadata": { "name": "", - "signature": "sha256:966c6344a3d90cdf5a7423c96eebbfd82f41bd0e6556fcce769383cb4e93116c" + "signature": "sha256:48849ce7df2009ce7253f1b242366c1e998f76ecec705fb62d3af98ecbe8bbc0" }, "nbformat": 3, "nbformat_minor": 0, @@ -57,22 +57,14 @@ "Kdata0 = generate_data_3D(n, p = 2).astype(np.complex64)\n", "Kdata1 = generate_data_3D(n, p = 2).astype(np.complex64)\n", "Kdata2 = generate_data_3D(n, p = 2).astype(np.complex64)\n", - "Kdata0.T.copy().astype('<c8').tofile(\"Kdata0\")\n", - "Kdata1.T.copy().astype('<c8').tofile(\"Kdata1\")\n", - "Kdata2.T.copy().astype('<c8').tofile(\"Kdata2\")" + "Kdata0.T.copy().astype('>c8').tofile(\"Kdata0\")\n", + "Kdata1.T.copy().astype('>c8').tofile(\"Kdata1\")\n", + "Kdata2.T.copy().astype('>c8').tofile(\"Kdata2\")" ], "language": "python", "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stderr", - "text": [ - "-c:15: RuntimeWarning: divide by zero encountered in true_divide\n" - ] - } - ], - "prompt_number": 2 + "outputs": [], + "prompt_number": 7 }, { "cell_type": "code", @@ -155,7 +147,7 @@ "language": "python", "metadata": {}, "outputs": [], - "prompt_number": 3 + "prompt_number": 8 }, { "cell_type": "code", @@ -208,7 +200,7 @@ "language": "python", "metadata": {}, "outputs": [], - "prompt_number": 5 + "prompt_number": 15 }, { "cell_type": "code", @@ -249,11 +241,11 @@ "text": [ "0.0\n", "distance is small\n", - "14.4104\n" + "15.2714\n" ] } ], - "prompt_number": 6 + "prompt_number": 16 }, { "cell_type": "code",