Average Error: 0.1 → 0.1
Time: 30.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{\frac{a - \frac{1.0}{3.0}}{3}}{\sqrt{a - \frac{1.0}{3.0}}} + \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{\frac{a - \frac{1.0}{3.0}}{3}}{\sqrt{a - \frac{1.0}{3.0}}} + \left(a - \frac{1.0}{3.0}\right)
double f(double a, double rand) {
        double r3359627 = a;
        double r3359628 = 1.0;
        double r3359629 = 3.0;
        double r3359630 = r3359628 / r3359629;
        double r3359631 = r3359627 - r3359630;
        double r3359632 = 1.0;
        double r3359633 = 9.0;
        double r3359634 = r3359633 * r3359631;
        double r3359635 = sqrt(r3359634);
        double r3359636 = r3359632 / r3359635;
        double r3359637 = rand;
        double r3359638 = r3359636 * r3359637;
        double r3359639 = r3359632 + r3359638;
        double r3359640 = r3359631 * r3359639;
        return r3359640;
}

double f(double a, double rand) {
        double r3359641 = rand;
        double r3359642 = a;
        double r3359643 = 1.0;
        double r3359644 = 3.0;
        double r3359645 = r3359643 / r3359644;
        double r3359646 = r3359642 - r3359645;
        double r3359647 = 3.0;
        double r3359648 = r3359646 / r3359647;
        double r3359649 = sqrt(r3359646);
        double r3359650 = r3359648 / r3359649;
        double r3359651 = r3359641 * r3359650;
        double r3359652 = r3359651 + r3359646;
        return r3359652;
}

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. Applied associate-/r*0.1

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

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

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

Reproduce

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