Function reciprocal_precision

Source
const fn reciprocal_precision<F: Float>() -> u16
Expand description

u_n for different precisions (with N-1 half-width iterations).

W0 is the precision of C u_0 = (3/4 - 1/sqrt(2) + 2^-W0) * 2^HW

Estimated with bc:

  define half1(un) { return 2.0 * (un + un^2) / 2.0^hw + 1.0; }
  define half2(un) { return 2.0 * un / 2.0^hw + 2.0; }
  define full1(un) { return 4.0 * (un + 3.01) / 2.0^hw + 2.0 * (un + 3.01)^2 + 4.0; }
  define full2(un) { return 4.0 * (un + 3.01) / 2.0^hw + 8.0; }

            | f32 (0 + 3) | f32 (2 + 1)  | f64 (3 + 1)  | f128 (4 + 1)
u_0         | < 184224974 | < 2812.1     | < 184224974  | < 791240234244348797
u_1         | < 15804007  | < 242.7      | < 15804007   | < 67877681371350440
u_2         | < 116308    | < 2.81       | < 116308     | < 499533100252317
u_3         | < 7.31      |              | < 7.31       | < 27054456580
u_4         |             |              |              | < 80.4
Final (U_N) | same as u_3 | < 72         | < 218        | < 13920

Add 2 to U_N due to final decrement.