161{
162 auto& ring = lower.
ring();
163 int nrows =
static_cast<int>(lower.
numRows());
164 int ncols =
static_cast<int>(upper.
numColumns());
166 assert(min ==
static_cast<int>(upper.
numRows()));
167
168
171
172 const double* U = lapack_numbers.data();
173 for (
size_t c = 0; c < upper.
numColumns(); c++)
174 {
175 for (
size_t r = 0; r <= c and r <=
min; r++)
176 {
177 double re = *U++;
178 double im = *U++;
179 ring.set_from_doubles(upper.
entry(r, c), re, im);
180
181
182 }
183 ring.set_from_long(lower.
entry(c, c), 1);
184 for (
size_t r = c+1 ; r <= lower.
numColumns(); ++r)
185 {
186 double re = *U++;
187 double im = *U++;
188 ring.set_from_doubles(lower.
entry(r, c), re, im);
189
190
191 }
192 }
193}
ElementType & entry(size_t row, size_t column)
const ACoeffRing & ring() const
size_t numColumns() const
bool isZero(const DMat< RT > &A)
const mpreal min(const mpreal &x, const mpreal &y)