From 4bb6d8518f7dbd723c6ce686075fb11f0c068e52 Mon Sep 17 00:00:00 2001 From: Chichi Lalescu <clalesc1@jhu.edu> Date: Fri, 20 Feb 2015 09:35:14 -0500 Subject: [PATCH] add interleave functionality --- src/field_descriptor.cpp | 11 +++++++++++ src/field_descriptor.hpp | 5 +++++ 2 files changed, 16 insertions(+) diff --git a/src/field_descriptor.cpp b/src/field_descriptor.cpp index a11e81df..df101d1b 100644 --- a/src/field_descriptor.cpp +++ b/src/field_descriptor.cpp @@ -227,6 +227,17 @@ int field_descriptor::transpose( return EXIT_SUCCESS; } +int field_descriptor::interleave( + float *input, + float *output, + int dim) +{ + for (int k = 0; k < this->local_size; k++) + for (int j = 0; j < dim; j++) + output[k*dim + j] = input[j*this->local_size + k]; + 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 b8e9c36c..92092099 100644 --- a/src/field_descriptor.hpp +++ b/src/field_descriptor.hpp @@ -54,6 +54,11 @@ class field_descriptor fftwf_complex *input, fftwf_complex *output = NULL); + int interleave( + float *input, + float *output, + int dim); + inline int rank(int i0) { return i0 / this->subsizes[0]; -- GitLab