Boost logo

Ublas :

Subject: Re: [ublas] [bindings] How do I call the new gees? Why is it different from the old one?
From: Paul Leopardi (paul.leopardi_at_[hidden])
Date: 2010-04-19 11:54:48


On Tuesday 20 April 2010 01:11:11 Rutger ter Borg wrote:
> Isn't the non-match due to sdim being an LValue? I.e., please try
>
> fortran_int_t sdim;
> lapack::gees( 'N', 'N', 0, sdim, lambda, V );

Yes, you are right. I now get a different error message, about property_map.
I'm trying to use Boost 1.41.0. Should this version of Boost work with the
current bindings?
Best, Paul

In file included from /home/leopardi/src/boost-numeric-bindings/boost-numeric-
bindings-2010-04-19/boost/numeric/bindings/detail/adaptor.hpp:49,
                 from /home/leopardi/src/boost-numeric-bindings/boost-numeric-
bindings-2010-04-19/boost/numeric/bindings/value_type.hpp:12,
                 from /home/leopardi/src/boost-numeric-bindings/boost-numeric-
bindings-2010-04-19/boost/numeric/bindings/lapack/workspace.hpp:18,
                 from ../glucat/matrix_imp.h:41,
                 from ../glucat/glucat_imp.h:62,
                 from ../test/driver.h:36,
                 from peg11.cpp:35:
/home/leopardi/src/boost-numeric-bindings/boost-numeric-
bindings-2010-04-19/boost/numeric/bindings/detail/property_map.hpp: In
instantiation of
‘boost::numeric::bindings::detail::property_at<boost::numeric::ublas::matrix<double,
boost::numeric::ublas::basic_column_major<long unsigned int, long int>,
boost::numeric::ublas::unbounded_array<double, std::allocator<double> > >,
boost::numeric::bindings::tag::value_type>’:
/home/leopardi/src/boost-numeric-bindings/boost-numeric-
bindings-2010-04-19/boost/numeric/bindings/value_type.hpp:20: instantiated
from
‘boost::numeric::bindings::value_type<boost::numeric::ublas::matrix<double,
boost::numeric::ublas::basic_column_major<long unsigned int, long int>,
boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > >’
/home/leopardi/src/boost-numeric-bindings/boost-numeric-
bindings-2010-04-19/boost/numeric/bindings/lapack/driver/gees.hpp:1081:
instantiated from ‘typename
boost::disable_if<boost::numeric::bindings::lapack::detail::is_workspace<MatrixVS>,
long int>::type boost::numeric::bindings::lapack::gees(char, char, logical_t*,
MatrixA&, fortran_int_t&, VectorW&, MatrixVS&) [with MatrixA =
glucat::matrix::eigenvalues(const Matrix_T&)::lapack_matrix_t, VectorW =
glucat::matrix::eigenvalues(const Matrix_T&)::complex_vector_t, MatrixVS =
glucat::matrix::eigenvalues(const Matrix_T&)::lapack_matrix_t]’
../glucat/matrix_imp.h:445: instantiated from
‘boost::numeric::ublas::vector<std::complex<double>,
boost::numeric::ublas::unbounded_array<std::complex<double>,
std::allocator<std::complex<double> > > > glucat::matrix::eigenvalues(const
Matrix_T&) [with Matrix_T = boost::numeric::ublas::matrix<float,
boost::numeric::ublas::basic_row_major<long unsigned int, long int>,
boost::numeric::ublas::unbounded_array<float, std::allocator<float> > >]’
../glucat/matrix_multi_imp.h:1118: instantiated from ‘glucat::eig_case_t
glucat::matrix_multi<Scalar_T, LO, HI>::eig_test(Scalar_T&) const [with
Scalar_T = float, int LO = -0x00000000000000020, int HI = 32]’
../glucat/matrix_multi_imp.h:1347: instantiated from ‘const
glucat::matrix_multi<Scalar_T, LO, HI> glucat::sqrt(const
glucat::matrix_multi<Scalar_T, LO, HI>&, const glucat::matrix_multi<Scalar_T,
LO, HI>&, bool) [with Scalar_T = float, int LO = -0x00000000000000020, int HI
= 32]’
../glucat/clifford_algebra_imp.h:545: instantiated from ‘const
Multivector<Scalar_T, LO, HI> glucat::sqrt(const Multivector<Scalar_T, LO,
HI>&) [with Multivector = glucat::matrix_multi, Scalar_T = float, int LO =
-0x00000000000000020, int HI = 32]’
../test11/peg11.h:110: instantiated from ‘void peg11::transcendtest(const
Multivector_T&, bool) [with Multivector_T = peg11::do_test11() [with
Multivector_T = glucat::matrix_multi<float, -0x00000000000000020, 32>]::m_]’
../test11/peg11.h:177: instantiated from ‘void peg11::do_test11() [with
Multivector_T = glucat::matrix_multi<float, -0x00000000000000020, 32>]’
peg11.cpp:46: instantiated from here
/home/leopardi/src/boost-numeric-bindings/boost-numeric-
bindings-2010-04-19/boost/numeric/bindings/detail/property_map.hpp:30: error:
no type named ‘property_map’ in ‘struct
boost::numeric::bindings::detail::adaptor_access<boost::numeric::ublas::matrix<double,
boost::numeric::ublas::basic_column_major<long unsigned int, long int>,
boost::numeric::ublas::unbounded_array<double, std::allocator<double> > >,
void>’

---
Some relevant (i.e. non-GluCat) includes before the compiler sees 
matrix_imp.h:
#include <boost/version.hpp>
#include <boost/config.hpp>
#include <boost/cstdint.hpp>
#include <boost/limits.hpp>
#include <boost/static_assert.hpp>
#include <boost/numeric/ublas/traits.hpp>
#include <cmath>
#include <exception>
#include <stdexcept>
#include <bitset>
#include <utility>
#include <vector>
#include <fstream>
#include <map>
#include <tr1/unordered_map>
#include <string>
#include <complex>
#include <boost/pool/poolfwd.hpp>
#include <iostream>
#include <boost/numeric/ublas/fwd.hpp>
#include <sstream>
#include <boost/numeric/ublas/vector.hpp>
#include <boost/numeric/ublas/vector_proxy.hpp>
#include <boost/numeric/ublas/matrix.hpp>
#include <boost/numeric/ublas/matrix_proxy.hpp>
#include <boost/numeric/ublas/triangular.hpp>
#include <boost/numeric/ublas/matrix_sparse.hpp>
#include <boost/numeric/ublas/operation_sparse.hpp>
#include <boost/numeric/ublas/operation.hpp>
#include <boost/numeric/ublas/lu.hpp>
#include <boost/pool/pool_alloc.hpp>
#include <tr1/random>