Average Error: 7.5 → 0.4
Time: 2.1s
Precision: binary64
\[\frac{\left(\left(\frac{myTopRad + myBotRad}{2} \cdot 2\right) \cdot \pi\right) \cdot myTurns}{numPts}\]
\[\begin{array}{l} \mathbf{if}\;\left(\left(\frac{myTopRad + myBotRad}{2} \cdot 2\right) \cdot \pi\right) \cdot myTurns \le -1.32164110925618873 \cdot 10^{282} \lor \neg \left(\left(\left(\frac{myTopRad + myBotRad}{2} \cdot 2\right) \cdot \pi\right) \cdot myTurns \le -8.985908165073238 \cdot 10^{-279} \lor \neg \left(\left(\left(\frac{myTopRad + myBotRad}{2} \cdot 2\right) \cdot \pi\right) \cdot myTurns \le 1.61773499624090984 \cdot 10^{-295} \lor \neg \left(\left(\left(\frac{myTopRad + myBotRad}{2} \cdot 2\right) \cdot \pi\right) \cdot myTurns \le 7.8864022608982927 \cdot 10^{274}\right)\right)\right):\\ \;\;\;\;\left(\frac{myTurns}{numPts} \cdot \left(myTopRad + myBotRad\right)\right) \cdot \pi\\ \mathbf{else}:\\ \;\;\;\;\frac{\left(\left(\frac{myTopRad + myBotRad}{2} \cdot 2\right) \cdot \pi\right) \cdot myTurns}{numPts}\\ \end{array}\]
\frac{\left(\left(\frac{myTopRad + myBotRad}{2} \cdot 2\right) \cdot \pi\right) \cdot myTurns}{numPts}
\begin{array}{l}
\mathbf{if}\;\left(\left(\frac{myTopRad + myBotRad}{2} \cdot 2\right) \cdot \pi\right) \cdot myTurns \le -1.32164110925618873 \cdot 10^{282} \lor \neg \left(\left(\left(\frac{myTopRad + myBotRad}{2} \cdot 2\right) \cdot \pi\right) \cdot myTurns \le -8.985908165073238 \cdot 10^{-279} \lor \neg \left(\left(\left(\frac{myTopRad + myBotRad}{2} \cdot 2\right) \cdot \pi\right) \cdot myTurns \le 1.61773499624090984 \cdot 10^{-295} \lor \neg \left(\left(\left(\frac{myTopRad + myBotRad}{2} \cdot 2\right) \cdot \pi\right) \cdot myTurns \le 7.8864022608982927 \cdot 10^{274}\right)\right)\right):\\
\;\;\;\;\left(\frac{myTurns}{numPts} \cdot \left(myTopRad + myBotRad\right)\right) \cdot \pi\\

\mathbf{else}:\\
\;\;\;\;\frac{\left(\left(\frac{myTopRad + myBotRad}{2} \cdot 2\right) \cdot \pi\right) \cdot myTurns}{numPts}\\

\end{array}
double code(double myTopRad, double myBotRad, double myTurns, double numPts) {
	return ((double) (((double) (((double) (((double) (((double) (((double) (myTopRad + myBotRad)) / 2.0)) * 2.0)) * ((double) M_PI))) * myTurns)) / numPts));
}
double code(double myTopRad, double myBotRad, double myTurns, double numPts) {
	double VAR;
	if (((((double) (((double) (((double) (((double) (((double) (myTopRad + myBotRad)) / 2.0)) * 2.0)) * ((double) M_PI))) * myTurns)) <= -1.3216411092561887e+282) || !((((double) (((double) (((double) (((double) (((double) (myTopRad + myBotRad)) / 2.0)) * 2.0)) * ((double) M_PI))) * myTurns)) <= -8.985908165073238e-279) || !((((double) (((double) (((double) (((double) (((double) (myTopRad + myBotRad)) / 2.0)) * 2.0)) * ((double) M_PI))) * myTurns)) <= 1.6177349962409098e-295) || !(((double) (((double) (((double) (((double) (((double) (myTopRad + myBotRad)) / 2.0)) * 2.0)) * ((double) M_PI))) * myTurns)) <= 7.886402260898293e+274))))) {
		VAR = ((double) (((double) (((double) (myTurns / numPts)) * ((double) (myTopRad + myBotRad)))) * ((double) M_PI)));
	} else {
		VAR = ((double) (((double) (((double) (((double) (((double) (((double) (myTopRad + myBotRad)) / 2.0)) * 2.0)) * ((double) M_PI))) * myTurns)) / numPts));
	}
	return VAR;
}

