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;
}
Try it out
Enter valid numbers for all inputs
Alternatives
| Alternative 1 |
|---|
| Error | 15.5 |
|---|
| Cost | 78659 |
|---|
\[\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 |
|---|
| Error | 15.6 |
|---|
| Cost | 78659 |
|---|
\[\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 |
|---|
| Error | 15.0 |
|---|
| Cost | 59524 |
|---|
\[\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 |
|---|
| Error | 14.9 |
|---|
| Cost | 59524 |
|---|
\[\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 |
|---|
| Error | 15.3 |
|---|
| Cost | 59524 |
|---|
\[\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 |
|---|
| Error | 20.9 |
|---|
| Cost | 39362 |
|---|
\[\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 |
|---|
| Error | 22.1 |
|---|
| Cost | 39362 |
|---|
\[\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 |
|---|
| Error | 33.1 |
|---|
| Cost | 45901 |
|---|
\[\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 |
|---|
| Error | 39.6 |
|---|
| Cost | 45901 |
|---|
\[\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 |
|---|
| Error | 39.1 |
|---|
| Cost | 13448 |
|---|
\[\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 |
|---|
| Error | 45.4 |
|---|
| Cost | 6792 |
|---|
\[\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 |
|---|
| Error | 56.3 |
|---|
| Cost | 64 |
|---|
\[0\]
| Alternative 13 |
|---|
| Error | 60.2 |
|---|
| Cost | 64 |
|---|
\[1\]
Error

Derivation
- Split input into 3 regimes
if (/.f64 (sin.f64 ky) (sqrt.f64 (+.f64 (pow.f64 (sin.f64 kx) 2) (pow.f64 (sin.f64 ky) 2)))) < -inf.0
Initial program 64.0
\[\frac{\sin ky}{\sqrt{{\sin kx}^{2} + {\sin ky}^{2}}} \cdot \sin th\]
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\]
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\]
- Using strategy
rm 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\]
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\]
Taylor expanded around 0 29.8
\[\leadsto \frac{\sin ky}{\left|\color{blue}{\sin ky}\right|} \cdot \sin th\]
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
Initial program 0.4
\[\frac{\sin ky}{\sqrt{{\sin kx}^{2} + {\sin ky}^{2}}} \cdot \sin th\]
- Using strategy
rm Applied pow1_binary64_1390.4
\[\leadsto \frac{\sin ky}{\color{blue}{{\left(\sqrt{{\sin kx}^{2} + {\sin ky}^{2}}\right)}^{1}}} \cdot \sin th\]
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))))
Initial program 64.0
\[\frac{\sin ky}{\sqrt{{\sin kx}^{2} + {\sin ky}^{2}}} \cdot \sin th\]
- Using strategy
rm 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\]
Simplified64.0
\[\leadsto \frac{\sin ky}{\sqrt{\color{blue}{\left|\sin kx\right|} \cdot \sqrt{{\sin kx}^{2}} + {\sin ky}^{2}}} \cdot \sin th\]
Simplified64.0
\[\leadsto \frac{\sin ky}{\sqrt{\left|\sin kx\right| \cdot \color{blue}{\left|\sin kx\right|} + {\sin ky}^{2}}} \cdot \sin th\]
Taylor expanded around 0 41.8
\[\leadsto \color{blue}{\frac{\sin th \cdot ky}{\left|\sin kx\right|}}\]
Simplified41.8
\[\leadsto \color{blue}{\frac{ky \cdot \sin th}{\left|\sin kx\right|}}\]
Simplified41.8
\[\leadsto \color{blue}{\frac{ky \cdot \sin th}{\left|\sin kx\right|}}\]
- Recombined 3 regimes into one program.
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)))