Average Error: 0.1 → 0.2
Time: 21.6s
Precision: 64
\[\left(a - \frac{1}{3}\right) \cdot \left(1 + \frac{1}{\sqrt{9 \cdot \left(a - \frac{1}{3}\right)}} \cdot rand\right)\]
\[\left(a - \frac{1}{3}\right) \cdot \left(1 + \frac{\frac{1}{\sqrt{9} \cdot \sqrt{a - \frac{1}{3}}}}{\frac{1}{rand}}\right)\]
\left(a - \frac{1}{3}\right) \cdot \left(1 + \frac{1}{\sqrt{9 \cdot \left(a - \frac{1}{3}\right)}} \cdot rand\right)
\left(a - \frac{1}{3}\right) \cdot \left(1 + \frac{\frac{1}{\sqrt{9} \cdot \sqrt{a - \frac{1}{3}}}}{\frac{1}{rand}}\right)
double f(double a, double rand) {
        double r137527 = a;
        double r137528 = 1.0;
        double r137529 = 3.0;
        double r137530 = r137528 / r137529;
        double r137531 = r137527 - r137530;
        double r137532 = 9.0;
        double r137533 = r137532 * r137531;
        double r137534 = sqrt(r137533);
        double r137535 = r137528 / r137534;
        double r137536 = rand;
        double r137537 = r137535 * r137536;
        double r137538 = r137528 + r137537;
        double r137539 = r137531 * r137538;
        return r137539;
}

double f(double a, double rand) {
        double r137540 = a;
        double r137541 = 1.0;
        double r137542 = 3.0;
        double r137543 = r137541 / r137542;
        double r137544 = r137540 - r137543;
        double r137545 = 9.0;
        double r137546 = sqrt(r137545);
        double r137547 = sqrt(r137544);
        double r137548 = r137546 * r137547;
        double r137549 = r137541 / r137548;
        double r137550 = 1.0;
        double r137551 = rand;
        double r137552 = r137550 / r137551;
        double r137553 = r137549 / r137552;
        double r137554 = r137541 + r137553;
        double r137555 = r137544 * r137554;
        return r137555;
}

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}{3}\right) \cdot \left(1 + \frac{1}{\sqrt{9 \cdot \left(a - \frac{1}{3}\right)}} \cdot rand\right)\]
  2. Using strategy rm
  3. Applied sqrt-prod0.1

    \[\leadsto \left(a - \frac{1}{3}\right) \cdot \left(1 + \frac{1}{\color{blue}{\sqrt{9} \cdot \sqrt{a - \frac{1}{3}}}} \cdot rand\right)\]
  4. Using strategy rm
  5. Applied associate-*l/0.1

    \[\leadsto \left(a - \frac{1}{3}\right) \cdot \left(1 + \color{blue}{\frac{1 \cdot rand}{\sqrt{9} \cdot \sqrt{a - \frac{1}{3}}}}\right)\]
  6. Using strategy rm
  7. Applied associate-/l*0.1

    \[\leadsto \left(a - \frac{1}{3}\right) \cdot \left(1 + \color{blue}{\frac{1}{\frac{\sqrt{9} \cdot \sqrt{a - \frac{1}{3}}}{rand}}}\right)\]
  8. Using strategy rm
  9. Applied div-inv0.2

    \[\leadsto \left(a - \frac{1}{3}\right) \cdot \left(1 + \frac{1}{\color{blue}{\left(\sqrt{9} \cdot \sqrt{a - \frac{1}{3}}\right) \cdot \frac{1}{rand}}}\right)\]
  10. Applied associate-/r*0.2

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

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

Reproduce

herbie shell --seed 2019209 
(FPCore (a rand)
  :name "Octave 3.8, oct_fill_randg"
  :precision binary64
  (* (- a (/ 1 3)) (+ 1 (* (/ 1 (sqrt (* 9 (- a (/ 1 3))))) rand))))