Add files

This commit is contained in:
2025-01-14 01:15:48 +01:00
commit 2f9fcec55b
406 changed files with 87154 additions and 0 deletions

View File

@@ -0,0 +1,120 @@
#pragma once
#include <bertini2/system.hpp>
template<typename NumType> using Vec = Eigen::Matrix<NumType, Eigen::Dynamic, 1>;
template<typename NumType> using Mat = Eigen::Matrix<NumType, Eigen::Dynamic, Eigen::Dynamic>;
using dbl = bertini::dbl;
using mpfr = bertini::mpfr;
namespace demo{
using Node = std::shared_ptr<bertini::node::Node>;
using Variable = std::shared_ptr<bertini::node::Variable>;
auto ConstructSystem1()
{
using bertini::Variable::Make;
using bertini::Integer::Make;
using bertini::MakeFloat;
auto x1 = Variable::Make("x1");
auto x2 = Variable::Make("x2");
auto x3 = Variable::Make("x3");
auto x4 = Variable::Make("x4");
auto p1 = MakeFloat("3.2");
auto p2 = MakeFloat("-2.8");
auto p3 = bertini::MakeFloat("3.5");
auto p4 = MakeFloat("-3.6");
std::vector<Node> params{p1, p2, p3, p4};
auto f1 = pow(x1,3)*params[0] + x1*x1*x2*params[1] + x1*x2*x2*params[2] + x1*x3*x3*params[3] + x1*x4*x4*params[0]
+ x1*params[1]+ x2*x2*x2*params[2] + x2*pow(x3,2)*params[3] + x2*x4*x4*params[0] + x2*params[1] + 1;
auto f2 = x1*x1*x1*params[2] + x1*x1*x2*params[3] + x1*x2*x2*params[0] + x1*x3*x3*params[1] + x1*x4*x4*params[2]
+ x1*params[3] + x2*x2*x2*params[0] + x2*x3*x3*params[1] + x2*x4*x4*params[2] + x2*params[3] - 1;
auto f3 = x1*x1*x3*params[0] + x1*x2*x3*params[1] + x2*x2*x3*params[2] + x3*x3*x3*params[3] + x3*pow(x4,2)*params[0] + x3*params[1] + 2;
auto f4 = pow(x1,2)*x4*params[2] + x1*x2*x4*params[3] + x2*x2*x4*params[0] + x3*x3*x4*params[1] + x4*x4*x4*params[2] + x4*params[3] - 3;
// make an empty system
bertini::System Sys;
// add the functions. we could elide the `auto` construction above and construct directly into the system if we wanted
Sys.AddFunction(f1);
Sys.AddFunction(f2);
Sys.AddFunction(f3);
Sys.AddFunction(f4);
// make an affine variable group
bertini::VariableGroup vg{x1, x2, x3, x4};
Sys.AddVariableGroup(vg);
Sys.Differentiate();
return Sys;
}
template<typename CType>
auto GenerateSystemInput(bertini::System S, unsigned int prec=16)
{
int num_variables = S.NumVariables();
Vec<CType> v(num_variables);
bertini::DefaultPrecision(prec);
for(int ii = 0; ii < num_variables; ++ii)
{
v(ii) = CType(3)*bertini::RandomUnit<CType>();
}
return v;
}
template<typename CType>
auto GenerateRHS(bertini::System S, unsigned int prec=16)
{
auto num_functions = S.NumFunctions();
Vec<CType> b(num_functions);
bertini::DefaultPrecision(prec);
for(int ii = 0; ii < num_functions; ++ii)
{
b(ii) = CType(3)*bertini::RandomUnit<CType>();
}
return b;
}
template<typename CType>
auto GenerateMatrix(int N, unsigned int prec=16)
{
Mat<CType> A(N,N);
bertini::DefaultPrecision(prec);
for(int ii = 0; ii < N; ++ii)
{
for(int jj = 0; jj < N; ++jj)
{
A(ii,jj) = CType(3)*bertini::RandomUnit<CType>();
}
}
return A;
}
} // namespace demo

View File

@@ -0,0 +1,34 @@
//
// performance_tests.hpp
// Xcode_b2
//
// Created by Jeb Collins University of Mary Washington. All rights reserved.
//
#ifndef performance_tests_h
#define performance_tests_h
#include "construct_system.hpp"
template<typename CType>
void EvalAndLUTests(const bertini::System& S, const bertini::Vec<CType>& v,
const bertini::Vec<CType>& b, int num_times)
{
auto J = S.Jacobian(v);
for(int ii = 0; ii < num_times; ++ii)
{
S.Reset();
J = S.Jacobian(v);
J.lu().solve(b);
}
}
template<typename CType>
void MatrixMultTests(const Mat<CType>& A, int num_times)
{
for(int ii = 0; ii < num_times; ++ii)
{
A*A;
}
}
#endif /* performance_tests_h */