Average Error: 0.1 → 0.1
Time: 9.0s
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(1 + \frac{1}{\sqrt{9 \cdot \left(a - \frac{1}{3}\right)}} \cdot rand\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(1 + \frac{1}{\sqrt{9 \cdot \left(a - \frac{1}{3}\right)}} \cdot rand\right)
double f(double a, double rand) {
        double r82036 = a;
        double r82037 = 1.0;
        double r82038 = 3.0;
        double r82039 = r82037 / r82038;
        double r82040 = r82036 - r82039;
        double r82041 = 9.0;
        double r82042 = r82041 * r82040;
        double r82043 = sqrt(r82042);
        double r82044 = r82037 / r82043;
        double r82045 = rand;
        double r82046 = r82044 * r82045;
        double r82047 = r82037 + r82046;
        double r82048 = r82040 * r82047;
        return r82048;
}

double f(double a, double rand) {
        double r82049 = a;
        double r82050 = 1.0;
        double r82051 = 3.0;
        double r82052 = r82050 / r82051;
        double r82053 = r82049 - r82052;
        double r82054 = 9.0;
        double r82055 = r82054 * r82053;
        double r82056 = sqrt(r82055);
        double r82057 = r82050 / r82056;
        double r82058 = rand;
        double r82059 = r82057 * r82058;
        double r82060 = r82050 + r82059;
        double r82061 = r82053 * r82060;
        return r82061;
}

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. Final simplification0.1

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

Reproduce

herbie shell --seed 2019346 +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))))