init-lam0-twopoint

Specification

?
\[\begin{array}{l} t_0 := \begin{array}{l} \mathbf{if}\;lam1 - lam2 < -\pi:\\ \;\;\;\;lam2 + 2 \cdot \pi\\ \mathbf{elif}\;lam1 - lam2 > \pi:\\ \;\;\;\;lam2 - 2 \cdot \pi\\ \mathbf{else}:\\ \;\;\;\;lam2\\ \end{array}\\ 0.5 \cdot \left(lam1 + t\_0\right) - \frac{\tan^{-1} \left(\frac{J \cdot \tan \left(0.5 \cdot \left(B \cdot \left(lam1 - t\_0\right)\right)\right)}{p}\right)}{B} \end{array} \]
(FPCore (lam1 lam2 B J p)
  :precision binary64
  :pre TRUE
  (let* ((t_0
        (if (< (- lam1 lam2) (- PI))
          (+ lam2 (* 2.0 PI))
          (if (> (- lam1 lam2) PI) (- lam2 (* 2.0 PI)) lam2))))
  (-
   (* 0.5 (+ lam1 t_0))
   (/ (atan (/ (* J (tan (* 0.5 (* B (- lam1 t_0))))) p)) B))))
double code(double lam1, double lam2, double B, double J, double p) {
	double tmp;
	if ((lam1 - lam2) < -((double) M_PI)) {
		tmp = lam2 + (2.0 * ((double) M_PI));
	} else if ((lam1 - lam2) > ((double) M_PI)) {
		tmp = lam2 - (2.0 * ((double) M_PI));
	} else {
		tmp = lam2;
	}
	double t_0 = tmp;
	return (0.5 * (lam1 + t_0)) - (atan(((J * tan((0.5 * (B * (lam1 - t_0))))) / p)) / B);
}
public static double code(double lam1, double lam2, double B, double J, double p) {
	double tmp;
	if ((lam1 - lam2) < -Math.PI) {
		tmp = lam2 + (2.0 * Math.PI);
	} else if ((lam1 - lam2) > Math.PI) {
		tmp = lam2 - (2.0 * Math.PI);
	} else {
		tmp = lam2;
	}
	double t_0 = tmp;
	return (0.5 * (lam1 + t_0)) - (Math.atan(((J * Math.tan((0.5 * (B * (lam1 - t_0))))) / p)) / B);
}
def code(lam1, lam2, B, J, p):
	tmp = 0
	if (lam1 - lam2) < -math.pi:
		tmp = lam2 + (2.0 * math.pi)
	elif (lam1 - lam2) > math.pi:
		tmp = lam2 - (2.0 * math.pi)
	else:
		tmp = lam2
	t_0 = tmp
	return (0.5 * (lam1 + t_0)) - (math.atan(((J * math.tan((0.5 * (B * (lam1 - t_0))))) / p)) / B)
function code(lam1, lam2, B, J, p)
	tmp = 0.0
	if (Float64(lam1 - lam2) < Float64(-pi))
		tmp = Float64(lam2 + Float64(2.0 * pi));
	elseif (Float64(lam1 - lam2) > pi)
		tmp = Float64(lam2 - Float64(2.0 * pi));
	else
		tmp = lam2;
	end
	t_0 = tmp
	return Float64(Float64(0.5 * Float64(lam1 + t_0)) - Float64(atan(Float64(Float64(J * tan(Float64(0.5 * Float64(B * Float64(lam1 - t_0))))) / p)) / B))
end
function tmp_2 = code(lam1, lam2, B, J, p)
	tmp = 0.0;
	if ((lam1 - lam2) < -pi)
		tmp = lam2 + (2.0 * pi);
	elseif ((lam1 - lam2) > pi)
		tmp = lam2 - (2.0 * pi);
	else
		tmp = lam2;
	end
	t_0 = tmp;
	tmp_2 = (0.5 * (lam1 + t_0)) - (atan(((J * tan((0.5 * (B * (lam1 - t_0))))) / p)) / B);
end
code[lam1_, lam2_, B_, J_, p_] := Block[{t$95$0 = If[Less[N[(lam1 - lam2), $MachinePrecision], (-Pi)], N[(lam2 + N[(2.0 * Pi), $MachinePrecision]), $MachinePrecision], If[Greater[N[(lam1 - lam2), $MachinePrecision], Pi], N[(lam2 - N[(2.0 * Pi), $MachinePrecision]), $MachinePrecision], lam2]]}, N[(N[(0.5 * N[(lam1 + t$95$0), $MachinePrecision]), $MachinePrecision] - N[(N[ArcTan[N[(N[(J * N[Tan[N[(0.5 * N[(B * N[(lam1 - t$95$0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / p), $MachinePrecision]], $MachinePrecision] / B), $MachinePrecision]), $MachinePrecision]]
f(lam1, lam2, B, J, p):
	lam1 in [-inf, +inf],
	lam2 in [-inf, +inf],
	B in [-inf, +inf],
	J in [-inf, +inf],
	p in [-inf, +inf]
code: THEORY
BEGIN
f(lam1, lam2, B, J, p: real): real =
	LET tmp_1 = IF ((lam1 - lam2) > (4 * atan(1))) THEN (lam2 - ((2) * (4 * atan(1)))) ELSE lam2 ENDIF IN
	LET tmp = IF ((lam1 - lam2) < (- (4 * atan(1)))) THEN (lam2 + ((2) * (4 * atan(1)))) ELSE tmp_1 ENDIF IN
	LET t_0 = tmp IN
	((5e-1) * (lam1 + t_0)) - ((atan(((J * (tan(((5e-1) * (B * (lam1 - t_0)))))) / p))) / B)
END code
\begin{array}{l}
t_0 := \begin{array}{l}
\mathbf{if}\;lam1 - lam2 < -\pi:\\
\;\;\;\;lam2 + 2 \cdot \pi\\

\mathbf{elif}\;lam1 - lam2 > \pi:\\
\;\;\;\;lam2 - 2 \cdot \pi\\

\mathbf{else}:\\
\;\;\;\;lam2\\


\end{array}\\
0.5 \cdot \left(lam1 + t\_0\right) - \frac{\tan^{-1} \left(\frac{J \cdot \tan \left(0.5 \cdot \left(B \cdot \left(lam1 - t\_0\right)\right)\right)}{p}\right)}{B}
\end{array}

Timeout after 2.5min

Use the --timeout flag to change the timeout.