Average Error: 33.0 → 14.1
Time: 17.4s
Precision: binary64
\[\]
\[\]
double code(double t, double l, double k) {
	return ((double) (2.0 / ((double) (((double) (((double) (((double) (((double) pow(t, 3.0)) / ((double) (l * l)))) * ((double) sin(k)))) * ((double) tan(k)))) * ((double) (((double) (1.0 + ((double) pow(((double) (k / t)), 2.0)))) + 1.0))))));
}
double code(double t, double l, double k) {
	double VAR;
	if ((t <= -4.261306571800381e-154)) {
		VAR = ((double) (2.0 / ((double) (((double) (((double) (1.0 + ((double) (1.0 + ((double) pow(((double) (k / t)), 2.0)))))) * ((double) (((double) pow(((double) (((double) cbrt(t)) * ((double) cbrt(t)))), ((double) (3.0 / 2.0)))) * ((double) (((double) sin(k)) * ((double) (((double) (((double) sin(k)) / l)) * ((double) pow(((double) (1.0 / ((double) pow(((double) (1.0 / ((double) pow(t, 1.0)))), 1.0)))), 1.0)))))))))) / ((double) (((double) (l / ((double) pow(((double) (((double) cbrt(t)) * ((double) cbrt(t)))), ((double) (3.0 / 2.0)))))) * ((double) cos(k))))))));
	} else {
		double VAR_1;
		if ((t <= 6.6296042558633e-55)) {
			VAR_1 = ((double) (2.0 / ((double) (((double) (((double) (k * k)) / ((double) (l / ((double) pow(((double) sin(k)), 2.0)))))) / ((double) (((double) (l / ((double) pow(((double) (((double) cbrt(t)) * ((double) cbrt(t)))), ((double) (3.0 / 2.0)))))) * ((double) cos(k))))))));
		} else {
			VAR_1 = ((double) (2.0 / ((double) (((double) (((double) (1.0 + ((double) (1.0 + ((double) pow(((double) (k / t)), 2.0)))))) * ((double) (((double) pow(((double) (((double) cbrt(t)) * ((double) cbrt(t)))), ((double) (3.0 / 2.0)))) * ((double) (((double) sin(k)) * ((double) (((double) pow(((double) cbrt(((double) sqrt(t)))), 3.0)) * ((double) (((double) sin(k)) * ((double) (((double) pow(((double) cbrt(((double) sqrt(t)))), 3.0)) / l)))))))))))) / ((double) (((double) (l / ((double) pow(((double) (((double) cbrt(t)) * ((double) cbrt(t)))), ((double) (3.0 / 2.0)))))) * ((double) cos(k))))))));
		}
		VAR = VAR_1;
	}
	return VAR;
}

Error

Bits error versus t

Bits error versus l

Bits error versus k

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Split input into 3 regimes
  2. if t < -4.2613065718003809e-154

    1. Initial program 27.5

      \[\]
    2. Using strategy rm
    3. Applied add-cube-cbrt27.7

      \[\leadsto \]
    4. Applied unpow-prod-down27.7

      \[\leadsto \]
    5. Applied times-frac19.1

      \[\leadsto \]
    6. Applied associate-*l*16.8

      \[\leadsto \]
    7. Using strategy rm
    8. Applied sqr-pow16.8

      \[\leadsto \]
    9. Applied associate-/l*11.9

      \[\leadsto \]
    10. Using strategy rm
    11. Applied tan-quot12.0

      \[\leadsto \]
    12. Applied associate-*l/11.0

      \[\leadsto \]
    13. Applied frac-times9.6

      \[\leadsto \]
    14. Applied associate-*l/8.5

      \[\leadsto \]
    15. Simplified11.3

      \[\leadsto \]
    16. Taylor expanded around inf 64.0

      \[\leadsto \]
    17. Simplified12.2

      \[\leadsto \]

    if -4.2613065718003809e-154 < t < 6.6296042558632993e-55

    1. Initial program 59.5

      \[\]
    2. Using strategy rm
    3. Applied add-cube-cbrt59.6

      \[\leadsto \]
    4. Applied unpow-prod-down59.6

      \[\leadsto \]
    5. Applied times-frac53.3

      \[\leadsto \]
    6. Applied associate-*l*53.0

      \[\leadsto \]
    7. Using strategy rm
    8. Applied sqr-pow53.0

      \[\leadsto \]
    9. Applied associate-/l*43.5

      \[\leadsto \]
    10. Using strategy rm
    11. Applied tan-quot43.5

      \[\leadsto \]
    12. Applied associate-*l/43.5

      \[\leadsto \]
    13. Applied frac-times44.5

      \[\leadsto \]
    14. Applied associate-*l/40.8

      \[\leadsto \]
    15. Simplified40.8

      \[\leadsto \]
    16. Taylor expanded around inf 28.8

      \[\leadsto \]
    17. Simplified27.6

      \[\leadsto \]

    if 6.6296042558632993e-55 < t

    1. Initial program 22.4

      \[\]
    2. Using strategy rm
    3. Applied add-cube-cbrt22.6

      \[\leadsto \]
    4. Applied unpow-prod-down22.6

      \[\leadsto \]
    5. Applied times-frac15.8

      \[\leadsto \]
    6. Applied associate-*l*13.7

      \[\leadsto \]
    7. Using strategy rm
    8. Applied sqr-pow13.7

      \[\leadsto \]
    9. Applied associate-/l*8.3

      \[\leadsto \]
    10. Using strategy rm
    11. Applied tan-quot8.2

      \[\leadsto \]
    12. Applied associate-*l/7.3

      \[\leadsto \]
    13. Applied frac-times5.7

      \[\leadsto \]
    14. Applied associate-*l/5.0

      \[\leadsto \]
    15. Simplified7.6

      \[\leadsto \]
    16. Using strategy rm
    17. Applied *-un-lft-identity7.6

      \[\leadsto \]
    18. Applied add-sqr-sqrt7.6

      \[\leadsto \]
    19. Applied cbrt-prod7.6

      \[\leadsto \]
    20. Applied unpow-prod-down7.6

      \[\leadsto \]
    21. Applied times-frac7.6

      \[\leadsto \]
    22. Applied associate-*l*7.5

      \[\leadsto \]
    23. Simplified7.5

      \[\leadsto \]
  3. Recombined 3 regimes into one program.
  4. Final simplification14.1

    \[\leadsto \]

Reproduce

herbie shell --seed 2020192 
(FPCore (t l k)
  :name "Toniolo and Linder, Equation (10+)"
  :precision binary64
  (/ 2.0 (* (* (* (/ (pow t 3.0) (* l l)) (sin k)) (tan k)) (+ (+ 1.0 (pow (/ k t) 2.0)) 1.0))))