### mridul1809's blog

By mridul1809, history, 17 months ago,

Hey everyone!

I have been trying to implement a Matrix class that contains the operations required frequently when facing problems of that domain.

So here it is : Link

I would like to invite everyone to use this for their convenience.

The implementation is to best of my knowledge but I am sure it's not perfect or complete. So if you can think of any improvements or additions please comment or DM or add a pull request!

I also intend to add templates regarding other topics as well. Please suggest me a few topics to work on.

Thank You! :)

EDIT1 : Hey everyone! Sorry I was unavailable for a couple of months and was not able to include the feed-backs I received from you guys! I will start working on them ASAP.

EDIT2 : Hey! I have made quite a few changes and added more operators & functions. Please checkout! :D

PS: Add watching to the repository to find out latest updates. Also I'll be adding other templates as well! Star the repository if you find it helpful! Thanks :)

• +5

 » 17 months ago, # |   0 I think, method to calculate determinant for square matrices can be useful.
•  » » 17 months ago, # ^ |   0 Will work on that. Thanks! :)
 » 17 months ago, # |   0 Nice work bro
•  » » 15 months ago, # ^ |   0 Thanks bro! :D
 » 17 months ago, # |   0 In your template, all operations are being computed modulo $mod$, but unary $-$ is not. So, that will be an issue.
•  » » 15 months ago, # ^ |   0 Updated! Thanks :D
 » 17 months ago, # | ← Rev. 2 →   0 For large matrices this is fine, but for small (2x2 for example) matrices the cost of allocating and deallocating memory on the heap would be significant. I usually use template struct Matrix { std::array, N> A; }, or even template struct Matrix : std::array, N> { } (the latter way has the advantage of having operator == and operator [] implemented).
 » 17 months ago, # |   0 One of the most useful and well written templates I have seen. mridul1809
•  » » 15 months ago, # ^ |   0 Thanks! :D
 » 17 months ago, # | ← Rev. 2 →   0 Better overload the assignment operations, i.e. +=,-=,*= and ^=, and implement them without creating a new matrix in order to save time and memory. And what about other operations like transpose ?
•  » » 15 months ago, # ^ |   0 Hey! I have added the suggested functionalities! Please checkout :D
 » 17 months ago, # |   0 Great work bro.
•  » » 15 months ago, # ^ |   0 Thanks bro! :D
 » 15 months ago, # |   0 How about determinant and inverse matrix?
•  » » 15 months ago, # ^ |   +9 Will work on that! Thanks for suggestion :D
 » 6 weeks ago, # | ← Rev. 3 →   0 Because of using vector, you can also use swap(this->A, C.A); (which is constant complexity) instead of this->A = C.AThere is a trick for such matrix multiplication that you should use last for-loop for last dimention, in your case, swapping j-loop with k-loop is friendly cache and work fasterIn matrix multiplication, you should reduce the amount of modulo you use