linbox
MethodBase Struct Reference

Holds everything a method needs to know about the problem. More...

#include <methods.h>

+ Inheritance diagram for MethodBase:

Public Member Functions

 MethodBase ()=default
 
 MethodBase (Singularity _singularity)
 
 MethodBase (Shape::Value _shapeFlag)
 
 MethodBase (ShapeFlags _shapeFlags)
 
 MethodBase (Preconditioner _preconditioner)
 
 MethodBase (Dispatch _dispatch)
 
 MethodBase (Communicator *_pCommunicator)
 
 MethodBase (PivotStrategy _pivotStrategy)
 
 MethodBase (SingularSolutionType _singularSolutionType)
 
bool master () const
 

Data Fields

Singularity singularity = Singularity::Unknown
 
Rank::Value rank = Rank::Unknown
 Rank of the system.
 
ShapeFlags shapeFlags
 Shape of the system.
 
Preconditioner preconditioner = Preconditioner::None
 
bool checkResult = false
 Ensure that solving worked by checking Ax = b (might not be implemented by all methods).
 
Dispatch dispatch = Dispatch::Auto
 
CommunicatorpCommunicator = nullptr
 
PivotStrategy pivotStrategy = PivotStrategy::Linear
 
SingularSolutionType singularSolutionType = SingularSolutionType::Random
 
bool certifyMinimalDenominator = false
 Whether the solver should try to find a certificate that the provided denominator is minimal.
 
size_t trialsBeforeFailure = LINBOX_DEFAULT_TRIALS_BEFORE_FAILURE
 Maximum number of trials before giving up.
 
bool certifyInconsistency = false
 Whether the solver should attempt to find a certificate of inconsistency if it suspects the system to be inconsistent.
 
size_t blockingFactor = LINBOX_DEFAULT_BLOCKING_FACTOR
 Size of blocks.
 
size_t earlyTerminationThreshold = LINBOX_DEFAULT_EARLY_TERMINATION_THRESHOLD
 

Detailed Description

Holds everything a method needs to know about the problem.

Note
This "put everything in it" design is used so that Method::Auto can specify any parameter of whatever method is going to be used. Fact is this structure is never copied between method switches. It does not matter if it is too big, but for clarity, we try to regroup elements used depending on the method.

Constructor & Destructor Documentation

◆ MethodBase() [1/9]

MethodBase ( )
default

◆ MethodBase() [2/9]

MethodBase ( Singularity _singularity)
inline

◆ MethodBase() [3/9]

MethodBase ( Shape::Value _shapeFlag)
inline

◆ MethodBase() [4/9]

MethodBase ( ShapeFlags _shapeFlags)
inline

◆ MethodBase() [5/9]

MethodBase ( Preconditioner _preconditioner)
inline

◆ MethodBase() [6/9]

MethodBase ( Dispatch _dispatch)
inline

◆ MethodBase() [7/9]

MethodBase ( Communicator * _pCommunicator)
inline

◆ MethodBase() [8/9]

MethodBase ( PivotStrategy _pivotStrategy)
inline

◆ MethodBase() [9/9]

MethodBase ( SingularSolutionType _singularSolutionType)
inline

Member Function Documentation

◆ master()

bool master ( ) const
inline

Field Documentation

◆ singularity

◆ rank

Rank of the system.

-1 means unknown.

◆ shapeFlags

ShapeFlags shapeFlags

Shape of the system.

◆ preconditioner

◆ checkResult

bool checkResult = false

Ensure that solving worked by checking Ax = b (might not be implemented by all methods).

◆ dispatch

◆ pCommunicator

Communicator* pCommunicator = nullptr

◆ pivotStrategy

◆ singularSolutionType

◆ certifyMinimalDenominator

bool certifyMinimalDenominator = false

Whether the solver should try to find a certificate that the provided denominator is minimal.

◆ trialsBeforeFailure

size_t trialsBeforeFailure = LINBOX_DEFAULT_TRIALS_BEFORE_FAILURE

Maximum number of trials before giving up.

◆ certifyInconsistency

bool certifyInconsistency = false

Whether the solver should attempt to find a certificate of inconsistency if it suspects the system to be inconsistent.

◆ blockingFactor

size_t blockingFactor = LINBOX_DEFAULT_BLOCKING_FACTOR

Size of blocks.

◆ earlyTerminationThreshold

size_t earlyTerminationThreshold = LINBOX_DEFAULT_EARLY_TERMINATION_THRESHOLD

The documentation for this struct was generated from the following file: