Average Error: 3.7 → 2.3
Time: 2.2min
Precision: binary64
Cost: 123586
\[\frac{\sin ky}{\sqrt{{\sin kx}^{2} + {\sin ky}^{2}}} \cdot \sin th\]
\[\begin{array}{l} \mathbf{if}\;\frac{\sin ky}{\sqrt{{\sin kx}^{2} + {\sin ky}^{2}}} \leq -\infty:\\ \;\;\;\;\sin th \cdot \frac{\sin ky}{\left|\sin ky\right|}\\ \mathbf{elif}\;\frac{\sin ky}{\sqrt{{\sin kx}^{2} + {\sin ky}^{2}}} \leq 1.0087051728431693:\\ \;\;\;\;\frac{\sin ky}{\sqrt{{\sin kx}^{2} + {\sin ky}^{2}}} \cdot \sin th\\ \mathbf{else}:\\ \;\;\;\;\frac{ky \cdot \sin th}{\left|\sin kx\right|}\\ \end{array}\]
\frac{\sin ky}{\sqrt{{\sin kx}^{2} + {\sin ky}^{2}}} \cdot \sin th
\begin{array}{l}
\mathbf{if}\;\frac{\sin ky}{\sqrt{{\sin kx}^{2} + {\sin ky}^{2}}} \leq -\infty:\\
\;\;\;\;\sin th \cdot \frac{\sin ky}{\left|\sin ky\right|}\\

\mathbf{elif}\;\frac{\sin ky}{\sqrt{{\sin kx}^{2} + {\sin ky}^{2}}} \leq 1.0087051728431693:\\
\;\;\;\;\frac{\sin ky}{\sqrt{{\sin kx}^{2} + {\sin ky}^{2}}} \cdot \sin th\\

\mathbf{else}:\\
\;\;\;\;\frac{ky \cdot \sin th}{\left|\sin kx\right|}\\

\end{array}
(FPCore (kx ky th)
 :precision binary64
 (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2.0) (pow (sin ky) 2.0)))) (sin th)))
(FPCore (kx ky th)
 :precision binary64
 (if (<=
      (/ (sin ky) (sqrt (+ (pow (sin kx) 2.0) (pow (sin ky) 2.0))))
      (- INFINITY))
   (* (sin th) (/ (sin ky) (fabs (sin ky))))
   (if (<=
        (/ (sin ky) (sqrt (+ (pow (sin kx) 2.0) (pow (sin ky) 2.0))))
        1.0087051728431693)
     (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2.0) (pow (sin ky) 2.0)))) (sin th))
     (/ (* ky (sin th)) (fabs (sin kx))))))
double code(double kx, double ky, double th) {
	return (sin(ky) / sqrt(pow(sin(kx), 2.0) + pow(sin(ky), 2.0))) * sin(th);
}
double code(double kx, double ky, double th) {
	double tmp;
	if ((sin(ky) / sqrt(pow(sin(kx), 2.0) + pow(sin(ky), 2.0))) <= -((double) INFINITY)) {
		tmp = sin(th) * (sin(ky) / fabs(sin(ky)));
	} else if ((sin(ky) / sqrt(pow(sin(kx), 2.0) + pow(sin(ky), 2.0))) <= 1.0087051728431693) {
		tmp = (sin(ky) / sqrt(pow(sin(kx), 2.0) + pow(sin(ky), 2.0))) * sin(th);
	} else {
		tmp = (ky * sin(th)) / fabs(sin(kx));
	}
	return tmp;
}

Error

Bits error versus kx

Bits error versus ky

Bits error versus th

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Alternatives

