x + \left(y \cdot z\right) \cdot \left(\tanh \left(\frac{t}{y}\right) - \tanh \left(\frac{x}{y}\right)\right)x + z \cdot \left(\left(\tanh \left(\frac{t}{y}\right) - \tanh \left(\frac{x}{y}\right)\right) \cdot y\right)double f(double x, double y, double z, double t) {
double r233316 = x;
double r233317 = y;
double r233318 = z;
double r233319 = r233317 * r233318;
double r233320 = t;
double r233321 = r233320 / r233317;
double r233322 = tanh(r233321);
double r233323 = r233316 / r233317;
double r233324 = tanh(r233323);
double r233325 = r233322 - r233324;
double r233326 = r233319 * r233325;
double r233327 = r233316 + r233326;
return r233327;
}
double f(double x, double y, double z, double t) {
double r233328 = x;
double r233329 = z;
double r233330 = t;
double r233331 = y;
double r233332 = r233330 / r233331;
double r233333 = tanh(r233332);
double r233334 = r233328 / r233331;
double r233335 = tanh(r233334);
double r233336 = r233333 - r233335;
double r233337 = r233336 * r233331;
double r233338 = r233329 * r233337;
double r233339 = r233328 + r233338;
return r233339;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 4.8 |
|---|---|
| Target | 2.1 |
| Herbie | 1.6 |
Initial program 4.8
rmApplied associate-*l*2.1
Simplified2.1
rmApplied associate-*r*1.6
Simplified1.6
Final simplification1.6
herbie shell --seed 2019194
(FPCore (x y z t)
:name "SynthBasics:moogVCF from YampaSynth-0.2"
:herbie-target
(+ x (* y (* z (- (tanh (/ t y)) (tanh (/ x y))))))
(+ x (* (* y z) (- (tanh (/ t y)) (tanh (/ x y))))))