1#ifndef STORM_SOLVER_SYMBOLICLINEAREQUATIONSOLVER_H_
2#define STORM_SOLVER_SYMBOLICLINEAREQUATIONSOLVER_H_
22template<storm::dd::DdType Type,
typename ValueType>
25template<storm::dd::DdType Type>
35template<storm::dd::DdType DdType,
typename ValueType =
double>
96 uint_fast64_t n = 1)
const;
129template<storm::dd::DdType DdType,
typename ValueType>
134 std::unique_ptr<storm::solver::SymbolicLinearEquationSolver<DdType, ValueType>>
create(
136 std::set<storm::expressions::Variable>
const& columnMetaVariables,
137 std::vector<std::pair<storm::expressions::Variable, storm::expressions::Variable>>
const& rowColumnMetaVariablePairs)
const;
139 std::unique_ptr<storm::solver::SymbolicLinearEquationSolver<DdType, ValueType>>
create(
141 std::set<storm::expressions::Variable>
const& rowMetaVariables, std::set<storm::expressions::Variable>
const& columnMetaVariables,
142 std::vector<std::pair<storm::expressions::Variable, storm::expressions::Variable>>
const& rowColumnMetaVariablePairs)
const;
147 virtual std::unique_ptr<storm::solver::SymbolicLinearEquationSolver<DdType, ValueType>>
create(
Environment const& env)
const = 0;
150template<storm::dd::DdType DdType,
typename ValueType>
155 virtual std::unique_ptr<storm::solver::SymbolicLinearEquationSolver<DdType, ValueType>>
create(
Environment const& env)
const override;
virtual std::unique_ptr< storm::solver::SymbolicLinearEquationSolver< DdType, ValueType > > create(Environment const &env) const override
storm::dd::Bdd< DdType > allRows
std::unique_ptr< storm::solver::SymbolicLinearEquationSolver< DdType, ValueType > > create(Environment const &env, storm::dd::Bdd< DdType > const &allRows, std::set< storm::expressions::Variable > const &rowMetaVariables, std::set< storm::expressions::Variable > const &columnMetaVariables, std::vector< std::pair< storm::expressions::Variable, storm::expressions::Variable > > const &rowColumnMetaVariablePairs) const
virtual std::unique_ptr< storm::solver::SymbolicLinearEquationSolver< DdType, ValueType > > create(Environment const &env) const =0
LinearEquationSolverRequirements getRequirements(Environment const &env) const
virtual ~SymbolicLinearEquationSolverFactory()=default
LinearEquationSolverProblemFormat getEquationProblemFormat(Environment const &env) const
An interface that represents an abstract symbolic linear equation solver.
virtual ~SymbolicLinearEquationSolver()=default
virtual void setData(storm::dd::Bdd< DdType > const &allRows, std::set< storm::expressions::Variable > const &rowMetaVariables, std::set< storm::expressions::Variable > const &columnMetaVariables, std::vector< std::pair< storm::expressions::Variable, storm::expressions::Variable > > const &rowColumnMetaVariablePairs)
std::set< storm::expressions::Variable > columnMetaVariables
storm::dd::Add< DdType, ValueType > A
std::set< storm::expressions::Variable > rowMetaVariables
virtual storm::dd::Add< DdType, ValueType > multiply(storm::dd::Add< DdType, ValueType > const &x, storm::dd::Add< DdType, ValueType > const *b=nullptr, uint_fast64_t n=1) const
Performs repeated matrix-vector multiplication, using x[0] = x and x[i + 1] = A*x[i] + b.
std::vector< std::pair< storm::expressions::Variable, storm::expressions::Variable > > rowColumnMetaVariablePairs
SymbolicLinearEquationSolver()
virtual storm::dd::Add< DdType, ValueType > solveEquations(Environment const &env, storm::dd::Add< DdType, ValueType > const &x, storm::dd::Add< DdType, ValueType > const &b) const =0
Solves the equation system A*x = b.
virtual LinearEquationSolverProblemFormat getEquationProblemFormat(Environment const &env) const
Retrieves the format in which this solver expects to solve equations.
void setMatrix(storm::dd::Add< DdType, ValueType > const &newA)
virtual LinearEquationSolverRequirements getRequirements(Environment const &env) const
Retrieves the requirements of the solver under the current settings.
LinearEquationSolverProblemFormat