
(FPCore (v H) :precision binary64 (atan (/ v (sqrt (- (* v v) (* (* 2.0 9.8) H))))))
double code(double v, double H) {
return atan((v / sqrt(((v * v) - ((2.0 * 9.8) * H)))));
}
real(8) function code(v, h)
real(8), intent (in) :: v
real(8), intent (in) :: h
code = atan((v / sqrt(((v * v) - ((2.0d0 * 9.8d0) * h)))))
end function
public static double code(double v, double H) {
return Math.atan((v / Math.sqrt(((v * v) - ((2.0 * 9.8) * H)))));
}
def code(v, H): return math.atan((v / math.sqrt(((v * v) - ((2.0 * 9.8) * H)))))
function code(v, H) return atan(Float64(v / sqrt(Float64(Float64(v * v) - Float64(Float64(2.0 * 9.8) * H))))) end
function tmp = code(v, H) tmp = atan((v / sqrt(((v * v) - ((2.0 * 9.8) * H))))); end
code[v_, H_] := N[ArcTan[N[(v / N[Sqrt[N[(N[(v * v), $MachinePrecision] - N[(N[(2.0 * 9.8), $MachinePrecision] * H), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]
\begin{array}{l}
\\
\tan^{-1} \left(\frac{v}{\sqrt{v \cdot v - \left(2 \cdot 9.8\right) \cdot H}}\right)
\end{array}
Sampling outcomes in binary64 precision:
Herbie found 12 alternatives:
| Alternative | Accuracy | Speedup |
|---|
(FPCore (v H) :precision binary64 (atan (/ v (sqrt (- (* v v) (* (* 2.0 9.8) H))))))
double code(double v, double H) {
return atan((v / sqrt(((v * v) - ((2.0 * 9.8) * H)))));
}
real(8) function code(v, h)
real(8), intent (in) :: v
real(8), intent (in) :: h
code = atan((v / sqrt(((v * v) - ((2.0d0 * 9.8d0) * h)))))
end function
public static double code(double v, double H) {
return Math.atan((v / Math.sqrt(((v * v) - ((2.0 * 9.8) * H)))));
}
def code(v, H): return math.atan((v / math.sqrt(((v * v) - ((2.0 * 9.8) * H)))))
function code(v, H) return atan(Float64(v / sqrt(Float64(Float64(v * v) - Float64(Float64(2.0 * 9.8) * H))))) end
function tmp = code(v, H) tmp = atan((v / sqrt(((v * v) - ((2.0 * 9.8) * H))))); end
code[v_, H_] := N[ArcTan[N[(v / N[Sqrt[N[(N[(v * v), $MachinePrecision] - N[(N[(2.0 * 9.8), $MachinePrecision] * H), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]
\begin{array}{l}
\\
\tan^{-1} \left(\frac{v}{\sqrt{v \cdot v - \left(2 \cdot 9.8\right) \cdot H}}\right)
\end{array}
(FPCore (v H)
:precision binary64
(if (<= v -1e+154)
(atan -1.0)
(if (<= v 1.66e+46)
(atan (/ v (sqrt (+ (* v v) (* H -19.6)))))
(atan 1.0))))
double code(double v, double H) {
double tmp;
if (v <= -1e+154) {
tmp = atan(-1.0);
} else if (v <= 1.66e+46) {
tmp = atan((v / sqrt(((v * v) + (H * -19.6)))));
} else {
tmp = atan(1.0);
}
return tmp;
}
real(8) function code(v, h)
real(8), intent (in) :: v
real(8), intent (in) :: h
real(8) :: tmp
if (v <= (-1d+154)) then
tmp = atan((-1.0d0))
else if (v <= 1.66d+46) then
tmp = atan((v / sqrt(((v * v) + (h * (-19.6d0))))))
else
tmp = atan(1.0d0)
end if
code = tmp
end function
public static double code(double v, double H) {
double tmp;
if (v <= -1e+154) {
tmp = Math.atan(-1.0);
} else if (v <= 1.66e+46) {
tmp = Math.atan((v / Math.sqrt(((v * v) + (H * -19.6)))));
} else {
tmp = Math.atan(1.0);
}
return tmp;
}
def code(v, H): tmp = 0 if v <= -1e+154: tmp = math.atan(-1.0) elif v <= 1.66e+46: tmp = math.atan((v / math.sqrt(((v * v) + (H * -19.6))))) else: tmp = math.atan(1.0) return tmp
function code(v, H) tmp = 0.0 if (v <= -1e+154) tmp = atan(-1.0); elseif (v <= 1.66e+46) tmp = atan(Float64(v / sqrt(Float64(Float64(v * v) + Float64(H * -19.6))))); else tmp = atan(1.0); end return tmp end
function tmp_2 = code(v, H) tmp = 0.0; if (v <= -1e+154) tmp = atan(-1.0); elseif (v <= 1.66e+46) tmp = atan((v / sqrt(((v * v) + (H * -19.6))))); else tmp = atan(1.0); end tmp_2 = tmp; end
code[v_, H_] := If[LessEqual[v, -1e+154], N[ArcTan[-1.0], $MachinePrecision], If[LessEqual[v, 1.66e+46], N[ArcTan[N[(v / N[Sqrt[N[(N[(v * v), $MachinePrecision] + N[(H * -19.6), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]], $MachinePrecision], N[ArcTan[1.0], $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;v \leq -1 \cdot 10^{+154}:\\
\;\;\;\;\tan^{-1} -1\\
\mathbf{elif}\;v \leq 1.66 \cdot 10^{+46}:\\
\;\;\;\;\tan^{-1} \left(\frac{v}{\sqrt{v \cdot v + H \cdot -19.6}}\right)\\
\mathbf{else}:\\
\;\;\;\;\tan^{-1} 1\\
\end{array}
\end{array}
if v < -1.00000000000000004e154Initial program 3.1%
atan-lowering-atan.f64N/A
/-lowering-/.f64N/A
sqrt-lowering-sqrt.f64N/A
sub-negN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
distribute-rgt-neg-inN/A
*-lowering-*.f64N/A
metadata-evalN/A
metadata-eval3.1%
Simplified3.1%
Taylor expanded in v around -inf
Simplified100.0%
if -1.00000000000000004e154 < v < 1.66e46Initial program 99.7%
atan-lowering-atan.f64N/A
/-lowering-/.f64N/A
sqrt-lowering-sqrt.f64N/A
sub-negN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
distribute-rgt-neg-inN/A
*-lowering-*.f64N/A
metadata-evalN/A
metadata-eval99.7%
Simplified99.7%
if 1.66e46 < v Initial program 39.3%
atan-lowering-atan.f64N/A
/-lowering-/.f64N/A
sqrt-lowering-sqrt.f64N/A
sub-negN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
distribute-rgt-neg-inN/A
*-lowering-*.f64N/A
metadata-evalN/A
metadata-eval39.3%
Simplified39.3%
Taylor expanded in v around inf
Simplified100.0%
(FPCore (v H)
:precision binary64
(if (<= v -2.4e-92)
(atan
(/
v
(- (/ (* H (/ 96.04 (* v v))) (/ (- 9.8 (* H (/ 48.02 (* v v)))) v)) v)))
(if (<= v 2.35e-30)
(atan (/ v (sqrt (* H -19.6))))
(atan (/ v (+ v (* -9.8 (/ H v))))))))
double code(double v, double H) {
double tmp;
if (v <= -2.4e-92) {
tmp = atan((v / (((H * (96.04 / (v * v))) / ((9.8 - (H * (48.02 / (v * v)))) / v)) - v)));
} else if (v <= 2.35e-30) {
tmp = atan((v / sqrt((H * -19.6))));
} else {
tmp = atan((v / (v + (-9.8 * (H / v)))));
}
return tmp;
}
real(8) function code(v, h)
real(8), intent (in) :: v
real(8), intent (in) :: h
real(8) :: tmp
if (v <= (-2.4d-92)) then
tmp = atan((v / (((h * (96.04d0 / (v * v))) / ((9.8d0 - (h * (48.02d0 / (v * v)))) / v)) - v)))
else if (v <= 2.35d-30) then
tmp = atan((v / sqrt((h * (-19.6d0)))))
else
tmp = atan((v / (v + ((-9.8d0) * (h / v)))))
end if
code = tmp
end function
public static double code(double v, double H) {
double tmp;
if (v <= -2.4e-92) {
tmp = Math.atan((v / (((H * (96.04 / (v * v))) / ((9.8 - (H * (48.02 / (v * v)))) / v)) - v)));
} else if (v <= 2.35e-30) {
tmp = Math.atan((v / Math.sqrt((H * -19.6))));
} else {
tmp = Math.atan((v / (v + (-9.8 * (H / v)))));
}
return tmp;
}
def code(v, H): tmp = 0 if v <= -2.4e-92: tmp = math.atan((v / (((H * (96.04 / (v * v))) / ((9.8 - (H * (48.02 / (v * v)))) / v)) - v))) elif v <= 2.35e-30: tmp = math.atan((v / math.sqrt((H * -19.6)))) else: tmp = math.atan((v / (v + (-9.8 * (H / v))))) return tmp
function code(v, H) tmp = 0.0 if (v <= -2.4e-92) tmp = atan(Float64(v / Float64(Float64(Float64(H * Float64(96.04 / Float64(v * v))) / Float64(Float64(9.8 - Float64(H * Float64(48.02 / Float64(v * v)))) / v)) - v))); elseif (v <= 2.35e-30) tmp = atan(Float64(v / sqrt(Float64(H * -19.6)))); else tmp = atan(Float64(v / Float64(v + Float64(-9.8 * Float64(H / v))))); end return tmp end
function tmp_2 = code(v, H) tmp = 0.0; if (v <= -2.4e-92) tmp = atan((v / (((H * (96.04 / (v * v))) / ((9.8 - (H * (48.02 / (v * v)))) / v)) - v))); elseif (v <= 2.35e-30) tmp = atan((v / sqrt((H * -19.6)))); else tmp = atan((v / (v + (-9.8 * (H / v))))); end tmp_2 = tmp; end
code[v_, H_] := If[LessEqual[v, -2.4e-92], N[ArcTan[N[(v / N[(N[(N[(H * N[(96.04 / N[(v * v), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(N[(9.8 - N[(H * N[(48.02 / N[(v * v), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / v), $MachinePrecision]), $MachinePrecision] - v), $MachinePrecision]), $MachinePrecision]], $MachinePrecision], If[LessEqual[v, 2.35e-30], N[ArcTan[N[(v / N[Sqrt[N[(H * -19.6), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]], $MachinePrecision], N[ArcTan[N[(v / N[(v + N[(-9.8 * N[(H / v), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;v \leq -2.4 \cdot 10^{-92}:\\
\;\;\;\;\tan^{-1} \left(\frac{v}{\frac{H \cdot \frac{96.04}{v \cdot v}}{\frac{9.8 - H \cdot \frac{48.02}{v \cdot v}}{v}} - v}\right)\\
\mathbf{elif}\;v \leq 2.35 \cdot 10^{-30}:\\
\;\;\;\;\tan^{-1} \left(\frac{v}{\sqrt{H \cdot -19.6}}\right)\\
\mathbf{else}:\\
\;\;\;\;\tan^{-1} \left(\frac{v}{v + -9.8 \cdot \frac{H}{v}}\right)\\
\end{array}
\end{array}
if v < -2.4000000000000001e-92Initial program 52.9%
atan-lowering-atan.f64N/A
/-lowering-/.f64N/A
sqrt-lowering-sqrt.f64N/A
sub-negN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
distribute-rgt-neg-inN/A
*-lowering-*.f64N/A
metadata-evalN/A
metadata-eval52.9%
Simplified52.9%
Taylor expanded in v around -inf
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
Simplified74.5%
Taylor expanded in H around 0
+-commutativeN/A
mul-1-negN/A
unsub-negN/A
--lowering--.f64N/A
*-lowering-*.f64N/A
+-commutativeN/A
+-lowering-+.f64N/A
associate-*r/N/A
metadata-evalN/A
/-lowering-/.f64N/A
associate-*r/N/A
/-lowering-/.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
cube-multN/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6493.8%
Simplified93.8%
*-commutativeN/A
flip-+N/A
associate-*l/N/A
/-lowering-/.f64N/A
Applied egg-rr93.7%
Taylor expanded in H around 0
associate-*r/N/A
*-commutativeN/A
associate-*r/N/A
metadata-evalN/A
associate-*r/N/A
*-lowering-*.f64N/A
associate-*r/N/A
metadata-evalN/A
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f6493.8%
Simplified93.8%
if -2.4000000000000001e-92 < v < 2.34999999999999985e-30Initial program 99.6%
atan-lowering-atan.f64N/A
/-lowering-/.f64N/A
sqrt-lowering-sqrt.f64N/A
sub-negN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
distribute-rgt-neg-inN/A
*-lowering-*.f64N/A
metadata-evalN/A
metadata-eval99.6%
Simplified99.6%
Taylor expanded in v around 0
*-lowering-*.f6495.4%
Simplified95.4%
if 2.34999999999999985e-30 < v Initial program 45.7%
atan-lowering-atan.f64N/A
/-lowering-/.f64N/A
sqrt-lowering-sqrt.f64N/A
sub-negN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
distribute-rgt-neg-inN/A
*-lowering-*.f64N/A
metadata-evalN/A
metadata-eval45.7%
Simplified45.7%
Taylor expanded in H around 0
*-commutativeN/A
associate-*l/N/A
associate-*r/N/A
metadata-evalN/A
distribute-neg-fracN/A
metadata-evalN/A
associate-*r/N/A
+-lowering-+.f64N/A
associate-*r/N/A
metadata-evalN/A
distribute-neg-fracN/A
metadata-evalN/A
associate-*r/N/A
*-commutativeN/A
/-lowering-/.f64N/A
*-commutativeN/A
*-lowering-*.f6496.7%
Simplified96.7%
+-commutativeN/A
+-lowering-+.f64N/A
*-commutativeN/A
associate-/l*N/A
*-lowering-*.f64N/A
/-lowering-/.f6497.9%
Applied egg-rr97.9%
Final simplification95.6%
(FPCore (v H)
:precision binary64
(if (<= v -2.5e-129)
(atan
(/
v
(- (/ (* H (/ 96.04 (* v v))) (/ (- 9.8 (* H (/ 48.02 (* v v)))) v)) v)))
(atan (/ v (* v (+ 1.0 (* -9.8 (/ H (* v v)))))))))
double code(double v, double H) {
double tmp;
if (v <= -2.5e-129) {
tmp = atan((v / (((H * (96.04 / (v * v))) / ((9.8 - (H * (48.02 / (v * v)))) / v)) - v)));
} else {
tmp = atan((v / (v * (1.0 + (-9.8 * (H / (v * v)))))));
}
return tmp;
}
real(8) function code(v, h)
real(8), intent (in) :: v
real(8), intent (in) :: h
real(8) :: tmp
if (v <= (-2.5d-129)) then
tmp = atan((v / (((h * (96.04d0 / (v * v))) / ((9.8d0 - (h * (48.02d0 / (v * v)))) / v)) - v)))
else
tmp = atan((v / (v * (1.0d0 + ((-9.8d0) * (h / (v * v)))))))
end if
code = tmp
end function
public static double code(double v, double H) {
double tmp;
if (v <= -2.5e-129) {
tmp = Math.atan((v / (((H * (96.04 / (v * v))) / ((9.8 - (H * (48.02 / (v * v)))) / v)) - v)));
} else {
tmp = Math.atan((v / (v * (1.0 + (-9.8 * (H / (v * v)))))));
}
return tmp;
}
def code(v, H): tmp = 0 if v <= -2.5e-129: tmp = math.atan((v / (((H * (96.04 / (v * v))) / ((9.8 - (H * (48.02 / (v * v)))) / v)) - v))) else: tmp = math.atan((v / (v * (1.0 + (-9.8 * (H / (v * v))))))) return tmp
function code(v, H) tmp = 0.0 if (v <= -2.5e-129) tmp = atan(Float64(v / Float64(Float64(Float64(H * Float64(96.04 / Float64(v * v))) / Float64(Float64(9.8 - Float64(H * Float64(48.02 / Float64(v * v)))) / v)) - v))); else tmp = atan(Float64(v / Float64(v * Float64(1.0 + Float64(-9.8 * Float64(H / Float64(v * v))))))); end return tmp end
function tmp_2 = code(v, H) tmp = 0.0; if (v <= -2.5e-129) tmp = atan((v / (((H * (96.04 / (v * v))) / ((9.8 - (H * (48.02 / (v * v)))) / v)) - v))); else tmp = atan((v / (v * (1.0 + (-9.8 * (H / (v * v))))))); end tmp_2 = tmp; end
code[v_, H_] := If[LessEqual[v, -2.5e-129], N[ArcTan[N[(v / N[(N[(N[(H * N[(96.04 / N[(v * v), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(N[(9.8 - N[(H * N[(48.02 / N[(v * v), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / v), $MachinePrecision]), $MachinePrecision] - v), $MachinePrecision]), $MachinePrecision]], $MachinePrecision], N[ArcTan[N[(v / N[(v * N[(1.0 + N[(-9.8 * N[(H / N[(v * v), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;v \leq -2.5 \cdot 10^{-129}:\\
\;\;\;\;\tan^{-1} \left(\frac{v}{\frac{H \cdot \frac{96.04}{v \cdot v}}{\frac{9.8 - H \cdot \frac{48.02}{v \cdot v}}{v}} - v}\right)\\
\mathbf{else}:\\
\;\;\;\;\tan^{-1} \left(\frac{v}{v \cdot \left(1 + -9.8 \cdot \frac{H}{v \cdot v}\right)}\right)\\
\end{array}
\end{array}
if v < -2.50000000000000014e-129Initial program 55.4%
atan-lowering-atan.f64N/A
/-lowering-/.f64N/A
sqrt-lowering-sqrt.f64N/A
sub-negN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
distribute-rgt-neg-inN/A
*-lowering-*.f64N/A
metadata-evalN/A
metadata-eval55.4%
Simplified55.4%
Taylor expanded in v around -inf
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
Simplified70.6%
Taylor expanded in H around 0
+-commutativeN/A
mul-1-negN/A
unsub-negN/A
--lowering--.f64N/A
*-lowering-*.f64N/A
+-commutativeN/A
+-lowering-+.f64N/A
associate-*r/N/A
metadata-evalN/A
/-lowering-/.f64N/A
associate-*r/N/A
/-lowering-/.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
cube-multN/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6488.9%
Simplified88.9%
*-commutativeN/A
flip-+N/A
associate-*l/N/A
/-lowering-/.f64N/A
Applied egg-rr88.7%
Taylor expanded in H around 0
associate-*r/N/A
*-commutativeN/A
associate-*r/N/A
metadata-evalN/A
associate-*r/N/A
*-lowering-*.f64N/A
associate-*r/N/A
metadata-evalN/A
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f6489.1%
Simplified89.1%
if -2.50000000000000014e-129 < v Initial program 68.4%
atan-lowering-atan.f64N/A
/-lowering-/.f64N/A
sqrt-lowering-sqrt.f64N/A
sub-negN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
distribute-rgt-neg-inN/A
*-lowering-*.f64N/A
metadata-evalN/A
metadata-eval68.4%
Simplified68.4%
Taylor expanded in v around inf
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f6470.5%
Simplified70.5%
Final simplification78.6%
(FPCore (v H) :precision binary64 (if (<= v -3.5e-101) (atan (+ -1.0 (* -9.8 (/ H (* v v))))) (if (<= v 5e-149) (atan (/ v (/ (* H 9.8) v))) (atan 1.0))))
double code(double v, double H) {
double tmp;
if (v <= -3.5e-101) {
tmp = atan((-1.0 + (-9.8 * (H / (v * v)))));
} else if (v <= 5e-149) {
tmp = atan((v / ((H * 9.8) / v)));
} else {
tmp = atan(1.0);
}
return tmp;
}
real(8) function code(v, h)
real(8), intent (in) :: v
real(8), intent (in) :: h
real(8) :: tmp
if (v <= (-3.5d-101)) then
tmp = atan(((-1.0d0) + ((-9.8d0) * (h / (v * v)))))
else if (v <= 5d-149) then
tmp = atan((v / ((h * 9.8d0) / v)))
else
tmp = atan(1.0d0)
end if
code = tmp
end function
public static double code(double v, double H) {
double tmp;
if (v <= -3.5e-101) {
tmp = Math.atan((-1.0 + (-9.8 * (H / (v * v)))));
} else if (v <= 5e-149) {
tmp = Math.atan((v / ((H * 9.8) / v)));
} else {
tmp = Math.atan(1.0);
}
return tmp;
}
def code(v, H): tmp = 0 if v <= -3.5e-101: tmp = math.atan((-1.0 + (-9.8 * (H / (v * v))))) elif v <= 5e-149: tmp = math.atan((v / ((H * 9.8) / v))) else: tmp = math.atan(1.0) return tmp
function code(v, H) tmp = 0.0 if (v <= -3.5e-101) tmp = atan(Float64(-1.0 + Float64(-9.8 * Float64(H / Float64(v * v))))); elseif (v <= 5e-149) tmp = atan(Float64(v / Float64(Float64(H * 9.8) / v))); else tmp = atan(1.0); end return tmp end
function tmp_2 = code(v, H) tmp = 0.0; if (v <= -3.5e-101) tmp = atan((-1.0 + (-9.8 * (H / (v * v))))); elseif (v <= 5e-149) tmp = atan((v / ((H * 9.8) / v))); else tmp = atan(1.0); end tmp_2 = tmp; end
code[v_, H_] := If[LessEqual[v, -3.5e-101], N[ArcTan[N[(-1.0 + N[(-9.8 * N[(H / N[(v * v), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision], If[LessEqual[v, 5e-149], N[ArcTan[N[(v / N[(N[(H * 9.8), $MachinePrecision] / v), $MachinePrecision]), $MachinePrecision]], $MachinePrecision], N[ArcTan[1.0], $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;v \leq -3.5 \cdot 10^{-101}:\\
\;\;\;\;\tan^{-1} \left(-1 + -9.8 \cdot \frac{H}{v \cdot v}\right)\\
\mathbf{elif}\;v \leq 5 \cdot 10^{-149}:\\
\;\;\;\;\tan^{-1} \left(\frac{v}{\frac{H \cdot 9.8}{v}}\right)\\
\mathbf{else}:\\
\;\;\;\;\tan^{-1} 1\\
\end{array}
\end{array}
if v < -3.49999999999999994e-101Initial program 52.9%
atan-lowering-atan.f64N/A
/-lowering-/.f64N/A
sqrt-lowering-sqrt.f64N/A
sub-negN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
distribute-rgt-neg-inN/A
*-lowering-*.f64N/A
metadata-evalN/A
metadata-eval52.9%
Simplified52.9%
Taylor expanded in v around -inf
sub-negN/A
metadata-evalN/A
+-commutativeN/A
+-lowering-+.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f6493.1%
Simplified93.1%
if -3.49999999999999994e-101 < v < 4.99999999999999968e-149Initial program 99.6%
atan-lowering-atan.f64N/A
/-lowering-/.f64N/A
sqrt-lowering-sqrt.f64N/A
sub-negN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
distribute-rgt-neg-inN/A
*-lowering-*.f64N/A
metadata-evalN/A
metadata-eval99.6%
Simplified99.6%
Taylor expanded in v around -inf
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
Simplified0.5%
Taylor expanded in H around 0
+-commutativeN/A
mul-1-negN/A
unsub-negN/A
--lowering--.f64N/A
*-lowering-*.f64N/A
+-commutativeN/A
+-lowering-+.f64N/A
associate-*r/N/A
metadata-evalN/A
/-lowering-/.f64N/A
associate-*r/N/A
/-lowering-/.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
cube-multN/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6430.7%
Simplified30.7%
Taylor expanded in H around 0
associate-*r/N/A
*-commutativeN/A
associate-*r/N/A
metadata-evalN/A
associate-*r/N/A
--lowering--.f64N/A
associate-*r/N/A
metadata-evalN/A
associate-*r/N/A
*-commutativeN/A
/-lowering-/.f64N/A
*-commutativeN/A
*-lowering-*.f6433.2%
Simplified33.2%
Taylor expanded in H around inf
associate-*r/N/A
/-lowering-/.f64N/A
*-commutativeN/A
*-lowering-*.f6433.2%
Simplified33.2%
if 4.99999999999999968e-149 < v Initial program 54.8%
atan-lowering-atan.f64N/A
/-lowering-/.f64N/A
sqrt-lowering-sqrt.f64N/A
sub-negN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
distribute-rgt-neg-inN/A
*-lowering-*.f64N/A
metadata-evalN/A
metadata-eval54.8%
Simplified54.8%
Taylor expanded in v around inf
Simplified85.3%
Final simplification78.3%
(FPCore (v H) :precision binary64 (if (<= v -3.5e-101) (atan -1.0) (if (<= v 6e-149) (atan (/ v (/ (* H 9.8) v))) (atan 1.0))))
double code(double v, double H) {
double tmp;
if (v <= -3.5e-101) {
tmp = atan(-1.0);
} else if (v <= 6e-149) {
tmp = atan((v / ((H * 9.8) / v)));
} else {
tmp = atan(1.0);
}
return tmp;
}
real(8) function code(v, h)
real(8), intent (in) :: v
real(8), intent (in) :: h
real(8) :: tmp
if (v <= (-3.5d-101)) then
tmp = atan((-1.0d0))
else if (v <= 6d-149) then
tmp = atan((v / ((h * 9.8d0) / v)))
else
tmp = atan(1.0d0)
end if
code = tmp
end function
public static double code(double v, double H) {
double tmp;
if (v <= -3.5e-101) {
tmp = Math.atan(-1.0);
} else if (v <= 6e-149) {
tmp = Math.atan((v / ((H * 9.8) / v)));
} else {
tmp = Math.atan(1.0);
}
return tmp;
}
def code(v, H): tmp = 0 if v <= -3.5e-101: tmp = math.atan(-1.0) elif v <= 6e-149: tmp = math.atan((v / ((H * 9.8) / v))) else: tmp = math.atan(1.0) return tmp
function code(v, H) tmp = 0.0 if (v <= -3.5e-101) tmp = atan(-1.0); elseif (v <= 6e-149) tmp = atan(Float64(v / Float64(Float64(H * 9.8) / v))); else tmp = atan(1.0); end return tmp end
function tmp_2 = code(v, H) tmp = 0.0; if (v <= -3.5e-101) tmp = atan(-1.0); elseif (v <= 6e-149) tmp = atan((v / ((H * 9.8) / v))); else tmp = atan(1.0); end tmp_2 = tmp; end
code[v_, H_] := If[LessEqual[v, -3.5e-101], N[ArcTan[-1.0], $MachinePrecision], If[LessEqual[v, 6e-149], N[ArcTan[N[(v / N[(N[(H * 9.8), $MachinePrecision] / v), $MachinePrecision]), $MachinePrecision]], $MachinePrecision], N[ArcTan[1.0], $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;v \leq -3.5 \cdot 10^{-101}:\\
\;\;\;\;\tan^{-1} -1\\
\mathbf{elif}\;v \leq 6 \cdot 10^{-149}:\\
\;\;\;\;\tan^{-1} \left(\frac{v}{\frac{H \cdot 9.8}{v}}\right)\\
\mathbf{else}:\\
\;\;\;\;\tan^{-1} 1\\
\end{array}
\end{array}
if v < -3.49999999999999994e-101Initial program 52.9%
atan-lowering-atan.f64N/A
/-lowering-/.f64N/A
sqrt-lowering-sqrt.f64N/A
sub-negN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
distribute-rgt-neg-inN/A
*-lowering-*.f64N/A
metadata-evalN/A
metadata-eval52.9%
Simplified52.9%
Taylor expanded in v around -inf
Simplified92.8%
if -3.49999999999999994e-101 < v < 6.0000000000000003e-149Initial program 99.6%
atan-lowering-atan.f64N/A
/-lowering-/.f64N/A
sqrt-lowering-sqrt.f64N/A
sub-negN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
distribute-rgt-neg-inN/A
*-lowering-*.f64N/A
metadata-evalN/A
metadata-eval99.6%
Simplified99.6%
Taylor expanded in v around -inf
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
Simplified0.5%
Taylor expanded in H around 0
+-commutativeN/A
mul-1-negN/A
unsub-negN/A
--lowering--.f64N/A
*-lowering-*.f64N/A
+-commutativeN/A
+-lowering-+.f64N/A
associate-*r/N/A
metadata-evalN/A
/-lowering-/.f64N/A
associate-*r/N/A
/-lowering-/.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
cube-multN/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6430.7%
Simplified30.7%
Taylor expanded in H around 0
associate-*r/N/A
*-commutativeN/A
associate-*r/N/A
metadata-evalN/A
associate-*r/N/A
--lowering--.f64N/A
associate-*r/N/A
metadata-evalN/A
associate-*r/N/A
*-commutativeN/A
/-lowering-/.f64N/A
*-commutativeN/A
*-lowering-*.f6433.2%
Simplified33.2%
Taylor expanded in H around inf
associate-*r/N/A
/-lowering-/.f64N/A
*-commutativeN/A
*-lowering-*.f6433.2%
Simplified33.2%
if 6.0000000000000003e-149 < v Initial program 54.8%
atan-lowering-atan.f64N/A
/-lowering-/.f64N/A
sqrt-lowering-sqrt.f64N/A
sub-negN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
distribute-rgt-neg-inN/A
*-lowering-*.f64N/A
metadata-evalN/A
metadata-eval54.8%
Simplified54.8%
Taylor expanded in v around inf
Simplified85.3%
(FPCore (v H) :precision binary64 (if (<= v -1.2e-208) (atan -1.0) (if (<= v 2.4e-111) (atan (/ v (* -9.8 (/ H v)))) (atan 1.0))))
double code(double v, double H) {
double tmp;
if (v <= -1.2e-208) {
tmp = atan(-1.0);
} else if (v <= 2.4e-111) {
tmp = atan((v / (-9.8 * (H / v))));
} else {
tmp = atan(1.0);
}
return tmp;
}
real(8) function code(v, h)
real(8), intent (in) :: v
real(8), intent (in) :: h
real(8) :: tmp
if (v <= (-1.2d-208)) then
tmp = atan((-1.0d0))
else if (v <= 2.4d-111) then
tmp = atan((v / ((-9.8d0) * (h / v))))
else
tmp = atan(1.0d0)
end if
code = tmp
end function
public static double code(double v, double H) {
double tmp;
if (v <= -1.2e-208) {
tmp = Math.atan(-1.0);
} else if (v <= 2.4e-111) {
tmp = Math.atan((v / (-9.8 * (H / v))));
} else {
tmp = Math.atan(1.0);
}
return tmp;
}
def code(v, H): tmp = 0 if v <= -1.2e-208: tmp = math.atan(-1.0) elif v <= 2.4e-111: tmp = math.atan((v / (-9.8 * (H / v)))) else: tmp = math.atan(1.0) return tmp
function code(v, H) tmp = 0.0 if (v <= -1.2e-208) tmp = atan(-1.0); elseif (v <= 2.4e-111) tmp = atan(Float64(v / Float64(-9.8 * Float64(H / v)))); else tmp = atan(1.0); end return tmp end
function tmp_2 = code(v, H) tmp = 0.0; if (v <= -1.2e-208) tmp = atan(-1.0); elseif (v <= 2.4e-111) tmp = atan((v / (-9.8 * (H / v)))); else tmp = atan(1.0); end tmp_2 = tmp; end
code[v_, H_] := If[LessEqual[v, -1.2e-208], N[ArcTan[-1.0], $MachinePrecision], If[LessEqual[v, 2.4e-111], N[ArcTan[N[(v / N[(-9.8 * N[(H / v), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision], N[ArcTan[1.0], $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;v \leq -1.2 \cdot 10^{-208}:\\
\;\;\;\;\tan^{-1} -1\\
\mathbf{elif}\;v \leq 2.4 \cdot 10^{-111}:\\
\;\;\;\;\tan^{-1} \left(\frac{v}{-9.8 \cdot \frac{H}{v}}\right)\\
\mathbf{else}:\\
\;\;\;\;\tan^{-1} 1\\
\end{array}
\end{array}
if v < -1.1999999999999999e-208Initial program 58.7%
atan-lowering-atan.f64N/A
/-lowering-/.f64N/A
sqrt-lowering-sqrt.f64N/A
sub-negN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
distribute-rgt-neg-inN/A
*-lowering-*.f64N/A
metadata-evalN/A
metadata-eval58.7%
Simplified58.7%
Taylor expanded in v around -inf
Simplified81.9%
if -1.1999999999999999e-208 < v < 2.4000000000000001e-111Initial program 99.7%
atan-lowering-atan.f64N/A
/-lowering-/.f64N/A
sqrt-lowering-sqrt.f64N/A
sub-negN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
distribute-rgt-neg-inN/A
*-lowering-*.f64N/A
metadata-evalN/A
metadata-eval99.7%
Simplified99.7%
Taylor expanded in H around 0
*-commutativeN/A
associate-*l/N/A
associate-*r/N/A
metadata-evalN/A
distribute-neg-fracN/A
metadata-evalN/A
associate-*r/N/A
+-lowering-+.f64N/A
associate-*r/N/A
metadata-evalN/A
distribute-neg-fracN/A
metadata-evalN/A
associate-*r/N/A
*-commutativeN/A
/-lowering-/.f64N/A
*-commutativeN/A
*-lowering-*.f6439.3%
Simplified39.3%
Taylor expanded in v around 0
associate-*r/N/A
/-lowering-/.f64N/A
*-commutativeN/A
*-lowering-*.f6439.3%
Simplified39.3%
atan-lowering-atan.f64N/A
/-lowering-/.f64N/A
*-commutativeN/A
associate-/l*N/A
*-lowering-*.f64N/A
/-lowering-/.f6439.3%
Applied egg-rr39.3%
if 2.4000000000000001e-111 < v Initial program 51.9%
atan-lowering-atan.f64N/A
/-lowering-/.f64N/A
sqrt-lowering-sqrt.f64N/A
sub-negN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
distribute-rgt-neg-inN/A
*-lowering-*.f64N/A
metadata-evalN/A
metadata-eval51.9%
Simplified51.9%
Taylor expanded in v around inf
Simplified90.2%
(FPCore (v H) :precision binary64 (if (<= v 1.22e-228) (atan (* v (/ 1.0 (- (/ H (/ v 9.8)) v)))) (atan (/ v (+ v (* -9.8 (/ H v)))))))
double code(double v, double H) {
double tmp;
if (v <= 1.22e-228) {
tmp = atan((v * (1.0 / ((H / (v / 9.8)) - v))));
} else {
tmp = atan((v / (v + (-9.8 * (H / v)))));
}
return tmp;
}
real(8) function code(v, h)
real(8), intent (in) :: v
real(8), intent (in) :: h
real(8) :: tmp
if (v <= 1.22d-228) then
tmp = atan((v * (1.0d0 / ((h / (v / 9.8d0)) - v))))
else
tmp = atan((v / (v + ((-9.8d0) * (h / v)))))
end if
code = tmp
end function
public static double code(double v, double H) {
double tmp;
if (v <= 1.22e-228) {
tmp = Math.atan((v * (1.0 / ((H / (v / 9.8)) - v))));
} else {
tmp = Math.atan((v / (v + (-9.8 * (H / v)))));
}
return tmp;
}
def code(v, H): tmp = 0 if v <= 1.22e-228: tmp = math.atan((v * (1.0 / ((H / (v / 9.8)) - v)))) else: tmp = math.atan((v / (v + (-9.8 * (H / v))))) return tmp
function code(v, H) tmp = 0.0 if (v <= 1.22e-228) tmp = atan(Float64(v * Float64(1.0 / Float64(Float64(H / Float64(v / 9.8)) - v)))); else tmp = atan(Float64(v / Float64(v + Float64(-9.8 * Float64(H / v))))); end return tmp end
function tmp_2 = code(v, H) tmp = 0.0; if (v <= 1.22e-228) tmp = atan((v * (1.0 / ((H / (v / 9.8)) - v)))); else tmp = atan((v / (v + (-9.8 * (H / v))))); end tmp_2 = tmp; end
code[v_, H_] := If[LessEqual[v, 1.22e-228], N[ArcTan[N[(v * N[(1.0 / N[(N[(H / N[(v / 9.8), $MachinePrecision]), $MachinePrecision] - v), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision], N[ArcTan[N[(v / N[(v + N[(-9.8 * N[(H / v), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;v \leq 1.22 \cdot 10^{-228}:\\
\;\;\;\;\tan^{-1} \left(v \cdot \frac{1}{\frac{H}{\frac{v}{9.8}} - v}\right)\\
\mathbf{else}:\\
\;\;\;\;\tan^{-1} \left(\frac{v}{v + -9.8 \cdot \frac{H}{v}}\right)\\
\end{array}
\end{array}
if v < 1.2199999999999999e-228Initial program 65.3%
atan-lowering-atan.f64N/A
/-lowering-/.f64N/A
sqrt-lowering-sqrt.f64N/A
sub-negN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
distribute-rgt-neg-inN/A
*-lowering-*.f64N/A
metadata-evalN/A
metadata-eval65.3%
Simplified65.3%
Taylor expanded in v around -inf
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
Simplified54.8%
Taylor expanded in H around 0
+-commutativeN/A
mul-1-negN/A
unsub-negN/A
--lowering--.f64N/A
*-lowering-*.f64N/A
+-commutativeN/A
+-lowering-+.f64N/A
associate-*r/N/A
metadata-evalN/A
/-lowering-/.f64N/A
associate-*r/N/A
/-lowering-/.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
cube-multN/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6477.8%
Simplified77.8%
Taylor expanded in H around 0
associate-*r/N/A
*-commutativeN/A
associate-*r/N/A
metadata-evalN/A
associate-*r/N/A
--lowering--.f64N/A
associate-*r/N/A
metadata-evalN/A
associate-*r/N/A
*-commutativeN/A
/-lowering-/.f64N/A
*-commutativeN/A
*-lowering-*.f6478.6%
Simplified78.6%
clear-numN/A
associate-/r/N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
associate-*l/N/A
associate-/r/N/A
--lowering--.f64N/A
/-lowering-/.f64N/A
/-lowering-/.f6478.6%
Applied egg-rr78.6%
if 1.2199999999999999e-228 < v Initial program 59.5%
atan-lowering-atan.f64N/A
/-lowering-/.f64N/A
sqrt-lowering-sqrt.f64N/A
sub-negN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
distribute-rgt-neg-inN/A
*-lowering-*.f64N/A
metadata-evalN/A
metadata-eval59.5%
Simplified59.5%
Taylor expanded in H around 0
*-commutativeN/A
associate-*l/N/A
associate-*r/N/A
metadata-evalN/A
distribute-neg-fracN/A
metadata-evalN/A
associate-*r/N/A
+-lowering-+.f64N/A
associate-*r/N/A
metadata-evalN/A
distribute-neg-fracN/A
metadata-evalN/A
associate-*r/N/A
*-commutativeN/A
/-lowering-/.f64N/A
*-commutativeN/A
*-lowering-*.f6477.6%
Simplified77.6%
+-commutativeN/A
+-lowering-+.f64N/A
*-commutativeN/A
associate-/l*N/A
*-lowering-*.f64N/A
/-lowering-/.f6478.5%
Applied egg-rr78.5%
Final simplification78.6%
(FPCore (v H) :precision binary64 (if (<= v -1.14e-266) (atan (/ v (- (* H (/ 9.8 v)) v))) (atan (/ v (+ v (* -9.8 (/ H v)))))))
double code(double v, double H) {
double tmp;
if (v <= -1.14e-266) {
tmp = atan((v / ((H * (9.8 / v)) - v)));
} else {
tmp = atan((v / (v + (-9.8 * (H / v)))));
}
return tmp;
}
real(8) function code(v, h)
real(8), intent (in) :: v
real(8), intent (in) :: h
real(8) :: tmp
if (v <= (-1.14d-266)) then
tmp = atan((v / ((h * (9.8d0 / v)) - v)))
else
tmp = atan((v / (v + ((-9.8d0) * (h / v)))))
end if
code = tmp
end function
public static double code(double v, double H) {
double tmp;
if (v <= -1.14e-266) {
tmp = Math.atan((v / ((H * (9.8 / v)) - v)));
} else {
tmp = Math.atan((v / (v + (-9.8 * (H / v)))));
}
return tmp;
}
def code(v, H): tmp = 0 if v <= -1.14e-266: tmp = math.atan((v / ((H * (9.8 / v)) - v))) else: tmp = math.atan((v / (v + (-9.8 * (H / v))))) return tmp
function code(v, H) tmp = 0.0 if (v <= -1.14e-266) tmp = atan(Float64(v / Float64(Float64(H * Float64(9.8 / v)) - v))); else tmp = atan(Float64(v / Float64(v + Float64(-9.8 * Float64(H / v))))); end return tmp end
function tmp_2 = code(v, H) tmp = 0.0; if (v <= -1.14e-266) tmp = atan((v / ((H * (9.8 / v)) - v))); else tmp = atan((v / (v + (-9.8 * (H / v))))); end tmp_2 = tmp; end
code[v_, H_] := If[LessEqual[v, -1.14e-266], N[ArcTan[N[(v / N[(N[(H * N[(9.8 / v), $MachinePrecision]), $MachinePrecision] - v), $MachinePrecision]), $MachinePrecision]], $MachinePrecision], N[ArcTan[N[(v / N[(v + N[(-9.8 * N[(H / v), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;v \leq -1.14 \cdot 10^{-266}:\\
\;\;\;\;\tan^{-1} \left(\frac{v}{H \cdot \frac{9.8}{v} - v}\right)\\
\mathbf{else}:\\
\;\;\;\;\tan^{-1} \left(\frac{v}{v + -9.8 \cdot \frac{H}{v}}\right)\\
\end{array}
\end{array}
if v < -1.1400000000000001e-266Initial program 60.7%
atan-lowering-atan.f64N/A
/-lowering-/.f64N/A
sqrt-lowering-sqrt.f64N/A
sub-negN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
distribute-rgt-neg-inN/A
*-lowering-*.f64N/A
metadata-evalN/A
metadata-eval60.7%
Simplified60.7%
Taylor expanded in v around -inf
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
Simplified62.2%
Taylor expanded in H around 0
+-commutativeN/A
mul-1-negN/A
unsub-negN/A
associate-*r/N/A
*-commutativeN/A
associate-*r/N/A
metadata-evalN/A
associate-*r/N/A
--lowering--.f64N/A
*-lowering-*.f64N/A
associate-*r/N/A
metadata-evalN/A
/-lowering-/.f6480.9%
Simplified80.9%
if -1.1400000000000001e-266 < v Initial program 64.8%
atan-lowering-atan.f64N/A
/-lowering-/.f64N/A
sqrt-lowering-sqrt.f64N/A
sub-negN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
distribute-rgt-neg-inN/A
*-lowering-*.f64N/A
metadata-evalN/A
metadata-eval64.8%
Simplified64.8%
Taylor expanded in H around 0
*-commutativeN/A
associate-*l/N/A
associate-*r/N/A
metadata-evalN/A
distribute-neg-fracN/A
metadata-evalN/A
associate-*r/N/A
+-lowering-+.f64N/A
associate-*r/N/A
metadata-evalN/A
distribute-neg-fracN/A
metadata-evalN/A
associate-*r/N/A
*-commutativeN/A
/-lowering-/.f64N/A
*-commutativeN/A
*-lowering-*.f6475.6%
Simplified75.6%
+-commutativeN/A
+-lowering-+.f64N/A
*-commutativeN/A
associate-/l*N/A
*-lowering-*.f64N/A
/-lowering-/.f6476.3%
Applied egg-rr76.3%
Final simplification78.6%
(FPCore (v H) :precision binary64 (if (<= v -3.5e-101) (atan (+ -1.0 (* -9.8 (/ H (* v v))))) (atan (/ v (+ v (* -9.8 (/ H v)))))))
double code(double v, double H) {
double tmp;
if (v <= -3.5e-101) {
tmp = atan((-1.0 + (-9.8 * (H / (v * v)))));
} else {
tmp = atan((v / (v + (-9.8 * (H / v)))));
}
return tmp;
}
real(8) function code(v, h)
real(8), intent (in) :: v
real(8), intent (in) :: h
real(8) :: tmp
if (v <= (-3.5d-101)) then
tmp = atan(((-1.0d0) + ((-9.8d0) * (h / (v * v)))))
else
tmp = atan((v / (v + ((-9.8d0) * (h / v)))))
end if
code = tmp
end function
public static double code(double v, double H) {
double tmp;
if (v <= -3.5e-101) {
tmp = Math.atan((-1.0 + (-9.8 * (H / (v * v)))));
} else {
tmp = Math.atan((v / (v + (-9.8 * (H / v)))));
}
return tmp;
}
def code(v, H): tmp = 0 if v <= -3.5e-101: tmp = math.atan((-1.0 + (-9.8 * (H / (v * v))))) else: tmp = math.atan((v / (v + (-9.8 * (H / v))))) return tmp
function code(v, H) tmp = 0.0 if (v <= -3.5e-101) tmp = atan(Float64(-1.0 + Float64(-9.8 * Float64(H / Float64(v * v))))); else tmp = atan(Float64(v / Float64(v + Float64(-9.8 * Float64(H / v))))); end return tmp end
function tmp_2 = code(v, H) tmp = 0.0; if (v <= -3.5e-101) tmp = atan((-1.0 + (-9.8 * (H / (v * v))))); else tmp = atan((v / (v + (-9.8 * (H / v))))); end tmp_2 = tmp; end
code[v_, H_] := If[LessEqual[v, -3.5e-101], N[ArcTan[N[(-1.0 + N[(-9.8 * N[(H / N[(v * v), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision], N[ArcTan[N[(v / N[(v + N[(-9.8 * N[(H / v), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;v \leq -3.5 \cdot 10^{-101}:\\
\;\;\;\;\tan^{-1} \left(-1 + -9.8 \cdot \frac{H}{v \cdot v}\right)\\
\mathbf{else}:\\
\;\;\;\;\tan^{-1} \left(\frac{v}{v + -9.8 \cdot \frac{H}{v}}\right)\\
\end{array}
\end{array}
if v < -3.49999999999999994e-101Initial program 52.9%
atan-lowering-atan.f64N/A
/-lowering-/.f64N/A
sqrt-lowering-sqrt.f64N/A
sub-negN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
distribute-rgt-neg-inN/A
*-lowering-*.f64N/A
metadata-evalN/A
metadata-eval52.9%
Simplified52.9%
Taylor expanded in v around -inf
sub-negN/A
metadata-evalN/A
+-commutativeN/A
+-lowering-+.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f6493.1%
Simplified93.1%
if -3.49999999999999994e-101 < v Initial program 69.6%
atan-lowering-atan.f64N/A
/-lowering-/.f64N/A
sqrt-lowering-sqrt.f64N/A
sub-negN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
distribute-rgt-neg-inN/A
*-lowering-*.f64N/A
metadata-evalN/A
metadata-eval69.6%
Simplified69.6%
Taylor expanded in H around 0
*-commutativeN/A
associate-*l/N/A
associate-*r/N/A
metadata-evalN/A
distribute-neg-fracN/A
metadata-evalN/A
associate-*r/N/A
+-lowering-+.f64N/A
associate-*r/N/A
metadata-evalN/A
distribute-neg-fracN/A
metadata-evalN/A
associate-*r/N/A
*-commutativeN/A
/-lowering-/.f64N/A
*-commutativeN/A
*-lowering-*.f6467.2%
Simplified67.2%
+-commutativeN/A
+-lowering-+.f64N/A
*-commutativeN/A
associate-/l*N/A
*-lowering-*.f64N/A
/-lowering-/.f6467.8%
Applied egg-rr67.8%
Final simplification78.2%
(FPCore (v H) :precision binary64 (if (<= v -3.5e-101) (atan (+ -1.0 (* -9.8 (/ H (* v v))))) (atan (/ v (+ v (/ (* H -9.8) v))))))
double code(double v, double H) {
double tmp;
if (v <= -3.5e-101) {
tmp = atan((-1.0 + (-9.8 * (H / (v * v)))));
} else {
tmp = atan((v / (v + ((H * -9.8) / v))));
}
return tmp;
}
real(8) function code(v, h)
real(8), intent (in) :: v
real(8), intent (in) :: h
real(8) :: tmp
if (v <= (-3.5d-101)) then
tmp = atan(((-1.0d0) + ((-9.8d0) * (h / (v * v)))))
else
tmp = atan((v / (v + ((h * (-9.8d0)) / v))))
end if
code = tmp
end function
public static double code(double v, double H) {
double tmp;
if (v <= -3.5e-101) {
tmp = Math.atan((-1.0 + (-9.8 * (H / (v * v)))));
} else {
tmp = Math.atan((v / (v + ((H * -9.8) / v))));
}
return tmp;
}
def code(v, H): tmp = 0 if v <= -3.5e-101: tmp = math.atan((-1.0 + (-9.8 * (H / (v * v))))) else: tmp = math.atan((v / (v + ((H * -9.8) / v)))) return tmp
function code(v, H) tmp = 0.0 if (v <= -3.5e-101) tmp = atan(Float64(-1.0 + Float64(-9.8 * Float64(H / Float64(v * v))))); else tmp = atan(Float64(v / Float64(v + Float64(Float64(H * -9.8) / v)))); end return tmp end
function tmp_2 = code(v, H) tmp = 0.0; if (v <= -3.5e-101) tmp = atan((-1.0 + (-9.8 * (H / (v * v))))); else tmp = atan((v / (v + ((H * -9.8) / v)))); end tmp_2 = tmp; end
code[v_, H_] := If[LessEqual[v, -3.5e-101], N[ArcTan[N[(-1.0 + N[(-9.8 * N[(H / N[(v * v), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision], N[ArcTan[N[(v / N[(v + N[(N[(H * -9.8), $MachinePrecision] / v), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;v \leq -3.5 \cdot 10^{-101}:\\
\;\;\;\;\tan^{-1} \left(-1 + -9.8 \cdot \frac{H}{v \cdot v}\right)\\
\mathbf{else}:\\
\;\;\;\;\tan^{-1} \left(\frac{v}{v + \frac{H \cdot -9.8}{v}}\right)\\
\end{array}
\end{array}
if v < -3.49999999999999994e-101Initial program 52.9%
atan-lowering-atan.f64N/A
/-lowering-/.f64N/A
sqrt-lowering-sqrt.f64N/A
sub-negN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
distribute-rgt-neg-inN/A
*-lowering-*.f64N/A
metadata-evalN/A
metadata-eval52.9%
Simplified52.9%
Taylor expanded in v around -inf
sub-negN/A
metadata-evalN/A
+-commutativeN/A
+-lowering-+.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f6493.1%
Simplified93.1%
if -3.49999999999999994e-101 < v Initial program 69.6%
atan-lowering-atan.f64N/A
/-lowering-/.f64N/A
sqrt-lowering-sqrt.f64N/A
sub-negN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
distribute-rgt-neg-inN/A
*-lowering-*.f64N/A
metadata-evalN/A
metadata-eval69.6%
Simplified69.6%
Taylor expanded in H around 0
*-commutativeN/A
associate-*l/N/A
associate-*r/N/A
metadata-evalN/A
distribute-neg-fracN/A
metadata-evalN/A
associate-*r/N/A
+-lowering-+.f64N/A
associate-*r/N/A
metadata-evalN/A
distribute-neg-fracN/A
metadata-evalN/A
associate-*r/N/A
*-commutativeN/A
/-lowering-/.f64N/A
*-commutativeN/A
*-lowering-*.f6467.2%
Simplified67.2%
Final simplification77.8%
(FPCore (v H) :precision binary64 (if (<= v -5e-310) (atan -1.0) (atan 1.0)))
double code(double v, double H) {
double tmp;
if (v <= -5e-310) {
tmp = atan(-1.0);
} else {
tmp = atan(1.0);
}
return tmp;
}
real(8) function code(v, h)
real(8), intent (in) :: v
real(8), intent (in) :: h
real(8) :: tmp
if (v <= (-5d-310)) then
tmp = atan((-1.0d0))
else
tmp = atan(1.0d0)
end if
code = tmp
end function
public static double code(double v, double H) {
double tmp;
if (v <= -5e-310) {
tmp = Math.atan(-1.0);
} else {
tmp = Math.atan(1.0);
}
return tmp;
}
def code(v, H): tmp = 0 if v <= -5e-310: tmp = math.atan(-1.0) else: tmp = math.atan(1.0) return tmp
function code(v, H) tmp = 0.0 if (v <= -5e-310) tmp = atan(-1.0); else tmp = atan(1.0); end return tmp end
function tmp_2 = code(v, H) tmp = 0.0; if (v <= -5e-310) tmp = atan(-1.0); else tmp = atan(1.0); end tmp_2 = tmp; end
code[v_, H_] := If[LessEqual[v, -5e-310], N[ArcTan[-1.0], $MachinePrecision], N[ArcTan[1.0], $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;v \leq -5 \cdot 10^{-310}:\\
\;\;\;\;\tan^{-1} -1\\
\mathbf{else}:\\
\;\;\;\;\tan^{-1} 1\\
\end{array}
\end{array}
if v < -4.999999999999985e-310Initial program 63.0%
atan-lowering-atan.f64N/A
/-lowering-/.f64N/A
sqrt-lowering-sqrt.f64N/A
sub-negN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
distribute-rgt-neg-inN/A
*-lowering-*.f64N/A
metadata-evalN/A
metadata-eval63.0%
Simplified63.0%
Taylor expanded in v around -inf
Simplified73.8%
if -4.999999999999985e-310 < v Initial program 62.5%
atan-lowering-atan.f64N/A
/-lowering-/.f64N/A
sqrt-lowering-sqrt.f64N/A
sub-negN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
distribute-rgt-neg-inN/A
*-lowering-*.f64N/A
metadata-evalN/A
metadata-eval62.5%
Simplified62.5%
Taylor expanded in v around inf
Simplified71.2%
(FPCore (v H) :precision binary64 (atan -1.0))
double code(double v, double H) {
return atan(-1.0);
}
real(8) function code(v, h)
real(8), intent (in) :: v
real(8), intent (in) :: h
code = atan((-1.0d0))
end function
public static double code(double v, double H) {
return Math.atan(-1.0);
}
def code(v, H): return math.atan(-1.0)
function code(v, H) return atan(-1.0) end
function tmp = code(v, H) tmp = atan(-1.0); end
code[v_, H_] := N[ArcTan[-1.0], $MachinePrecision]
\begin{array}{l}
\\
\tan^{-1} -1
\end{array}
Initial program 62.8%
atan-lowering-atan.f64N/A
/-lowering-/.f64N/A
sqrt-lowering-sqrt.f64N/A
sub-negN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
distribute-rgt-neg-inN/A
*-lowering-*.f64N/A
metadata-evalN/A
metadata-eval62.8%
Simplified62.8%
Taylor expanded in v around -inf
Simplified39.5%
herbie shell --seed 2024288
(FPCore (v H)
:name "Optimal throwing angle"
:precision binary64
(atan (/ v (sqrt (- (* v v) (* (* 2.0 9.8) H))))))