floating point ops; frexp & ldexp



>>>>> "Henry" == Henry Baker <hbaker1 at pipeline.com> writes:

    Henry> The (long standard) functions frexp & ldexp allow the
    Henry> consultation and manipulation of the (binary) exponent of
    Henry> IEEE floating point arithmetic.

    Henry> In particular, one can utilize frexp & ldexp to
    Henry> pre-condition certain computations to increase precision
    Henry> and avoid exponent overflow/underflow.

    Henry> The graphics community makes minor use of frexp & ldexp,
    Henry> but a Google search produced _zero_ papers on the use of
    Henry> these functions in large scale matrix operations.

    Henry> Should I be Google searching with different terms, or has
    Henry> frexp/ldexp fallen into the blind spot of numerical
    Henry> mathematicians?

    Henry> One example:

    Henry> One can "factor out" a 2^k factor from each row and column
    Henry> of a matrix (different k for each row & column); this
    Henry> factoring _preserves all bits_ & is thus invertible.

I think that if you want to multiply a row or column of a matrix by
2^k, then it is much faster nowadays to do the multiplication instead
of doing a function call to ldexp for every element, especially if you
have SIMD.  The multiplication is, of course, exact since you are
multiplying by a power of two.

Ray