Average Error: 19.0 → 8.7
Time: 7.0s
Precision: binary64
\[\]
\[\]
double code(double c0, double A, double V, double l) {
	return ((double) (c0 * ((double) sqrt(((double) (A / ((double) (V * l))))))));
}
double code(double c0, double A, double V, double l) {
	double VAR;
	if ((V <= -1.6960457929493363e-304)) {
		VAR = ((double) (((double) (c0 * ((double) (((double) fabs(((double) cbrt(A)))) / ((double) sqrt(((double) (V * ((double) (l / ((double) cbrt(((double) cbrt(A)))))))))))))) * ((double) sqrt(((double) (((double) cbrt(((double) cbrt(A)))) * ((double) cbrt(((double) cbrt(A))))))))));
	} else {
		VAR = ((double) (c0 * ((double) (((double) fabs(((double) cbrt(A)))) / ((double) (((double) sqrt(V)) * ((double) sqrt(((double) (l / ((double) cbrt(A))))))))))));
	}
	return VAR;
}

Error

Bits error versus c0

Bits error versus A

Bits error versus V

Bits error versus l

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Split input into 2 regimes
  2. if V < -1.6960457929493363e-304

    1. Initial program 18.4

      \[\]
    2. Using strategy rm
    3. Applied add-cube-cbrt18.8

      \[\leadsto \]
    4. Applied associate-/l*18.8

      \[\leadsto \]
    5. Simplified17.6

      \[\leadsto \]
    6. Using strategy rm
    7. Applied sqrt-div12.7

      \[\leadsto \]
    8. Simplified12.7

      \[\leadsto \]
    9. Using strategy rm
    10. Applied add-cube-cbrt12.9

      \[\leadsto \]
    11. Applied add-cube-cbrt13.0

      \[\leadsto \]
    12. Applied times-frac13.0

      \[\leadsto \]
    13. Applied associate-*r*11.4

      \[\leadsto \]
    14. Simplified11.4

      \[\leadsto \]
    15. Using strategy rm
    16. Applied associate-*r/11.4

      \[\leadsto \]
    17. Applied associate-*r/11.5

      \[\leadsto \]
    18. Applied frac-times12.7

      \[\leadsto \]
    19. Applied sqrt-div11.4

      \[\leadsto \]
    20. Applied associate-/r/11.4

      \[\leadsto \]
    21. Applied associate-*r*11.6

      \[\leadsto \]
    22. Simplified12.0

      \[\leadsto \]

    if -1.6960457929493363e-304 < V

    1. Initial program 19.6

      \[\]
    2. Using strategy rm
    3. Applied add-cube-cbrt19.9

      \[\leadsto \]
    4. Applied associate-/l*19.9

      \[\leadsto \]
    5. Simplified18.6

      \[\leadsto \]
    6. Using strategy rm
    7. Applied sqrt-div13.7

      \[\leadsto \]
    8. Simplified13.7

      \[\leadsto \]
    9. Using strategy rm
    10. Applied sqrt-prod5.5

      \[\leadsto \]
  3. Recombined 2 regimes into one program.
  4. Final simplification8.7

    \[\leadsto \]

Reproduce

herbie shell --seed 2020179 
(FPCore (c0 A V l)
  :name "Henrywood and Agarwal, Equation (3)"
  :precision binary64
  (* c0 (sqrt (/ A (* V l)))))