Normally, a dual-linked circular list would contain both previous and next pointer fields and the current position in the list would be identified by a single pointer. By using two current pointers, one to the node in question and the other to the one just before/after it, it becomes possible to store only a single pointer value in each node. The value stored in each node is the XOR of the next and previous pointers that normally would have been stored in each node. Decoding is obvious.
If you program and are unfamiliar with the dangers of floating point, then you should read this. Proper understanding of how floating point actually works is important because sometimes "cos(x) != cos(y) even though x == y".
Turns out that the behavior can depend on how many instructions are between the cos() calls and the != comparison.This is another example of the trickery of floating point. Thinking about this, I recently said to a friend of mine, "I'm surprised companies' billing systems ever work", his response was "maybe they don't". Which is kind of disturbing to think about. Though some have claimed that this is why we will be running Cobol code forever.
My personal rule of thumb is that closed source software needs to be at least two orders of magnitude better in performance then the equivalent open source program. Otherwise it is not worth all the hassles. On that note, Octave is a MATLAB replacement that on my list of software to try. Also, unlike MATLAB it can be connected to ROS, which is nice.
On another computational note, I liked the fifth edition of this textbook for an introduction to numerical methods. Which could be useful if you are trying to program complex math(s) on a microcontroller.