Average Error: 4.3 → 1.3
Time: 8.4s
Precision: 64
\[x + \left(y \cdot z\right) \cdot \left(\tanh \left(\frac{t}{y}\right) - \tanh \left(\frac{x}{y}\right)\right)\]
\[\begin{array}{l} \mathbf{if}\;x + \left(y \cdot z\right) \cdot \left(\tanh \left(\frac{t}{y}\right) - \tanh \left(\frac{x}{y}\right)\right) = -\infty:\\ \;\;\;\;x + \left(\left(z \cdot \tanh \left(\frac{t}{y}\right)\right) \cdot y + \left(-x\right) \cdot z\right)\\ \mathbf{elif}\;x + \left(y \cdot z\right) \cdot \left(\tanh \left(\frac{t}{y}\right) - \tanh \left(\frac{x}{y}\right)\right) \le 2.3928587330146112 \cdot 10^{295}:\\ \;\;\;\;x + \left(y \cdot z\right) \cdot \left(\tanh \left(\frac{t}{y}\right) - \tanh \left(\frac{x}{y}\right)\right)\\ \mathbf{else}:\\ \;\;\;\;x + \left(t \cdot z + \left(y \cdot \left(-\tanh \left(\frac{x}{y}\right)\right)\right) \cdot z\right)\\ \end{array}\]
x + \left(y \cdot z\right) \cdot \left(\tanh \left(\frac{t}{y}\right) - \tanh \left(\frac{x}{y}\right)\right)
\begin{array}{l}
\mathbf{if}\;x + \left(y \cdot z\right) \cdot \left(\tanh \left(\frac{t}{y}\right) - \tanh \left(\frac{x}{y}\right)\right) = -\infty:\\
\;\;\;\;x + \left(\left(z \cdot \tanh \left(\frac{t}{y}\right)\right) \cdot y + \left(-x\right) \cdot z\right)\\

\mathbf{elif}\;x + \left(y \cdot z\right) \cdot \left(\tanh \left(\frac{t}{y}\right) - \tanh \left(\frac{x}{y}\right)\right) \le 2.3928587330146112 \cdot 10^{295}:\\
\;\;\;\;x + \left(y \cdot z\right) \cdot \left(\tanh \left(\frac{t}{y}\right) - \tanh \left(\frac{x}{y}\right)\right)\\

\mathbf{else}:\\
\;\;\;\;x + \left(t \cdot z + \left(y \cdot \left(-\tanh \left(\frac{x}{y}\right)\right)\right) \cdot z\right)\\

\end{array}
double f(double x, double y, double z, double t) {
        double r284648 = x;
        double r284649 = y;
        double r284650 = z;
        double r284651 = r284649 * r284650;
        double r284652 = t;
        double r284653 = r284652 / r284649;
        double r284654 = tanh(r284653);
        double r284655 = r284648 / r284649;
        double r284656 = tanh(r284655);
        double r284657 = r284654 - r284656;
        double r284658 = r284651 * r284657;
        double r284659 = r284648 + r284658;
        return r284659;
}

