Boost logo

Ublas :

Subject: [ublas] [bindings] LAPACK functions ORGQL, UNGQL, ... vs QR counterparts
From: Marco Guazzone (marco.guazzone_at_[hidden])
Date: 2010-08-01 14:27:42


Hello,

Are the functions ORG{QL,LQ,RQ} and UNG{QL,LQ,RQ} unfinished?
I've noticed they differ from their QR counterparts (ORGQR and UNGQR)
in the overloaded functions.
For instance, for ORGQR we have:

template< typename MatrixA, typename VectorTAU >
inline typename boost::disable_if< detail::is_workspace< VectorTAU >,
        std::ptrdiff_t >::type
orgqr( const MatrixA& a, const VectorTAU& tau ) {
    return orgqr_impl< typename bindings::value_type<
            MatrixA >::type >::invoke( a, tau, optimal_workspace() );
}

Instead, for ORGQL (for instace) we have additional parameter:

template< typename MatrixA, typename VectorTAU >
inline typename boost::disable_if< detail::is_workspace< VectorTAU >,
        std::ptrdiff_t >::type
orgql( const fortran_int_t m, const fortran_int_t n,
        const fortran_int_t k, const MatrixA& a, const VectorTAU& tau ) {
    return orgql_impl< typename bindings::value_type<
            MatrixA >::type >::invoke( m, n, k, a, tau, optimal_workspace() );
}

In principle I have no problem to use this form above.
But, since these LAPACK functions have all the same signature, I
suppose their "bindings" interface is to be uniformed.

What do you think?

Thank you very much!!

Cheers,

-- Marco