Average Error: 32.5 → 17.7
Time: 18.3s
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 <= -7.301962593525272e-305)) {
		VAR = ((double) (l * ((double) (((double) (((double) cbrt(((double) (1.0 / ((double) pow(((double) (((double) cbrt(t)) * ((double) cbrt(t)))), ((double) (3.0 / 2.0)))))))) * ((double) cbrt(((double) (1.0 / ((double) pow(((double) (((double) cbrt(t)) * ((double) cbrt(t)))), ((double) (3.0 / 2.0)))))))))) * ((double) (l * ((double) (((double) cbrt(((double) (1.0 / ((double) pow(((double) (((double) cbrt(t)) * ((double) cbrt(t)))), ((double) (3.0 / 2.0)))))))) * ((double) (2.0 / ((double) (((double) sin(k)) * ((double) (((double) pow(((double) (((double) cbrt(t)) * ((double) cbrt(t)))), ((double) (3.0 / 2.0)))) * ((double) (((double) tan(k)) * ((double) (((double) (1.0 + ((double) (1.0 + ((double) pow(((double) (k / t)), 2.0)))))) * ((double) pow(((double) cbrt(t)), 3.0))))))))))))))))))));
	} else {
		double VAR_1;
		if ((t <= 4.363544639733127e+136)) {
			VAR_1 = ((double) (l * ((double) (l * ((double) (2.0 / ((double) (((double) pow(((double) (((double) cbrt(t)) * ((double) cbrt(t)))), ((double) (3.0 / 2.0)))) * ((double) (((double) sin(k)) * ((double) (((double) (2.0 * ((double) (((double) pow(((double) (1.0 / ((double) pow(((double) (1.0 / ((double) pow(t, 2.0)))), 1.0)))), 1.0)) * ((double) (((double) sin(k)) / ((double) cos(k)))))))) + ((double) (((double) sin(k)) * ((double) (((double) (k * k)) / ((double) cos(k))))))))))))))))));
		} else {
			VAR_1 = ((double) (l * ((double) (((double) (1.0 / ((double) pow(((double) (((double) cbrt(t)) * ((double) cbrt(t)))), ((double) (3.0 / 2.0)))))) * ((double) (((double) (l * ((double) (((double) cbrt(2.0)) * ((double) (((double) cbrt(2.0)) / ((double) pow(((double) (((double) cbrt(t)) * ((double) cbrt(t)))), ((double) (3.0 / 2.0)))))))))) * ((double) (((double) cbrt(2.0)) / ((double) (((double) sin(k)) * ((double) (((double) tan(k)) * ((double) (((double) (1.0 + ((double) (1.0 + ((double) pow(((double) (k / t)), 2.0)))))) * ((double) pow(((double) cbrt(t)), 3.0))))))))))))))));
		}
		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 < -7.30196259352527177e-305

    1. Initial program 32.2

      \[\]
    2. Simplified32.6

      \[\leadsto \]
    3. Using strategy rm
    4. Applied add-cube-cbrt32.8

      \[\leadsto \]
    5. Applied unpow-prod-down32.8

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

      \[\leadsto \]
    7. Simplified26.9

      \[\leadsto \]
    8. Using strategy rm
    9. Applied sqr-pow26.9

      \[\leadsto \]
    10. Applied associate-*l*22.2

      \[\leadsto \]
    11. Simplified20.6

      \[\leadsto \]
    12. Using strategy rm
    13. Applied *-un-lft-identity20.6

      \[\leadsto \]
    14. Applied times-frac20.4

      \[\leadsto \]
    15. Applied associate-*l*18.3

      \[\leadsto \]
    16. Simplified19.0

      \[\leadsto \]
    17. Using strategy rm
    18. Applied add-cube-cbrt19.0

      \[\leadsto \]
    19. Applied associate-*l*19.0

      \[\leadsto \]
    20. Simplified18.7

      \[\leadsto \]

    if -7.30196259352527177e-305 < t < 4.3635446397331268e136

    1. Initial program 38.8

      \[\]
    2. Simplified38.6

      \[\leadsto \]
    3. Using strategy rm
    4. Applied add-cube-cbrt38.8

      \[\leadsto \]
    5. Applied unpow-prod-down38.8

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

      \[\leadsto \]
    7. Simplified33.7

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

      \[\leadsto \]
    10. Applied associate-*l*27.9

      \[\leadsto \]
    11. Simplified26.6

      \[\leadsto \]
    12. Taylor expanded around inf 20.5

      \[\leadsto \]
    13. Simplified19.9

      \[\leadsto \]

    if 4.3635446397331268e136 < t

    1. Initial program 22.5

      \[\]
    2. Simplified25.8

      \[\leadsto \]
    3. Using strategy rm
    4. Applied add-cube-cbrt25.8

      \[\leadsto \]
    5. Applied unpow-prod-down25.8

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

      \[\leadsto \]
    7. Simplified19.4

      \[\leadsto \]
    8. Using strategy rm
    9. Applied sqr-pow19.4

      \[\leadsto \]
    10. Applied associate-*l*15.6

      \[\leadsto \]
    11. Simplified12.6

      \[\leadsto \]
    12. Using strategy rm
    13. Applied *-un-lft-identity12.6

      \[\leadsto \]
    14. Applied times-frac12.5

      \[\leadsto \]
    15. Applied associate-*l*10.2

      \[\leadsto \]
    16. Simplified11.8

      \[\leadsto \]
    17. Using strategy rm
    18. Applied add-cube-cbrt11.8

      \[\leadsto \]
    19. Applied times-frac12.2

      \[\leadsto \]
    20. Applied associate-*r*11.3

      \[\leadsto \]
    21. Simplified11.3

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

    \[\leadsto \]

Reproduce

herbie shell --seed 2020191 
(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))))