Fractal Speedup Question
Jim White
mathimagics at yahoo.co.uk
Thu Jan 19 15:32:39 CET 2006
Jorgen Hochwald writes:
> The thoughts are to have some kind of fixpoint
numbers with
> (for example) eight bit before the point and the
rest after
> the point.
>
> Now all normalisation-steps (required for the
floating point
> numbers) are not needed.
>
> Question: can this speed up the calculations and how
can I use
> fixpoint numbers with GMP ?
I can't see any advantage in adopting a "fixed-point"
approach here all. To begin with, there is no
significant overhead attached to "normalisation" in a
floating-point multiplication, which is effectively
just an integer multiplication plus an addition of
exponents.
To emulate that using integers you would have to
re-invent the mpf method of automatic precision
limitation, since integer multiplications (with mpz)
is done with dynamically extended precision.
With a typical Mandelbrot-set iteration, you are
repeatedly squaring, so you would have to continually
do manual result truncation to prevent the values
growing exponentially in size.
The mpf data type maintains a fixed maximum precision
by design, and a multiplication only returns as many
significant digits as you ask for.
In fact, even if you did decide to implement a
fixed-point emulation, you will probably find mpf is a
better medium than mpz because its multiplication is
already optimised to produce a restricted precision
result.
Regarding the basic Mandelbrot iteration, there is not
really much you can do to optimise it.
There are ways to test x^2 + y^2 < N (inside/outside
test) without doing the squarings in many cases - but
this is of no benefit for the Mandelbrot iteration as
you need these values for the next iteration anyway.
Jim White
More information about the gmp-discuss
mailing list