02/04/2012, 02:03 AM
(04/03/2008, 02:25 PM)GFR Wrote: Pillar 3 - The Hyper-roots. It is known, from the Ancient Greeks' times, that the square root of a number can be calculated by iterating the following functional equation:
y = sqrt x ---> (y + x/y) / 2 => y
Iteration (n + x/n) / 2 = m -> n, starting from an approximate solution n, rapidly converges to the square root of x. About 20 years ago, Konstantin Rubtsov, thought to apply a similar formulation for calculating the square superroot, as well as the half of a number (!!), both left-inverse hyperops, of the root type. The compact formulation of that can be generalized as follows:
y = x /[s]2 ---> y <= (y[s-1](y[s]\ x)) /[s-1]2.
This formula can be implementes as follows:
.....
y = ssqrt x ---> y <= sqrt (y * log_y(x))
y = sqrt x ----> y <= (y + x/y) / 2
y = x / 2 -----> y <= (y ° (x-y)) - 2
I experimented with the formulas a bit and I noticed the following formula for calculating the superroot works just as well if not better:
y = ssqrt x ---> y <= (y + log_y(x)) / 2
I prefer this formula because division is simpler than taking the square root. The difference between the formulas is that yours takes the geometric mean of y and log_y(x) while mine takes the arithmetic mean, just like with the square root formula.
Your division formula uses the "zeric mean" however, which is far slower than the others if you start far off and doesn't work for non-integers. It can't really be compared well to the other kinds of means, I think.

