4 #ifndef DDECAL_DIAGONAL_LOW_RANK_SOLVER_H_
5 #define DDECAL_DIAGONAL_LOW_RANK_SOLVER_H_
21 xt::xtensor<std::complex<float>, 1>& eigen_vector,
34 xt::xtensor<std::complex<float>, 1>& eigen_vector,
53 size_t n_power_iterations)
55 n_low_rank_approximation_iterations_(
56 n_low_rank_approximation_iterations),
57 n_power_iterations_(n_power_iterations) {}
60 std::vector<std::vector<DComplex>>& solutions,
61 double time)
override;
70 n_power_iterations_ = n_power_iterations;
77 n_low_rank_approximation_iterations_ = n_iterations;
81 void PerformIteration(
size_t ch_block,
83 std::vector<aocommon::MC2x2F>& v_residual,
84 const std::vector<DComplex>& solutions,
92 std::vector<aocommon::MC2x2F>& v_residual,
size_t direction,
95 void SolveDirectionSolution(
size_t ch_block,
97 const std::vector<aocommon::MC2x2F>& v_residual,
98 size_t direction_index,
size_t solution_index,
99 const std::vector<DComplex>& solutions,
104 std::vector<size_t> direction_ordering_;
105 size_t n_low_rank_approximation_iterations_ = 25;
106 size_t n_power_iterations_ = 10;
Definition: DiagonalLowRankSolver.h:50
SolveResult Solve(const FullSolveData &data, std::vector< std::vector< DComplex >> &solutions, double time) override
void SetNPowerIterations(size_t n_power_iterations)
Definition: DiagonalLowRankSolver.h:69
DiagonalLowRankSolver(size_t n_low_rank_approximation_iterations, size_t n_power_iterations)
Definition: DiagonalLowRankSolver.h:52
size_t NSolutionPolarizations() const override
Definition: DiagonalLowRankSolver.h:63
void SetNLowRankApproximationIterations(size_t n_iterations)
Definition: DiagonalLowRankSolver.h:76
Definition: SolveData.h:31
Definition: SolveData.h:29
Definition: SolverBase.h:24
Definition: AmplitudeOnlyConstraint.h:12
float DominantEigenPairNear(const xt::xtensor< std::complex< float >, 2 > &matrix, xt::xtensor< std::complex< float >, 1 > &eigen_vector, size_t n_iterations)
xt::xtensor< std::complex< double >, 4 > SolutionTensor
Definition: Solutions.h:19
aocommon::xt::Span< std::complex< double >, 4 > SolutionSpan
Definition: Solutions.h:20
float DominantEigenPair(const xt::xtensor< std::complex< float >, 2 > &matrix, xt::xtensor< std::complex< float >, 1 > &eigen_vector, size_t n_iterations)
Definition: SolverBase.h:61