// Copyright (C) 2026 Kiyotsugu Arai
// SPDX-License-Identifier: LGPL-3.0-or-later

// fft.cpp — explicit instantiation of FFT / RealFFT / FFTEngine (float, double)
//
// This causes the float/double FFT code to be compiled exactly once into sangi_fft.lib,
// suppressing template re-instantiation in each TU.
// Paired with the extern template declarations on the header side.

#include <math/fft/fft.hpp>

namespace sangi {

// ---------------------------------------------------------------------------
// FFT<complex<T>, T> — primary template
// ---------------------------------------------------------------------------
template class FFT<Complex<float>, float>;
template class FFT<Complex<double>, double>;

// ---------------------------------------------------------------------------
// RealFFT<T> — real-valued FFT
// ---------------------------------------------------------------------------
template class RealFFT<float>;
template class RealFFT<double>;

// ---------------------------------------------------------------------------
// FFTEngine<T> — instance-based FFT wrapper
// ---------------------------------------------------------------------------
template class FFTEngine<float>;
template class FFTEngine<double>;

} // namespace sangi
