Average Error: 0.1 → 0.1
Time: 23.8s
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)\]
\[\left(a - \frac{1.0}{3.0}\right) + \frac{\sqrt{a - \frac{1.0}{3.0}} \cdot rand}{3} \cdot \frac{\sqrt{a - \frac{1.0}{3.0}}}{\sqrt{a - \frac{1.0}{3.0}}}\]
\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)
\left(a - \frac{1.0}{3.0}\right) + \frac{\sqrt{a - \frac{1.0}{3.0}} \cdot rand}{3} \cdot \frac{\sqrt{a - \frac{1.0}{3.0}}}{\sqrt{a - \frac{1.0}{3.0}}}
double f(double a, double rand) {
        double r3206456 = a;
        double r3206457 = 1.0;
        double r3206458 = 3.0;
        double r3206459 = r3206457 / r3206458;
        double r3206460 = r3206456 - r3206459;
        double r3206461 = 1.0;
        double r3206462 = 9.0;
        double r3206463 = r3206462 * r3206460;
        double r3206464 = sqrt(r3206463);
        double r3206465 = r3206461 / r3206464;
        double r3206466 = rand;
        double r3206467 = r3206465 * r3206466;
        double r3206468 = r3206461 + r3206467;
        double r3206469 = r3206460 * r3206468;
        return r3206469;
}

double f(double a, double rand) {
        double r3206470 = a;
        double r3206471 = 1.0;
        double r3206472 = 3.0;
        double r3206473 = r3206471 / r3206472;
        double r3206474 = r3206470 - r3206473;
        double r3206475 = sqrt(r3206474);
        double r3206476 = rand;
        double r3206477 = r3206475 * r3206476;
        double r3206478 = 3.0;
        double r3206479 = r3206477 / r3206478;
        double r3206480 = r3206475 / r3206475;
        double r3206481 = r3206479 * r3206480;
        double r3206482 = r3206474 + r3206481;
        return r3206482;
}

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

    \[\leadsto \color{blue}{\left(rand \cdot \frac{1}{\sqrt{\left(a - \frac{1.0}{3.0}\right) \cdot 9}}\right)} \cdot \left(a - \frac{1.0}{3.0}\right) + \left(a - \frac{1.0}{3.0}\right)\]
  5. Applied associate-*l*0.1

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

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

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

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

    \[\leadsto rand \cdot \color{blue}{\left(\frac{\sqrt{a - \frac{1.0}{3.0}}}{\sqrt{9}} \cdot \frac{\sqrt{a - \frac{1.0}{3.0}}}{\sqrt{a - \frac{1.0}{3.0}}}\right)} + \left(a - \frac{1.0}{3.0}\right)\]
  11. Applied associate-*r*0.1

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

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

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

Reproduce

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