\doxysection{fft.\+hpp}
\hypertarget{fft_8hpp_source}{}\label{fft_8hpp_source}\index{ginkgo/core/matrix/fft.hpp@{ginkgo/core/matrix/fft.hpp}}

\begin{DoxyCode}{0}
\DoxyCodeLine{00001\ \textcolor{comment}{//\ SPDX-\/FileCopyrightText:\ 2017\ -\/\ 2025\ The\ Ginkgo\ authors}}
\DoxyCodeLine{00002\ \textcolor{comment}{//}}
\DoxyCodeLine{00003\ \textcolor{comment}{//\ SPDX-\/License-\/Identifier:\ BSD-\/3-\/Clause}}
\DoxyCodeLine{00004\ }
\DoxyCodeLine{00005\ \textcolor{preprocessor}{\#ifndef\ GKO\_PUBLIC\_CORE\_MATRIX\_FFT\_HPP\_}}
\DoxyCodeLine{00006\ \textcolor{preprocessor}{\#define\ GKO\_PUBLIC\_CORE\_MATRIX\_FFT\_HPP\_}}
\DoxyCodeLine{00007\ }
\DoxyCodeLine{00008\ }
\DoxyCodeLine{00009\ \textcolor{preprocessor}{\#include\ <ginkgo/core/base/array.hpp>}}
\DoxyCodeLine{00010\ \textcolor{preprocessor}{\#include\ <ginkgo/core/base/lin\_op.hpp>}}
\DoxyCodeLine{00011\ }
\DoxyCodeLine{00012\ }
\DoxyCodeLine{00013\ \textcolor{keyword}{namespace\ }\doxymbox{\hyperlink{namespacegko}{gko}}\ \{}
\DoxyCodeLine{00014\ \textcolor{keyword}{namespace\ }\doxymbox{\hyperlink{namespacegko_1_1matrix}{matrix}}\ \{}
\DoxyCodeLine{00015\ }
\DoxyCodeLine{00016\ }
\DoxyCodeLine{00045\ \textcolor{keyword}{class\ }Fft\ :\ \textcolor{keyword}{public}\ \doxymbox{\hyperlink{classgko_1_1EnableLinOp}{EnableLinOp}}<Fft>,}
\DoxyCodeLine{00046\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{public}\ \doxymbox{\hyperlink{classgko_1_1WritableToMatrixData}{WritableToMatrixData}}<std::complex<float>,\ int32>,}
\DoxyCodeLine{00047\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{public}\ \doxymbox{\hyperlink{classgko_1_1WritableToMatrixData}{WritableToMatrixData}}<std::complex<float>,\ int64>,}
\DoxyCodeLine{00048\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{public}\ \doxymbox{\hyperlink{classgko_1_1WritableToMatrixData}{WritableToMatrixData}}<std::complex<double>,\ int32>,}
\DoxyCodeLine{00049\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{public}\ \doxymbox{\hyperlink{classgko_1_1WritableToMatrixData}{WritableToMatrixData}}<std::complex<double>,\ int64>,}
\DoxyCodeLine{00050\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{public}\ \doxymbox{\hyperlink{classgko_1_1Transposable}{Transposable}}\ \{}
\DoxyCodeLine{00051\ \ \ \ \ \textcolor{keyword}{friend}\ \textcolor{keyword}{class\ }\doxymbox{\hyperlink{classgko_1_1EnablePolymorphicObject}{EnablePolymorphicObject}}<Fft,\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}>;}
\DoxyCodeLine{00052\ }
\DoxyCodeLine{00053\ \textcolor{keyword}{public}:}
\DoxyCodeLine{00054\ \ \ \ \ \textcolor{keyword}{using\ }\doxymbox{\hyperlink{classgko_1_1EnableLinOp}{EnableLinOp}}<Fft>::convert\_to;}
\DoxyCodeLine{00055\ \ \ \ \ \textcolor{keyword}{using\ }\doxymbox{\hyperlink{classgko_1_1EnableLinOp}{EnableLinOp}}<Fft>::move\_to;}
\DoxyCodeLine{00056\ }
\DoxyCodeLine{00057\ \ \ \ \ \textcolor{keyword}{using\ }value\_type\ =\ std::complex<double>;}
\DoxyCodeLine{00058\ \ \ \ \ \textcolor{keyword}{using\ }index\_type\ =\ \doxymbox{\hyperlink{namespacegko_a913ec044df518649fa5a891f8dffae34}{int64}};}
\DoxyCodeLine{00059\ \ \ \ \ \textcolor{keyword}{using\ }transposed\_type\ =\ Fft;}
\DoxyCodeLine{00060\ }
\DoxyCodeLine{00061\ \ \ \ \ std::unique\_ptr<LinOp>\ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Fft_a5a4172a018d9c8236d1168f3852846ab}{transpose}}()\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00062\ }
\DoxyCodeLine{00063\ \ \ \ \ std::unique\_ptr<LinOp>\ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Fft_a5ce1f16dd7ba8593f62e33a18ef62313}{conj\_transpose}}()\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00064\ }
\DoxyCodeLine{00065\ \ \ \ \ \textcolor{keywordtype}{void}\ write(\doxymbox{\hyperlink{structgko_1_1matrix__data}{matrix\_data}}<std::complex<float>,\ \doxymbox{\hyperlink{namespacegko_a16bd14c10900eb804d784908d8aab5ab}{int32}}>\&\ data)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00066\ }
\DoxyCodeLine{00067\ \ \ \ \ \textcolor{keywordtype}{void}\ write(\doxymbox{\hyperlink{structgko_1_1matrix__data}{matrix\_data}}<std::complex<float>,\ \doxymbox{\hyperlink{namespacegko_a913ec044df518649fa5a891f8dffae34}{int64}}>\&\ data)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00068\ }
\DoxyCodeLine{00069\ \ \ \ \ \textcolor{keywordtype}{void}\ write(\doxymbox{\hyperlink{structgko_1_1matrix__data}{matrix\_data}}<std::complex<double>,\ \doxymbox{\hyperlink{namespacegko_a16bd14c10900eb804d784908d8aab5ab}{int32}}>\&\ data)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00070\ }
\DoxyCodeLine{00071\ \ \ \ \ \textcolor{keywordtype}{void}\ write(\doxymbox{\hyperlink{structgko_1_1matrix__data}{matrix\_data}}<std::complex<double>,\ \doxymbox{\hyperlink{namespacegko_a913ec044df518649fa5a891f8dffae34}{int64}}>\&\ data)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00072\ }
\DoxyCodeLine{00073\ \ \ \ \ \doxymbox{\hyperlink{structgko_1_1dim}{dim<1>}}\ get\_fft\_size()\ \textcolor{keyword}{const};}
\DoxyCodeLine{00074\ }
\DoxyCodeLine{00075\ \ \ \ \ \textcolor{keywordtype}{bool}\ is\_inverse()\ \textcolor{keyword}{const};}
\DoxyCodeLine{00076\ }
\DoxyCodeLine{00084\ \ \ \ \ \textcolor{keyword}{static}\ std::unique\_ptr<Fft>\ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Fft_aa8ff004070669eeb719a5d34b4742428}{create}}(std::shared\_ptr<const\ Executor>\ exec);}
\DoxyCodeLine{00085\ }
\DoxyCodeLine{00094\ \ \ \ \ \textcolor{keyword}{static}\ std::unique\_ptr<Fft>\ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Fft_aef493daa7e1ac0472b4b26c8f17d8ed6}{create}}(std::shared\_ptr<const\ Executor>\ exec,}
\DoxyCodeLine{00095\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ size\ =\ 0,}
\DoxyCodeLine{00096\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordtype}{bool}\ \doxymbox{\hyperlink{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972aa91c78e040f7b9d158f381e197f8beb4}{inverse}}\ =\ \textcolor{keyword}{false});}
\DoxyCodeLine{00097\ }
\DoxyCodeLine{00098\ \textcolor{keyword}{protected}:}
\DoxyCodeLine{00099\ \ \ \ \ Fft(std::shared\_ptr<const\ Executor>\ exec,\ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ size\ =\ 0,}
\DoxyCodeLine{00100\ \ \ \ \ \ \ \ \ \textcolor{keywordtype}{bool}\ \doxymbox{\hyperlink{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972aa91c78e040f7b9d158f381e197f8beb4}{inverse}}\ =\ \textcolor{keyword}{false});}
\DoxyCodeLine{00101\ }
\DoxyCodeLine{00102\ \ \ \ \ \textcolor{keywordtype}{void}\ apply\_impl(\textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ b,\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ x)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00103\ }
\DoxyCodeLine{00104\ \ \ \ \ \textcolor{keywordtype}{void}\ apply\_impl(\textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ alpha,\ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ b,\ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ beta,}
\DoxyCodeLine{00105\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ x)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00106\ }
\DoxyCodeLine{00107\ \textcolor{keyword}{private}:}
\DoxyCodeLine{00108\ \ \ \ \ \textcolor{keyword}{mutable}\ \doxymbox{\hyperlink{classgko_1_1array}{array<char>}}\ buffer\_;}
\DoxyCodeLine{00109\ \ \ \ \ \textcolor{keywordtype}{bool}\ inverse\_;}
\DoxyCodeLine{00110\ \};}
\DoxyCodeLine{00111\ }
\DoxyCodeLine{00112\ }
\DoxyCodeLine{00143\ \textcolor{keyword}{class\ }Fft2\ :\ \textcolor{keyword}{public}\ \doxymbox{\hyperlink{classgko_1_1EnableLinOp}{EnableLinOp}}<Fft2>,}
\DoxyCodeLine{00144\ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{public}\ \doxymbox{\hyperlink{classgko_1_1WritableToMatrixData}{WritableToMatrixData}}<std::complex<float>,\ int32>,}
\DoxyCodeLine{00145\ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{public}\ \doxymbox{\hyperlink{classgko_1_1WritableToMatrixData}{WritableToMatrixData}}<std::complex<float>,\ int64>,}
\DoxyCodeLine{00146\ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{public}\ \doxymbox{\hyperlink{classgko_1_1WritableToMatrixData}{WritableToMatrixData}}<std::complex<double>,\ int32>,}
\DoxyCodeLine{00147\ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{public}\ \doxymbox{\hyperlink{classgko_1_1WritableToMatrixData}{WritableToMatrixData}}<std::complex<double>,\ int64>,}
\DoxyCodeLine{00148\ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{public}\ \doxymbox{\hyperlink{classgko_1_1Transposable}{Transposable}}\ \{}
\DoxyCodeLine{00149\ \ \ \ \ \textcolor{keyword}{friend}\ \textcolor{keyword}{class\ }\doxymbox{\hyperlink{classgko_1_1EnablePolymorphicObject}{EnablePolymorphicObject}}<Fft2,\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}>;}
\DoxyCodeLine{00150\ }
\DoxyCodeLine{00151\ \textcolor{keyword}{public}:}
\DoxyCodeLine{00152\ \ \ \ \ \textcolor{keyword}{using\ }\doxymbox{\hyperlink{classgko_1_1EnableLinOp}{EnableLinOp}}<Fft2>::convert\_to;}
\DoxyCodeLine{00153\ \ \ \ \ \textcolor{keyword}{using\ }\doxymbox{\hyperlink{classgko_1_1EnableLinOp}{EnableLinOp}}<Fft2>::move\_to;}
\DoxyCodeLine{00154\ }
\DoxyCodeLine{00155\ \ \ \ \ \textcolor{keyword}{using\ }value\_type\ =\ std::complex<double>;}
\DoxyCodeLine{00156\ \ \ \ \ \textcolor{keyword}{using\ }index\_type\ =\ \doxymbox{\hyperlink{namespacegko_a913ec044df518649fa5a891f8dffae34}{int64}};}
\DoxyCodeLine{00157\ \ \ \ \ \textcolor{keyword}{using\ }transposed\_type\ =\ Fft2;}
\DoxyCodeLine{00158\ }
\DoxyCodeLine{00159\ \ \ \ \ std::unique\_ptr<LinOp>\ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Fft2_ab8d8067830d29ce7af252e5c917c39ad}{transpose}}()\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00160\ }
\DoxyCodeLine{00161\ \ \ \ \ std::unique\_ptr<LinOp>\ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Fft2_aaab750e26fcd9d0d8fd731b80312c29a}{conj\_transpose}}()\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00162\ }
\DoxyCodeLine{00163\ \ \ \ \ \textcolor{keywordtype}{void}\ write(\doxymbox{\hyperlink{structgko_1_1matrix__data}{matrix\_data}}<std::complex<float>,\ \doxymbox{\hyperlink{namespacegko_a16bd14c10900eb804d784908d8aab5ab}{int32}}>\&\ data)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00164\ }
\DoxyCodeLine{00165\ \ \ \ \ \textcolor{keywordtype}{void}\ write(\doxymbox{\hyperlink{structgko_1_1matrix__data}{matrix\_data}}<std::complex<float>,\ \doxymbox{\hyperlink{namespacegko_a913ec044df518649fa5a891f8dffae34}{int64}}>\&\ data)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00166\ }
\DoxyCodeLine{00167\ \ \ \ \ \textcolor{keywordtype}{void}\ write(\doxymbox{\hyperlink{structgko_1_1matrix__data}{matrix\_data}}<std::complex<double>,\ \doxymbox{\hyperlink{namespacegko_a16bd14c10900eb804d784908d8aab5ab}{int32}}>\&\ data)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00168\ }
\DoxyCodeLine{00169\ \ \ \ \ \textcolor{keywordtype}{void}\ write(\doxymbox{\hyperlink{structgko_1_1matrix__data}{matrix\_data}}<std::complex<double>,\ \doxymbox{\hyperlink{namespacegko_a913ec044df518649fa5a891f8dffae34}{int64}}>\&\ data)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00170\ }
\DoxyCodeLine{00171\ \ \ \ \ \doxymbox{\hyperlink{structgko_1_1dim}{dim<2>}}\ get\_fft\_size()\ \textcolor{keyword}{const};}
\DoxyCodeLine{00172\ }
\DoxyCodeLine{00173\ \ \ \ \ \textcolor{keywordtype}{bool}\ is\_inverse()\ \textcolor{keyword}{const};}
\DoxyCodeLine{00174\ }
\DoxyCodeLine{00182\ \ \ \ \ \textcolor{keyword}{static}\ std::unique\_ptr<Fft2>\ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Fft2_a3866d9c166cd99ee5bfa2c9f26d38fd7}{create}}(std::shared\_ptr<const\ Executor>\ exec);}
\DoxyCodeLine{00183\ }
\DoxyCodeLine{00191\ \ \ \ \ \textcolor{keyword}{static}\ std::unique\_ptr<Fft2>\ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Fft2_a665ee7b9871b5084de4c1f2278984ada}{create}}(std::shared\_ptr<const\ Executor>\ exec,}
\DoxyCodeLine{00192\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ size);}
\DoxyCodeLine{00193\ }
\DoxyCodeLine{00203\ \ \ \ \ \textcolor{keyword}{static}\ std::unique\_ptr<Fft2>\ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Fft2_a4f307f1877e99d1285e1be0c4e3b13a7}{create}}(std::shared\_ptr<const\ Executor>\ exec,}
\DoxyCodeLine{00204\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ size1,\ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ size2,}
\DoxyCodeLine{00205\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordtype}{bool}\ \doxymbox{\hyperlink{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972aa91c78e040f7b9d158f381e197f8beb4}{inverse}}\ =\ \textcolor{keyword}{false});}
\DoxyCodeLine{00206\ }
\DoxyCodeLine{00207\ \textcolor{keyword}{protected}:}
\DoxyCodeLine{00208\ \ \ \ \ Fft2(std::shared\_ptr<const\ Executor>\ exec,\ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ size1\ =\ 0,}
\DoxyCodeLine{00209\ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ size2\ =\ 0,\ \textcolor{keywordtype}{bool}\ \doxymbox{\hyperlink{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972aa91c78e040f7b9d158f381e197f8beb4}{inverse}}\ =\ \textcolor{keyword}{false});}
\DoxyCodeLine{00210\ }
\DoxyCodeLine{00211\ \ \ \ \ \textcolor{keywordtype}{void}\ apply\_impl(\textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ b,\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ x)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00212\ }
\DoxyCodeLine{00213\ \ \ \ \ \textcolor{keywordtype}{void}\ apply\_impl(\textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ alpha,\ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ b,\ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ beta,}
\DoxyCodeLine{00214\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ x)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00215\ }
\DoxyCodeLine{00216\ \textcolor{keyword}{private}:}
\DoxyCodeLine{00217\ \ \ \ \ \textcolor{keyword}{mutable}\ \doxymbox{\hyperlink{classgko_1_1array}{array<char>}}\ buffer\_;}
\DoxyCodeLine{00218\ \ \ \ \ \doxymbox{\hyperlink{structgko_1_1dim}{dim<2>}}\ fft\_size\_;}
\DoxyCodeLine{00219\ \ \ \ \ \textcolor{keywordtype}{bool}\ inverse\_;}
\DoxyCodeLine{00220\ \};}
\DoxyCodeLine{00221\ }
\DoxyCodeLine{00222\ }
\DoxyCodeLine{00255\ \textcolor{keyword}{class\ }Fft3\ :\ \textcolor{keyword}{public}\ \doxymbox{\hyperlink{classgko_1_1EnableLinOp}{EnableLinOp}}<Fft3>,}
\DoxyCodeLine{00256\ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{public}\ \doxymbox{\hyperlink{classgko_1_1WritableToMatrixData}{WritableToMatrixData}}<std::complex<float>,\ int32>,}
\DoxyCodeLine{00257\ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{public}\ \doxymbox{\hyperlink{classgko_1_1WritableToMatrixData}{WritableToMatrixData}}<std::complex<float>,\ int64>,}
\DoxyCodeLine{00258\ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{public}\ \doxymbox{\hyperlink{classgko_1_1WritableToMatrixData}{WritableToMatrixData}}<std::complex<double>,\ int32>,}
\DoxyCodeLine{00259\ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{public}\ \doxymbox{\hyperlink{classgko_1_1WritableToMatrixData}{WritableToMatrixData}}<std::complex<double>,\ int64>,}
\DoxyCodeLine{00260\ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{public}\ \doxymbox{\hyperlink{classgko_1_1Transposable}{Transposable}}\ \{}
\DoxyCodeLine{00261\ \ \ \ \ \textcolor{keyword}{friend}\ \textcolor{keyword}{class\ }\doxymbox{\hyperlink{classgko_1_1EnablePolymorphicObject}{EnablePolymorphicObject}}<Fft3,\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}>;}
\DoxyCodeLine{00262\ }
\DoxyCodeLine{00263\ \textcolor{keyword}{public}:}
\DoxyCodeLine{00264\ \ \ \ \ \textcolor{keyword}{using\ }\doxymbox{\hyperlink{classgko_1_1EnableLinOp}{EnableLinOp}}<Fft3>::convert\_to;}
\DoxyCodeLine{00265\ \ \ \ \ \textcolor{keyword}{using\ }\doxymbox{\hyperlink{classgko_1_1EnableLinOp}{EnableLinOp}}<Fft3>::move\_to;}
\DoxyCodeLine{00266\ }
\DoxyCodeLine{00267\ \ \ \ \ \textcolor{keyword}{using\ }value\_type\ =\ std::complex<double>;}
\DoxyCodeLine{00268\ \ \ \ \ \textcolor{keyword}{using\ }index\_type\ =\ \doxymbox{\hyperlink{namespacegko_a913ec044df518649fa5a891f8dffae34}{int64}};}
\DoxyCodeLine{00269\ \ \ \ \ \textcolor{keyword}{using\ }transposed\_type\ =\ Fft3;}
\DoxyCodeLine{00270\ }
\DoxyCodeLine{00271\ \ \ \ \ std::unique\_ptr<LinOp>\ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Fft3_abc98da9eaa9de7af55860d89ca3e888f}{transpose}}()\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00272\ }
\DoxyCodeLine{00273\ \ \ \ \ std::unique\_ptr<LinOp>\ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Fft3_a11f427f4b741e219e626b1297c0542d3}{conj\_transpose}}()\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00274\ }
\DoxyCodeLine{00275\ \ \ \ \ \textcolor{keywordtype}{void}\ write(\doxymbox{\hyperlink{structgko_1_1matrix__data}{matrix\_data}}<std::complex<float>,\ \doxymbox{\hyperlink{namespacegko_a16bd14c10900eb804d784908d8aab5ab}{int32}}>\&\ data)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00276\ }
\DoxyCodeLine{00277\ \ \ \ \ \textcolor{keywordtype}{void}\ write(\doxymbox{\hyperlink{structgko_1_1matrix__data}{matrix\_data}}<std::complex<float>,\ \doxymbox{\hyperlink{namespacegko_a913ec044df518649fa5a891f8dffae34}{int64}}>\&\ data)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00278\ }
\DoxyCodeLine{00279\ \ \ \ \ \textcolor{keywordtype}{void}\ write(\doxymbox{\hyperlink{structgko_1_1matrix__data}{matrix\_data}}<std::complex<double>,\ \doxymbox{\hyperlink{namespacegko_a16bd14c10900eb804d784908d8aab5ab}{int32}}>\&\ data)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00280\ }
\DoxyCodeLine{00281\ \ \ \ \ \textcolor{keywordtype}{void}\ write(\doxymbox{\hyperlink{structgko_1_1matrix__data}{matrix\_data}}<std::complex<double>,\ \doxymbox{\hyperlink{namespacegko_a913ec044df518649fa5a891f8dffae34}{int64}}>\&\ data)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00282\ }
\DoxyCodeLine{00283\ \ \ \ \ \doxymbox{\hyperlink{structgko_1_1dim}{dim<3>}}\ get\_fft\_size()\ \textcolor{keyword}{const};}
\DoxyCodeLine{00284\ }
\DoxyCodeLine{00285\ \ \ \ \ \textcolor{keywordtype}{bool}\ is\_inverse()\ \textcolor{keyword}{const};}
\DoxyCodeLine{00286\ }
\DoxyCodeLine{00294\ \ \ \ \ \textcolor{keyword}{static}\ std::unique\_ptr<Fft3>\ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Fft3_ac505426ed3df8ff3bd45863f8f9ccfe7}{create}}(std::shared\_ptr<const\ Executor>\ exec);}
\DoxyCodeLine{00295\ }
\DoxyCodeLine{00303\ \ \ \ \ \textcolor{keyword}{static}\ std::unique\_ptr<Fft3>\ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Fft3_a8fd45c6c906d43b56a096b10cf80d6f4}{create}}(std::shared\_ptr<const\ Executor>\ exec,}
\DoxyCodeLine{00304\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ size);}
\DoxyCodeLine{00305\ }
\DoxyCodeLine{00316\ \ \ \ \ \textcolor{keyword}{static}\ std::unique\_ptr<Fft3>\ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Fft3_a0e936a1af68ec5ee4a2a3208b16c2ced}{create}}(std::shared\_ptr<const\ Executor>\ exec,}
\DoxyCodeLine{00317\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ size1,\ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ size2,}
\DoxyCodeLine{00318\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ size3,\ \textcolor{keywordtype}{bool}\ \doxymbox{\hyperlink{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972aa91c78e040f7b9d158f381e197f8beb4}{inverse}}\ =\ \textcolor{keyword}{false});}
\DoxyCodeLine{00319\ }
\DoxyCodeLine{00320\ \textcolor{keyword}{protected}:}
\DoxyCodeLine{00321\ \ \ \ \ Fft3(std::shared\_ptr<const\ Executor>\ exec,\ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ size1\ =\ 0,}
\DoxyCodeLine{00322\ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ size2\ =\ 0,\ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ size3\ =\ 0,\ \textcolor{keywordtype}{bool}\ \doxymbox{\hyperlink{namespacegko_1_1matrix_ade1f3cdbf05032c2d681fa151de02972aa91c78e040f7b9d158f381e197f8beb4}{inverse}}\ =\ \textcolor{keyword}{false});}
\DoxyCodeLine{00323\ }
\DoxyCodeLine{00324\ \ \ \ \ \textcolor{keywordtype}{void}\ apply\_impl(\textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ b,\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ x)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00325\ }
\DoxyCodeLine{00326\ \ \ \ \ \textcolor{keywordtype}{void}\ apply\_impl(\textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ alpha,\ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ b,\ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ beta,}
\DoxyCodeLine{00327\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ x)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00328\ }
\DoxyCodeLine{00329\ \textcolor{keyword}{private}:}
\DoxyCodeLine{00330\ \ \ \ \ \textcolor{keyword}{mutable}\ \doxymbox{\hyperlink{classgko_1_1array}{array<char>}}\ buffer\_;}
\DoxyCodeLine{00331\ \ \ \ \ \doxymbox{\hyperlink{structgko_1_1dim}{dim<3>}}\ fft\_size\_;}
\DoxyCodeLine{00332\ \ \ \ \ \textcolor{keywordtype}{bool}\ inverse\_;}
\DoxyCodeLine{00333\ \};}
\DoxyCodeLine{00334\ }
\DoxyCodeLine{00335\ }
\DoxyCodeLine{00336\ \}\ \ \textcolor{comment}{//\ namespace\ matrix}}
\DoxyCodeLine{00337\ \}\ \ \textcolor{comment}{//\ namespace\ gko}}
\DoxyCodeLine{00338\ }
\DoxyCodeLine{00339\ }
\DoxyCodeLine{00340\ \textcolor{preprocessor}{\#endif\ \ }\textcolor{comment}{//\ GKO\_PUBLIC\_CORE\_MATRIX\_FFT\_HPP\_}}

\end{DoxyCode}
