Average Error: 0.1 → 0.1
Time: 9.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 1 + \left(\left(a - \frac{1}{3}\right) \cdot \frac{1}{\sqrt{9 \cdot \left(a - \frac{1}{3}\right)}}\right) \cdot rand\]
\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(\left(a - \frac{1}{3}\right) \cdot \frac{1}{\sqrt{9 \cdot \left(a - \frac{1}{3}\right)}}\right) \cdot rand
double f(double a, double rand) {
        double r133740 = a;
        double r133741 = 1.0;
        double r133742 = 3.0;
        double r133743 = r133741 / r133742;
        double r133744 = r133740 - r133743;
        double r133745 = 9.0;
        double r133746 = r133745 * r133744;
        double r133747 = sqrt(r133746);
        double r133748 = r133741 / r133747;
        double r133749 = rand;
        double r133750 = r133748 * r133749;
        double r133751 = r133741 + r133750;
        double r133752 = r133744 * r133751;
        return r133752;
}

double f(double a, double rand) {
        double r133753 = a;
        double r133754 = 1.0;
        double r133755 = 3.0;
        double r133756 = r133754 / r133755;
        double r133757 = r133753 - r133756;
        double r133758 = r133757 * r133754;
        double r133759 = 9.0;
        double r133760 = r133759 * r133757;
        double r133761 = sqrt(r133760);
        double r133762 = r133754 / r133761;
        double r133763 = r133757 * r133762;
        double r133764 = rand;
        double r133765 = r133763 * r133764;
        double r133766 = r133758 + r133765;
        return r133766;
}

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-*r*0.1

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

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

Reproduce

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