This is very clever. I remember first coming across this problem a long time ago when improvising my first "vector"-based program on the 286, which I programmed in Pascal at the time. My "solution" was to pre-calculate the values and throw them into a lookup table - which in hindsight was pretty clumsy compared to this.