Average Error: 8.8 → 0.1
Time: 1.0m
Precision: 64
Internal Precision: 384
\[\frac{x \cdot \left(\frac{x}{y} + 1.0\right)}{x + 1.0}\]
\[\frac{x}{\frac{x + 1.0}{\frac{x}{y} + 1.0}}\]

Error

Bits error versus x

Bits error versus y

Target

Original8.8
Target0.1
Herbie0.1
\[\frac{x}{1} \cdot \frac{\frac{x}{y} + 1.0}{x + 1.0}\]

Derivation

  1. Initial program 8.8

    \[\frac{x \cdot \left(\frac{x}{y} + 1.0\right)}{x + 1.0}\]
  2. Using strategy rm
  3. Applied associate-/l*0.1

    \[\leadsto \color{blue}{\frac{x}{\frac{x + 1.0}{\frac{x}{y} + 1.0}}}\]
  4. Removed slow pow expressions.

Runtime

Time bar (total: 1.0m)Debug log

herbie shell --seed '#(1567391828 2030694642 2833800258 828025724 3004380912 3532991858)' +o setup:early-exit
(FPCore (x y)
  :name "Codec.Picture.Types:toneMapping from JuicyPixels-3.2.6.1"

  :herbie-target
  (* (/ x 1) (/ (+ (/ x y) 1.0) (+ x 1.0)))

  (/ (* x (+ (/ x y) 1.0)) (+ x 1.0)))