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

// root_finding.hpp
#ifndef SANGI_ROOT_FINDING_HPP
#define SANGI_ROOT_FINDING_HPP

// Include all root-finding related headers
#include "root_finding_base.hpp"
#include "root_finding_1d.hpp"
#include "root_finding_nd.hpp"
#include "polynomial_roots.hpp"


// Provide namespace aliases (for convenience)
namespace sangi {
namespace root = sangi; // Accessible via the short name "root"

// Aliases for compatibility with older versions
// Marked as deprecated; use of the new API is recommended
#ifdef __has_cpp_attribute
#if __has_cpp_attribute(deprecated)
[[deprecated("Use RootFindingResult<T> bisection() instead")]]
#endif
#endif
inline auto bisection_old = bisection_legacy<double>;

#ifdef __has_cpp_attribute
#if __has_cpp_attribute(deprecated)
[[deprecated("Use RootFindingResult<T> newton_raphson() instead")]]
#endif
#endif
inline auto newton_raphson_old = newton_raphson_legacy<double>;

#ifdef __has_cpp_attribute
#if __has_cpp_attribute(deprecated)
[[deprecated("Use RootFindingResult<T> secant_method() instead")]]
#endif
#endif
inline auto secant_method_old = secant_method_legacy<double>;

#ifdef __has_cpp_attribute
#if __has_cpp_attribute(deprecated)
[[deprecated("Use RootFindingResult<T> brent_method() instead")]]
#endif
#endif
inline auto brent_method_old = brent_method_legacy<double>;

}

#endif // SANGI_ROOT_FINDING_HPP