|
Macaulay2 Engine
|
Numerical Algebraic Geometry: homotopy continuation PathTracker and supporting numeric types. More...
#include "engine-includes.hpp"#include <algorithm>#include <assert.h>#include <map>#include <math.h>#include <memory>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <sys/types.h>#include <utility>#include <vector>#include "interface/NAG.h"#include "matrix.hpp"#include "SLP.hpp"#include "aring-CC.hpp"#include "aring-glue.hpp"#include "aring.hpp"#include "buffer.hpp"#include "error.h"#include "hash.hpp"#include "newdelete.hpp"#include "ring.hpp"#include "ringelem.hpp"Go to the source code of this file.
Classes | |
| class | M2PointArray |
| MutableEngineObject wrapper that owns a PointArray via unique_ptr. More... | |
| class | PointArray |
Container of numerical points equipped with an ![]() | |
| class | complex |
| class | ComplexField |
| Field-traits tag used as the template parameter of SLP<Field> to pick the complex element type. More... | |
| class | SLP< Field > |
| class | StraightLineProgram |
| struct | Solution |
| One numerical solution produced by a PathTracker run, with the full per-path diagnostic record. More... | |
| class | PathTracker |
| Numerical homotopy-continuation path tracker for systems of polynomial equations. More... | |
Macros | |
| #define | CCC M2::ConcreteRing<M2::ARingCC> |
| #define | libPREFIX "/tmp/slpFN." |
| #define | slpCOMPILED 100 |
| #define | slpPREDICTOR 101 |
| #define | slpCORRECTOR 102 |
| #define | slpEND 0 |
| #define | slpCOPY 1 |
| #define | slpMULTIsum 2 |
| #define | slpPRODUCT 3 |
| #define | ZERO_CONST -1 |
| #define | ONE_CONST -2 |
| #define | RUNGE_KUTTA 1 |
| #define | TANGENT 2 |
| #define | EULER 3 |
| #define | PROJECTIVE_NEWTON 4 |
| #define | MAX_NUM_SLPs 100 |
| #define | CONST_OFFSET 0x1000 |
| #define | SLP_HEADER_LEN 4 |
| #define | MAX_NUM_PATH_TRACKERS 10 |
Functions | |
| const CCC * | cast_to_CCC (const Ring *R) |
| ring_elem | from_doubles (const CCC *C, double re, double im) |
| gmp_CC | toBigComplex (const CCC *C, ring_elem a) |
| template<class Field> | |
| void | zero_complex_array (int n, typename Field::element_type *a) |
| template<class Field> | |
| void | copy_complex_array (int n, const typename Field::element_type *a, typename Field::element_type *b) |
| template<class Field> | |
| Field::element_type * | make_copy_complex_array (int n, const typename Field::element_type *a) |
| template<class Field> | |
| void | multiply_complex_array_scalar (int n, typename Field::element_type *a, const typename Field::element_type b) |
| template<class Field> | |
| void | add_to_complex_array (int n, typename Field::element_type *a, const typename Field::element_type *b) |
| template<class Field> | |
| void | negate_complex_array (int n, typename Field::element_type *a) |
| template<class Field> | |
| double | norm2_complex_array (int n, typename Field::element_type *a) |
| template<typename R> | |
| void | evaluateSLP (const SLProgram &slp, std::vector< typename R::ElementType > &values) |
| int | degree_ring_elem (const PolyRing *R, ring_elem re) |
| void | print_complex_matrix (int size, const double *A) |
Numerical Algebraic Geometry: homotopy continuation PathTracker and supporting numeric types.
Complements the engine's symbolic Groebner-basis / resolution machinery by tracking solutions of a polynomial system F : C^n -> C^m over hardware-precision complex numbers. Declares PathTracker, the predictor-corrector homotopy continuation driver — it owns the homotopy H, start system S, target system T, their derivative SLPs (slpHxt, slpHxtH, slpSxS, slpTxT, ...), and the Bombieri-Weyl pairing <S, T> that gates the projective-Newton geodesic — along with Solution (a tracked path's terminal coordinates, status, condition number, step count) and the auxiliary complex / PointArray / M2PointArray value types. Witness sets and monodromy live in top-level M2 packages that call these path-tracking primitives, not in this header.
Polynomial evaluation at every continuation step goes through a straight-line program compiled once from the input system; the SLP machinery lives in SLP.hpp, SLP-defs.hpp, and SLP-imp.hpp. The complex class is a plain (double, double) pair with MPFR-to-double down-conversion in its gmp_CC constructor; the file is unusually liberal with STL containers compared to the rest of the engine because its values are not garbage-collected. Originally contributed by Anton Leykin; large portions are in the public domain.
Definition in file NAG.hpp.