x + \left(y \cdot z\right) \cdot \left(\tanh \left(\frac{t}{y}\right) - \tanh \left(\frac{x}{y}\right)\right)x + y \cdot \left(z \cdot \left(\tanh \left(\frac{t}{y}\right) - \tanh \left(\frac{x}{y}\right)\right)\right)double f(double x, double y, double z, double t) {
double r326804 = x;
double r326805 = y;
double r326806 = z;
double r326807 = r326805 * r326806;
double r326808 = t;
double r326809 = r326808 / r326805;
double r326810 = tanh(r326809);
double r326811 = r326804 / r326805;
double r326812 = tanh(r326811);
double r326813 = r326810 - r326812;
double r326814 = r326807 * r326813;
double r326815 = r326804 + r326814;
return r326815;
}
double f(double x, double y, double z, double t) {
double r326816 = x;
double r326817 = y;
double r326818 = z;
double r326819 = t;
double r326820 = r326819 / r326817;
double r326821 = tanh(r326820);
double r326822 = r326816 / r326817;
double r326823 = tanh(r326822);
double r326824 = r326821 - r326823;
double r326825 = r326818 * r326824;
double r326826 = r326817 * r326825;
double r326827 = r326816 + r326826;
return r326827;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 5.0 |
|---|---|
| Target | 2.0 |
| Herbie | 2.0 |
Initial program 5.0
rmApplied associate-*l*2.0
Final simplification2.0
herbie shell --seed 2019322
(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))))))