
As a part of our graphics study, we have built a 2D matrix class to implement few matrix operation. After the study we have expanded our aim for matrix operations system and started building a matrix and possibly a math library. Currently matrix library is quite near to the finish. To make it as generic as possible, we have used templates. Current state of the project can be accessed from http://sourceforge.net/projects/mathlibcpp/ (SVN: https://mathlibcpp.svn.sourceforge.net/svnroot/mathlibcpp/). A simple search revealed that there is no matrix module for boost libraries. We are willing to resolve compatibility issues and lend our support this module. However, before taking any action, I would like to ask your opinions. Thanks in advance, Cem Kalyoncu Following functions exists in the library: Set/Get/GetData/() Resize/GetSize/GetCols/GetRows isSquare/isIdentity Compare/==/!= =/Copy constructor/CopyTo [Row|Col|]Min/Max/Average/Sum/Median [Row|Col]MinIndex/MaxIndex SortRows RemoveCol/RemoveRow matrix operators (+, -, *, +=, -=, *=) scalar operator (+, -, /, *, +=, -=, *=, /=) Transpose/Determinant/Inverse/Minor/Cofactor/Adjoint Uses a managedbuffer and allows temporary matrixes which are not copied Identity/ZeroFilled/RandomFilled/RobertsCross/SobelX|Y conversion to string and output to a stream is supported

Cem Kalyoncu wrote:
[Row|Col|]Min/Max/Average/Sum/Median [Row|Col]MinIndex/MaxIndex SortRows Why this instead of having a STD comaptible iterator we could feed to std::sort ?
RemoveCol/RemoveRow A more generic ranges based acces or iterator support makes more sense
Uses a managedbuffer and allows temporary matrixes which are not copied Why not use Expression Tempaltes instead of this ?
Set/Get/GetData/() Resize/GetSize/GetCols/GetRows isSquare/isIdentity Compare/==/!= > matrix operators (+, -, *, +=, -=, *=) scalar operator (+, -, /, *, +=, -=, *=, /=) Transpose/Determinant/Inverse/Minor/Cofactor/Adjoint > Identity/ZeroFilled/RandomFilled/RobertsCross/SobelX|Y Those need to be free functions ...
conversion to string and output to a stream is supported Conversion to string makes little sense if you have streaming
We went through a 150+ message thread about the exact same thing. DE actually posted a somewhat interesting design. Yours lacks a lot of proper features and fall into the same, old pitfall of matrix class. Check this: http://thread.gmane.org/gmane.comp.lib.boost.devel/192679/focus=192745 + following and see what's you're still missing

On Thu, Sep 24, 2009 at 4:40 AM, Cem Kalyoncu <cemkalyoncu@gmail.com> wrote:
As a part of our graphics study, we have built a 2D matrix class to implement few matrix operation. After the study we have expanded our aim for matrix operations system and started building a matrix and possibly a math library. Currently matrix library is quite near to the finish. To make it as generic as possible, we have used templates. Current state of the project can be accessed from http://sourceforge.net/projects/mathlibcpp/ (SVN: https://mathlibcpp.svn.sourceforge.net/svnroot/mathlibcpp/). A simple search revealed that there is no matrix module for boost libraries. We are willing
Hi! Have you look at Boost.uBLAS?
to resolve compatibility issues and lend our support this module. However, before taking any action, I would like to ask your opinions.
Thanks in advance, Cem Kalyoncu
Following functions exists in the library: Set/Get/GetData/() Resize/GetSize/GetCols/GetRows isSquare/isIdentity Compare/==/!= =/Copy constructor/CopyTo [Row|Col|]Min/Max/Average/Sum/Median [Row|Col]MinIndex/MaxIndex SortRows RemoveCol/RemoveRow matrix operators (+, -, *, +=, -=, *=) scalar operator (+, -, /, *, +=, -=, *=, /=) Transpose/Determinant/Inverse/Minor/Cofactor/Adjoint Uses a managedbuffer and allows temporary matrixes which are not copied Identity/ZeroFilled/RandomFilled/RobertsCross/SobelX|Y conversion to string and output to a stream is supported
Mostly of these features are provided by Boost.uBLAS. Furthermore, uBLAS uses expression-templates, a techniques which limits the creation of temporary objects. Maybe, you can help to extend uBLAS with missing functionalities -- Marco

