Average Error: 0.1 → 0.1
Time: 31.1s
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(\frac{1}{\frac{\sqrt{\left(a - \frac{1}{3}\right) \cdot 9}}{rand}} + 1\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(\frac{1}{\frac{\sqrt{\left(a - \frac{1}{3}\right) \cdot 9}}{rand}} + 1\right)
double f(double a, double rand) {
        double r79785 = a;
        double r79786 = 1.0;
        double r79787 = 3.0;
        double r79788 = r79786 / r79787;
        double r79789 = r79785 - r79788;
        double r79790 = 9.0;
        double r79791 = r79790 * r79789;
        double r79792 = sqrt(r79791);
        double r79793 = r79786 / r79792;
        double r79794 = rand;
        double r79795 = r79793 * r79794;
        double r79796 = r79786 + r79795;
        double r79797 = r79789 * r79796;
        return r79797;
}

double f(double a, double rand) {
        double r79798 = a;
        double r79799 = 1.0;
        double r79800 = 3.0;
        double r79801 = r79799 / r79800;
        double r79802 = r79798 - r79801;
        double r79803 = 9.0;
        double r79804 = r79802 * r79803;
        double r79805 = sqrt(r79804);
        double r79806 = rand;
        double r79807 = r79805 / r79806;
        double r79808 = r79799 / r79807;
        double r79809 = r79808 + r79799;
        double r79810 = r79802 * r79809;
        return r79810;
}

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. Simplified0.1

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

    \[\leadsto \left(1 + \frac{1}{\frac{\sqrt{\left(a - \frac{1}{3}\right) \cdot 9}}{\color{blue}{1 \cdot rand}}}\right) \cdot \left(a - \frac{1}{3}\right)\]
  5. Applied *-un-lft-identity0.1

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

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

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

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

Reproduce

herbie shell --seed 2019194 
(FPCore (a rand)
  :name "Octave 3.8, oct_fill_randg"
  (* (- a (/ 1.0 3.0)) (+ 1.0 (* (/ 1.0 (sqrt (* 9.0 (- a (/ 1.0 3.0))))) rand))))