x + \left(y \cdot z\right) \cdot \left(\tanh \left(\frac{t}{y}\right) - \tanh \left(\frac{x}{y}\right)\right)x + \left(y \cdot \left(z \cdot \tanh \left(\frac{t}{y}\right)\right) - y \cdot \left(z \cdot \tanh \left(\frac{x}{y}\right)\right)\right)(FPCore (x y z t) :precision binary64 (+ x (* (* y z) (- (tanh (/ t y)) (tanh (/ x y))))))
(FPCore (x y z t) :precision binary64 (+ x (- (* y (* z (tanh (/ t y)))) (* y (* z (tanh (/ x y)))))))
double code(double x, double y, double z, double t) {
return x + ((y * z) * (tanh(t / y) - tanh(x / y)));
}
double code(double x, double y, double z, double t) {
return x + ((y * (z * tanh(t / y))) - (y * (z * tanh(x / y))));
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 4.7 |
|---|---|
| Target | 2.1 |
| Herbie | 2.3 |
Initial program 4.7
rmApplied associate-*l*_binary64_117162.1
rmApplied sub-neg_binary64_117682.1
Applied distribute-rgt-in_binary64_117252.1
Applied distribute-rgt-in_binary64_117252.3
Simplified2.3
Simplified2.3
Final simplification2.3
herbie shell --seed 2020289
(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))))))