Skip to content

File parafafttranspositionflags.h

File List > code_source > templat > include > TempLat > fft > external > parafaft > parafafttranspositionflags.h

Go to the documentation of this file

#ifndef TEMPLAT_FFT_EXTERNAL_PARAFAFT_PARAFAFTTRANSPOSITIONFLAGS_H
#define TEMPLAT_FFT_EXTERNAL_PARAFAFT_PARAFAFTTRANSPOSITIONFLAGS_H

/* This file is part of TempLat, available at https://cosmolattice.github.io/templat .
   Copyright 2021-2026 The TempLat authors, see AUTHORS.md.
   Released under the MIT license, see LICENSE.md. */

// File info: Main contributor(s): Adrien Florio, Year: 2026

#ifdef HAVE_PARAFAFT

#include "TempLat/lattice/memory/memorylayouts/fftlayoutstruct.h"

namespace TempLat
{
  class ParafaftTranspositionFlags
  {
  public:
    ParafaftTranspositionFlags(const FFTLayoutStruct &layout)
    {
      // Parafaft doesn't support transposition - always uses canonical order
      (void)layout; // unused, but kept for interface compatibility
      mFlagC2R = 0u;
      mFlagR2C = 0u;
    }

    unsigned int c2r() const { return mFlagC2R; }
    unsigned int r2c() const { return mFlagR2C; }

    friend std::ostream &operator<<(std::ostream &ostream, const ParafaftTranspositionFlags &tr)
    {
      (void)tr; // unused
      ostream << "C2R : not transposed (parafaft does not support transposition).\n";
      ostream << "R2C : not transposed (parafaft does not support transposition).\n";
      return ostream;
    }

  private:
    unsigned int mFlagC2R;
    unsigned int mFlagR2C;
  };
} // namespace TempLat

#endif // HAVE_PARAFAFT

#endif