01/07/2019, 01:38 AM
I'll attempt to post the SAGE code. It still needs some cleanup, and I'm actually planning to redo to the OOC solver. Please note, for smaller system sizes (i.e., systems which easily fit in RAM), the "SpaceSaver2" algorithm is probably the fastest. (The full name of the method in the library is "Solve_System_Gauss_SpaceSaver2"). If you want to try the library and have questions, I'll try my best to answer.
Please note, I'm using this code in the Windows executable version of SAGE. I still have an old copy of the SAGE appliance that runs on Linux in a VMWare session, but I can't get it working with the latest version of the VMWare Workstation Player.
I'll try to convert this code to pari/gp code at some point. This will allow me to compare the performance and precision, and it will also ensure that I'll have access to the code in a second language, e.g., just in case SAGE were to stop development in the future. If I can get access to Mathematica, I will also try to port it into that language.
My next project is to rewrite the OOC solver, so that it scales a little better, and so I can save the L matrix. Currently I only save the U matrix. I can do back-substitution with the U matrix. I need the L matrix to do forward substitution. For my current methods, I do the forward substitution during the LU decomposition phase, which is why I can get away with tossing the L matrix. However, my next phase of research will require me to test lots of vectors, so I need the ability to perform forward substitution. Hence I need the L matrix.
Please note, I'm using this code in the Windows executable version of SAGE. I still have an old copy of the SAGE appliance that runs on Linux in a VMWare session, but I can't get it working with the latest version of the VMWare Workstation Player.
I'll try to convert this code to pari/gp code at some point. This will allow me to compare the performance and precision, and it will also ensure that I'll have access to the code in a second language, e.g., just in case SAGE were to stop development in the future. If I can get access to Mathematica, I will also try to port it into that language.
My next project is to rewrite the OOC solver, so that it scales a little better, and so I can save the L matrix. Currently I only save the U matrix. I can do back-substitution with the U matrix. I need the L matrix to do forward substitution. For my current methods, I do the forward substitution during the LU decomposition phase, which is why I can get away with tossing the L matrix. However, my next phase of research will require me to test lots of vectors, so I need the ability to perform forward substitution. Hence I need the L matrix.
~ Jay Daniel Fox

