Mjollnir

The Dumping Grounds

Matrix Inversion (1988)
The algorithm is primarily based on this identity: (AT)-1 = (A-1)T, which says "the inverse of the transpose of a matrix is equal to the transpose of the inverse of the same matrix", and a few other identities for factoring matrices. It may not sound like much, but this allows us to perform simultaneous Gaussian-style row and column operations on any matrix. It doesn't matter if the matrix is singular or if it has more rows or more columns. This algorithm has never failed to produce a good answer, and I have implemented it in several languages. The one on the Demo page is written in JavaScript and runs on your computer.
MPI + IoC (2009)
Message Passing Interface (MPI) is a library of routines for coordinating the execution of copies of an executable on separate cores or networked computers. It is frequently used to divide a problem into pieces that run concurrently, and so speed the overall execution. Inversion of Control is a software idea that takes control from the software written by the user and puts it in the framework that is used by the user's application. The framework coordinates all the (mouse, keyboard, timer, file, or other system) events and calls methods the user registers for handling the events. This is most commonly done for UI systems (Qt, Swing, embedded). The combination of these two ideas leads to a framework that simplifies the creation of software that uses multiple cores and multiple networked machines (especially supercomputers and large clusters). It allows a program to make better use of its resources and even achieve a greater throughput than the usual "divide and conquer" method usually employed for such problems.
Bandwidth Reduction (1991)
Inverting a sparse matrix is typically less accurate than inverting a tightly banded matrix. This is a small test routine I wrote while bored. It takes a matrix that represents the connections in a finite-element grid and reduces the bandwidth to what should be the minimum possible, and gives the numbering that should be used for the points to achieve this minimum bandwidth.
Sorting (Selection) (1985)
Sorting isn't always necessary in numerical modeling. Often it's only necessary to select the most applicable pieces of data; sorting a long list can be a waste of CPU. This little routine selects the top matching items from a list.
The Royal Game of Ur (2017)
I just wanted to play this old game.
Rand on LinkedIn or read the boring cv.
copyright © 2017 mjollnir.comtop2