Hello,

I am looking for a good library to manipulate matrices. The criteria is as follows...

1. It must have a large amount of functions that we may need to use in the future. Functions will include but are NOT limited to:
--sortbyc( Mat, col) (sorts rows in a matrix in ascending order based on a specific column)
--sumr( Mat ) (outputs a vector which is the sum of each row in the matrix)
--ranmultinomial( unsigned trials, vector probabilities ) (returns a vector following the random multinomial distribution )
--ranlogarithmic() (also returns a vector following logarithmic dist)
--rannormal() (..following normal dist)
--correlation( txn matrix ) (returns the nxn correlation matrix)

2. It must be fairly efficient/fast at calculating matrix operations. An example of a language / library which is sufficient enough for our needs is the MATLAB or the Ox languages.

3. It must be well documented. This means that there is a place to conveniently look up the functions to see what variables they take in and what they output. The documentation must be accessible to our users so that they can learn the language and begin using it.

The library need not be free or open source. It is more important for me to get something reliable and easy to use than to get something free. Mike_2000_17 has made some good suggestions: Blitz++, Boost.uBLAS, and ReaK.math. Does anyone have more suggestions? I want to be sure I have a good one that meets my needs before I plow ahead. Thanks! ;)

Well, if MATLAB is sufficient, I recommend using it.
At least you will get lots of user experiences and documentation.
It will integrate with C++ (unmanaged or managed).

R is an incredibly powerful language specifically designed for statistical work. It is completely free and open source with a huge repository (CRAN) of useful packages. There is integration directly with C++ with Rcpp - and various others - but this has the most traction I've seen.
Documentation [of R] is extensive and built into the interpreter/language.

This article has been dead for over six months. Start a new discussion instead.