Added Nimrod implementation.
Started using tuples for coordinate storage

They make possible to iterate throught the values with a 'for', working as nicier arrays.
Revert "Started using tuples for coordinate storage"

On the current version of nimrod is impossible to iterate over two tuples of different types at the same time. Arrays seems to be the working choice.

This reverts commit 63581148031888bb966eff51a3b2532c07456233.
Three element arrays for points and related refactoring

Lots and lots of refactoring making the code shorter and less repetitive (no more copy-pastying programming). Instead of x, y, z we have three element arrays indexed by an enum.

Also refactored vertex creation. The previous function pair had implicit call order, magic values, etc, and was long. It also took many lines of calling to do work.
Moved variable creation out of loop in renderPts

Maybe a performance win, maybe it was already optimized by the compiler. One more line because of this, but I removed a blank line to even out.
Use standard library math functions for final stat

Replace the calculation of mean and variance by their respective functions applied over a slice of the vector. IIRC those slices have copy semantics, but it is after the simulation ended so not time critical. It may give a memory usage spike though...

This shaved quite a few lines, but on the other hand I added blank lines in many parts to make the code pretier.
Removed the final stat calculation from the loop

Break straight away when finishing the loop, and then print the stats. I think it is cleaner (easier to see the break an that is the end of the simulation) and possibly faster by reducing the code size of the loop (I'm not sure if this happens).
Removed unnecessary comment and rearranged vars

Minus a few lines of "code".
Added comments copied from Go source, organizing.

Comments make the working of the algorithm clearer... I should have done this earlier. Because I also added some blank lines to organize the const declarations, this means more lines of code for us (and a lot more in gzipped file if coments are not extracted before XD).
Wrap around some comments and minor cosmetics
Fix TPt instantiation on spawnPts

Would cause a compiler error.
Moved most global variables to inside functions

Acess to them should be faster now, and many didn't had a reason to be on the top of the module anyway. Changed some proc parameters to add those variables.
Now it compiles!!!11

Lots of changes to get it to compile. Array index and lenght defined by enum, fixed enum indexing acordingly, removed converter and put a simple hackish function instead... not pretty but seems to work. Singled out one version of the newVertexGroup call. Put parenthesis back on some function calls (to compile on nimrod master). Probably other things I forgot to mention.
Moved conversion to GLfloat array to newVectorGroup

Shorter newVectorGroup invocation and possibly better performance. I tried to use 'varargs[openarray[TNumber]' as parameter type, but got errors, so I settled with something less generic.
Rearranged final stats calculation and printing.
Transformed Pts in a object to be passed around

I've chosen reference semantics (hope that it is right), and changed the procs that use it to be object oriented style. Hopefully there is no negative speed hit from this change. Actually, passing pts as a parameter should improve speed... Well, needs benchmarking.
Some minor changes suggested by Araq and cosmeticals.
Fixed regressions that led to incorrect output

Also, changed TPts from reference to a simply object type.
Remove unroll pragmas.
Fixed segfault when MaxLife is increased.