Average Error: 1.5 → 1.5
Time: 19.2s
Precision: 64
\[\frac{\left(\frac{\left(-b\right)}{\left(\sqrt{\left(\left(b \cdot b\right) - \left(\left(4\right) \cdot \left(a \cdot c\right)\right)\right)}\right)}\right)}{\left(\left(2\right) \cdot a\right)}\]
\[\frac{\frac{\sqrt{b \cdot b - \left(c \cdot a\right) \cdot 4} - b}{2}}{a}\]
\frac{\left(\frac{\left(-b\right)}{\left(\sqrt{\left(\left(b \cdot b\right) - \left(\left(4\right) \cdot \left(a \cdot c\right)\right)\right)}\right)}\right)}{\left(\left(2\right) \cdot a\right)}
\frac{\frac{\sqrt{b \cdot b - \left(c \cdot a\right) \cdot 4} - b}{2}}{a}
double f(double a, double b, double c) {
        double r842747 = b;
        double r842748 = -r842747;
        double r842749 = r842747 * r842747;
        double r842750 = 4.0;
        double r842751 = /* ERROR: no posit support in C */;
        double r842752 = a;
        double r842753 = c;
        double r842754 = r842752 * r842753;
        double r842755 = r842751 * r842754;
        double r842756 = r842749 - r842755;
        double r842757 = sqrt(r842756);
        double r842758 = r842748 + r842757;
        double r842759 = 2.0;
        double r842760 = /* ERROR: no posit support in C */;
        double r842761 = r842760 * r842752;
        double r842762 = r842758 / r842761;
        return r842762;
}

double f(double a, double b, double c) {
        double r842763 = b;
        double r842764 = r842763 * r842763;
        double r842765 = c;
        double r842766 = a;
        double r842767 = r842765 * r842766;
        double r842768 = 4.0;
        double r842769 = r842767 * r842768;
        double r842770 = r842764 - r842769;
        double r842771 = sqrt(r842770);
        double r842772 = r842771 - r842763;
        double r842773 = 2.0;
        double r842774 = r842772 / r842773;
        double r842775 = r842774 / r842766;
        return r842775;
}

Error

Bits error versus a

Bits error versus b

Bits error versus c

Derivation

  1. Initial program 1.5

    \[\frac{\left(\frac{\left(-b\right)}{\left(\sqrt{\left(\left(b \cdot b\right) - \left(\left(4\right) \cdot \left(a \cdot c\right)\right)\right)}\right)}\right)}{\left(\left(2\right) \cdot a\right)}\]
  2. Simplified1.5

    \[\leadsto \color{blue}{\frac{\left(\left(\sqrt{\left(\left(b \cdot b\right) - \left(\left(c \cdot a\right) \cdot \left(4\right)\right)\right)}\right) - b\right)}{\left(\left(2\right) \cdot a\right)}}\]
  3. Using strategy rm
  4. Applied associate-/r*1.5

    \[\leadsto \color{blue}{\frac{\left(\frac{\left(\left(\sqrt{\left(\left(b \cdot b\right) - \left(\left(c \cdot a\right) \cdot \left(4\right)\right)\right)}\right) - b\right)}{\left(2\right)}\right)}{a}}\]
  5. Final simplification1.5

    \[\leadsto \frac{\frac{\sqrt{b \cdot b - \left(c \cdot a\right) \cdot 4} - b}{2}}{a}\]

Reproduce

herbie shell --seed 2019119 +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)))