Average Error: 0.1 → 0.1
Time: 31.0s
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{rand}{3} \cdot \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{rand}{3} \cdot \sqrt{a - \frac{1.0}{3.0}}
double f(double a, double rand) {
        double r2214399 = a;
        double r2214400 = 1.0;
        double r2214401 = 3.0;
        double r2214402 = r2214400 / r2214401;
        double r2214403 = r2214399 - r2214402;
        double r2214404 = 1.0;
        double r2214405 = 9.0;
        double r2214406 = r2214405 * r2214403;
        double r2214407 = sqrt(r2214406);
        double r2214408 = r2214404 / r2214407;
        double r2214409 = rand;
        double r2214410 = r2214408 * r2214409;
        double r2214411 = r2214404 + r2214410;
        double r2214412 = r2214403 * r2214411;
        return r2214412;
}

double f(double a, double rand) {
        double r2214413 = a;
        double r2214414 = 1.0;
        double r2214415 = 3.0;
        double r2214416 = r2214414 / r2214415;
        double r2214417 = r2214413 - r2214416;
        double r2214418 = rand;
        double r2214419 = 3.0;
        double r2214420 = r2214418 / r2214419;
        double r2214421 = sqrt(r2214417);
        double r2214422 = r2214420 * r2214421;
        double r2214423 = r2214417 + r2214422;
        return r2214423;
}

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

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

    \[\leadsto \frac{a - \frac{1.0}{3.0}}{\color{blue}{3} \cdot \sqrt{a - \frac{1.0}{3.0}}} \cdot rand + \left(a - \frac{1.0}{3.0}\right)\]
  6. Using strategy rm
  7. Applied *-un-lft-identity0.1

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

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

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

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

Reproduce

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