|
Bertini 2 - C++ Core
Software for Numerical Algebraic Geometry
|
#include <straight_line_program.hpp>
Classes | |
| struct | InputLocations |
| struct | NumberOf |
| struct | OutputLocations |
Public Member Functions | |
| template<typename NumT> | |
| void | Eval () const |
| loops through the instructions in memory and evaluates each operation | |
| template<typename Derived, typename ComplexT> | |
| void | Eval (Eigen::MatrixBase< Derived > const &variable_values, ComplexT const &time) const |
| copies the variable values into the Matrix base and the path variables into the complex type time | |
| template<typename NumT> | |
| Vec< NumT > | GetFuncVals () const |
| creates the Vec<NumT> to be used in the overloaded function | |
| template<typename NumT> | |
| void | GetFuncValsInPlace (Vec< NumT > &result) const |
| assignts the computed values of functions into the given vector | |
| template<typename NumT> | |
| Mat< NumT > | GetJacobian () const |
| creates the Vec<NumT> to be used in the overloaded function | |
| template<typename NumT> | |
| void | GetJacobianInPlace (Mat< NumT > &result) const |
| retrieves the computed values of jacobians | |
| template<typename NumT> | |
| Vec< NumT > | GetTimeDeriv () const |
| creates the Vec<NumT> to be used in the overloaded function | |
| template<typename NumT> | |
| void | GetTimeDerivInPlace (Vec< NumT > &result) const |
| copies the values of the time derivatives into your given vector | |
| bool | HavePathVariable () const |
| Does this SLP have a path variable? | |
| unsigned | precision () const |
| Get the current precision of the SLP. | |
| void | precision (unsigned new_precision) const |
| change the precision of the SLP. | |
| template<typename ComplexT> | |
| void | SetPathVariable (ComplexT const &time) const |
| Copy the current time value to memory. | |
| template<typename Derived> | |
| void | SetVariableValues (Eigen::MatrixBase< Derived > const &variable_values) const |
| Copy the values of the variables from the passed in vector to memory. | |
| StraightLineProgram (System const &sys) | |
Friends | |
| std::ostream & | operator<< (std::ostream &out, const StraightLineProgram &s) |
| Overloaded operator for printing to an arbirtary out stream. | |
An implementation of straight-line programs, implemented with strong inspiration from Bertini1's implementation.
One constructs a SLP from a system, like
Maybe you don't need to know this, but in construction the SLP uses a helper class, the SLPCompiler
Patches are just functions in this framework. The variables appear at the front of the memory, then functions, then derivatives. This should make copying data out easy, because it's all in one place.
In contrast to Bertini1 SLP's, we don't put all the numbers at the front – they just get scattered through the SLP's memory.
| bertini::StraightLineProgram::StraightLineProgram | ( | System const & | sys | ) |
The constructor – how to make a SLP from a System.
| template void bertini::StraightLineProgram::Eval< mpfr_complex > | ( | ) | const |
loops through the instructions in memory and evaluates each operation
| NumT | numeric type |
uses a switch to find different operations from memory to make sure its performing the correct evaluations
todo: implement a compile-time version of this using Boost.Hana
|
inline |
copies the variable values into the Matrix base and the path variables into the complex type time
| Derived | derived type |
| ComplexT | complex type |
| variable_values | dervied matrixBase of variable values |
| time | complex type for time |
|
inline |
creates the Vec<NumT> to be used in the overloaded function
| NumT | numeric type |
|
inline |
assignts the computed values of functions into the given vector
| NumT | numeric type |
| result | The vector you're going to store the values into |
the function will NOT automatically resize your vector for you to be the correct size
|
inline |
creates the Vec<NumT> to be used in the overloaded function
| NumT | numeric type |
|
inline |
retrieves the computed values of jacobians
| NumT | numeric type |
| result | The vector you're going to store the values into |
the function will NOT automatically resize your vector for you to be the correct size
|
inline |
creates the Vec<NumT> to be used in the overloaded function
| NumT | numeric type |
|
inline |
copies the values of the time derivatives into your given vector
| NumT | numeric type |
| result | The vector you're going to store the values into |
the function will automatically resize your vector for you to be the correct size
|
inline |
Does this SLP have a path variable?
|
inline |
Get the current precision of the SLP.
| void bertini::StraightLineProgram::precision | ( | unsigned | new_precision | ) | const |
change the precision of the SLP.
Downsamples from the true values.
| new_precision | The new number of digits |
|
inline |
Copy the current time value to memory.
| time | The current time |
| ComplexT | the complex numeric type. |
If the SLP doesn't have a path variable, then this will throw.
|
inline |
Copy the values of the variables from the passed in vector to memory.
| variable_values | The vector of current variable values. |
|
friend |
Overloaded operator for printing to an arbirtary out stream.