Alternative 1
Error15.5
Cost78659
\[\begin{array}{l} \mathbf{if}\;{\sin kx}^{2} \leq 0:\\ \;\;\;\;\sin th \cdot \frac{\sin ky}{\left|\sin ky\right|}\\ \mathbf{elif}\;{\sin kx}^{2} \leq 3.5298358274788804 \cdot 10^{-05}:\\ \;\;\;\;\sin th \cdot \frac{\sin ky}{\sqrt{{\sin ky}^{2} + \left(kx \cdot kx - {kx}^{4} \cdot 0.3333333333333333\right)}}\\ \mathbf{elif}\;{\sin kx}^{2} \leq 0.271995211351034:\\ \;\;\;\;\sqrt{\frac{1}{{\sin kx}^{2} + {\sin ky}^{2}}} \cdot \left(\sin ky \cdot th\right)\\ \mathbf{else}:\\ \;\;\;\;\sin th \cdot \frac{\sin ky}{\left|\sin kx\right|}\\ \end{array}\]
Alternative 2
Error15.6
Cost78659
\[\begin{array}{l} \mathbf{if}\;{\sin kx}^{2} \leq 0:\\ \;\;\;\;\sin th \cdot \frac{\sin ky}{\left|\sin ky\right|}\\ \mathbf{elif}\;{\sin kx}^{2} \leq 3.5298358274788804 \cdot 10^{-05}:\\ \;\;\;\;\sin th \cdot \frac{\sin ky}{\sqrt{{\sin ky}^{2} + kx \cdot kx}}\\ \mathbf{elif}\;{\sin kx}^{2} \leq 0.271995211351034:\\ \;\;\;\;\sqrt{\frac{1}{{\sin kx}^{2} + {\sin ky}^{2}}} \cdot \left(\sin ky \cdot th\right)\\ \mathbf{else}:\\ \;\;\;\;\sin th \cdot \frac{\sin ky}{\left|\sin kx\right|}\\ \end{array}\]
Alternative 3
Error15.0
Cost59524
\[\begin{array}{l} \mathbf{if}\;\sin kx \leq -0.016012091920989117:\\ \;\;\;\;\sin th \cdot \frac{\sin ky}{\left|\sin kx\right|}\\ \mathbf{elif}\;\sin kx \leq -2.9872756228007504 \cdot 10^{-148}:\\ \;\;\;\;\sin th \cdot \frac{\sin ky}{\sqrt{{\sin ky}^{2} + kx \cdot kx}}\\ \mathbf{elif}\;\sin kx \leq 8.607293889124681 \cdot 10^{-169}:\\ \;\;\;\;\sin th \cdot \frac{\sin ky}{\left|\sin ky + 0.5 \cdot \frac{kx \cdot kx}{\sin ky}\right|}\\ \mathbf{elif}\;\sin kx \leq 0.004037326580924849:\\ \;\;\;\;\sin th \cdot \frac{\sin ky}{\sqrt{{\sin ky}^{2} + kx \cdot kx}}\\ \mathbf{else}:\\ \;\;\;\;\sin th \cdot \frac{\sin ky}{\sin kx}\\ \end{array}\]
Alternative 4
Error14.9
Cost59524
\[\begin{array}{l} \mathbf{if}\;\sin kx \leq -0.016012091920989117:\\ \;\;\;\;\sin th \cdot \frac{\sin ky}{\left|\sin kx\right|}\\ \mathbf{elif}\;\sin kx \leq -2.178197643038768 \cdot 10^{-159}:\\ \;\;\;\;\sin th \cdot \frac{\sin ky}{\sqrt{{\sin ky}^{2} + kx \cdot kx}}\\ \mathbf{elif}\;\sin kx \leq 8.607293889124681 \cdot 10^{-169}:\\ \;\;\;\;\sin th \cdot \frac{\sin ky}{\left|\sin ky\right|}\\ \mathbf{elif}\;\sin kx \leq 0.004037326580924849:\\ \;\;\;\;\sin th \cdot \frac{\sin ky}{\sqrt{{\sin ky}^{2} + kx \cdot kx}}\\ \mathbf{else}:\\ \;\;\;\;\sin th \cdot \frac{\sin ky}{\sin kx}\\ \end{array}\]
Alternative 5
Error15.3
Cost59524
\[\begin{array}{l} \mathbf{if}\;\sin ky \leq -0.009216723895250373:\\ \;\;\;\;\sin th \cdot \frac{\sin ky}{\left|\sin ky\right|}\\ \mathbf{elif}\;\sin ky \leq -3.7544741837161333 \cdot 10^{-144}:\\ \;\;\;\;\sin th \cdot \frac{\sin ky}{\sqrt{{\sin kx}^{2} + ky \cdot ky}}\\ \mathbf{elif}\;\sin ky \leq 6.056425773411183 \cdot 10^{-185}:\\ \;\;\;\;\sin th \cdot \frac{\sin ky}{\left|\sin kx\right|}\\ \mathbf{elif}\;\sin ky \leq 0.000834551352577535:\\ \;\;\;\;\sin th \cdot \frac{\sin ky}{\sqrt{{\sin kx}^{2} + ky \cdot ky}}\\ \mathbf{else}:\\ \;\;\;\;\sin th\\ \end{array}\]
Alternative 6
Error20.9
Cost39362
\[\begin{array}{l} \mathbf{if}\;\sin kx \leq -1.6010392203265926 \cdot 10^{-75}:\\ \;\;\;\;\sin th \cdot \frac{\sin ky}{\left|\sin kx\right|}\\ \mathbf{elif}\;\sin kx \leq 8.022534705912205 \cdot 10^{-52}:\\ \;\;\;\;\sin th \cdot \frac{\sin ky}{\left|\sin ky\right|}\\ \mathbf{else}:\\ \;\;\;\;\sin th \cdot \frac{\sin ky}{\sin kx}\\ \end{array}\]
Alternative 7
Error22.1
Cost39362
\[\begin{array}{l} \mathbf{if}\;\sin kx \leq -0.033472435879397945:\\ \;\;\;\;\frac{ky \cdot \sin th}{\left|\sin kx\right|}\\ \mathbf{elif}\;\sin kx \leq 2.5073726237800466 \cdot 10^{-37}:\\ \;\;\;\;\sin th \cdot \frac{\sin ky}{\left|\sin ky\right|}\\ \mathbf{else}:\\ \;\;\;\;\sin th \cdot \frac{\sin ky}{\sin kx}\\ \end{array}\]
Alternative 8
Error33.1
Cost45901
\[\begin{array}{l} \mathbf{if}\;\sin kx \leq -1.3451745365367447 \cdot 10^{-75}:\\ \;\;\;\;\frac{ky \cdot \sin th}{\left|\sin kx\right|}\\ \mathbf{elif}\;\sin kx \leq 1.9132400570361906 \cdot 10^{-202} \lor \neg \left(\sin kx \leq 1.0818695835402839 \cdot 10^{-152}\right) \land \sin kx \leq 5.425391492838313 \cdot 10^{-104}:\\ \;\;\;\;\sin th\\ \mathbf{else}:\\ \;\;\;\;\sin th \cdot \frac{\sin ky}{\sin kx}\\ \end{array}\]
Alternative 9
Error39.6
Cost45901
\[\begin{array}{l} \mathbf{if}\;\sin kx \leq -0.04538032306923744:\\ \;\;\;\;0\\ \mathbf{elif}\;\sin kx \leq 1.6146946195314308 \cdot 10^{-202} \lor \neg \left(\sin kx \leq 1.80769309951527 \cdot 10^{-152}\right) \land \sin kx \leq 2.3151185714216374 \cdot 10^{-106}:\\ \;\;\;\;\sin th\\ \mathbf{else}:\\ \;\;\;\;\sin th \cdot \frac{\sin ky}{\sin kx}\\ \end{array}\]
Alternative 10
Error39.1
Cost13448
\[\begin{array}{l} \mathbf{if}\;ky \leq -9.303156171150226 \lor \neg \left(ky \leq 4.0640731494757617 \cdot 10^{-131}\right):\\ \;\;\;\;\sin th\\ \mathbf{else}:\\ \;\;\;\;\frac{ky \cdot \sin th}{\sin kx}\\ \end{array}\]
Alternative 11
Error45.4
Cost6792
\[\begin{array}{l} \mathbf{if}\;ky \leq -9.303156171150226 \lor \neg \left(ky \leq 2.6130017305138674 \cdot 10^{-134}\right):\\ \;\;\;\;\sin th\\ \mathbf{else}:\\ \;\;\;\;0\\ \end{array}\]
Alternative 12
Error56.3
Cost64
\[0\]
Alternative 13
Error60.2
Cost64
\[1\]

