Off-the-Record (OTR) Messaging allows you to have private conversations over instant messaging by providing:
In the world of numerical linear algebra and high-performance computing, efficiency is king. When dealing with large, sparse systems of equations (of the form ( Ax = b )), direct solvers (like Gaussian elimination) often become impractical due to memory and time constraints. This is where iterative methods like SOR (Successive Over-Relaxation) and its less common cousin, MSOR (Modified Successive Over-Relaxation), come into play.
But what happens when you have an algorithm or codebase written for MSOR, and you need to convert MSOR to SOR? Perhaps you are debugging convergence issues, optimizing for a symmetric problem, or standardizing legacy code.
This article provides an exhaustive, step-by-step guide on how to convert MSOR to SOR. We will cover the mathematical foundations, algorithmic differences, practical code translation, and the performance trade-offs of each method.
MSOR allows a different relaxation parameter ( \omega_i ) for each equation (or for blocks). The iteration becomes:
[ x_i^(k+1) = (1-\omega_i) x_i^(k) + \frac\omega_ia_ii \left( b_i - \sum_j=1^i-1 a_ij x_j^(k+1) - \sum_j=i+1^n a_ij x_j^(k) \right) ] convert msor to sor
If ( \omega_i = \omega ) for all ( i ), MSOR collapses to standard SOR.
Parse MSOR input into a list L of tokens (operations/variables) with metadata:
Build a directed acyclic graph (DAG):
Validate DAG:
Topological sort to produce SOR:
Post-processing:
Output:
Produce a deterministic procedure that takes an MSOR sequence and produces the equivalent SOR sequence while preserving semantic dependencies and effects. Mastering the Matrix: A Complete Guide to Convert
For a system ( Ax = b ) with ( A = D - L - U ) (diagonal ( D ), strictly lower ( L ), strictly upper ( U )), the SOR iteration is:
[ x_i^(k+1) = (1-\omega) x_i^(k) + \frac\omegaa_ii \left( b_i - \sum_j=1^i-1 a_ij x_j^(k+1) - \sum_j=i+1^n a_ij x_j^(k) \right) ]
where ( \omega ) is a constant relaxation parameter.
You might need to convert MSOR to SOR for several practical reasons: Procedure (algorithmic steps)
To convert MSOR to SOR, you have two primary strategies. The choice depends on whether your MSOR parameters are identical or different.
omega_effective = 1.5 # Based on heuristic x_sor = sor_solve(A, b, omega=omega_effective)
This is the portable OTR Messaging Library, as well as the toolkit to help you forge messages. You need this library in order to use the other OTR software on this page. [Note that some binary packages, particularly Windows, do not have a separate library package, but just include the library and toolkit in the packages below.] The current version is 4.1.1.
UPGRADING from version 3.2.x
This is the Java version of the OTR library. This is for developers of Java applications that want to add support for OTR. End users do not require this package. It's still early days, but you can download java-otr version 0.1.0 (sig).
This is a plugin for Pidgin 2.x which implements Off-the-Record Messaging over any IM network Pidgin supports. The current version is 4.0.2.
This software is no longer supported. Please use an IM client with native support for OTR.
This is a localhost proxy you can use with almost any AIM client in order to participate in Off-the-Record conversations. The current version is 0.3.1, which means it's still a long way from done. Read the README file carefully. Some things it's still missing:
You can find a git repository of the OTR source code, as well as the bugtracker, on the otr.im community development site:
If you use OTR software, you should join at least the otr-announce mailing list, and possibly otr-users (for users of OTR software) or otr-dev (for developers of OTR software) as well.
pidgin-otr
tutorial from the Security-in-a-Box project
Video OTR tutorial (by Niels)
Adium, Pidgin & OTR (auf Deutsch, by Christian Franke)
Miranda, Pidgin, Kopete & OTR (auf Deutsch, by Missi)
Adium X with OTR
OTR proxy on Mac OS X
pidgin-otr on gentoo (from "X")
gaim-otr on Debian unstable (from Adam Zimmerman)
gaim-otr on Windows (from Adam Zimmerman)
gaim-otr 3.0.0 on Ubuntu (from Adam Zimmerman). Note that Ubuntu breezy has gaim-otr 2.0.2 in it, and
all you should have to do is "apt-get install gaim-otr".
We would greatly appreciate instructions and screenshots for other platforms!
Here are some documents and papers describing OTR. The CodeCon presentation is quite useful to get started.
Is your question not here? Ask on the otr-users mailing list!