Restructure C++ core into cpp module and package bindings.
Move the pricing engine sources out of src/ into cpp/, add the closed-form engine and pybind wiring, and align tests/build targets with the new project layout. Made-with: Cursor
This commit is contained in:
30
cpp/NewtonSolver.hpp
Normal file
30
cpp/NewtonSolver.hpp
Normal file
@@ -0,0 +1,30 @@
|
||||
/**
|
||||
* @file NewtonSolver.hpp
|
||||
* @brief Generic Newton iteration helper (incomplete / reserved for solvers).
|
||||
*/
|
||||
|
||||
#ifndef QUANTENGINE_GAUSSSOLVER_HPP
|
||||
#define QUANTENGINE_GAUSSSOLVER_HPP
|
||||
|
||||
#include <functional>
|
||||
|
||||
/**
|
||||
* @brief Template Newton step loop with relative/absolute tolerances.
|
||||
*/
|
||||
class NewtonSolver {
|
||||
template<typename F, typename DFinv, typename T>
|
||||
bool solve(F&& func, DFinv&& dfinv,T x0 , double rtol, double atol) {
|
||||
T x = x0;
|
||||
int i = 0;
|
||||
T increment;
|
||||
do {
|
||||
increment = dfinv(x) * func(x);
|
||||
x -= increment;
|
||||
++i;
|
||||
} while (i < 1000 && std::abs(increment)/ std::abs(x) > rtol && std::abs(increment) > atol);
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
#endif //QUANTENGINE_GAUSSSOLVER_HPP
|
||||
Reference in New Issue
Block a user