It seems like most of the overhead comes from fixed-point arithmetic, actually. Here’s a translation to Kitten with locals:
On Wed, Aug 13, 2014 at 12:09 PM, Björn Lindqvist <bjou...@gmail.com> wrote: > Hello everybody, > > Here is an interesting blog post from yosefk about Forth and stack > machines: > > http://yosefk.com/blog/my-history-with-forth-stack-machines.html > > It contains a lot of interesting stuff but one part in particular got > my interest. He is trying to write a word to "compute the mean and the > standard deviation of a vector given the sum of its elements, the sum > of their squares, and the inverse of its length" and what he produces > to solve it is: > > : mean_std ( sum2 sum inv_len -- mean std ) > \ precise_mean = sum * inv_len; > tuck u* \ sum2 inv_len precise_mean > \ mean = precise_mean >> FRAC; > dup FRAC rshift -rot3 \ mean sum2 inv_len precise_mean > \ var = (((unsigned long long)sum2 * inv_len) >> FRAC) - > (precise_mean * precise_mean >> (FRAC*2)); > dup um* nip FRAC 2 * 32 - rshift -rot \ mean precise_mean^2 sum2 inv_len > um* 32 FRAC - lshift swap FRAC rshift or \ mean precise_mean^2 > sum*inv_len > swap - isqrt \ mean std ; > > So his code is hideous and I'm wondering if we can do it better in > Factor? I'd love to take a stab at it myself but I have no idea what > mathematical formula he is implementing. Anyone knows? As far as I > understand, given three scalar values: the sum of all elements in a > vector, the sum of all elements squared and the inverse of the length, > you should be able to calculate the mean of the vector and the > standard deviation. > > > -- > mvh/best regards Björn Lindqvist > > > ------------------------------------------------------------------------------ > _______________________________________________ > Factor-talk mailing list > Factor-talk@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/factor-talk >
------------------------------------------------------------------------------
_______________________________________________ Factor-talk mailing list Factor-talk@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/factor-talk