Bertini 2 d882924 (2026-10-06 19:56 UTC)
Numerical algebraic geometry library (C++ core)
Loading...
Searching...
No Matches
linear_forms_block.hpp File Reference

A System evaluation block whose functions are linear forms: f(x) = M x + b. More...

#include <stdexcept>
#include <string>
#include <tuple>
#include "bertini2/num_traits.hpp"
#include "bertini2/eigen_extensions.hpp"
#include "bertini2/system/blocks/describe.hpp"
Include dependency graph for linear_forms_block.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  bertini::blocks::LinearFormsBlock
 A block of system functions, each an affine linear form f_i(x) = c_i . More...

Namespaces

namespace  bertini
namespace  bertini::blocks

Detailed Description

A System evaluation block whose functions are linear forms: f(x) = M x + b.

This is the linear-algebra workhorse for the block-composed System: a stack of affine linear forms evaluated as one matrix-vector product, rather than as expanded scalar function-tree expressions. It is the natural home for linear slices, randomization / linear projections, and the linear conditions emitted by the bertini.linalg layer when the coefficients are concrete (multiprecision) numbers rather than symbolic.

Each function is

f_i(x) = ( c_{i} . [x ; 1] )

i.e. a single linear form whose last coefficient (the column past the variables) carries the constant term, so x is evaluated augmented with a trailing 1 – exactly the augmented convention of ProductsOfLinearsBlock, but with one factor per function instead of a product. Evaluation is a single matrix-vector multiply; the Jacobian is the constant coefficient matrix (its variable columns).

Mirrors the multiprecision-coefficient pattern of ProductsOfLinearsBlock: an mpfr master plus per-type working copies, with Precision() recasting the mpfr copy. bertini::Slice (system/slice.hpp) is a thin wrapper around this block.