double f(double x, double y, double z, double t) {
        double r284660 = x;
        double r284661 = y;
        double r284662 = z;
        double r284663 = r284661 * r284662;
        double r284664 = t;
        double r284665 = r284664 / r284661;
        double r284666 = tanh(r284665);
        double r284667 = r284660 / r284661;
        double r284668 = tanh(r284667);
        double r284669 = r284666 - r284668;
        double r284670 = r284663 * r284669;
        double r284671 = r284660 + r284670;
        double r284672 = -inf.0;
        bool r284673 = r284671 <= r284672;
        double r284674 = r284662 * r284666;
        double r284675 = r284674 * r284661;
        double r284676 = -r284660;
        double r284677 = r284676 * r284662;
        double r284678 = r284675 + r284677;
        double r284679 = r284660 + r284678;
        double r284680 = 2.3928587330146112e+295;
        bool r284681 = r284671 <= r284680;
        double r284682 = r284664 * r284662;
        double r284683 = -r284668;
        double r284684 = r284661 * r284683;
        double r284685 = r284684 * r284662;
        double r284686 = r284682 + r284685;
        double r284687 = r284660 + r284686;
        double r284688 = r284681 ? r284671 : r284687;
        double r284689 = r284673 ? r284679 : r284688;
        return r284689;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Bits error versus t

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original4.3
Target2.1
Herbie1.3
\[x + y \cdot \left(z \cdot \left(\tanh \left(\frac{t}{y}\right) - \tanh \left(\frac{x}{y}\right)\right)\right)\]

Derivation

  1. Split input into 3 regimes
  2. if (+ x (* (* y z) (- (tanh (/ t y)) (tanh (/ x y))))) < -inf.0

    1. Initial program 64.0

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

      \[\leadsto x + \color{blue}{y \cdot \left(z \cdot \left(\tanh \left(\frac{t}{y}\right) - \tanh \left(\frac{x}{y}\right)\right)\right)}\]
    4. Using strategy rm
    5. Applied sub-neg1.3

      \[\leadsto x + y \cdot \left(z \cdot \color{blue}{\left(\tanh \left(\frac{t}{y}\right) + \left(-\tanh \left(\frac{x}{y}\right)\right)\right)}\right)\]
    6. Applied distribute-lft-in1.3

      \[\leadsto x + y \cdot \color{blue}{\left(z \cdot \tanh \left(\frac{t}{y}\right) + z \cdot \left(-\tanh \left(\frac{x}{y}\right)\right)\right)}\]
    7. Applied distribute-lft-in1.3

      \[\leadsto x + \color{blue}{\left(y \cdot \left(z \cdot \tanh \left(\frac{t}{y}\right)\right) + y \cdot \left(z \cdot \left(-\tanh \left(\frac{x}{y}\right)\right)\right)\right)}\]
    8. Simplified1.3

      \[\leadsto x + \left(\color{blue}{\left(z \cdot \tanh \left(\frac{t}{y}\right)\right) \cdot y} + y \cdot \left(z \cdot \left(-\tanh \left(\frac{x}{y}\right)\right)\right)\right)\]
    9. Simplified1.3

      \[\leadsto x + \left(\left(z \cdot \tanh \left(\frac{t}{y}\right)\right) \cdot y + \color{blue}{y \cdot \left(\left(-\tanh \left(\frac{x}{y}\right)\right) \cdot z\right)}\right)\]
    10. Using strategy rm
    11. Applied associate-*r*1.2

      \[\leadsto x + \left(\left(z \cdot \tanh \left(\frac{t}{y}\right)\right) \cdot y + \color{blue}{\left(y \cdot \left(-\tanh \left(\frac{x}{y}\right)\right)\right) \cdot z}\right)\]
    12. Taylor expanded around 0 0.9

      \[\leadsto x + \left(\left(z \cdot \tanh \left(\frac{t}{y}\right)\right) \cdot y + \color{blue}{\left(-1 \cdot x\right)} \cdot z\right)\]
    13. Simplified0.9

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

    if -inf.0 < (+ x (* (* y z) (- (tanh (/ t y)) (tanh (/ x y))))) < 2.3928587330146112e+295

    1. Initial program 0.6

      \[x + \left(y \cdot z\right) \cdot \left(\tanh \left(\frac{t}{y}\right) - \tanh \left(\frac{x}{y}\right)\right)\]

    if 2.3928587330146112e+295 < (+ x (* (* y z) (- (tanh (/ t y)) (tanh (/ x y)))))

    1. Initial program 47.4

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

      \[\leadsto x + \color{blue}{y \cdot \left(z \cdot \left(\tanh \left(\frac{t}{y}\right) - \tanh \left(\frac{x}{y}\right)\right)\right)}\]
    4. Using strategy rm
    5. Applied sub-neg18.8

      \[\leadsto x + y \cdot \left(z \cdot \color{blue}{\left(\tanh \left(\frac{t}{y}\right) + \left(-\tanh \left(\frac{x}{y}\right)\right)\right)}\right)\]
    6. Applied distribute-lft-in18.8

      \[\leadsto x + y \cdot \color{blue}{\left(z \cdot \tanh \left(\frac{t}{y}\right) + z \cdot \left(-\tanh \left(\frac{x}{y}\right)\right)\right)}\]
    7. Applied distribute-lft-in21.5

      \[\leadsto x + \color{blue}{\left(y \cdot \left(z \cdot \tanh \left(\frac{t}{y}\right)\right) + y \cdot \left(z \cdot \left(-\tanh \left(\frac{x}{y}\right)\right)\right)\right)}\]
    8. Simplified21.5

      \[\leadsto x + \left(\color{blue}{\left(z \cdot \tanh \left(\frac{t}{y}\right)\right) \cdot y} + y \cdot \left(z \cdot \left(-\tanh \left(\frac{x}{y}\right)\right)\right)\right)\]
    9. Simplified21.5

      \[\leadsto x + \left(\left(z \cdot \tanh \left(\frac{t}{y}\right)\right) \cdot y + \color{blue}{y \cdot \left(\left(-\tanh \left(\frac{x}{y}\right)\right) \cdot z\right)}\right)\]
    10. Using strategy rm
    11. Applied associate-*r*21.4

      \[\leadsto x + \left(\left(z \cdot \tanh \left(\frac{t}{y}\right)\right) \cdot y + \color{blue}{\left(y \cdot \left(-\tanh \left(\frac{x}{y}\right)\right)\right) \cdot z}\right)\]
    12. Taylor expanded around 0 15.6

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;x + \left(y \cdot z\right) \cdot \left(\tanh \left(\frac{t}{y}\right) - \tanh \left(\frac{x}{y}\right)\right) = -\infty:\\ \;\;\;\;x + \left(\left(z \cdot \tanh \left(\frac{t}{y}\right)\right) \cdot y + \left(-x\right) \cdot z\right)\\ \mathbf{elif}\;x + \left(y \cdot z\right) \cdot \left(\tanh \left(\frac{t}{y}\right) - \tanh \left(\frac{x}{y}\right)\right) \le 2.3928587330146112 \cdot 10^{295}:\\ \;\;\;\;x + \left(y \cdot z\right) \cdot \left(\tanh \left(\frac{t}{y}\right) - \tanh \left(\frac{x}{y}\right)\right)\\ \mathbf{else}:\\ \;\;\;\;x + \left(t \cdot z + \left(y \cdot \left(-\tanh \left(\frac{x}{y}\right)\right)\right) \cdot z\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2020045 
(FPCore (x y z t)
  :name "SynthBasics:moogVCF from YampaSynth-0.2"
  :precision binary64

  :herbie-target
  (+ x (* y (* z (- (tanh (/ t y)) (tanh (/ x y))))))

  (+ x (* (* y z) (- (tanh (/ t y)) (tanh (/ x y))))))