Average Error: 0.1 → 0.1
Time: 26.7s
Precision: 64
\[\left(a - \frac{1.0}{3.0}\right) \cdot \left(1 + \frac{1}{\sqrt{9 \cdot \left(a - \frac{1.0}{3.0}\right)}} \cdot rand\right)\]
\[rand \cdot \frac{a - \frac{1.0}{3.0}}{\sqrt{\left(a - \frac{1.0}{3.0}\right) \cdot 9}} + \left(a - \frac{1.0}{3.0}\right)\]
\left(a - \frac{1.0}{3.0}\right) \cdot \left(1 + \frac{1}{\sqrt{9 \cdot \left(a - \frac{1.0}{3.0}\right)}} \cdot rand\right)
rand \cdot \frac{a - \frac{1.0}{3.0}}{\sqrt{\left(a - \frac{1.0}{3.0}\right) \cdot 9}} + \left(a - \frac{1.0}{3.0}\right)
double f(double a, double rand) {
        double r1948130 = a;
        double r1948131 = 1.0;
        double r1948132 = 3.0;
        double r1948133 = r1948131 / r1948132;
        double r1948134 = r1948130 - r1948133;
        double r1948135 = 1.0;
        double r1948136 = 9.0;
        double r1948137 = r1948136 * r1948134;
        double r1948138 = sqrt(r1948137);
        double r1948139 = r1948135 / r1948138;
        double r1948140 = rand;
        double r1948141 = r1948139 * r1948140;
        double r1948142 = r1948135 + r1948141;
        double r1948143 = r1948134 * r1948142;
        return r1948143;
}

double f(double a, double rand) {
        double r1948144 = rand;
        double r1948145 = a;
        double r1948146 = 1.0;
        double r1948147 = 3.0;
        double r1948148 = r1948146 / r1948147;
        double r1948149 = r1948145 - r1948148;
        double r1948150 = 9.0;
        double r1948151 = r1948149 * r1948150;
        double r1948152 = sqrt(r1948151);
        double r1948153 = r1948149 / r1948152;
        double r1948154 = r1948144 * r1948153;
        double r1948155 = r1948154 + r1948149;
        return r1948155;
}

Error

Bits error versus a

Bits error versus rand

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Initial program 0.1

    \[\left(a - \frac{1.0}{3.0}\right) \cdot \left(1 + \frac{1}{\sqrt{9 \cdot \left(a - \frac{1.0}{3.0}\right)}} \cdot rand\right)\]
  2. Simplified0.1

    \[\leadsto \color{blue}{\mathsf{fma}\left(\frac{rand}{\sqrt{9 \cdot \left(a - \frac{1.0}{3.0}\right)}}, a - \frac{1.0}{3.0}, a - \frac{1.0}{3.0}\right)}\]
  3. Using strategy rm
  4. Applied clear-num0.1

    \[\leadsto \mathsf{fma}\left(\color{blue}{\frac{1}{\frac{\sqrt{9 \cdot \left(a - \frac{1.0}{3.0}\right)}}{rand}}}, a - \frac{1.0}{3.0}, a - \frac{1.0}{3.0}\right)\]
  5. Using strategy rm
  6. Applied fma-udef0.1

    \[\leadsto \color{blue}{\frac{1}{\frac{\sqrt{9 \cdot \left(a - \frac{1.0}{3.0}\right)}}{rand}} \cdot \left(a - \frac{1.0}{3.0}\right) + \left(a - \frac{1.0}{3.0}\right)}\]
  7. Simplified0.1

    \[\leadsto \color{blue}{\frac{a - \frac{1.0}{3.0}}{\frac{\sqrt{\left(a - \frac{1.0}{3.0}\right) \cdot 9}}{rand}}} + \left(a - \frac{1.0}{3.0}\right)\]
  8. Using strategy rm
  9. Applied associate-/r/0.1

    \[\leadsto \color{blue}{\frac{a - \frac{1.0}{3.0}}{\sqrt{\left(a - \frac{1.0}{3.0}\right) \cdot 9}} \cdot rand} + \left(a - \frac{1.0}{3.0}\right)\]
  10. Final simplification0.1

    \[\leadsto rand \cdot \frac{a - \frac{1.0}{3.0}}{\sqrt{\left(a - \frac{1.0}{3.0}\right) \cdot 9}} + \left(a - \frac{1.0}{3.0}\right)\]

Reproduce

herbie shell --seed 2019142 +o rules:numerics
(FPCore (a rand)
  :name "Octave 3.8, oct_fill_randg"
  (* (- a (/ 1.0 3.0)) (+ 1 (* (/ 1 (sqrt (* 9 (- a (/ 1.0 3.0))))) rand))))