{'fraction_non_alphanumeric': 0.025015253203172667, 'fraction_numerical': 0.003050640634533252, 'mean_word_length': 4.963636363636364, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
An eﬀicient rounding boundary test for pow(x,y) in double precision

The correct rounding of the function pow : ( x, y ) 7→ x y is currently based on Ziv’s iterative approximation process. In order to ensure its termination, cases when x y falls on a rounding boundary must be ﬁltered out. Such rounding boundaries are ﬂoating-point numbers and midpoints between two consecutive ﬂoating-point numbers. Detecting rounding boundaries for pow is a diﬃcult problem. Previous approaches use repeated square root extraction followed by repeated square and multiply. This article presents a new rounding boundary test for pow in double precision which resumes to a few comparisons with pre-computed constants. These constants are deduced from worst cases for the Table Maker’s Dilemma, searched over a small subset of the input domain. This is a novel use of such worst-case bounds. The resulting algorithm has been designed for a fast-on-average correctly rounded implementation of pow, considering the scarcity of rounding boundary cases. It does not stall average computations for rounding boundary detection. The article includes its correction proof and experimental results. These results show that average performance on random input is increased by at least 39% in our implementation with respect to previous implementations, for instance libultim . These improvements are obtained at the sake of a slight slow-down of the very rare rounding boundary cases, for instance, of about 21% with regard to libultim . The diﬀerence between the timings for hard-to-round cases and rounding boundary cases can be neglected: rounding boundary cases