Average Error: 0.1 → 0.1
Time: 6.9s
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 1 + \left(a - \frac{1}{3}\right) \cdot \frac{1 \cdot rand}{\sqrt{9 \cdot \left(a - \frac{1}{3}\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 1 + \left(a - \frac{1}{3}\right) \cdot \frac{1 \cdot rand}{\sqrt{9 \cdot \left(a - \frac{1}{3}\right)}}
double f(double a, double rand) {
        double r140977 = a;
        double r140978 = 1.0;
        double r140979 = 3.0;
        double r140980 = r140978 / r140979;
        double r140981 = r140977 - r140980;
        double r140982 = 9.0;
        double r140983 = r140982 * r140981;
        double r140984 = sqrt(r140983);
        double r140985 = r140978 / r140984;
        double r140986 = rand;
        double r140987 = r140985 * r140986;
        double r140988 = r140978 + r140987;
        double r140989 = r140981 * r140988;
        return r140989;
}

double f(double a, double rand) {
        double r140990 = a;
        double r140991 = 1.0;
        double r140992 = 3.0;
        double r140993 = r140991 / r140992;
        double r140994 = r140990 - r140993;
        double r140995 = r140994 * r140991;
        double r140996 = rand;
        double r140997 = r140991 * r140996;
        double r140998 = 9.0;
        double r140999 = r140998 * r140994;
        double r141000 = sqrt(r140999);
        double r141001 = r140997 / r141000;
        double r141002 = r140994 * r141001;
        double r141003 = r140995 + r141002;
        return r141003;
}

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. Using strategy rm
  3. Applied distribute-lft-in0.1

    \[\leadsto \color{blue}{\left(a - \frac{1}{3}\right) \cdot 1 + \left(a - \frac{1}{3}\right) \cdot \left(\frac{1}{\sqrt{9 \cdot \left(a - \frac{1}{3}\right)}} \cdot rand\right)}\]
  4. Using strategy rm
  5. Applied associate-*l/0.1

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

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

Reproduce

herbie shell --seed 2020056 +o rules:numerics
(FPCore (a rand)
  :name "Octave 3.8, oct_fill_randg"
  :precision binary64
  (* (- a (/ 1 3)) (+ 1 (* (/ 1 (sqrt (* 9 (- a (/ 1 3))))) rand))))