Skip to content

Trying to create an algorithm for the Coppersmith Winograd Algorithm, regarding NXN arrays

License

Notifications You must be signed in to change notification settings

TaihuLight/Coppersmith-Winograd-Algorithm

 
 

Repository files navigation

Coppersmith-Winograd-Algorithm

Trying to create a C interpretation for the Coppersmith-Winograd Algorithm, regarding NxN arrays.

First version:

    Initial prototype rounds were of O(n!) complexity, able to calculate a max of n=18 arrays before crashing.

Current Prototype:

    Current complexity is O(~n^3), after implementing LU decomposition.

Goal:

    Final target complexity is O(~n^2.374), which is the current best known complexity in theory for galactic algorithms.

UPDATE:

    After implementing lower and upper triangular arrays, the algorithm is able to perform a maximum of n=~25 before crashing. Further research into the topic is needed

UPDATE 2:

    Completed implementation of LU Decomposition and re-organised definition of variables. Current maximum amount of N is ~250, since above that, the number returned for the value of its determinant is higher than the value IEEE754 supports. As such, further implementation will regard time management and theory upon this maximum N and iterated a lot of times to get a distinguishable result on time measurement between different solution implementation (see clock_t and chrono). Current complexity reached is calculated at n^3 at worst.
    Will currently also pursue the implementation of the algorithm in multiplication of NxN arrays instead of just determinants. A scientific paper and report is now in writing and research and will be processed and posted here. Further arrangements are needed in the code for this to occur as well as junk clearance (compiler problems and IDE dissonances between the 2 parties caused this).

About

Trying to create an algorithm for the Coppersmith Winograd Algorithm, regarding NXN arrays

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 42.1%
  • C 31.0%
  • CMake 18.2%
  • Makefile 8.7%