Average Error: 7.0 → 1.7
Time: 2.0s
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 -2.6799121723130699 \cdot 10^{151} \lor \neg \left(\left(\left(\frac{myTopRad + myBotRad}{2} \cdot 2\right) \cdot \pi\right) \cdot myTurns \le 2.811051946843951 \cdot 10^{221}\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 -2.6799121723130699 \cdot 10^{151} \lor \neg \left(\left(\left(\frac{myTopRad + myBotRad}{2} \cdot 2\right) \cdot \pi\right) \cdot myTurns \le 2.811051946843951 \cdot 10^{221}\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)) <= -2.67991217231307e+151) || !(((double) (((double) (((double) (((double) (((double) (myTopRad + myBotRad)) / 2.0)) * 2.0)) * ((double) M_PI))) * myTurns)) <= 2.811051946843951e+221))) {
		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) < -2.6799121723130699e151 or 2.811051946843951e221 < (* (* (* (/ (+ myTopRad myBotRad) 2.0) 2.0) PI) myTurns)

    1. Initial program 25.5

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

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

    if -2.6799121723130699e151 < (* (* (* (/ (+ myTopRad myBotRad) 2.0) 2.0) PI) myTurns) < 2.811051946843951e221

    1. Initial program 1.7

      \[\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 simplification1.7

    \[\leadsto \begin{array}{l} \mathbf{if}\;\left(\left(\frac{myTopRad + myBotRad}{2} \cdot 2\right) \cdot \pi\right) \cdot myTurns \le -2.6799121723130699 \cdot 10^{151} \lor \neg \left(\left(\left(\frac{myTopRad + myBotRad}{2} \cdot 2\right) \cdot \pi\right) \cdot myTurns \le 2.811051946843951 \cdot 10^{221}\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 2020153 
(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))