#include "IpZeroMatrix.hpp"
namespace Ipopt
{
ZeroMatrix::ZeroMatrix(
const MatrixSpace* owner_space
)
: Matrix(owner_space)
{ }
ZeroMatrix::~ZeroMatrix()
{ }
void ZeroMatrix::MultVectorImpl(
Number ,
const Vector& x,
Number beta,
Vector& y
) const
{
DBG_ASSERT(NCols() == x.Dim());
(void) x;
DBG_ASSERT(NRows() == y.Dim());
if( beta != 0.0 )
{
y.Scal(beta);
}
else
{
y.Set(0.0); }
}
void ZeroMatrix::TransMultVectorImpl(
Number ,
const Vector& x,
Number beta,
Vector& y
) const
{
DBG_ASSERT(NCols() == y.Dim());
DBG_ASSERT(NRows() == x.Dim());
(void) x;
if( beta != 0.0 )
{
y.Scal(beta);
}
else
{
y.Set(0.0); }
}
void ZeroMatrix::PrintImpl(
const Journalist& jnlst,
EJournalLevel level,
EJournalCategory category,
const std::string& name,
Index indent,
const std::string& prefix
) const
{
jnlst.Printf(level, category,
"\n");
jnlst.PrintfIndented(level, category, indent,
"%sZeroMatrix \"%s\" with %" IPOPT_INDEX_FORMAT " row and %" IPOPT_INDEX_FORMAT " column components:\n", prefix.c_str(), name.c_str(), NRows(), NCols());
}
}