Average Error: 0.1 → 0.1
Time: 24.2s
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(a - \frac{1.0}{3.0}\right) \cdot \frac{rand}{\sqrt{9 \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(a - \frac{1.0}{3.0}\right) \cdot \frac{rand}{\sqrt{9 \cdot \left(a - \frac{1.0}{3.0}\right)}} + \left(a - \frac{1.0}{3.0}\right)
double f(double a, double rand) {
        double r2640121 = a;
        double r2640122 = 1.0;
        double r2640123 = 3.0;
        double r2640124 = r2640122 / r2640123;
        double r2640125 = r2640121 - r2640124;
        double r2640126 = 1.0;
        double r2640127 = 9.0;
        double r2640128 = r2640127 * r2640125;
        double r2640129 = sqrt(r2640128);
        double r2640130 = r2640126 / r2640129;
        double r2640131 = rand;
        double r2640132 = r2640130 * r2640131;
        double r2640133 = r2640126 + r2640132;
        double r2640134 = r2640125 * r2640133;
        return r2640134;
}

double f(double a, double rand) {
        double r2640135 = a;
        double r2640136 = 1.0;
        double r2640137 = 3.0;
        double r2640138 = r2640136 / r2640137;
        double r2640139 = r2640135 - r2640138;
        double r2640140 = rand;
        double r2640141 = 9.0;
        double r2640142 = r2640141 * r2640139;
        double r2640143 = sqrt(r2640142);
        double r2640144 = r2640140 / r2640143;
        double r2640145 = r2640139 * r2640144;
        double r2640146 = r2640145 + r2640139;
        return r2640146;
}

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

    \[\leadsto \color{blue}{\left(a - \frac{1.0}{3.0}\right) \cdot 1 + \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)}\]
  4. Simplified0.1

    \[\leadsto \color{blue}{\left(a - \frac{1.0}{3.0}\right)} + \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)\]
  5. Simplified0.1

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

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

Reproduce

herbie shell --seed 2019164 +o rules:numerics
(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))))