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}\;y \le 5.880629389853998622248271363708750096354 \cdot 10^{126}:\\
\;\;\;\;\mathsf{fma}\left(y, \left(\sqrt[3]{z \cdot \left(\tanh \left(\frac{t}{y}\right) - \tanh \left(\frac{x}{y}\right)\right)} \cdot \sqrt[3]{z \cdot \left(\tanh \left(\frac{t}{y}\right) - \tanh \left(\frac{x}{y}\right)\right)}\right) \cdot \sqrt[3]{z \cdot \left(\tanh \left(\frac{t}{y}\right) - \tanh \left(\frac{x}{y}\right)\right)}, x\right)\\
\mathbf{else}:\\
\;\;\;\;x + \left(t - x\right) \cdot z\\
\end{array}double f(double x, double y, double z, double t) {
double r347632 = x;
double r347633 = y;
double r347634 = z;
double r347635 = r347633 * r347634;
double r347636 = t;
double r347637 = r347636 / r347633;
double r347638 = tanh(r347637);
double r347639 = r347632 / r347633;
double r347640 = tanh(r347639);
double r347641 = r347638 - r347640;
double r347642 = r347635 * r347641;
double r347643 = r347632 + r347642;
return r347643;
}
double f(double x, double y, double z, double t) {
double r347644 = y;
double r347645 = 5.880629389853999e+126;
bool r347646 = r347644 <= r347645;
double r347647 = z;
double r347648 = t;
double r347649 = r347648 / r347644;
double r347650 = tanh(r347649);
double r347651 = x;
double r347652 = r347651 / r347644;
double r347653 = tanh(r347652);
double r347654 = r347650 - r347653;
double r347655 = r347647 * r347654;
double r347656 = cbrt(r347655);
double r347657 = r347656 * r347656;
double r347658 = r347657 * r347656;
double r347659 = fma(r347644, r347658, r347651);
double r347660 = r347648 - r347651;
double r347661 = r347660 * r347647;
double r347662 = r347651 + r347661;
double r347663 = r347646 ? r347659 : r347662;
return r347663;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
| Original | 4.9 |
|---|---|
| Target | 2.3 |
| Herbie | 2.6 |
if y < 5.880629389853999e+126Initial program 3.0
Simplified1.4
rmApplied add-cube-cbrt1.7
if 5.880629389853999e+126 < y Initial program 17.7
rmApplied pow117.7
Applied pow117.7
Applied pow117.7
Applied pow-prod-down17.7
Applied pow-prod-down17.7
Simplified7.0
Taylor expanded around 0 8.2
Final simplification2.6
herbie shell --seed 2019351 +o rules:numerics
(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))))))