Cem Kalyoncu wrote:
As a part of our graphics study, we have built a 2D matrix class to implement few matrix operation. After the study we have expanded our aim for matrix operations system and started building a matrix and possibly a math library. Currently matrix library is quite near to the finish. To make it as generic as possible, we have used templates. Current state of the project can be accessed from http://sourceforge.net/projects/mathlibcpp/ (SVN: https://mathlibcpp.svn.sourceforge.net/svnroot/mathlibcpp/). A simple search revealed that there is no matrix module for boost libraries. We are willing to resolve compatibility issues and lend our support this module. However, before taking any action, I would like to ask your opinions.
Thanks in advance, Cem Kalyoncu
Following functions exists in the library: Set/Get/GetData/() Resize/GetSize/GetCols/GetRows isSquare/isIdentity Compare/==/!= =/Copy constructor/CopyTo [Row|Col|]Min/Max/Average/Sum/Median [Row|Col]MinIndex/MaxIndex SortRows RemoveCol/RemoveRow matrix operators (+, -, *, +=, -=, *=) scalar operator (+, -, /, *, +=, -=, *=, /=) Transpose/Determinant/Inverse/Minor/Cofactor/Adjoint Uses a managedbuffer and allows temporary matrixes which are not copied Identity/ZeroFilled/RandomFilled/RobertsCross/SobelX|Y conversion to string and output to a stream is supported _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
Hi, The boost.uBlas should help you. But the BLAS only supplies the basic linear algebra operation, so if you want to program easily you should also take a look at the CML(http://www.cmldev.net/) or nv_math in NVIDIA SDK.

Bo Zhou wrote:
Cem Kalyoncu wrote:
As a part of our graphics study, we have built a 2D matrix class to implement few matrix operation. After the study we have expanded our aim for matrix operations system and started building a matrix and possibly a math library. Currently matrix library is quite near to the finish. To make it as generic as possible, we have used templates. Current state of the project can be accessed from http://sourceforge.net/projects/mathlibcpp/ (SVN: https://mathlibcpp.svn.sourceforge.net/svnroot/mathlibcpp/). A simple search revealed that there is no matrix module for boost libraries. We are willing to resolve compatibility issues and lend our support this module. However, before taking any action, I would like to ask your opinions.
Thanks in advance, Cem Kalyoncu
Following functions exists in the library: Set/Get/GetData/() Resize/GetSize/GetCols/GetRows isSquare/isIdentity Compare/==/!= =/Copy constructor/CopyTo [Row|Col|]Min/Max/Average/Sum/Median [Row|Col]MinIndex/MaxIndex SortRows RemoveCol/RemoveRow matrix operators (+, -, *, +=, -=, *=) scalar operator (+, -, /, *, +=, -=, *=, /=) Transpose/Determinant/Inverse/Minor/Cofactor/Adjoint Uses a managedbuffer and allows temporary matrixes which are not copied Identity/ZeroFilled/RandomFilled/RobertsCross/SobelX|Y conversion to string and output to a stream is supported _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
Hi,
The boost.uBlas should help you.
But the BLAS only supplies the basic linear algebra operation, so if you want to program easily you should also take a look at the CML(http://www.cmldev.net/) or nv_math in NVIDIA SDK.
I would also recommend looking at Eigen2 (http://eigen.tuxfamily.org/). Having used many libraries including uBlas, MTL4, and tvmet we have been most happy with Eigen2. Thanks, Michael Marcin
participants (5)
-
Bo Zhou
-
Cem Kalyoncu
-
Joel Falcou
-
Marco Guazzone
-
Michael Marcin