6 #ifndef MYRAMATH_ITERATIVE_LOPCG1_H 7 #define MYRAMATH_ITERATIVE_LOPCG1_H 20 #include <myramath/MYRAMATH_EXPORT.h> 28 template<
class Number>
class Action;
29 template<
class Number>
class Vector;
30 template<
class Number>
class CMatrixRange;
31 template<
class Number>
class CVectorRange;
34 MYRAMATH_EXPORT std::pair< Vector<float >,
float > lopcg1(
const Action<float >& M,
const Action<float >& A,
float tolerance = 1.0e-4,
int iterations = 100);
35 MYRAMATH_EXPORT std::pair< Vector<double>,
double> lopcg1(
const Action<double>& M,
const Action<double>& A,
double tolerance = 1.0e-8,
int iterations = 100);
39 MYRAMATH_EXPORT std::pair< Vector<float >,
float > lopcg1(
const Action<float >& M,
const Action<float >& A,
const CMatrixRange<float >& Q,
float tolerance = 1.0e-4,
int iterations = 100);
40 MYRAMATH_EXPORT std::pair< Vector<double>,
double> lopcg1(
const Action<double>& M,
const Action<double>& A,
const CMatrixRange<double>& Q,
double tolerance = 1.0e-8,
int iterations = 100);
45 MYRAMATH_EXPORT std::pair< Vector<float >,
float > lopcg1(
const Action<float >& M,
const Action<float >& A,
const CMatrixRange<float >& Q,
const CVectorRange<float >& s,
float tolerance = 1.0e-4,
int iterations = 100);
46 MYRAMATH_EXPORT std::pair< Vector<double>,
double> lopcg1(
const Action<double>& M,
const Action<double>& A,
const CMatrixRange<double>& Q,
const CVectorRange<double>& s,
double tolerance = 1.0e-8,
int iterations = 100);