Average Error: 3.4 → 0.2
Time: 17.4s
Precision: 64
Internal Precision: 576
\[\left(\left(x \cdot y\right) \cdot z + x \cdot y\right) - \frac{z \cdot y}{x}\]
\[\begin{array}{l} \mathbf{if}\;y \le -64478717269831.19 \lor \neg \left(y \le 6.42820255253468 \cdot 10^{-11}\right):\\ \;\;\;\;\left(y + y \cdot z\right) \cdot x - \frac{y \cdot z}{x}\\ \mathbf{else}:\\ \;\;\;\;\left(x \cdot y + \left(x \cdot y\right) \cdot z\right) - \frac{z}{\frac{x}{y}}\\ \end{array}\]

Error

Bits error versus x

Bits error versus y

Bits error versus z

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Split input into 2 regimes
  2. if y < -64478717269831.19 or 6.42820255253468e-11 < y

    1. Initial program 0.1

      \[\left(\left(x \cdot y\right) \cdot z + x \cdot y\right) - \frac{z \cdot y}{x}\]
    2. Taylor expanded around inf 0.1

      \[\leadsto \left(\color{blue}{x \cdot \left(y \cdot z\right)} + x \cdot y\right) - \frac{z \cdot y}{x}\]
    3. Using strategy rm
    4. Applied distribute-lft-out0.1

      \[\leadsto \color{blue}{x \cdot \left(y \cdot z + y\right)} - \frac{z \cdot y}{x}\]

    if -64478717269831.19 < y < 6.42820255253468e-11

    1. Initial program 4.8

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

      \[\leadsto \left(\left(x \cdot y\right) \cdot z + x \cdot y\right) - \color{blue}{\frac{z}{\frac{x}{y}}}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification0.2

    \[\leadsto \begin{array}{l} \mathbf{if}\;y \le -64478717269831.19 \lor \neg \left(y \le 6.42820255253468 \cdot 10^{-11}\right):\\ \;\;\;\;\left(y + y \cdot z\right) \cdot x - \frac{y \cdot z}{x}\\ \mathbf{else}:\\ \;\;\;\;\left(x \cdot y + \left(x \cdot y\right) \cdot z\right) - \frac{z}{\frac{x}{y}}\\ \end{array}\]

Runtime

Time bar (total: 17.4s)Debug log

herbie shell --seed '#(2775764126 3555076145 3898259844 1891440260 2599947619 1948460636)' 
(FPCore (x y z)
  :name "x*y*z + x*y - z*y/x"
  (- (+ (* (* x y) z) (* x y)) (/ (* z y) x)))