Average Error: 0.1 → 0.1
Time: 33.3s
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({\left(\left(a - \frac{1.0}{3.0}\right) \cdot 9\right)}^{\left(-\frac{1}{2}\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({\left(\left(a - \frac{1.0}{3.0}\right) \cdot 9\right)}^{\left(-\frac{1}{2}\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 r3569820 = a;
        double r3569821 = 1.0;
        double r3569822 = 3.0;
        double r3569823 = r3569821 / r3569822;
        double r3569824 = r3569820 - r3569823;
        double r3569825 = 1.0;
        double r3569826 = 9.0;
        double r3569827 = r3569826 * r3569824;
        double r3569828 = sqrt(r3569827);
        double r3569829 = r3569825 / r3569828;
        double r3569830 = rand;
        double r3569831 = r3569829 * r3569830;
        double r3569832 = r3569825 + r3569831;
        double r3569833 = r3569824 * r3569832;
        return r3569833;
}

double f(double a, double rand) {
        double r3569834 = a;
        double r3569835 = 1.0;
        double r3569836 = 3.0;
        double r3569837 = r3569835 / r3569836;
        double r3569838 = r3569834 - r3569837;
        double r3569839 = 9.0;
        double r3569840 = r3569838 * r3569839;
        double r3569841 = 0.5;
        double r3569842 = -r3569841;
        double r3569843 = pow(r3569840, r3569842);
        double r3569844 = rand;
        double r3569845 = r3569843 * r3569844;
        double r3569846 = r3569845 * r3569838;
        double r3569847 = r3569846 + r3569838;
        return r3569847;
}

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 pow1/20.1

    \[\leadsto \left(a - \frac{1.0}{3.0}\right) \cdot \left(1 + \frac{1}{\color{blue}{{\left(9 \cdot \left(a - \frac{1.0}{3.0}\right)\right)}^{\frac{1}{2}}}} \cdot rand\right)\]
  4. Applied pow-flip0.1

    \[\leadsto \left(a - \frac{1.0}{3.0}\right) \cdot \left(1 + \color{blue}{{\left(9 \cdot \left(a - \frac{1.0}{3.0}\right)\right)}^{\left(-\frac{1}{2}\right)}} \cdot rand\right)\]
  5. Using strategy rm
  6. Applied distribute-rgt-in0.1

    \[\leadsto \color{blue}{1 \cdot \left(a - \frac{1.0}{3.0}\right) + \left({\left(9 \cdot \left(a - \frac{1.0}{3.0}\right)\right)}^{\left(-\frac{1}{2}\right)} \cdot rand\right) \cdot \left(a - \frac{1.0}{3.0}\right)}\]
  7. Simplified0.1

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

    \[\leadsto \left({\left(\left(a - \frac{1.0}{3.0}\right) \cdot 9\right)}^{\left(-\frac{1}{2}\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 2019134 +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))))