Error

Derivation

  1. Split input into 3 regimes
  2. if (/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) 2) (pow.f64 (sin.f64 ky) 2)))) < -inf.0

    1. Initial program 64.0

      \[\frac{\sin ky}{\sqrt{{\sin kx}^{2} + {\sin ky}^{2}}} \cdot \sin th\]
    2. Taylor expanded around 0 64.0

      \[\leadsto \frac{\sin ky}{\sqrt{\color{blue}{\left(\left(0.044444444444444446 \cdot {kx}^{6} + {kx}^{2}\right) - 0.3333333333333333 \cdot {kx}^{4}\right)} + {\sin ky}^{2}}} \cdot \sin th\]
    3. Simplified64.0

      \[\leadsto \frac{\sin ky}{\sqrt{\color{blue}{\left(\left(kx \cdot kx - {kx}^{4} \cdot 0.3333333333333333\right) + {kx}^{6} \cdot 0.044444444444444446\right)} + {\sin ky}^{2}}} \cdot \sin th\]
    4. Using strategy rm
    5. Applied add-sqr-sqrt_binary64_10064.0

      \[\leadsto \frac{\sin ky}{\sqrt{\color{blue}{\sqrt{\left(\left(kx \cdot kx - {kx}^{4} \cdot 0.3333333333333333\right) + {kx}^{6} \cdot 0.044444444444444446\right) + {\sin ky}^{2}} \cdot \sqrt{\left(\left(kx \cdot kx - {kx}^{4} \cdot 0.3333333333333333\right) + {kx}^{6} \cdot 0.044444444444444446\right) + {\sin ky}^{2}}}}} \cdot \sin th\]
    6. Applied rem-sqrt-square_binary64_9164.0

      \[\leadsto \frac{\sin ky}{\color{blue}{\left|\sqrt{\left(\left(kx \cdot kx - {kx}^{4} \cdot 0.3333333333333333\right) + {kx}^{6} \cdot 0.044444444444444446\right) + {\sin ky}^{2}}\right|}} \cdot \sin th\]
    7. Taylor expanded around 0 29.8

      \[\leadsto \frac{\sin ky}{\left|\color{blue}{\sin ky}\right|} \cdot \sin th\]
    8. Simplified29.8

      \[\leadsto \color{blue}{\sin th \cdot \frac{\sin ky}{\left|\sin ky\right|}}\]

    if -inf.0 < (/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) 2) (pow.f64 (sin.f64 ky) 2)))) < 1.0087051728431693

    1. Initial program 0.4

      \[\frac{\sin ky}{\sqrt{{\sin kx}^{2} + {\sin ky}^{2}}} \cdot \sin th\]
    2. Using strategy rm
    3. Applied pow1_binary64_1390.4

      \[\leadsto \frac{\sin ky}{\color{blue}{{\left(\sqrt{{\sin kx}^{2} + {\sin ky}^{2}}\right)}^{1}}} \cdot \sin th\]
    4. Simplified0.4

      \[\leadsto \color{blue}{\sin th \cdot \frac{\sin ky}{\sqrt{{\sin kx}^{2} + {\sin ky}^{2}}}}\]

    if 1.0087051728431693 < (/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) 2) (pow.f64 (sin.f64 ky) 2))))

    1. Initial program 64.0

      \[\frac{\sin ky}{\sqrt{{\sin kx}^{2} + {\sin ky}^{2}}} \cdot \sin th\]
    2. Using strategy rm
    3. Applied add-sqr-sqrt_binary64_10064.0

      \[\leadsto \frac{\sin ky}{\sqrt{\color{blue}{\sqrt{{\sin kx}^{2}} \cdot \sqrt{{\sin kx}^{2}}} + {\sin ky}^{2}}} \cdot \sin th\]
    4. Simplified64.0

      \[\leadsto \frac{\sin ky}{\sqrt{\color{blue}{\left|\sin kx\right|} \cdot \sqrt{{\sin kx}^{2}} + {\sin ky}^{2}}} \cdot \sin th\]
    5. Simplified64.0

      \[\leadsto \frac{\sin ky}{\sqrt{\left|\sin kx\right| \cdot \color{blue}{\left|\sin kx\right|} + {\sin ky}^{2}}} \cdot \sin th\]
    6. Taylor expanded around 0 41.8

      \[\leadsto \color{blue}{\frac{\sin th \cdot ky}{\left|\sin kx\right|}}\]
    7. Simplified41.8

      \[\leadsto \color{blue}{\frac{ky \cdot \sin th}{\left|\sin kx\right|}}\]
    8. Simplified41.8

      \[\leadsto \color{blue}{\frac{ky \cdot \sin th}{\left|\sin kx\right|}}\]
  3. Recombined 3 regimes into one program.
  4. Final simplification2.3

    \[\leadsto \begin{array}{l} \mathbf{if}\;\frac{\sin ky}{\sqrt{{\sin kx}^{2} + {\sin ky}^{2}}} \leq -\infty:\\ \;\;\;\;\sin th \cdot \frac{\sin ky}{\left|\sin ky\right|}\\ \mathbf{elif}\;\frac{\sin ky}{\sqrt{{\sin kx}^{2} + {\sin ky}^{2}}} \leq 1.0087051728431693:\\ \;\;\;\;\frac{\sin ky}{\sqrt{{\sin kx}^{2} + {\sin ky}^{2}}} \cdot \sin th\\ \mathbf{else}:\\ \;\;\;\;\frac{ky \cdot \sin th}{\left|\sin kx\right|}\\ \end{array}\]

Reproduce

herbie shell --seed 2021014 
(FPCore (kx ky th)
  :name "Toniolo and Linder, Equation (3b), real"
  :precision binary64
  (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2.0) (pow (sin ky) 2.0)))) (sin th)))