double f(double a, double b, double c) {
double r599468 = b;
double r599469 = -r599468;
double r599470 = r599468 * r599468;
double r599471 = 4.0;
double r599472 = a;
double r599473 = c;
double r599474 = r599472 * r599473;
double r599475 = r599471 * r599474;
double r599476 = r599470 - r599475;
double r599477 = sqrt(r599476);
double r599478 = r599469 + r599477;
double r599479 = 2.0;
double r599480 = r599479 * r599472;
double r599481 = r599478 / r599480;
return r599481;
}
double f(double a, double b, double c) {
double r599482 = b;
double r599483 = r599482 * r599482;
double r599484 = c;
double r599485 = a;
double r599486 = 4.0;
double r599487 = r599485 * r599486;
double r599488 = r599484 * r599487;
double r599489 = r599483 - r599488;
double r599490 = sqrt(r599489);
double r599491 = r599490 - r599482;
double r599492 = 2.0;
double r599493 = r599492 * r599485;
double r599494 = r599491 / r599493;
return r599494;
}
\frac{\left(-b\right) + \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\frac{\sqrt{b \cdot b - c \cdot \left(a \cdot 4\right)} - b}{2 \cdot a}


Bits error versus a



Bits error versus b



Bits error versus c
Initial program 1.6
Simplified1.6
rmApplied associate-*l*1.5
Final simplification1.5
herbie shell --seed 2019102 +o rules:numerics
(FPCore (a b c)
:name "quadp (p42, positive)"
(/.p16 (+.p16 (neg.p16 b) (sqrt.p16 (-.p16 (*.p16 b b) (*.p16 (real->posit16 4) (*.p16 a c))))) (*.p16 (real->posit16 2) a)))