Class FpDivHardToNRoundIterator

  • All Implemented Interfaces:
    Iterator<GeneratorResult<FpNumber>>

    public final class FpDivHardToNRoundIterator
    extends java.lang.Object
    implements Iterator<GeneratorResult<FpNumber>>
    FpDivHardToNRoundIterator implements an iterator of hard-to-round test cases for the division operation operating in the round-to-nearest mode.

    The implementation is based on the following works of David Matula and Lee McFearin:

    • D. Matula, L. McFearin. Number Theoretic Foundations of Binary Floating Point Division with Rounding. Real Numbers and Computers, 2000.
    • D. Matula, L. McFearin. Generation and Analysis of Hard to Round Cases for Binary Floating Point Division. Symposium on Computer Arithmetic, 2001.
    • D. Matula, L. McFearin. Selecting a Well Distributed Hard Case Test Suite for IEEE Standard Floating Point Division. International Conference on Computer Design, 2001.
    • D. Matula, L. McFearin. A p x p Bit Fraction Model of Binary Floating Point Division and Extremal Rounding Cases. Theoretical Computer Science, 2003.
    • D. Matula, L. McFearin. A Formal Model and Efficient Traversal Algorithm for Generating Testbenches for Verification of IEEE Standard Floating Point Division. Conference on Design, Automation and Test in Europe, 2006.
    • D. Matula, L. McFearin. Generating a Benchmark Set of Extremal Rounding Boundary Instances for IEEE Standard Floating Point Division. (link)

    The algorithm is as follows (2003):

    
     odd = 2i-1;
     num_s / den_s = simplest_parent( (2^p - odd)/odd );
     if (num_s is odd)
       num_i = 2^p - odd + num_s
     else
       num_i = 2(2^p - odd) - num_s
     print ( (num_i) / (2^p - odd) )