Average Error: 0.1 → 0.1
Time: 1.4m
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(\frac{1}{\sqrt{9 \cdot \left(a - \frac{1.0}{3.0}\right)}} \cdot rand\right) \cdot \left(a - \frac{1.0}{3.0}\right) + \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)
\left(\frac{1}{\sqrt{9 \cdot \left(a - \frac{1.0}{3.0}\right)}} \cdot rand\right) \cdot \left(a - \frac{1.0}{3.0}\right) + \left(a - \frac{1.0}{3.0}\right)
double f(double a, double rand) {
        double r6066277 = a;
        double r6066278 = 1.0;
        double r6066279 = 3.0;
        double r6066280 = r6066278 / r6066279;
        double r6066281 = r6066277 - r6066280;
        double r6066282 = 1.0;
        double r6066283 = 9.0;
        double r6066284 = r6066283 * r6066281;
        double r6066285 = sqrt(r6066284);
        double r6066286 = r6066282 / r6066285;
        double r6066287 = rand;
        double r6066288 = r6066286 * r6066287;
        double r6066289 = r6066282 + r6066288;
        double r6066290 = r6066281 * r6066289;
        return r6066290;
}

double f(double a, double rand) {
        double r6066291 = 1.0;
        double r6066292 = 9.0;
        double r6066293 = a;
        double r6066294 = 1.0;
        double r6066295 = 3.0;
        double r6066296 = r6066294 / r6066295;
        double r6066297 = r6066293 - r6066296;
        double r6066298 = r6066292 * r6066297;
        double r6066299 = sqrt(r6066298);
        double r6066300 = r6066291 / r6066299;
        double r6066301 = rand;
        double r6066302 = r6066300 * r6066301;
        double r6066303 = r6066302 * r6066297;
        double r6066304 = r6066303 + r6066297;
        return r6066304;
}

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}{rand \cdot \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)}\]
  3. Using strategy rm
  4. Applied *-commutative0.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)\]
  5. Using strategy rm
  6. Applied div-inv0.1

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

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

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

Reproduce

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