Re: heev

"Thomas Klimpel" <[email protected]>
Newsgroups gmane.comp.lib.boost.ublas
Message-ID <trinity-02be4c6b-2263-4f18-8e1f-5e1fcebaedd4-1390514540547@3capp-gmx-bs39>
Hi Rutger,

you are right,

heev( 'V', bindings::lower(eigVec), eigVal )
heev( 'V', bindings::upper(eigVec), eigVal )

will work, and is nicer than the solution I posted. I had just looked at the tests for heev without thinking about the nicest solution. The test passes ublas::lower and ublas::upper as template parameters, and hence uses the uglier version.

Regards,

Thomas

Gesendet: Donnerstag, 23. Januar 2014 um 22:12 Uhr

Von: "Rutger ter Borg" <[email protected]>

An: [email protected]

Betreff: Re: [ublas] heev

Hey Thomas,

it seems that bindings::upper and bindings::lower don't work with

Hermitian types, is that correct? i.e., in principle,

heev( 'V', bindings::lower(eigVec), eigVal )

heev( 'V', bindings::upper(eigVec), eigVal )

should also work, shouldn't it?

Cheers,

Rutger

On 2014-01-23 18:05, Thomas Klimpel wrote:

> Hi Chris,

>

> your problem is that you don't know how to specify whether upper or lower half of the matrix should be used.

>

> You should decide which one to use, and then define either

>> typedef ublas::hermitian_adaptor<cmat, ublas::upper> hermitian_type;

> or

>> typedef ublas::hermitian_adaptor<cmat, ublas::lower> hermitian_type;

> then wrap the matrix eigVec into the adapter via

>> hermitian_type eigVec_h(eigVec);

> and call heev as

>> heev('V',eigVec_h,eigVal);

> or

>> heev('V',eigVec_h,eigVal,boost::numeric::bindings::lapack::optimal_workspace());

> if you prefer to be explicit about the workspace.

>

> I just compared your code with the test from

> < https://svn.boost.org/svn/boost/sandbox/numeric_bindings/libs/numeric/bindings/lapack/test/ublas_heev.cpp >

> so maybe there are more things that need to get modified. However, this should at least fix your current error message.

>

> Regards,

> Thomas Klimpel

>

>

>

> Gesendet: Donnerstag, 23. Januar 2014 um 17:31 Uhr

> Von: "Chris Rodgers" <[email protected]>

> An: [email protected]

> Betreff: [ublas] heev

> Dear All,

>

> I am trying to update some code from v1 to the latest numeric bindings,

> but cannot see how to make heev() work.

>

> I attach a small test program, which I attempted to compile with Visual

> Studio 2010 SP1 on Windows XP 32-bit, with boost 1.51 and the last

> revision in the boost SVN repository for the numeric bindings.

>

> Compilation fails with the error message below.

>

> Please could someone advise me how to get this running?

>

> Any help would be much appreciated.

>

> Best wishes,

>

> Chris.

>

>> 1>------ Build started: Project: testBoostJan2014, Configuration:

>> Debug Win32 ------

>> 1>Build started 23/01/2014 16:25:02.

>> 1>InitializeBuildStatus:

>> 1> Touching "Debug\testBoostJan2014.unsuccessfulbuild".

>> 1>ClCompile:

>> 1> testBoostJan2014.cpp

>> 1>c:\program

>> files\boost\numeric_bindings\boost\numeric\bindings\uplo_tag.hpp(56):

>> error C2039: 'type' : is not a member of

>> 'boost::numeric::bindings::detail::uplo_tag_impl<DataSide,TransTag>'

>> 1> with

>> 1> [

>> 1> DataSide=boost::mpl::void_,

>> 1> TransTag=boost::numeric::bindings::tag::no_transpose

>> 1> ]

>> 1> c:\program

>> files\boost\numeric_bindings\boost\numeric\bindings\lapack\driver\heev.hpp(282)

>> : see reference to class template instantiation

>> 'boost::numeric::bindings::result_of::uplo_tag<T>' being compiled

>> 1> with

>> 1> [

>> 1> T=cmat

>> 1> ]

>> 1> c:\program

>> files\boost\numeric_bindings\boost\numeric\bindings\lapack\driver\heev.hpp(331)

>> : see reference to function template instantiation 'ptrdiff_t

>> boost::numeric::bindings::lapack::heev_impl<Value>::invoke<MatrixA,VectorW>(const

>> char,MatrixA &,VectorW

>> &,boost::numeric::bindings::lapack::optimal_workspace)' being compiled

>> 1> with

>> 1> [

>> 1> Value=std::complex<double>,

>> 1> MatrixA=cmat,

>> 1> VectorW=vec

>> 1> ]

>> 1>

>> c:\midea\n4_vb17a_latest_20090307\n4\pkg\mrservers\mrspecacq\ice\icespectro_wsvd_v4\testboostjan2014\testboostjan2014.cpp(64)

>> : see reference to function template instantiation '__w64 int

>> boost::numeric::bindings::lapack::heev<cmat,vec,boost::numeric::bindings::lapack::optimal_workspace>(const

>> char,MatrixA &,VectorW &,Workspace)' being compiled

>> 1> with

>> 1> [

>> 1> MatrixA=cmat,

>> 1> VectorW=vec,

>> 1> Workspace=boost::numeric::bindings::lapack::optimal_workspace

>> 1> ]

>> 1>c:\program

>> files\boost\numeric_bindings\boost\numeric\bindings\lapack\driver\heev.hpp(286):

>> error C2955: 'boost::type' : use of class template requires template

>> argument list

>> 1> c:\program files\boost\boost_1_51\boost\type.hpp(14) : see

>> declaration of 'boost::type'

>> 1>c:\program

>> files\boost\numeric_bindings\boost\numeric\bindings\lapack\driver\heev.hpp(289):

>> error C2780: 'ptrdiff_t

>> boost::numeric::bindings::lapack::detail::heev(const char,const

>> UpLo,const fortran_int_t,double *,const fortran_int_t,double *,double

>> *,const fortran_int_t)' : expects 8 arguments - 9 provided

>> 1> c:\program

>> files\boost\numeric_bindings\boost\numeric\bindings\lapack\driver\heev.hpp(74)

>> : see declaration of 'boost::numeric::bindings::lapack::detail::heev'

>> 1>c:\program

>> files\boost\numeric_bindings\boost\numeric\bindings\lapack\driver\heev.hpp(289):

>> error C2780: 'ptrdiff_t

>> boost::numeric::bindings::lapack::detail::heev(const char,const

>> UpLo,const fortran_int_t,float *,const fortran_int_t,float *,float

>> *,const fortran_int_t)' : expects 8 arguments - 9 provided

>> 1> c:\program

>> files\boost\numeric_bindings\boost\numeric\bindings\lapack\driver\heev.hpp(59)

>> : see declaration of 'boost::numeric::bindings::lapack::detail::heev'

>> 1>

>> 1>Build FAILED.

>> 1>

>> 1>Time Elapsed 00:00:08.50

>> ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped

>> ==========

>

> _______________________________________________

> ublas mailing list

> [email protected]

> http://lists.boost.org/mailman/listinfo.cgi/ublas

> Sent to: [email protected]

> _______________________________________________

> ublas mailing list

> [email protected]

> http://lists.boost.org/mailman/listinfo.cgi/ublas

> Sent to: [email protected]

>

_______________________________________________

ublas mailing list

[email protected]

http://lists.boost.org/mailman/listinfo.cgi/ublas

Sent to: [email protected]
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.