#include "parameter_homotopy.hpp" #include "random.hpp" #include "my_system.hpp" #include int main() { bertini::LoggingInit(); auto step1_params = demo::MakeStep1Parameters(); auto target_sys_step1 = demo::ConstructSystem(step1_params); std::cout << "your target_system for step 1:\n\n"; std::cout << target_sys_step1 << '\n'; std::cout << "\n\nwith parameter values:\n\n"; for (const auto& p : step1_params) std::cout << p << " "; std::cout << '\n'; // now to solve the start system. auto stepone_solutions = demo::StepOne(target_sys_step1); std::cout << "done computing the " << stepone_solutions.size() << " step1 solutions, and here they are: \n"; for (auto& iter : stepone_solutions) std::cout << iter << '\n' << '\n'; auto t = bertini::Variable::Make("t"); auto step2_stuff = demo::MakeStep2Parameters(step1_params, t); auto homotopy_sys_step2 = demo::ConstructSystem(std::get<0>(step2_stuff)); homotopy_sys_step2.AddPathVariable(t); auto target_sys_step2 = demo::ConstructSystem(std::get<1>(step2_stuff)); int num_to_step2s = 100; auto start_allstep2 = std::chrono::high_resolution_clock::now(); for (int ii=0; ii(step2_stuff)) { bertini::mpfr v; bertini::RandomReal(v, 30); p->precision(30); p->set_current_value(bertini::dbl(v)); p->set_current_value(v); } bertini::DefaultPrecision(16); // std::cout << "your target system for step2:\n" << target_sys_step2 << '\n'; // for (auto& p : std::get<1>(step2_stuff)) // std::cout << "solving for parameter values " << *p << " " << p->Eval() << '\n'; auto steptwo_solutions = demo::StepTwo(target_sys_step2, target_sys_step1, homotopy_sys_step2, stepone_solutions); // std::cout << "done computing the " << steptwo_solutions.size() << " step2 solutions, and here they are: \n"; // for (auto& iter : steptwo_solutions) // std::cout << iter << '\n' << '\n'; std::cout << (std::chrono::high_resolution_clock::now() - start_iteration).count() << '\n'; } std::cout << "solving " << num_to_step2s << " " << (std::chrono::high_resolution_clock::now() - start_allstep2).count() << '\n'; return 0; }