Thank you very much for your suggestions, they were useful. My amendments,
comments or otherwise:
> "Consider a naive implementation of a .* operator to add two sequences
> together:" -> to multiply two sequences
This is correction is already done - maybe refresh your browser. I usually
refresh in private mode because the browser doesn't cache.
> in the equation for polynomial kernel use text{Offset}
Now changed, I was in two minds about this but it does look better as text. I
also found a copy-paste error in the latex which I've now changed.
> personally would not define var ret and use return ret. Instead use the
> implicit result variable and avoid explicit return
Good point, now changed.
> semicolons at line ends look weird to me
Removed them, for consistency, and its probably the Nim style.
> in gaussian I would define the var tmp before the loop and just reassign
This might be more of a taste thing, but I usualy declare variables only used
in a loop within that loop. Unchanged.
> you didn't show the implementation of $ for the matrix type. Not a problem,
> but I would mention that it has to be defined manually (maybe I missed a
> reference to that)
You're right, I didn't mention anything about the rest of the implementation. I
have now commented that they have been left out.
> given that this is numeric code, which should probably run fast, I wouldn't
> refer to nim c -r <file> without mentioning -d:danger to readers
Now added with a link to Nim compiler documentation.
> regarding no SIMD support from the compiler: thanks to macros one can sugar
> coat SIMD in principle very well oneself
Yes. I added the comment on concurrency and SIMD because it's important for a
programmer to know what they are letting themselves in for particularly with
regards to scientific computing where SIMD and concurrency are basically a
must. On one hand they could have the fun of implementing SIMD macros in a
powerful language, on the other hand they might not be up for that.
Many thanks for your valuable review!