Average Error: 0.1 → 0.1
Time: 22.7s
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(\frac{1}{\sqrt{9}} \cdot \frac{1 \cdot rand}{\sqrt{a - \frac{1}{3}}} + 1\right) \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(\frac{1}{\sqrt{9}} \cdot \frac{1 \cdot rand}{\sqrt{a - \frac{1}{3}}} + 1\right) \cdot \left(a - \frac{1}{3}\right)
double f(double a, double rand) {
        double r63941 = a;
        double r63942 = 1.0;
        double r63943 = 3.0;
        double r63944 = r63942 / r63943;
        double r63945 = r63941 - r63944;
        double r63946 = 9.0;
        double r63947 = r63946 * r63945;
        double r63948 = sqrt(r63947);
        double r63949 = r63942 / r63948;
        double r63950 = rand;
        double r63951 = r63949 * r63950;
        double r63952 = r63942 + r63951;
        double r63953 = r63945 * r63952;
        return r63953;
}

double f(double a, double rand) {
        double r63954 = 1.0;
        double r63955 = 9.0;
        double r63956 = sqrt(r63955);
        double r63957 = r63954 / r63956;
        double r63958 = 1.0;
        double r63959 = rand;
        double r63960 = r63958 * r63959;
        double r63961 = a;
        double r63962 = 3.0;
        double r63963 = r63958 / r63962;
        double r63964 = r63961 - r63963;
        double r63965 = sqrt(r63964);
        double r63966 = r63960 / r63965;
        double r63967 = r63957 * r63966;
        double r63968 = r63967 + r63958;
        double r63969 = r63968 * r63964;
        return r63969;
}

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. Simplified0.1

    \[\leadsto \color{blue}{\mathsf{fma}\left(\frac{1}{\sqrt{\left(a - \frac{1}{3}\right) \cdot 9}}, rand, 1\right) \cdot \left(a - \frac{1}{3}\right)}\]
  3. Using strategy rm
  4. Applied fma-udef0.1

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

    \[\leadsto \left(\color{blue}{\frac{rand \cdot 1}{\sqrt{\left(a - \frac{1}{3}\right) \cdot 9}}} + 1\right) \cdot \left(a - \frac{1}{3}\right)\]
  6. Using strategy rm
  7. Applied sqrt-prod0.1

    \[\leadsto \left(\frac{rand \cdot 1}{\color{blue}{\sqrt{a - \frac{1}{3}} \cdot \sqrt{9}}} + 1\right) \cdot \left(a - \frac{1}{3}\right)\]
  8. Applied associate-/r*0.1

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

    \[\leadsto \left(\frac{\color{blue}{\frac{1 \cdot rand}{\sqrt{a - \frac{1}{3}}}}}{\sqrt{9}} + 1\right) \cdot \left(a - \frac{1}{3}\right)\]
  10. Using strategy rm
  11. Applied div-inv0.1

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

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

Reproduce

herbie shell --seed 2019179 +o rules:numerics
(FPCore (a rand)
  :name "Octave 3.8, oct_fill_randg"
  (* (- a (/ 1.0 3.0)) (+ 1.0 (* (/ 1.0 (sqrt (* 9.0 (- a (/ 1.0 3.0))))) rand))))