Average Error: 1.5 → 1.5
Time: 35.8s
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)}\]
\[\left(\frac{\left(1.0\right)}{\left(2\right)}\right) \cdot \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)}{a}\right)\]
\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)}
\left(\frac{\left(1.0\right)}{\left(2\right)}\right) \cdot \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)}{a}\right)
double f(double a, double b, double c) {
        double r1124935 = b;
        double r1124936 = -r1124935;
        double r1124937 = r1124935 * r1124935;
        double r1124938 = 4.0;
        double r1124939 = /* ERROR: no posit support in C */;
        double r1124940 = a;
        double r1124941 = c;
        double r1124942 = r1124940 * r1124941;
        double r1124943 = r1124939 * r1124942;
        double r1124944 = r1124937 - r1124943;
        double r1124945 = sqrt(r1124944);
        double r1124946 = r1124936 + r1124945;
        double r1124947 = 2.0;
        double r1124948 = /* ERROR: no posit support in C */;
        double r1124949 = r1124948 * r1124940;
        double r1124950 = r1124946 / r1124949;
        return r1124950;
}

double f(double a, double b, double c) {
        double r1124951 = 1.0;
        double r1124952 = /* ERROR: no posit support in C */;
        double r1124953 = 2.0;
        double r1124954 = /* ERROR: no posit support in C */;
        double r1124955 = r1124952 / r1124954;
        double r1124956 = b;
        double r1124957 = r1124956 * r1124956;
        double r1124958 = c;
        double r1124959 = a;
        double r1124960 = r1124958 * r1124959;
        double r1124961 = 4.0;
        double r1124962 = /* ERROR: no posit support in C */;
        double r1124963 = r1124960 * r1124962;
        double r1124964 = r1124957 - r1124963;
        double r1124965 = sqrt(r1124964);
        double r1124966 = r1124965 - r1124956;
        double r1124967 = r1124966 / r1124959;
        double r1124968 = r1124955 * r1124967;
        return r1124968;
}

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 p16-*-un-lft-identity1.5

    \[\leadsto \frac{\color{blue}{\left(\left(1.0\right) \cdot \left(\left(\sqrt{\left(\left(b \cdot b\right) - \left(\left(c \cdot a\right) \cdot \left(4\right)\right)\right)}\right) - b\right)\right)}}{\left(\left(2\right) \cdot a\right)}\]
  5. Applied p16-times-frac1.5

    \[\leadsto \color{blue}{\left(\frac{\left(1.0\right)}{\left(2\right)}\right) \cdot \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)}{a}\right)}\]
  6. Final simplification1.5

    \[\leadsto \left(\frac{\left(1.0\right)}{\left(2\right)}\right) \cdot \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)}{a}\right)\]

Reproduce

herbie shell --seed 2019168 
(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)))