Boost logo

Ublas :

Subject: Re: [ublas] matrix console output
From: Maik Beckmann (beckmann.maik_at_[hidden])
Date: 2009-06-09 03:53:54


Michael schrieb am Dienstag 09 Juni 2009 um 09:18:
> Ok, let me explain then. I'm trying to write an algorithm to compute an
> orthonormal basis for the column space of a particular matrix A. For
> debugging purposes, I will need to print the intermediate results to a
> console. Since the output the existing code is barely readable, I've
> rewritten part of the io.hpp, so that the output is easier to interpret
> by the programmer.

Thank you!

main.cpp fails to compile with
{{{
In file included from main.cpp:13:
io.hpp:16: error: redefinition of 'template<class E, class T, class ME>
    basic_ostream<_CharT, _Traits> & boost::numeric::ublas::operator<<(
        basic_ostream<_CharT, _Traits> &
      , const boost::numeric::ublas::matrix_expression<E2> &
    )'
/usr/include/boost/numeric/ublas/io.hpp:84: error: 'template<
        class E, class T, class ME
> basic_ostream<_CharT, _Traits> & boost::numeric::ublas::operator<<(
        basic_ostream<_CharT, _Traits> &
      , const boost::numeric::ublas::matrix_expression<E2> &
    )' previously declared here
}}}
because your and boost's io.hpp are both included.

I attached a modified version which switches by using a PP definition
{{{
#ifdef USE_OLD_IO
# include <boost/numeric/ublas/io.hpp>
#else
# include "io.hpp"
#endif
}}}

$ g++ -DUSE_OLD_IO main.cpp -o old_io
$ g++ main.cpp -o new_io
$ echo "old_io" > log
$ ./old_io >> log
$ echo "" >> log
$ echo "" >> log
$ echo "new_io" >> log
$ ./new_io >> log

The result
- (log) http://pastebin.com/f12152515
shows that the proposed new output code does indeed am much better job, IMHO.

-- Maik