Beispiel #1
0
void TestMultiply(Int m, Int n=1)
{
    DEBUG_CSE
    typedef Base<T> Real;
    Output("Testing with ",TypeName<T>());

    SparseMatrix<T> A;
    Identity( A, m, m );
    auto G = A.Graph();

    Matrix<T> B;
    Bernoulli( B, m, n );

    Matrix<T> C, D;
    Zeros( C, m, n );
    Zeros( D, m, n );
    Multiply( NORMAL, T(1), A, B, T(0), C );
    Multiply( NORMAL, T(1), G, B, T(0), D );
    Axpy( T(-1), C, D );
    auto DFrob = FrobeniusNorm(D);
    if( DFrob > limits::Epsilon<Real>() )
    {
        Output("|| A B - G B ||_F = ",DFrob);
        RuntimeError("Sparse(I)*x != Graph(I)*x");
    }
    else
        Output("Test passed");
}