26 #include <tests/myratest.h> 38 int K = I < J ? I : J;
39 myra::out() << typestring<Number>() << std::endl;
44 auto tau = geqrf_inplace(A);
47 ormqr_inplace(A,tau,B1,
'L',
'N');
50 auto VtVb = A.split_top(K);
52 auto Vb = VtVb.second;
55 auto Bb = BtBb.second;
58 trmm_inplace(
'L',
'L',
'H',Vt,W,
'U');
59 gemm_inplace(W,Vb,
'H',Bb,
'N',one,one);
61 trmm_inplace(
'L',
'U',
'N',Vt,W,
'N',one);
63 gemm_inplace(Bb,Vb,
'N',W,
'N',-one,one);
64 trmm_inplace(
'L',
'L',
'N',Vt,W,
'U');
67 Precision error = frobenius(B1-B2) / frobenius(B1);
68 myra::out() <<
"|Q*B1(ormqr) - Q*B2(qrt)| = " << error << std::endl;
69 REQUIRE(error < tolerance);
74 ADD_TEST(
"sqrt",
"[dense][lapack]")
75 { test<NumberS>(178,159,1.0e-4f); }
77 ADD_TEST(
"dqrt",
"[dense][lapack]")
78 { test<NumberD>(178,159,1.0e-10); }
80 ADD_TEST(
"cqrt",
"[dense][lapack]")
81 { test<NumberC>(178,159,1.0e-4f); }
83 ADD_TEST(
"zqrt",
"[dense][lapack]")
84 { test<NumberZ>(178,159,1.0e-10); }
Interface class for representing subranges of dense Matrix's.
Tabulates an IxJ matrix. Allows random access, has column major layout to be compatible with BLAS/LAP...
Definition: bdsqr.h:20
Routines for computing Frobenius norms of various algebraic containers.
static Matrix< Number > random(int I, int J)
Generates a random Matrix of specified size.
Definition: Matrix.cpp:353
CPair split_top(int i) const
Splits by rows, returns [this->top(i), this->cut_top(i)].
Definition: Matrix.cpp:219
Routines to compute a Householder QR decomposition.
Routines for multiplying by a triangular Matrix or LowerMatrix.
Various utility functions/classes related to scalar Number types.
General purpose dense matrix container, O(i*j) storage.
Reflects Precision trait for a Number, scalar Number types should specialize it.
Definition: Number.h:33
Routines to apply a Householder Q, as previously factored via geqrf_inplace()
Returns a hermitian copy of a Matrix. The inplace version only works on a square operand.
Given the scalar reflectors [V,tau] from geqrf(), forms the T of the equivalent block reflector I-V*T...
Variety of routines all for dense Matrix*Matrix multiplies. Delegates to the BLAS.