Boost logo

Ublas :

Subject: Re: [ublas] Thread on boost devel list
From: Jesse Perla (jesseperla_at_[hidden])
Date: 2009-08-17 16:55:30


On Mon, Aug 17, 2009 at 2:32 PM, Rutger ter Borg <rutger_at_[hidden]> wrote:

>
> Dear all,
>
> there's a thread on matrix libraries going on on the Boost-devel list that
> I
> wanted to bring to your attention. If you're interested, here it is
>

I have to admit that I am not entirely getting the "spirit" of the
conversation through the stream-of-consciousness design. What is
fundamentally wrong with ublas? And why not talk about fixing/extending it
rather than rewriting it from scratch?

Since I am am not able to post on the boost::developer, as a "representative
ublas user", I will contribute for discussion is the following:

   - No one wants a new matrix/vector library. Even if it is "better",
   there is a fear that it will stay half-finished and unsupported like 99% of
   those out there. This has been mentioned on this list, but it seems to be
   ignored. Couldn't everyone force their energy on evolving ublas?
   - I, for one, second the focus on the bindings as a solution to a lot of
   troubles. Matlab may be great at the arithmetic matrix/vector operations,
   but it builds horrible habits for more advanced linear algebra (i.e. I never
   see people never use sparse or structured matrices in matlab. And I have
   never seen people use anything but inverses for solving systems)
   - But it is not all about the bindings... This list and ublas have
   sometimes underestimated the importance of emulating Fortran/Matlab syntax.
   People get very comfortable with Matlab and see Fortran as a much clearer
   evolution to a "real language" that is designed around matrices and
   scientific computing. Since Matlab is the de-facto standard DSL for linear
   algebra, shouldn't it be the goal of the C++ EDSL?
   - When I was trying to teach people ublas, everyone was incredibly hung
   up on the lack of overloading an operator* and nested multiplications. And
   if I had to guess, this discussion on the boost::developer list might not
   have happened if operator* was overloaded....
      - Without knowing enough much about the ublas design, I would guess
      that the overloading of operator* for 2 matrices is possible through
      crtp/SFINAE.
      - As for generating default temporaries for nested matrix
      multiplications, is this at all possible? I realize that is great to be
      able to control the temporaries more tightly, but is there no
way to have a
      default (which would enable operator* to work?)
   - I will post a starting point for the overloading separately.

-Jesse