Utilities API ============= Helper functions and utilities. FFT Operations -------------- FFT Wrapper ~~~~~~~~~~~ .. code-block:: cpp template class FFT { public: FFT(size_t nx, size_t ny, size_t nz = 1); ~FFT(); void forward(const T* input, std::complex* output); void backward(const std::complex* input, T* output); void forward_inplace(std::complex* data); void backward_inplace(std::complex* data); }; Initialize FFT plan and execute forward/backward transforms. NUFFT Operations ---------------- Non-Uniform FFT ~~~~~~~~~~~~~~~ .. code-block:: cpp template class NUFFT { public: NUFFT(size_t n_modes, size_t n_points); void set_points(const T* x, const T* y, const T* z = nullptr); void forward(const std::complex* input, std::complex* output); void backward(const std::complex* input, std::complex* output); }; Non-uniform FFT using FINUFFT. Timer ----- Performance Profiling ~~~~~~~~~~~~~~~~~~~~~ .. code-block:: cpp class Timer { public: Timer(); void start(); void stop(); double elapsed() const; // seconds double elapsed_ms() const; // milliseconds static Timer& global(); // Global timer instance }; High-resolution timer for performance measurements. Example usage: .. code-block:: cpp Timer timer; timer.start(); // ... some computation ... timer.stop(); std::cout << "Elapsed time: " << timer.elapsed() << " seconds\n"; Logger ------ Logging Utility ~~~~~~~~~~~~~~~ .. code-block:: cpp enum class LogLevel { DEBUG, INFO, WARNING, ERROR, CRITICAL }; class Logger { public: static Logger& get(); void set_level(LogLevel level); void set_output(std::ostream& stream); void debug(const std::string& message); void info(const std::string& message); void warning(const std::string& message); void error(const std::string& message); void critical(const std::string& message); }; // Convenience macros #define LOG_DEBUG(msg) Logger::get().debug(msg) #define LOG_INFO(msg) Logger::get().info(msg) #define LOG_WARNING(msg) Logger::get().warning(msg) #define LOG_ERROR(msg) Logger::get().error(msg) Example usage: .. code-block:: cpp #include "logger.h" Logger::get().set_level(LogLevel::INFO); LOG_INFO("Starting reconstruction"); LOG_DEBUG("Debug information"); // Not printed (below INFO level) LOG_WARNING("Convergence slow"); LOG_ERROR("Failed to open file"); Array Operations ---------------- Basic Operations ~~~~~~~~~~~~~~~~ .. code-block:: cpp // Element-wise operations template Array operator+(const Array& a, const Array& b); template Array operator-(const Array& a, const Array& b); template Array operator*(const Array& a, const Array& b); template Array operator*(const Array& a, T scalar); Statistical Operations ~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: cpp template T sum(const Array& a); template T mean(const Array& a); template T std_dev(const Array& a); template T min(const Array& a); template T max(const Array& a); Gradient Operations ~~~~~~~~~~~~~~~~~~~ .. code-block:: cpp template std::array, 3> gradient(const Array3D& input); Compute 3D gradient (returns [grad_z, grad_y, grad_x]). .. code-block:: cpp template Array3D divergence( const Array3D& dx, const Array3D& dy, const Array3D& dz ); Compute divergence of a vector field. Padding Operations ------------------ .. code-block:: cpp template Array pad(const Array& input, size_t pad_width); template Array unpad(const Array& input, size_t pad_width); Add or remove zero-padding around an array. Filtering --------- Gaussian Filter ~~~~~~~~~~~~~~~ .. code-block:: cpp template Array gaussian_filter(const Array& input, T sigma); Apply Gaussian smoothing. Median Filter ~~~~~~~~~~~~~ .. code-block:: cpp template Array median_filter(const Array& input, size_t kernel_size); Apply median filter for noise reduction. Memory Utilities ---------------- Memory Estimation ~~~~~~~~~~~~~~~~~ .. code-block:: cpp size_t estimate_memory( const std::array& dims, size_t n_projections ); Estimate memory requirements for reconstruction (in bytes). .. code-block:: cpp bool has_sufficient_memory(size_t required_bytes); Check if system has sufficient available memory.