Error

Bits error versus myTopRad

Bits error versus myBotRad

Bits error versus myTurns

Bits error versus numPts

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Split input into 2 regimes
  2. if (* (* (* (/ (+ myTopRad myBotRad) 2.0) 2.0) PI) myTurns) < -1.32164110925618873e282 or -8.985908165073238e-279 < (* (* (* (/ (+ myTopRad myBotRad) 2.0) 2.0) PI) myTurns) < 1.61773499624090984e-295 or 7.8864022608982927e274 < (* (* (* (/ (+ myTopRad myBotRad) 2.0) 2.0) PI) myTurns)

    1. Initial program 38.8

      \[\frac{\left(\left(\frac{myTopRad + myBotRad}{2} \cdot 2\right) \cdot \pi\right) \cdot myTurns}{numPts}\]
    2. Simplified0.4

      \[\leadsto \color{blue}{\left(\frac{myTurns}{numPts} \cdot \left(myTopRad + myBotRad\right)\right) \cdot \pi}\]

    if -1.32164110925618873e282 < (* (* (* (/ (+ myTopRad myBotRad) 2.0) 2.0) PI) myTurns) < -8.985908165073238e-279 or 1.61773499624090984e-295 < (* (* (* (/ (+ myTopRad myBotRad) 2.0) 2.0) PI) myTurns) < 7.8864022608982927e274

    1. Initial program 0.4

      \[\frac{\left(\left(\frac{myTopRad + myBotRad}{2} \cdot 2\right) \cdot \pi\right) \cdot myTurns}{numPts}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification0.4

    \[\leadsto \begin{array}{l} \mathbf{if}\;\left(\left(\frac{myTopRad + myBotRad}{2} \cdot 2\right) \cdot \pi\right) \cdot myTurns \le -1.32164110925618873 \cdot 10^{282} \lor \neg \left(\left(\left(\frac{myTopRad + myBotRad}{2} \cdot 2\right) \cdot \pi\right) \cdot myTurns \le -8.985908165073238 \cdot 10^{-279} \lor \neg \left(\left(\left(\frac{myTopRad + myBotRad}{2} \cdot 2\right) \cdot \pi\right) \cdot myTurns \le 1.61773499624090984 \cdot 10^{-295} \lor \neg \left(\left(\left(\frac{myTopRad + myBotRad}{2} \cdot 2\right) \cdot \pi\right) \cdot myTurns \le 7.8864022608982927 \cdot 10^{274}\right)\right)\right):\\ \;\;\;\;\left(\frac{myTurns}{numPts} \cdot \left(myTopRad + myBotRad\right)\right) \cdot \pi\\ \mathbf{else}:\\ \;\;\;\;\frac{\left(\left(\frac{myTopRad + myBotRad}{2} \cdot 2\right) \cdot \pi\right) \cdot myTurns}{numPts}\\ \end{array}\]

Reproduce

herbie shell --seed 2020152 
(FPCore (myTopRad myBotRad myTurns numPts)
  :name "(/ (* (* (* (/ (+ myTopRad myBotRad) 2.0) 2.0) PI) myTurns) numPts)"
  :precision binary64
  (/ (* (* (* (/ (+ myTopRad myBotRad) 2.0) 2.0) PI) myTurns) numPts))