[Pixman] PDF radial gradients
spitzak at gmail.com
Fri Sep 10 11:08:24 PDT 2010
Andrea Canciani wrote:
> - wip/radial-float2 computes the discriminant in double procision
> (instead of 128
> bit fixed point) and should be both fast (almost two times faster than
> and accurate. Does it look good?
> I'm a little worried about the int64->double conversions in this
> branch. Are there
> architectures where it might be a problem?
> - in wip/radial-float I tried to keep all the variables of the inner
> loop in floating point
> to see how much this affects the performance. I get small speed
> improvements, but
> I don't think they justify this branch (the accuracy guarantees in
> this case are very
> loose since errors accumulate quadratically with the number of iterations).
I have found that "A*x+B" is almost as fast as "x+B" on floating point
and avoids any problems with inaccuracy of repeated adding a value. The
FPU has an instruction to do this operation. My understanding is the
addition is the slow part and it can merge part of it into the
I am unsure if this will help for higher-order functions, but it seems
that C*(A*x+B)+D has two of these operations and thus will be have the
same relative speed to numerical integration.
In any case if you are getting twice the performance by switching to
float, I suspect that a numerically stable floating point version will
still be a win.
More information about the Pixman