From f34c3a73f6c44630fbf1a65fd8f3a1bf5507b608 Mon Sep 17 00:00:00 2001 From: Rainer Kartmann <rainer.kartmann@kit.edu> Date: Mon, 28 Mar 2022 11:01:58 +0200 Subject: [PATCH] Refactor equations code into own files --- .../cornelius_joint_mecha_demo.py | 300 +---- .../hemisphere-joint-demo/equations.py | 1057 +++++++++++++++++ .../hemisphere-joint-demo/terms.py | 13 + 3 files changed, 1091 insertions(+), 279 deletions(-) create mode 100755 python/hemisphere-joint-demo/hemisphere-joint-demo/equations.py create mode 100755 python/hemisphere-joint-demo/hemisphere-joint-demo/terms.py diff --git a/python/hemisphere-joint-demo/hemisphere-joint-demo/cornelius_joint_mecha_demo.py b/python/hemisphere-joint-demo/hemisphere-joint-demo/cornelius_joint_mecha_demo.py index 4187fb593..3b6b20c77 100755 --- a/python/hemisphere-joint-demo/hemisphere-joint-demo/cornelius_joint_mecha_demo.py +++ b/python/hemisphere-joint-demo/hemisphere-joint-demo/cornelius_joint_mecha_demo.py @@ -8,275 +8,6 @@ from armarx import remote_gui as rg from armarx.remote_gui.widgets.ndarray import NdArrayWidget -from numpy import pi - - -# Function definitions -def f_zenith(a1, a2, L, T_0): - return -np.arcsin((2 * L ** 2 - 4 * L ** 2 * (L ** 5 * np.sin(T_0) * np.sin(T_0 + np.arcsin(a1 / L)) * np.sin( - T_0 + np.arcsin(a2 / L)) ** 3 - L ** 5 * np.sin(T_0) * np.sin(T_0 + np.arcsin(a1 / L)) * np.sin( - T_0 + np.arcsin(a2 / L)) - L ** 5 * np.sin(T_0) * np.sin(T_0 + np.arcsin(a2 / L)) ** 2 + L ** 5 * np.sin( - T_0) - L * np.sqrt(2 * L ** 8 * np.sin(T_0) ** 2 * np.sin(T_0 + np.arcsin(a1 / L)) ** 3 * np.sin( - T_0 + np.arcsin(a2 / L)) ** 3 - 2 * L ** 8 * np.sin(T_0) ** 2 * np.sin(T_0 + np.arcsin(a1 / L)) ** 3 * np.sin( - T_0 + np.arcsin(a2 / L)) - 2 * L ** 8 * np.sin(T_0) ** 2 * np.sin(T_0 + np.arcsin(a1 / L)) ** 2 * np.sin( - T_0 + np.arcsin(a2 / L)) ** 2 + 2 * L ** 8 * np.sin(T_0) ** 2 * np.sin( - T_0 + np.arcsin(a1 / L)) ** 2 - 2 * L ** 8 * np.sin(T_0) ** 2 * np.sin(T_0 + np.arcsin(a1 / L)) * np.sin( - T_0 + np.arcsin(a2 / L)) ** 3 + 2 * L ** 8 * np.sin(T_0) ** 2 * np.sin(T_0 + np.arcsin(a1 / L)) * np.sin( - T_0 + np.arcsin(a2 / L)) + 2 * L ** 8 * np.sin(T_0) ** 2 * np.sin( - T_0 + np.arcsin(a2 / L)) ** 2 - 2 * L ** 8 * np.sin(T_0) ** 2 - L ** 8 * np.sin( - T_0 + np.arcsin(a1 / L)) ** 4 * np.sin(T_0 + np.arcsin(a2 / L)) ** 4 + L ** 8 * np.sin( - T_0 + np.arcsin(a1 / L)) ** 4 * np.sin(T_0 + np.arcsin(a2 / L)) ** 2 + L ** 8 * np.sin( - T_0 + np.arcsin(a1 / L)) ** 2 * np.sin(T_0 + np.arcsin(a2 / L)) ** 4 - L ** 8 * np.sin( - T_0 + np.arcsin(a1 / L)) ** 2 - L ** 8 * np.sin(T_0 + np.arcsin(a2 / L)) ** 2 + L ** 8) * np.sin( - T_0 + np.arcsin(a2 / L))) ** 2 / ((-L ** 2 * np.sin(T_0 + np.arcsin(a2 / L)) ** 2 + L ** 2) * ( - -L ** 4 * np.sin(T_0 + np.arcsin(a1 / L)) ** 2 * np.sin( - T_0 + np.arcsin(a2 / L)) ** 2 + L ** 4) ** 2) - 4 * L ** 2 * ( - L ** 5 * np.sin(T_0) * np.sin(T_0 + np.arcsin(a1 / L)) ** 3 * np.sin( - T_0 + np.arcsin(a2 / L)) - L ** 5 * np.sin(T_0) * np.sin( - T_0 + np.arcsin(a1 / L)) ** 2 - L ** 5 * np.sin(T_0) * np.sin( - T_0 + np.arcsin(a1 / L)) * np.sin(T_0 + np.arcsin(a2 / L)) + L ** 5 * np.sin( - T_0) - L * np.sqrt( - 2 * L ** 8 * np.sin(T_0) ** 2 * np.sin(T_0 + np.arcsin(a1 / L)) ** 3 * np.sin( - T_0 + np.arcsin(a2 / L)) ** 3 - 2 * L ** 8 * np.sin(T_0) ** 2 * np.sin( - T_0 + np.arcsin(a1 / L)) ** 3 * np.sin( - T_0 + np.arcsin(a2 / L)) - 2 * L ** 8 * np.sin(T_0) ** 2 * np.sin( - T_0 + np.arcsin(a1 / L)) ** 2 * np.sin( - T_0 + np.arcsin(a2 / L)) ** 2 + 2 * L ** 8 * np.sin(T_0) ** 2 * np.sin( - T_0 + np.arcsin(a1 / L)) ** 2 - 2 * L ** 8 * np.sin(T_0) ** 2 * np.sin( - T_0 + np.arcsin(a1 / L)) * np.sin( - T_0 + np.arcsin(a2 / L)) ** 3 + 2 * L ** 8 * np.sin(T_0) ** 2 * np.sin( - T_0 + np.arcsin(a1 / L)) * np.sin(T_0 + np.arcsin(a2 / L)) + 2 * L ** 8 * np.sin( - T_0) ** 2 * np.sin(T_0 + np.arcsin(a2 / L)) ** 2 - 2 * L ** 8 * np.sin( - T_0) ** 2 - L ** 8 * np.sin(T_0 + np.arcsin(a1 / L)) ** 4 * np.sin( - T_0 + np.arcsin(a2 / L)) ** 4 + L ** 8 * np.sin( - T_0 + np.arcsin(a1 / L)) ** 4 * np.sin( - T_0 + np.arcsin(a2 / L)) ** 2 + L ** 8 * np.sin( - T_0 + np.arcsin(a1 / L)) ** 2 * np.sin( - T_0 + np.arcsin(a2 / L)) ** 4 - L ** 8 * np.sin( - T_0 + np.arcsin(a1 / L)) ** 2 - L ** 8 * np.sin( - T_0 + np.arcsin(a2 / L)) ** 2 + L ** 8) * np.sin(T_0 + np.arcsin(a1 / L))) ** 2 / ( - (-L ** 2 * np.sin(T_0 + np.arcsin(a1 / L)) ** 2 + L ** 2) * ( - -L ** 4 * np.sin(T_0 + np.arcsin(a1 / L)) ** 2 * np.sin( - T_0 + np.arcsin(a2 / L)) ** 2 + L ** 4) ** 2)) / (2 * L ** 2)) + pi / 2 - - -def f_azimuth(a1, a2, L, T_0): - return np.arctan2(np.sqrt(4 * L ** 2 * np.sin(T_0) ** 2 - 4 * L ** 2 * ( - L ** 5 * np.sin(T_0) * np.sin(T_0 + np.arcsin(a1 / L)) * np.sin( - T_0 + np.arcsin(a2 / L)) ** 3 - L ** 5 * np.sin(T_0) * np.sin(T_0 + np.arcsin(a1 / L)) * np.sin( - T_0 + np.arcsin(a2 / L)) - L ** 5 * np.sin(T_0) * np.sin(T_0 + np.arcsin(a2 / L)) ** 2 + L ** 5 * np.sin( - T_0) - L * np.sqrt(2 * L ** 8 * np.sin(T_0) ** 2 * np.sin(T_0 + np.arcsin(a1 / L)) ** 3 * np.sin( - T_0 + np.arcsin(a2 / L)) ** 3 - 2 * L ** 8 * np.sin(T_0) ** 2 * np.sin( - T_0 + np.arcsin(a1 / L)) ** 3 * np.sin(T_0 + np.arcsin(a2 / L)) - 2 * L ** 8 * np.sin(T_0) ** 2 * np.sin( - T_0 + np.arcsin(a1 / L)) ** 2 * np.sin(T_0 + np.arcsin(a2 / L)) ** 2 + 2 * L ** 8 * np.sin( - T_0) ** 2 * np.sin(T_0 + np.arcsin(a1 / L)) ** 2 - 2 * L ** 8 * np.sin(T_0) ** 2 * np.sin( - T_0 + np.arcsin(a1 / L)) * np.sin(T_0 + np.arcsin(a2 / L)) ** 3 + 2 * L ** 8 * np.sin(T_0) ** 2 * np.sin( - T_0 + np.arcsin(a1 / L)) * np.sin(T_0 + np.arcsin(a2 / L)) + 2 * L ** 8 * np.sin(T_0) ** 2 * np.sin( - T_0 + np.arcsin(a2 / L)) ** 2 - 2 * L ** 8 * np.sin(T_0) ** 2 - L ** 8 * np.sin( - T_0 + np.arcsin(a1 / L)) ** 4 * np.sin(T_0 + np.arcsin(a2 / L)) ** 4 + L ** 8 * np.sin( - T_0 + np.arcsin(a1 / L)) ** 4 * np.sin(T_0 + np.arcsin(a2 / L)) ** 2 + L ** 8 * np.sin( - T_0 + np.arcsin(a1 / L)) ** 2 * np.sin(T_0 + np.arcsin(a2 / L)) ** 4 - L ** 8 * np.sin( - T_0 + np.arcsin(a1 / L)) ** 2 - L ** 8 * np.sin(T_0 + np.arcsin(a2 / L)) ** 2 + L ** 8) * np.sin( - T_0 + np.arcsin(a2 / L))) ** 2 * np.sin(T_0) ** 2 / ( - (-L ** 2 * np.sin(T_0 + np.arcsin(a2 / L)) ** 2 + L ** 2) * ( - -L ** 4 * np.sin(T_0 + np.arcsin(a1 / L)) ** 2 * np.sin( - T_0 + np.arcsin(a2 / L)) ** 2 + L ** 4) ** 2) - 4 * L ** 2 * ( - L ** 5 * np.sin(T_0) * np.sin(T_0 + np.arcsin(a1 / L)) ** 3 * np.sin( - T_0 + np.arcsin(a2 / L)) - L ** 5 * np.sin(T_0) * np.sin( - T_0 + np.arcsin(a1 / L)) ** 2 - L ** 5 * np.sin(T_0) * np.sin( - T_0 + np.arcsin(a1 / L)) * np.sin(T_0 + np.arcsin(a2 / L)) + L ** 5 * np.sin( - T_0) - L * np.sqrt( - 2 * L ** 8 * np.sin(T_0) ** 2 * np.sin(T_0 + np.arcsin(a1 / L)) ** 3 * np.sin( - T_0 + np.arcsin(a2 / L)) ** 3 - 2 * L ** 8 * np.sin(T_0) ** 2 * np.sin( - T_0 + np.arcsin(a1 / L)) ** 3 * np.sin( - T_0 + np.arcsin(a2 / L)) - 2 * L ** 8 * np.sin(T_0) ** 2 * np.sin( - T_0 + np.arcsin(a1 / L)) ** 2 * np.sin( - T_0 + np.arcsin(a2 / L)) ** 2 + 2 * L ** 8 * np.sin(T_0) ** 2 * np.sin( - T_0 + np.arcsin(a1 / L)) ** 2 - 2 * L ** 8 * np.sin(T_0) ** 2 * np.sin( - T_0 + np.arcsin(a1 / L)) * np.sin( - T_0 + np.arcsin(a2 / L)) ** 3 + 2 * L ** 8 * np.sin(T_0) ** 2 * np.sin( - T_0 + np.arcsin(a1 / L)) * np.sin( - T_0 + np.arcsin(a2 / L)) + 2 * L ** 8 * np.sin(T_0) ** 2 * np.sin( - T_0 + np.arcsin(a2 / L)) ** 2 - 2 * L ** 8 * np.sin( - T_0) ** 2 - L ** 8 * np.sin(T_0 + np.arcsin(a1 / L)) ** 4 * np.sin( - T_0 + np.arcsin(a2 / L)) ** 4 + L ** 8 * np.sin( - T_0 + np.arcsin(a1 / L)) ** 4 * np.sin( - T_0 + np.arcsin(a2 / L)) ** 2 + L ** 8 * np.sin( - T_0 + np.arcsin(a1 / L)) ** 2 * np.sin( - T_0 + np.arcsin(a2 / L)) ** 4 - L ** 8 * np.sin( - T_0 + np.arcsin(a1 / L)) ** 2 - L ** 8 * np.sin( - T_0 + np.arcsin(a2 / L)) ** 2 + L ** 8) * np.sin( - T_0 + np.arcsin(a1 / L))) ** 2 * np.sin(T_0) ** 2 / ( - (-L ** 2 * np.sin(T_0 + np.arcsin(a1 / L)) ** 2 + L ** 2) * ( - -L ** 4 * np.sin(T_0 + np.arcsin(a1 / L)) ** 2 * np.sin( - T_0 + np.arcsin(a2 / L)) ** 2 + L ** 4) ** 2)) * ( - L ** 5 * np.sin(T_0) * np.sin(T_0 + np.arcsin(a1 / L)) * np.sin( - T_0 + np.arcsin(a2 / L)) ** 3 - L ** 5 * np.sin(T_0) * np.sin( - T_0 + np.arcsin(a1 / L)) * np.sin(T_0 + np.arcsin(a2 / L)) - L ** 5 * np.sin( - T_0) * np.sin(T_0 + np.arcsin(a2 / L)) ** 2 + L ** 5 * np.sin(T_0) - L * np.sqrt( - 2 * L ** 8 * np.sin(T_0) ** 2 * np.sin(T_0 + np.arcsin(a1 / L)) ** 3 * np.sin( - T_0 + np.arcsin(a2 / L)) ** 3 - 2 * L ** 8 * np.sin(T_0) ** 2 * np.sin( - T_0 + np.arcsin(a1 / L)) ** 3 * np.sin(T_0 + np.arcsin(a2 / L)) - 2 * L ** 8 * np.sin( - T_0) ** 2 * np.sin(T_0 + np.arcsin(a1 / L)) ** 2 * np.sin( - T_0 + np.arcsin(a2 / L)) ** 2 + 2 * L ** 8 * np.sin(T_0) ** 2 * np.sin( - T_0 + np.arcsin(a1 / L)) ** 2 - 2 * L ** 8 * np.sin(T_0) ** 2 * np.sin( - T_0 + np.arcsin(a1 / L)) * np.sin(T_0 + np.arcsin(a2 / L)) ** 3 + 2 * L ** 8 * np.sin( - T_0) ** 2 * np.sin(T_0 + np.arcsin(a1 / L)) * np.sin( - T_0 + np.arcsin(a2 / L)) + 2 * L ** 8 * np.sin(T_0) ** 2 * np.sin( - T_0 + np.arcsin(a2 / L)) ** 2 - 2 * L ** 8 * np.sin(T_0) ** 2 - L ** 8 * np.sin( - T_0 + np.arcsin(a1 / L)) ** 4 * np.sin( - T_0 + np.arcsin(a2 / L)) ** 4 + L ** 8 * np.sin( - T_0 + np.arcsin(a1 / L)) ** 4 * np.sin( - T_0 + np.arcsin(a2 / L)) ** 2 + L ** 8 * np.sin( - T_0 + np.arcsin(a1 / L)) ** 2 * np.sin( - T_0 + np.arcsin(a2 / L)) ** 4 - L ** 8 * np.sin( - T_0 + np.arcsin(a1 / L)) ** 2 - L ** 8 * np.sin( - T_0 + np.arcsin(a2 / L)) ** 2 + L ** 8) * np.sin(T_0 + np.arcsin(a2 / L))) / ( - L * np.sqrt(-L ** 2 * np.sin(T_0 + np.arcsin(a2 / L)) ** 2 + L ** 2) * ( - -L ** 4 * np.sin(T_0 + np.arcsin(a1 / L)) ** 2 * np.sin( - T_0 + np.arcsin(a2 / L)) ** 2 + L ** 4) * np.sin(T_0)), np.sqrt( - 4 * L ** 2 * np.sin(T_0) ** 2 - 4 * L ** 2 * (L ** 5 * np.sin(T_0) * np.sin(T_0 + np.arcsin(a1 / L)) * np.sin( - T_0 + np.arcsin(a2 / L)) ** 3 - L ** 5 * np.sin(T_0) * np.sin(T_0 + np.arcsin(a1 / L)) * np.sin( - T_0 + np.arcsin(a2 / L)) - L ** 5 * np.sin(T_0) * np.sin(T_0 + np.arcsin(a2 / L)) ** 2 + L ** 5 * np.sin( - T_0) - L * np.sqrt(2 * L ** 8 * np.sin(T_0) ** 2 * np.sin(T_0 + np.arcsin(a1 / L)) ** 3 * np.sin( - T_0 + np.arcsin(a2 / L)) ** 3 - 2 * L ** 8 * np.sin(T_0) ** 2 * np.sin( - T_0 + np.arcsin(a1 / L)) ** 3 * np.sin(T_0 + np.arcsin(a2 / L)) - 2 * L ** 8 * np.sin(T_0) ** 2 * np.sin( - T_0 + np.arcsin(a1 / L)) ** 2 * np.sin(T_0 + np.arcsin(a2 / L)) ** 2 + 2 * L ** 8 * np.sin( - T_0) ** 2 * np.sin(T_0 + np.arcsin(a1 / L)) ** 2 - 2 * L ** 8 * np.sin(T_0) ** 2 * np.sin( - T_0 + np.arcsin(a1 / L)) * np.sin(T_0 + np.arcsin(a2 / L)) ** 3 + 2 * L ** 8 * np.sin(T_0) ** 2 * np.sin( - T_0 + np.arcsin(a1 / L)) * np.sin(T_0 + np.arcsin(a2 / L)) + 2 * L ** 8 * np.sin(T_0) ** 2 * np.sin( - T_0 + np.arcsin(a2 / L)) ** 2 - 2 * L ** 8 * np.sin(T_0) ** 2 - L ** 8 * np.sin( - T_0 + np.arcsin(a1 / L)) ** 4 * np.sin(T_0 + np.arcsin(a2 / L)) ** 4 + L ** 8 * np.sin( - T_0 + np.arcsin(a1 / L)) ** 4 * np.sin(T_0 + np.arcsin(a2 / L)) ** 2 + L ** 8 * np.sin( - T_0 + np.arcsin(a1 / L)) ** 2 * np.sin(T_0 + np.arcsin(a2 / L)) ** 4 - L ** 8 * np.sin( - T_0 + np.arcsin(a1 / L)) ** 2 - L ** 8 * np.sin(T_0 + np.arcsin(a2 / L)) ** 2 + L ** 8) * np.sin( - T_0 + np.arcsin(a2 / L))) ** 2 * np.sin(T_0) ** 2 / ( - (-L ** 2 * np.sin(T_0 + np.arcsin(a2 / L)) ** 2 + L ** 2) * ( - -L ** 4 * np.sin(T_0 + np.arcsin(a1 / L)) ** 2 * np.sin( - T_0 + np.arcsin(a2 / L)) ** 2 + L ** 4) ** 2) - 4 * L ** 2 * ( - L ** 5 * np.sin(T_0) * np.sin(T_0 + np.arcsin(a1 / L)) ** 3 * np.sin( - T_0 + np.arcsin(a2 / L)) - L ** 5 * np.sin(T_0) * np.sin( - T_0 + np.arcsin(a1 / L)) ** 2 - L ** 5 * np.sin(T_0) * np.sin(T_0 + np.arcsin(a1 / L)) * np.sin( - T_0 + np.arcsin(a2 / L)) + L ** 5 * np.sin(T_0) - L * np.sqrt( - 2 * L ** 8 * np.sin(T_0) ** 2 * np.sin(T_0 + np.arcsin(a1 / L)) ** 3 * np.sin( - T_0 + np.arcsin(a2 / L)) ** 3 - 2 * L ** 8 * np.sin(T_0) ** 2 * np.sin( - T_0 + np.arcsin(a1 / L)) ** 3 * np.sin(T_0 + np.arcsin(a2 / L)) - 2 * L ** 8 * np.sin( - T_0) ** 2 * np.sin(T_0 + np.arcsin(a1 / L)) ** 2 * np.sin( - T_0 + np.arcsin(a2 / L)) ** 2 + 2 * L ** 8 * np.sin(T_0) ** 2 * np.sin( - T_0 + np.arcsin(a1 / L)) ** 2 - 2 * L ** 8 * np.sin(T_0) ** 2 * np.sin( - T_0 + np.arcsin(a1 / L)) * np.sin(T_0 + np.arcsin(a2 / L)) ** 3 + 2 * L ** 8 * np.sin( - T_0) ** 2 * np.sin(T_0 + np.arcsin(a1 / L)) * np.sin(T_0 + np.arcsin(a2 / L)) + 2 * L ** 8 * np.sin( - T_0) ** 2 * np.sin(T_0 + np.arcsin(a2 / L)) ** 2 - 2 * L ** 8 * np.sin(T_0) ** 2 - L ** 8 * np.sin( - T_0 + np.arcsin(a1 / L)) ** 4 * np.sin(T_0 + np.arcsin(a2 / L)) ** 4 + L ** 8 * np.sin( - T_0 + np.arcsin(a1 / L)) ** 4 * np.sin(T_0 + np.arcsin(a2 / L)) ** 2 + L ** 8 * np.sin( - T_0 + np.arcsin(a1 / L)) ** 2 * np.sin(T_0 + np.arcsin(a2 / L)) ** 4 - L ** 8 * np.sin( - T_0 + np.arcsin(a1 / L)) ** 2 - L ** 8 * np.sin(T_0 + np.arcsin(a2 / L)) ** 2 + L ** 8) * np.sin( - T_0 + np.arcsin(a1 / L))) ** 2 * np.sin(T_0) ** 2 / ( - (-L ** 2 * np.sin(T_0 + np.arcsin(a1 / L)) ** 2 + L ** 2) * ( - -L ** 4 * np.sin(T_0 + np.arcsin(a1 / L)) ** 2 * np.sin( - T_0 + np.arcsin(a2 / L)) ** 2 + L ** 4) ** 2)) * ( - L ** 5 * np.sin(T_0) * np.sin(T_0 + np.arcsin(a1 / L)) ** 3 * np.sin( - T_0 + np.arcsin(a2 / L)) - L ** 5 * np.sin(T_0) * np.sin( - T_0 + np.arcsin(a1 / L)) ** 2 - L ** 5 * np.sin(T_0) * np.sin( - T_0 + np.arcsin(a1 / L)) * np.sin(T_0 + np.arcsin(a2 / L)) + L ** 5 * np.sin( - T_0) - L * np.sqrt( - 2 * L ** 8 * np.sin(T_0) ** 2 * np.sin(T_0 + np.arcsin(a1 / L)) ** 3 * np.sin( - T_0 + np.arcsin(a2 / L)) ** 3 - 2 * L ** 8 * np.sin(T_0) ** 2 * np.sin( - T_0 + np.arcsin(a1 / L)) ** 3 * np.sin(T_0 + np.arcsin(a2 / L)) - 2 * L ** 8 * np.sin( - T_0) ** 2 * np.sin(T_0 + np.arcsin(a1 / L)) ** 2 * np.sin( - T_0 + np.arcsin(a2 / L)) ** 2 + 2 * L ** 8 * np.sin(T_0) ** 2 * np.sin( - T_0 + np.arcsin(a1 / L)) ** 2 - 2 * L ** 8 * np.sin(T_0) ** 2 * np.sin( - T_0 + np.arcsin(a1 / L)) * np.sin(T_0 + np.arcsin(a2 / L)) ** 3 + 2 * L ** 8 * np.sin( - T_0) ** 2 * np.sin(T_0 + np.arcsin(a1 / L)) * np.sin( - T_0 + np.arcsin(a2 / L)) + 2 * L ** 8 * np.sin(T_0) ** 2 * np.sin( - T_0 + np.arcsin(a2 / L)) ** 2 - 2 * L ** 8 * np.sin(T_0) ** 2 - L ** 8 * np.sin( - T_0 + np.arcsin(a1 / L)) ** 4 * np.sin( - T_0 + np.arcsin(a2 / L)) ** 4 + L ** 8 * np.sin( - T_0 + np.arcsin(a1 / L)) ** 4 * np.sin( - T_0 + np.arcsin(a2 / L)) ** 2 + L ** 8 * np.sin( - T_0 + np.arcsin(a1 / L)) ** 2 * np.sin( - T_0 + np.arcsin(a2 / L)) ** 4 - L ** 8 * np.sin( - T_0 + np.arcsin(a1 / L)) ** 2 - L ** 8 * np.sin( - T_0 + np.arcsin(a2 / L)) ** 2 + L ** 8) * np.sin(T_0 + np.arcsin(a1 / L))) / ( - L * np.sqrt(-L ** 2 * np.sin(T_0 + np.arcsin(a1 / L)) ** 2 + L ** 2) * ( - -L ** 4 * np.sin(T_0 + np.arcsin(a1 / L)) ** 2 * np.sin( - T_0 + np.arcsin(a2 / L)) ** 2 + L ** 4) * np.sin(T_0))) - - -def fk(P1_z, P2_z, L, T_0): - """ - From: - https://colab.research.google.com/drive/11faUc8pS1yWxFrnmt05VqpDsqOwEi_dg#scrollTo=za3fZw9Rq5d9&line=1&uniqifier=1 - """ - from numpy import sin, cos, sqrt - - PE_x = 2 * L * (L ** 5 * sin(T_0) - L ** 3 * P1_z * P2_z * sin(T_0) - L ** 3 * P2_z ** 2 * sin( - T_0) + L * P1_z * P2_z ** 3 * sin(T_0) - P2_z * sqrt( - -2 * L ** 8 * sin(T_0) ** 2 + L ** 8 + 2 * L ** 6 * P1_z ** 2 * sin( - T_0) ** 2 - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * sin(T_0) ** 2 + 2 * L ** 6 * P2_z ** 2 * sin( - T_0) ** 2 - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * sin( - T_0) ** 2 - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * sin(T_0) ** 2 - 2 * L ** 4 * P1_z * P2_z ** 3 * sin( - T_0) ** 2 + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * sin( - T_0) ** 2 + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) * sin(T_0) / ( - sqrt(L ** 2 - P2_z ** 2) * (L ** 4 - P1_z ** 2 * P2_z ** 2)) - PE_y = 2 * L * (L ** 5 * sin(T_0) - L ** 3 * P1_z ** 2 * sin(T_0) - L ** 3 * P1_z * P2_z * sin( - T_0) + L * P1_z ** 3 * P2_z * sin(T_0) - P1_z * sqrt( - -2 * L ** 8 * sin(T_0) ** 2 + L ** 8 + 2 * L ** 6 * P1_z ** 2 * sin( - T_0) ** 2 - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * sin(T_0) ** 2 + 2 * L ** 6 * P2_z ** 2 * sin( - T_0) ** 2 - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * sin( - T_0) ** 2 - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * sin(T_0) ** 2 - 2 * L ** 4 * P1_z * P2_z ** 3 * sin( - T_0) ** 2 + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * sin( - T_0) ** 2 + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) * sin(T_0) / ( - sqrt(L ** 2 - P1_z ** 2) * (L ** 4 - P1_z ** 2 * P2_z ** 2)) - PE_z = 2 * L * (L * (L ** 4 - P1_z ** 2 * P2_z ** 2) * (P1_z + P2_z) * sin(T_0) + (L ** 2 + P1_z * P2_z) * sqrt( - L ** 2 * (L ** 2 * P1_z + L ** 2 * P2_z - P1_z ** 2 * P2_z - P1_z * P2_z ** 2) ** 2 * sin(T_0) ** 2 + ( - -L ** 4 + P1_z ** 2 * P2_z ** 2) * (-2 * L ** 4 * cos(T_0) ** 2 + L ** 4 + L ** 2 * P1_z ** 2 * cos( - T_0) ** 2 + L ** 2 * P2_z ** 2 * cos(T_0) ** 2 - P1_z ** 2 * P2_z ** 2))) * sin(T_0) / ( - (L ** 2 + P1_z * P2_z) * (L ** 4 - P1_z ** 2 * P2_z ** 2)) - - return np.array([PE_x, PE_y, PE_z]) - - -def fk_ori(PE_x, PE_y, L, T_0): - """ - From: - https://colab.research.google.com/drive/11faUc8pS1yWxFrnmt05VqpDsqOwEi_dg#scrollTo=aNSv-3Ftv3ps&line=2&uniqifier=1 - """ - from numpy import sin, cos, sqrt - - # @title Orientation vectors - exx = 1 - PE_x ** 2 / (2 * L ** 2 * sin(T_0) ** 2) - exy = -PE_x * PE_y / (2 * L ** 2 * sin(T_0) ** 2) - exz = -PE_x * sqrt(4 * L ** 2 * sin(T_0) ** 2 - PE_x ** 2 - PE_y ** 2) / (2 * L ** 2 * sin(T_0) ** 2) - - eyx = -PE_x * PE_y / (2 * L ** 2 * sin(T_0) ** 2) - eyy = 1 - PE_y ** 2 / (2 * L ** 2 * sin(T_0) ** 2) - eyz = -PE_y * sqrt(4 * L ** 2 * sin(T_0) ** 2 - PE_x ** 2 - PE_y ** 2) / (2 * L ** 2 * sin(T_0) ** 2) - - ezx = PE_x * sqrt(4 * L ** 2 * sin(T_0) ** 2 - PE_x ** 2 - PE_y ** 2) / (2 * L ** 2 * sin(T_0) ** 2) - ezy = PE_y * sqrt(4 * L ** 2 * sin(T_0) ** 2 - PE_x ** 2 - PE_y ** 2) / (2 * L ** 2 * sin(T_0) ** 2) - ezz = (2 * L ** 2 - PE_x ** 2 / sin(T_0) ** 2 - PE_y ** 2 / sin(T_0) ** 2) / (2 * L ** 2) - - - # @markdown for base change from Wrist to Base generate matrix from base vectors - # https://de.wikipedia.org/wiki/Basiswechsel_(Vektorraum) - r_wrist_to_base = np.array( - [[exx, eyx, ezx], - [exy, eyy, ezy], - [exz, eyz, ezz]] - ) - print(f"r_wrist_to_base:\n{np.round(r_wrist_to_base, 3)}") - - # @markdown since the mechanism is symmetric to the middle just z axis is inverted for Base to wrist - r_base_to_wrist = np.array( - [[ exx, eyx, ezx], - [ exy, eyy, ezy], - [-exz, -eyz, -ezz]] - ) - print(f"r_base_to_wrist:\n{np.round(r_base_to_wrist, 3)}") - - return r_wrist_to_base - class Data: @@ -296,20 +27,26 @@ class Data: def fk(self): print("-" * 50) - # Dummy. - if False: - eef = np.zeros(3) - eef += tf3d.axangles.axangle2mat((1, 0, 0), self.linear_joints[0]) @ self.links[0] - eef += tf3d.axangles.axangle2mat((1, 0, 0), self.linear_joints[1]) @ self.links[1] + pos = self.eef_pos.copy() + ori = self.eef_ori.copy() - self.eef_pos = eef + # Dummy. + do_revolute = False + if do_revolute: + pos = np.zeros(3) + pos += tf3d.axangles.axangle2mat((1, 0, 0), self.linear_joints[0]) @ self.links[0] + pos += tf3d.axangles.axangle2mat((1, 0, 0), self.linear_joints[1]) @ self.links[1] # KIT-Wrist constants lever = 1 theta_0 = np.deg2rad(25) print(f"(a1, a2) = {self.linear_joints}") - if False: + do_azim_zenith = False + if do_azim_zenith: + from armarx.math import spherical + from .equations import f_azimuth, f_zenith + azimuth = f_azimuth(*self.linear_joints, L=lever, T_0=theta_0) zenith = f_zenith(*self.linear_joints, L=lever, T_0=theta_0) radius = lever @@ -318,12 +55,15 @@ class Data: pos = spherical.spherical2cartesian([radius, azimuth, elevation]) print(f"(azimuth, zenith) = ({azimuth:.3f}, {zenith:.3f}) | Cartesian = {np.round(pos, 3)}") - if True: + do_fk = True + if do_fk: + from .equations import fk, fk_ori + pos = fk(*self.linear_joints, L=lever, T_0=theta_0) ori = fk_ori(pos[0], pos[1], L=lever, T_0=theta_0) print(f"(x, y, z) = {np.round(pos, 3)}") - self.eef_pos[:] = pos + self.eef_pos = pos self.eef_ori = ori def ik(self): @@ -379,7 +119,9 @@ class WidgetsTab(rg.Tab): self.visu = visu self.arviz = arviz or viz.Client(tag) - self.linear_joints = NdArrayWidget(data.linear_joints, row_vector=True, range_min=-1, range_max=1) + limit = 0.7 + self.linear_joints = NdArrayWidget(data.linear_joints, row_vector=True, + range_min=-limit, range_max=limit) self.eef_pos = NdArrayWidget(data.eef_pos, row_vector=True, range_min=-100, range_max=100) def create_widget_tree(self) -> rg.GridLayout: diff --git a/python/hemisphere-joint-demo/hemisphere-joint-demo/equations.py b/python/hemisphere-joint-demo/hemisphere-joint-demo/equations.py new file mode 100755 index 000000000..ee003dce0 --- /dev/null +++ b/python/hemisphere-joint-demo/hemisphere-joint-demo/equations.py @@ -0,0 +1,1057 @@ +import numpy as np + +import transforms3d as tf3d +import typing as ty + +from numpy import pi, sin, cos, sqrt +from numpy import pi, sin, cos, sqrt, arcsin, arctan2 + +from .terms import CommonTerms + + +def f_zenith(a1, a2, L, T_0): + t = CommonTerms(L=L, T_0=T_0) + + return -arcsin((2 * L ** 2 - 4 * L ** 2 * (L ** 5 * t.sin_t0 * sin(T_0 + arcsin(a1 / L)) * sin( + T_0 + arcsin(a2 / L)) ** 3 - L ** 5 * t.sin_t0 * sin(T_0 + arcsin(a1 / L)) * sin( + T_0 + arcsin(a2 / L)) - L ** 5 * t.sin_t0 * sin(T_0 + arcsin(a2 / L)) ** 2 + L ** 5 * t.sin_t0 - L * sqrt(2 * L ** 8 * t.sin_t0_sq * sin(T_0 + arcsin(a1 / L)) ** 3 * sin( + T_0 + arcsin(a2 / L)) ** 3 - 2 * L ** 8 * t.sin_t0_sq * sin(T_0 + arcsin(a1 / L)) ** 3 * sin( + T_0 + arcsin(a2 / L)) - 2 * L ** 8 * t.sin_t0_sq * sin(T_0 + arcsin(a1 / L)) ** 2 * sin( + T_0 + arcsin(a2 / L)) ** 2 + 2 * L ** 8 * t.sin_t0_sq * sin( + T_0 + arcsin(a1 / L)) ** 2 - 2 * L ** 8 * t.sin_t0_sq * sin(T_0 + arcsin(a1 / L)) * sin( + T_0 + arcsin(a2 / L)) ** 3 + 2 * L ** 8 * t.sin_t0_sq * sin(T_0 + arcsin(a1 / L)) * sin( + T_0 + arcsin(a2 / L)) + 2 * L ** 8 * t.sin_t0_sq * sin( + T_0 + arcsin(a2 / L)) ** 2 - 2 * L ** 8 * t.sin_t0_sq - L ** 8 * sin( + T_0 + arcsin(a1 / L)) ** 4 * sin(T_0 + arcsin(a2 / L)) ** 4 + L ** 8 * sin( + T_0 + arcsin(a1 / L)) ** 4 * sin(T_0 + arcsin(a2 / L)) ** 2 + L ** 8 * sin( + T_0 + arcsin(a1 / L)) ** 2 * sin(T_0 + arcsin(a2 / L)) ** 4 - L ** 8 * sin( + T_0 + arcsin(a1 / L)) ** 2 - L ** 8 * sin(T_0 + arcsin(a2 / L)) ** 2 + L ** 8) * sin( + T_0 + arcsin(a2 / L))) ** 2 / ((-L ** 2 * sin(T_0 + arcsin(a2 / L)) ** 2 + L ** 2) * ( + -L ** 4 * sin(T_0 + arcsin(a1 / L)) ** 2 * sin( + T_0 + arcsin(a2 / L)) ** 2 + L ** 4) ** 2) - 4 * L ** 2 * ( + L ** 5 * t.sin_t0 * sin(T_0 + arcsin(a1 / L)) ** 3 * sin( + T_0 + arcsin(a2 / L)) - L ** 5 * t.sin_t0 * sin( + T_0 + arcsin(a1 / L)) ** 2 - L ** 5 * t.sin_t0 * sin( + T_0 + arcsin(a1 / L)) * sin(T_0 + arcsin(a2 / L)) + L ** 5 * sin( + T_0) - L * sqrt( + 2 * L ** 8 * t.sin_t0_sq * sin(T_0 + arcsin(a1 / L)) ** 3 * sin( + T_0 + arcsin(a2 / L)) ** 3 - 2 * L ** 8 * t.sin_t0_sq * sin( + T_0 + arcsin(a1 / L)) ** 3 * sin( + T_0 + arcsin(a2 / L)) - 2 * L ** 8 * t.sin_t0_sq * sin( + T_0 + arcsin(a1 / L)) ** 2 * sin( + T_0 + arcsin(a2 / L)) ** 2 + 2 * L ** 8 * t.sin_t0_sq * sin( + T_0 + arcsin(a1 / L)) ** 2 - 2 * L ** 8 * t.sin_t0_sq * sin( + T_0 + arcsin(a1 / L)) * sin( + T_0 + arcsin(a2 / L)) ** 3 + 2 * L ** 8 * t.sin_t0_sq * sin( + T_0 + arcsin(a1 / L)) * sin(T_0 + arcsin(a2 / L)) + 2 * L ** 8 * sin( + T_0) ** 2 * sin(T_0 + arcsin(a2 / L)) ** 2 - 2 * L ** 8 * sin( + T_0) ** 2 - L ** 8 * sin(T_0 + arcsin(a1 / L)) ** 4 * sin( + T_0 + arcsin(a2 / L)) ** 4 + L ** 8 * sin( + T_0 + arcsin(a1 / L)) ** 4 * sin( + T_0 + arcsin(a2 / L)) ** 2 + L ** 8 * sin( + T_0 + arcsin(a1 / L)) ** 2 * sin( + T_0 + arcsin(a2 / L)) ** 4 - L ** 8 * sin( + T_0 + arcsin(a1 / L)) ** 2 - L ** 8 * sin( + T_0 + arcsin(a2 / L)) ** 2 + L ** 8) * sin(T_0 + arcsin(a1 / L))) ** 2 / ( + (-L ** 2 * sin(T_0 + arcsin(a1 / L)) ** 2 + L ** 2) * ( + -L ** 4 * sin(T_0 + arcsin(a1 / L)) ** 2 * sin( + T_0 + arcsin(a2 / L)) ** 2 + L ** 4) ** 2)) / (2 * L ** 2)) + pi / 2 + + +def f_azimuth(a1, a2, L, T_0): + t = CommonTerms(L=L, T_0=T_0) + + return arctan2(sqrt(4 * L ** 2 * t.sin_t0_sq - 4 * L ** 2 * ( + L ** 5 * t.sin_t0 * sin(T_0 + arcsin(a1 / L)) * sin( + T_0 + arcsin(a2 / L)) ** 3 - L ** 5 * t.sin_t0 * sin(T_0 + arcsin(a1 / L)) * sin( + T_0 + arcsin(a2 / L)) - L ** 5 * t.sin_t0 * sin(T_0 + arcsin(a2 / L)) ** 2 + L ** 5 * sin( + T_0) - L * sqrt(2 * L ** 8 * t.sin_t0_sq * sin(T_0 + arcsin(a1 / L)) ** 3 * sin( + T_0 + arcsin(a2 / L)) ** 3 - 2 * L ** 8 * t.sin_t0_sq * sin( + T_0 + arcsin(a1 / L)) ** 3 * sin(T_0 + arcsin(a2 / L)) - 2 * L ** 8 * t.sin_t0_sq * sin( + T_0 + arcsin(a1 / L)) ** 2 * sin(T_0 + arcsin(a2 / L)) ** 2 + 2 * L ** 8 * sin( + T_0) ** 2 * sin(T_0 + arcsin(a1 / L)) ** 2 - 2 * L ** 8 * t.sin_t0_sq * sin( + T_0 + arcsin(a1 / L)) * sin(T_0 + arcsin(a2 / L)) ** 3 + 2 * L ** 8 * t.sin_t0_sq * sin( + T_0 + arcsin(a1 / L)) * sin(T_0 + arcsin(a2 / L)) + 2 * L ** 8 * t.sin_t0_sq * sin( + T_0 + arcsin(a2 / L)) ** 2 - 2 * L ** 8 * t.sin_t0_sq - L ** 8 * sin( + T_0 + arcsin(a1 / L)) ** 4 * sin(T_0 + arcsin(a2 / L)) ** 4 + L ** 8 * sin( + T_0 + arcsin(a1 / L)) ** 4 * sin(T_0 + arcsin(a2 / L)) ** 2 + L ** 8 * sin( + T_0 + arcsin(a1 / L)) ** 2 * sin(T_0 + arcsin(a2 / L)) ** 4 - L ** 8 * sin( + T_0 + arcsin(a1 / L)) ** 2 - L ** 8 * sin(T_0 + arcsin(a2 / L)) ** 2 + L ** 8) * sin( + T_0 + arcsin(a2 / L))) ** 2 * t.sin_t0_sq / ( + (-L ** 2 * sin(T_0 + arcsin(a2 / L)) ** 2 + L ** 2) * ( + -L ** 4 * sin(T_0 + arcsin(a1 / L)) ** 2 * sin( + T_0 + arcsin(a2 / L)) ** 2 + L ** 4) ** 2) - 4 * L ** 2 * ( + L ** 5 * t.sin_t0 * sin(T_0 + arcsin(a1 / L)) ** 3 * sin( + T_0 + arcsin(a2 / L)) - L ** 5 * t.sin_t0 * sin( + T_0 + arcsin(a1 / L)) ** 2 - L ** 5 * t.sin_t0 * sin( + T_0 + arcsin(a1 / L)) * sin(T_0 + arcsin(a2 / L)) + L ** 5 * sin( + T_0) - L * sqrt( + 2 * L ** 8 * t.sin_t0_sq * sin(T_0 + arcsin(a1 / L)) ** 3 * sin( + T_0 + arcsin(a2 / L)) ** 3 - 2 * L ** 8 * t.sin_t0_sq * sin( + T_0 + arcsin(a1 / L)) ** 3 * sin( + T_0 + arcsin(a2 / L)) - 2 * L ** 8 * t.sin_t0_sq * sin( + T_0 + arcsin(a1 / L)) ** 2 * sin( + T_0 + arcsin(a2 / L)) ** 2 + 2 * L ** 8 * t.sin_t0_sq * sin( + T_0 + arcsin(a1 / L)) ** 2 - 2 * L ** 8 * t.sin_t0_sq * sin( + T_0 + arcsin(a1 / L)) * sin( + T_0 + arcsin(a2 / L)) ** 3 + 2 * L ** 8 * t.sin_t0_sq * sin( + T_0 + arcsin(a1 / L)) * sin( + T_0 + arcsin(a2 / L)) + 2 * L ** 8 * t.sin_t0_sq * sin( + T_0 + arcsin(a2 / L)) ** 2 - 2 * L ** 8 * sin( + T_0) ** 2 - L ** 8 * sin(T_0 + arcsin(a1 / L)) ** 4 * sin( + T_0 + arcsin(a2 / L)) ** 4 + L ** 8 * sin( + T_0 + arcsin(a1 / L)) ** 4 * sin( + T_0 + arcsin(a2 / L)) ** 2 + L ** 8 * sin( + T_0 + arcsin(a1 / L)) ** 2 * sin( + T_0 + arcsin(a2 / L)) ** 4 - L ** 8 * sin( + T_0 + arcsin(a1 / L)) ** 2 - L ** 8 * sin( + T_0 + arcsin(a2 / L)) ** 2 + L ** 8) * sin( + T_0 + arcsin(a1 / L))) ** 2 * t.sin_t0_sq / ( + (-L ** 2 * sin(T_0 + arcsin(a1 / L)) ** 2 + L ** 2) * ( + -L ** 4 * sin(T_0 + arcsin(a1 / L)) ** 2 * sin( + T_0 + arcsin(a2 / L)) ** 2 + L ** 4) ** 2)) * ( + L ** 5 * t.sin_t0 * sin(T_0 + arcsin(a1 / L)) * sin( + T_0 + arcsin(a2 / L)) ** 3 - L ** 5 * t.sin_t0 * sin( + T_0 + arcsin(a1 / L)) * sin(T_0 + arcsin(a2 / L)) - L ** 5 * sin( + T_0) * sin(T_0 + arcsin(a2 / L)) ** 2 + L ** 5 * t.sin_t0 - L * sqrt( + 2 * L ** 8 * t.sin_t0_sq * sin(T_0 + arcsin(a1 / L)) ** 3 * sin( + T_0 + arcsin(a2 / L)) ** 3 - 2 * L ** 8 * t.sin_t0_sq * sin( + T_0 + arcsin(a1 / L)) ** 3 * sin(T_0 + arcsin(a2 / L)) - 2 * L ** 8 * sin( + T_0) ** 2 * sin(T_0 + arcsin(a1 / L)) ** 2 * sin( + T_0 + arcsin(a2 / L)) ** 2 + 2 * L ** 8 * t.sin_t0_sq * sin( + T_0 + arcsin(a1 / L)) ** 2 - 2 * L ** 8 * t.sin_t0_sq * sin( + T_0 + arcsin(a1 / L)) * sin(T_0 + arcsin(a2 / L)) ** 3 + 2 * L ** 8 * sin( + T_0) ** 2 * sin(T_0 + arcsin(a1 / L)) * sin( + T_0 + arcsin(a2 / L)) + 2 * L ** 8 * t.sin_t0_sq * sin( + T_0 + arcsin(a2 / L)) ** 2 - 2 * L ** 8 * t.sin_t0_sq - L ** 8 * sin( + T_0 + arcsin(a1 / L)) ** 4 * sin( + T_0 + arcsin(a2 / L)) ** 4 + L ** 8 * sin( + T_0 + arcsin(a1 / L)) ** 4 * sin( + T_0 + arcsin(a2 / L)) ** 2 + L ** 8 * sin( + T_0 + arcsin(a1 / L)) ** 2 * sin( + T_0 + arcsin(a2 / L)) ** 4 - L ** 8 * sin( + T_0 + arcsin(a1 / L)) ** 2 - L ** 8 * sin( + T_0 + arcsin(a2 / L)) ** 2 + L ** 8) * sin(T_0 + arcsin(a2 / L))) / ( + L * sqrt(-L ** 2 * sin(T_0 + arcsin(a2 / L)) ** 2 + L ** 2) * ( + -L ** 4 * sin(T_0 + arcsin(a1 / L)) ** 2 * sin( + T_0 + arcsin(a2 / L)) ** 2 + L ** 4) * t.sin_t0), sqrt( + 4 * L ** 2 * t.sin_t0_sq - 4 * L ** 2 * (L ** 5 * t.sin_t0 * sin(T_0 + arcsin(a1 / L)) * sin( + T_0 + arcsin(a2 / L)) ** 3 - L ** 5 * t.sin_t0 * sin(T_0 + arcsin(a1 / L)) * sin( + T_0 + arcsin(a2 / L)) - L ** 5 * t.sin_t0 * sin(T_0 + arcsin(a2 / L)) ** 2 + L ** 5 * sin( + T_0) - L * sqrt(2 * L ** 8 * t.sin_t0_sq * sin(T_0 + arcsin(a1 / L)) ** 3 * sin( + T_0 + arcsin(a2 / L)) ** 3 - 2 * L ** 8 * t.sin_t0_sq * sin( + T_0 + arcsin(a1 / L)) ** 3 * sin(T_0 + arcsin(a2 / L)) - 2 * L ** 8 * t.sin_t0_sq * sin( + T_0 + arcsin(a1 / L)) ** 2 * sin(T_0 + arcsin(a2 / L)) ** 2 + 2 * L ** 8 * sin( + T_0) ** 2 * sin(T_0 + arcsin(a1 / L)) ** 2 - 2 * L ** 8 * t.sin_t0_sq * sin( + T_0 + arcsin(a1 / L)) * sin(T_0 + arcsin(a2 / L)) ** 3 + 2 * L ** 8 * t.sin_t0_sq * sin( + T_0 + arcsin(a1 / L)) * sin(T_0 + arcsin(a2 / L)) + 2 * L ** 8 * t.sin_t0_sq * sin( + T_0 + arcsin(a2 / L)) ** 2 - 2 * L ** 8 * t.sin_t0_sq - L ** 8 * sin( + T_0 + arcsin(a1 / L)) ** 4 * sin(T_0 + arcsin(a2 / L)) ** 4 + L ** 8 * sin( + T_0 + arcsin(a1 / L)) ** 4 * sin(T_0 + arcsin(a2 / L)) ** 2 + L ** 8 * sin( + T_0 + arcsin(a1 / L)) ** 2 * sin(T_0 + arcsin(a2 / L)) ** 4 - L ** 8 * sin( + T_0 + arcsin(a1 / L)) ** 2 - L ** 8 * sin(T_0 + arcsin(a2 / L)) ** 2 + L ** 8) * sin( + T_0 + arcsin(a2 / L))) ** 2 * t.sin_t0_sq / ( + (-L ** 2 * sin(T_0 + arcsin(a2 / L)) ** 2 + L ** 2) * ( + -L ** 4 * sin(T_0 + arcsin(a1 / L)) ** 2 * sin( + T_0 + arcsin(a2 / L)) ** 2 + L ** 4) ** 2) - 4 * L ** 2 * ( + L ** 5 * t.sin_t0 * sin(T_0 + arcsin(a1 / L)) ** 3 * sin( + T_0 + arcsin(a2 / L)) - L ** 5 * t.sin_t0 * sin( + T_0 + arcsin(a1 / L)) ** 2 - L ** 5 * t.sin_t0 * sin(T_0 + arcsin(a1 / L)) * sin( + T_0 + arcsin(a2 / L)) + L ** 5 * t.sin_t0 - L * sqrt( + 2 * L ** 8 * t.sin_t0_sq * sin(T_0 + arcsin(a1 / L)) ** 3 * sin( + T_0 + arcsin(a2 / L)) ** 3 - 2 * L ** 8 * t.sin_t0_sq * sin( + T_0 + arcsin(a1 / L)) ** 3 * sin(T_0 + arcsin(a2 / L)) - 2 * L ** 8 * sin( + T_0) ** 2 * sin(T_0 + arcsin(a1 / L)) ** 2 * sin( + T_0 + arcsin(a2 / L)) ** 2 + 2 * L ** 8 * t.sin_t0_sq * sin( + T_0 + arcsin(a1 / L)) ** 2 - 2 * L ** 8 * t.sin_t0_sq * sin( + T_0 + arcsin(a1 / L)) * sin(T_0 + arcsin(a2 / L)) ** 3 + 2 * L ** 8 * sin( + T_0) ** 2 * sin(T_0 + arcsin(a1 / L)) * sin(T_0 + arcsin(a2 / L)) + 2 * L ** 8 * sin( + T_0) ** 2 * sin(T_0 + arcsin(a2 / L)) ** 2 - 2 * L ** 8 * t.sin_t0_sq - L ** 8 * sin( + T_0 + arcsin(a1 / L)) ** 4 * sin(T_0 + arcsin(a2 / L)) ** 4 + L ** 8 * sin( + T_0 + arcsin(a1 / L)) ** 4 * sin(T_0 + arcsin(a2 / L)) ** 2 + L ** 8 * sin( + T_0 + arcsin(a1 / L)) ** 2 * sin(T_0 + arcsin(a2 / L)) ** 4 - L ** 8 * sin( + T_0 + arcsin(a1 / L)) ** 2 - L ** 8 * sin(T_0 + arcsin(a2 / L)) ** 2 + L ** 8) * sin( + T_0 + arcsin(a1 / L))) ** 2 * t.sin_t0_sq / ( + (-L ** 2 * sin(T_0 + arcsin(a1 / L)) ** 2 + L ** 2) * ( + -L ** 4 * sin(T_0 + arcsin(a1 / L)) ** 2 * sin( + T_0 + arcsin(a2 / L)) ** 2 + L ** 4) ** 2)) * ( + L ** 5 * t.sin_t0 * sin(T_0 + arcsin(a1 / L)) ** 3 * sin( + T_0 + arcsin(a2 / L)) - L ** 5 * t.sin_t0 * sin( + T_0 + arcsin(a1 / L)) ** 2 - L ** 5 * t.sin_t0 * sin( + T_0 + arcsin(a1 / L)) * sin(T_0 + arcsin(a2 / L)) + L ** 5 * sin( + T_0) - L * sqrt( + 2 * L ** 8 * t.sin_t0_sq * sin(T_0 + arcsin(a1 / L)) ** 3 * sin( + T_0 + arcsin(a2 / L)) ** 3 - 2 * L ** 8 * t.sin_t0_sq * sin( + T_0 + arcsin(a1 / L)) ** 3 * sin(T_0 + arcsin(a2 / L)) - 2 * L ** 8 * sin( + T_0) ** 2 * sin(T_0 + arcsin(a1 / L)) ** 2 * sin( + T_0 + arcsin(a2 / L)) ** 2 + 2 * L ** 8 * t.sin_t0_sq * sin( + T_0 + arcsin(a1 / L)) ** 2 - 2 * L ** 8 * t.sin_t0_sq * sin( + T_0 + arcsin(a1 / L)) * sin(T_0 + arcsin(a2 / L)) ** 3 + 2 * L ** 8 * sin( + T_0) ** 2 * sin(T_0 + arcsin(a1 / L)) * sin( + T_0 + arcsin(a2 / L)) + 2 * L ** 8 * t.sin_t0_sq * sin( + T_0 + arcsin(a2 / L)) ** 2 - 2 * L ** 8 * t.sin_t0_sq - L ** 8 * sin( + T_0 + arcsin(a1 / L)) ** 4 * sin( + T_0 + arcsin(a2 / L)) ** 4 + L ** 8 * sin( + T_0 + arcsin(a1 / L)) ** 4 * sin( + T_0 + arcsin(a2 / L)) ** 2 + L ** 8 * sin( + T_0 + arcsin(a1 / L)) ** 2 * sin( + T_0 + arcsin(a2 / L)) ** 4 - L ** 8 * sin( + T_0 + arcsin(a1 / L)) ** 2 - L ** 8 * sin( + T_0 + arcsin(a2 / L)) ** 2 + L ** 8) * sin(T_0 + arcsin(a1 / L))) / ( + L * sqrt(-L ** 2 * sin(T_0 + arcsin(a1 / L)) ** 2 + L ** 2) * ( + -L ** 4 * sin(T_0 + arcsin(a1 / L)) ** 2 * sin( + T_0 + arcsin(a2 / L)) ** 2 + L ** 4) * t.sin_t0)) + + +def fk(P1_z, P2_z, L, T_0): + """ + From: + https://colab.research.google.com/drive/11faUc8pS1yWxFrnmt05VqpDsqOwEi_dg#scrollTo=za3fZw9Rq5d9&line=1&uniqifier=1 + """ + t = CommonTerms(L=L, T_0=T_0) + + PE_x = 2 * L * (L ** 5 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 - L ** 3 * P2_z ** 2 * t.sin_t0 + L * P1_z * P2_z ** 3 * t.sin_t0 - P2_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * sin( + T_0) ** 2 - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * sin( + T_0) ** 2 - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * sin( + T_0) ** 2 - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * sin( + T_0) ** 2 + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * sin( + T_0) ** 2 + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) * t.sin_t0 / ( + sqrt(L ** 2 - P2_z ** 2) * (L ** 4 - P1_z ** 2 * P2_z ** 2)) + PE_y = 2 * L * (L ** 5 * t.sin_t0 - L ** 3 * P1_z ** 2 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 + L * P1_z ** 3 * P2_z * t.sin_t0 - P1_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * sin( + T_0) ** 2 - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * sin( + T_0) ** 2 - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * sin( + T_0) ** 2 - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * sin( + T_0) ** 2 + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * sin( + T_0) ** 2 + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) * t.sin_t0 / ( + sqrt(L ** 2 - P1_z ** 2) * (L ** 4 - P1_z ** 2 * P2_z ** 2)) + PE_z = 2 * L * (L * (L ** 4 - P1_z ** 2 * P2_z ** 2) * (P1_z + P2_z) * t.sin_t0 + (L ** 2 + P1_z * P2_z) * sqrt( + L ** 2 * (L ** 2 * P1_z + L ** 2 * P2_z - P1_z ** 2 * P2_z - P1_z * P2_z ** 2) ** 2 * t.sin_t0_sq + ( + -L ** 4 + P1_z ** 2 * P2_z ** 2) * (-2 * L ** 4 * t.cos_t0_sq + L ** 4 + L ** 2 * P1_z ** 2 * cos( + T_0) ** 2 + L ** 2 * P2_z ** 2 * t.cos_t0_sq - P1_z ** 2 * P2_z ** 2))) * t.sin_t0 / ( + (L ** 2 + P1_z * P2_z) * (L ** 4 - P1_z ** 2 * P2_z ** 2)) + + return np.array([PE_x, PE_y, PE_z]) + + +def fk_ori(PE_x, PE_y, L, T_0): + """ + From: + https://colab.research.google.com/drive/11faUc8pS1yWxFrnmt05VqpDsqOwEi_dg#scrollTo=aNSv-3Ftv3ps&line=2&uniqifier=1 + """ + t = CommonTerms(L=L, T_0=T_0) + + # @title Orientation vectors + exx = 1 - PE_x ** 2 / (2 * L ** 2 * t.sin_t0_sq) + exy = -PE_x * PE_y / (2 * L ** 2 * t.sin_t0_sq) + exz = -PE_x * sqrt(4 * L ** 2 * t.sin_t0_sq - PE_x ** 2 - PE_y ** 2) / (2 * L ** 2 * t.sin_t0_sq) + + eyx = -PE_x * PE_y / (2 * L ** 2 * t.sin_t0_sq) + eyy = 1 - PE_y ** 2 / (2 * L ** 2 * t.sin_t0_sq) + eyz = -PE_y * sqrt(4 * L ** 2 * t.sin_t0_sq - PE_x ** 2 - PE_y ** 2) / (2 * L ** 2 * t.sin_t0_sq) + + ezx = PE_x * sqrt(4 * L ** 2 * t.sin_t0_sq - PE_x ** 2 - PE_y ** 2) / (2 * L ** 2 * t.sin_t0_sq) + ezy = PE_y * sqrt(4 * L ** 2 * t.sin_t0_sq - PE_x ** 2 - PE_y ** 2) / (2 * L ** 2 * t.sin_t0_sq) + ezz = (2 * L ** 2 - PE_x ** 2 / t.sin_t0_sq - PE_y ** 2 / t.sin_t0_sq) / (2 * L ** 2) + + + # @markdown for base change from Wrist to Base generate matrix from base vectors + # https://de.wikipedia.org/wiki/Basiswechsel_(Vektorraum) + r_wrist_to_base = np.array( + [[exx, eyx, ezx], + [exy, eyy, ezy], + [exz, eyz, ezz]] + ) + print(f"r_wrist_to_base:\n{np.round(r_wrist_to_base, 3)}") + + # @markdown since the mechanism is symmetric to the middle just z axis is inverted for Base to wrist + r_base_to_wrist = np.array( + [[ exx, eyx, ezx], + [ exy, eyy, ezy], + [-exz, -eyz, -ezz]] + ) + print(f"r_base_to_wrist:\n{np.round(r_base_to_wrist, 3)}") + + return r_wrist_to_base + + + +def jacobian(P1_z, P2_z, L, T_0): + t = CommonTerms(L=L, T_0=T_0) + + jac = np.zeros(6) + jac[0] = [4 * L * P1_z * P2_z ** 2 * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 - L ** 3 * P2_z ** 2 * t.sin_t0 + L * P1_z * P2_z ** 3 * t.sin_t0 - P2_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) * t.sin_t0 / ( + sqrt(L ** 2 - P2_z ** 2) * (L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2) + 2 * L * ( + -L ** 3 * P2_z * t.sin_t0 + L * P2_z ** 3 * t.sin_t0 - P2_z * ( + 2 * L ** 6 * P1_z * t.sin_t0_sq - L ** 6 * P1_z + L ** 6 * P2_z * t.sin_t0_sq - 3 * L ** 4 * P1_z ** 2 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 2 * t.sin_t0_sq - L ** 4 * P2_z ** 3 * t.sin_t0_sq + 2 * L ** 2 * P1_z ** 3 * P2_z ** 2 + 3 * L ** 2 * P1_z ** 2 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z * P2_z ** 4 - 2 * P1_z ** 3 * P2_z ** 4) / sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) * t.sin_t0 / ( + sqrt(L ** 2 - P2_z ** 2) * (L ** 4 - P1_z ** 2 * P2_z ** 2)), 4 * L * P1_z ** 2 * P2_z * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 - L ** 3 * P2_z ** 2 * t.sin_t0 + L * P1_z * P2_z ** 3 * t.sin_t0 - P2_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) * t.sin_t0 / ( + sqrt(L ** 2 - P2_z ** 2) * (L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2) + 2 * L * P2_z * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 - L ** 3 * P2_z ** 2 * t.sin_t0 + L * P1_z * P2_z ** 3 * t.sin_t0 - P2_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) * t.sin_t0 / ( + (L ** 2 - P2_z ** 2) ** (3 / 2) * (L ** 4 - P1_z ** 2 * P2_z ** 2)) + 2 * L * ( + -L ** 3 * P1_z * t.sin_t0 - 2 * L ** 3 * P2_z * t.sin_t0 + 3 * L * P1_z * P2_z ** 2 * t.sin_t0 - P2_z * ( + L ** 6 * P1_z * t.sin_t0_sq + 2 * L ** 6 * P2_z * t.sin_t0_sq - L ** 6 * P2_z - L ** 4 * P1_z ** 3 * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z * t.sin_t0_sq - 3 * L ** 4 * P1_z * P2_z ** 2 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z + 3 * L ** 2 * P1_z ** 3 * P2_z ** 2 * t.sin_t0_sq + 2 * L ** 2 * P1_z ** 2 * P2_z ** 3 - 2 * P1_z ** 4 * P2_z ** 3) / sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4) - sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) * t.sin_t0 / ( + sqrt(L ** 2 - P2_z ** 2) * (L ** 4 - P1_z ** 2 * P2_z ** 2))] + jac[1] = [4 * L * P1_z * P2_z ** 2 * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z ** 2 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 + L * P1_z ** 3 * P2_z * t.sin_t0 - P1_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) * t.sin_t0 / ( + sqrt(L ** 2 - P1_z ** 2) * (L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2) + 2 * L * P1_z * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z ** 2 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 + L * P1_z ** 3 * P2_z * t.sin_t0 - P1_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) * t.sin_t0 / ( + (L ** 2 - P1_z ** 2) ** (3 / 2) * (L ** 4 - P1_z ** 2 * P2_z ** 2)) + 2 * L * ( + -2 * L ** 3 * P1_z * t.sin_t0 - L ** 3 * P2_z * t.sin_t0 + 3 * L * P1_z ** 2 * P2_z * t.sin_t0 - P1_z * ( + 2 * L ** 6 * P1_z * t.sin_t0_sq - L ** 6 * P1_z + L ** 6 * P2_z * t.sin_t0_sq - 3 * L ** 4 * P1_z ** 2 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 2 * t.sin_t0_sq - L ** 4 * P2_z ** 3 * t.sin_t0_sq + 2 * L ** 2 * P1_z ** 3 * P2_z ** 2 + 3 * L ** 2 * P1_z ** 2 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z * P2_z ** 4 - 2 * P1_z ** 3 * P2_z ** 4) / sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4) - sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) * t.sin_t0 / ( + sqrt(L ** 2 - P1_z ** 2) * (L ** 4 - P1_z ** 2 * P2_z ** 2)), 4 * L * P1_z ** 2 * P2_z * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z ** 2 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 + L * P1_z ** 3 * P2_z * t.sin_t0 - P1_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) * t.sin_t0 / ( + sqrt(L ** 2 - P1_z ** 2) * (L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2) + 2 * L * ( + -L ** 3 * P1_z * t.sin_t0 + L * P1_z ** 3 * t.sin_t0 - P1_z * ( + L ** 6 * P1_z * t.sin_t0_sq + 2 * L ** 6 * P2_z * t.sin_t0_sq - L ** 6 * P2_z - L ** 4 * P1_z ** 3 * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z * t.sin_t0_sq - 3 * L ** 4 * P1_z * P2_z ** 2 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z + 3 * L ** 2 * P1_z ** 3 * P2_z ** 2 * t.sin_t0_sq + 2 * L ** 2 * P1_z ** 2 * P2_z ** 3 - 2 * P1_z ** 4 * P2_z ** 3) / sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) * t.sin_t0 / ( + sqrt(L ** 2 - P1_z ** 2) * (L ** 4 - P1_z ** 2 * P2_z ** 2))] + jac[2] = [4 * L * P1_z * P2_z ** 2 * ( + L * (L ** 4 - P1_z ** 2 * P2_z ** 2) * (P1_z + P2_z) * t.sin_t0 + (L ** 2 + P1_z * P2_z) * sqrt( + L ** 2 * (L ** 2 * P1_z + L ** 2 * P2_z - P1_z ** 2 * P2_z - P1_z * P2_z ** 2) ** 2 * t.sin_t0_sq + ( + -L ** 4 + P1_z ** 2 * P2_z ** 2) * ( + -2 * L ** 4 * t.cos_t0_sq + L ** 4 + L ** 2 * P1_z ** 2 * t.cos_t0_sq + L ** 2 * P2_z ** 2 * t.cos_t0_sq - P1_z ** 2 * P2_z ** 2))) * t.sin_t0 / ( + (L ** 2 + P1_z * P2_z) * (L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2) - 2 * L * P2_z * ( + L * (L ** 4 - P1_z ** 2 * P2_z ** 2) * (P1_z + P2_z) * t.sin_t0 + (L ** 2 + P1_z * P2_z) * sqrt( + L ** 2 * (L ** 2 * P1_z + L ** 2 * P2_z - P1_z ** 2 * P2_z - P1_z * P2_z ** 2) ** 2 * t.sin_t0_sq + ( + -L ** 4 + P1_z ** 2 * P2_z ** 2) * ( + -2 * L ** 4 * t.cos_t0_sq + L ** 4 + L ** 2 * P1_z ** 2 * t.cos_t0_sq + L ** 2 * P2_z ** 2 * t.cos_t0_sq - P1_z ** 2 * P2_z ** 2))) * t.sin_t0 / ( + (L ** 2 + P1_z * P2_z) ** 2 * (L ** 4 - P1_z ** 2 * P2_z ** 2)) + 2 * L * ( + -2 * L * P1_z * P2_z ** 2 * (P1_z + P2_z) * t.sin_t0 + L * ( + L ** 4 - P1_z ** 2 * P2_z ** 2) * t.sin_t0 + P2_z * sqrt( + L ** 2 * (L ** 2 * P1_z + L ** 2 * P2_z - P1_z ** 2 * P2_z - P1_z * P2_z ** 2) ** 2 * t.sin_t0_sq + ( + -L ** 4 + P1_z ** 2 * P2_z ** 2) * ( + -2 * L ** 4 * t.cos_t0_sq + L ** 4 + L ** 2 * P1_z ** 2 * t.cos_t0_sq + L ** 2 * P2_z ** 2 * t.cos_t0_sq - P1_z ** 2 * P2_z ** 2)) + ( + L ** 2 + P1_z * P2_z) * (L ** 2 * (2 * L ** 2 - 4 * P1_z * P2_z - 2 * P2_z ** 2) * ( + L ** 2 * P1_z + L ** 2 * P2_z - P1_z ** 2 * P2_z - P1_z * P2_z ** 2) * t.sin_t0_sq / 2 + P1_z * P2_z ** 2 * ( + -2 * L ** 4 * t.cos_t0_sq + L ** 4 + L ** 2 * P1_z ** 2 * t.cos_t0_sq + L ** 2 * P2_z ** 2 * t.cos_t0_sq - P1_z ** 2 * P2_z ** 2) + ( + -L ** 4 + P1_z ** 2 * P2_z ** 2) * ( + 2 * L ** 2 * P1_z * t.cos_t0_sq - 2 * P1_z * P2_z ** 2) / 2) / sqrt( + L ** 2 * (L ** 2 * P1_z + L ** 2 * P2_z - P1_z ** 2 * P2_z - P1_z * P2_z ** 2) ** 2 * t.sin_t0_sq + ( + -L ** 4 + P1_z ** 2 * P2_z ** 2) * ( + -2 * L ** 4 * t.cos_t0_sq + L ** 4 + L ** 2 * P1_z ** 2 * t.cos_t0_sq + L ** 2 * P2_z ** 2 * t.cos_t0_sq - P1_z ** 2 * P2_z ** 2))) * t.sin_t0 / ( + (L ** 2 + P1_z * P2_z) * (L ** 4 - P1_z ** 2 * P2_z ** 2)), 4 * L * P1_z ** 2 * P2_z * ( + L * (L ** 4 - P1_z ** 2 * P2_z ** 2) * (P1_z + P2_z) * t.sin_t0 + (L ** 2 + P1_z * P2_z) * sqrt( + L ** 2 * (L ** 2 * P1_z + L ** 2 * P2_z - P1_z ** 2 * P2_z - P1_z * P2_z ** 2) ** 2 * t.sin_t0_sq + ( + -L ** 4 + P1_z ** 2 * P2_z ** 2) * ( + -2 * L ** 4 * t.cos_t0_sq + L ** 4 + L ** 2 * P1_z ** 2 * t.cos_t0_sq + L ** 2 * P2_z ** 2 * t.cos_t0_sq - P1_z ** 2 * P2_z ** 2))) * t.sin_t0 / ( + (L ** 2 + P1_z * P2_z) * (L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2) - 2 * L * P1_z * ( + L * (L ** 4 - P1_z ** 2 * P2_z ** 2) * (P1_z + P2_z) * t.sin_t0 + (L ** 2 + P1_z * P2_z) * sqrt( + L ** 2 * (L ** 2 * P1_z + L ** 2 * P2_z - P1_z ** 2 * P2_z - P1_z * P2_z ** 2) ** 2 * t.sin_t0_sq + ( + -L ** 4 + P1_z ** 2 * P2_z ** 2) * ( + -2 * L ** 4 * t.cos_t0_sq + L ** 4 + L ** 2 * P1_z ** 2 * t.cos_t0_sq + L ** 2 * P2_z ** 2 * t.cos_t0_sq - P1_z ** 2 * P2_z ** 2))) * t.sin_t0 / ( + (L ** 2 + P1_z * P2_z) ** 2 * (L ** 4 - P1_z ** 2 * P2_z ** 2)) + 2 * L * ( + -2 * L * P1_z ** 2 * P2_z * (P1_z + P2_z) * t.sin_t0 + L * ( + L ** 4 - P1_z ** 2 * P2_z ** 2) * t.sin_t0 + P1_z * sqrt( + L ** 2 * (L ** 2 * P1_z + L ** 2 * P2_z - P1_z ** 2 * P2_z - P1_z * P2_z ** 2) ** 2 * t.sin_t0_sq + ( + -L ** 4 + P1_z ** 2 * P2_z ** 2) * ( + -2 * L ** 4 * t.cos_t0_sq + L ** 4 + L ** 2 * P1_z ** 2 * t.cos_t0_sq + L ** 2 * P2_z ** 2 * t.cos_t0_sq - P1_z ** 2 * P2_z ** 2)) + ( + L ** 2 + P1_z * P2_z) * (L ** 2 * (2 * L ** 2 - 2 * P1_z ** 2 - 4 * P1_z * P2_z) * ( + L ** 2 * P1_z + L ** 2 * P2_z - P1_z ** 2 * P2_z - P1_z * P2_z ** 2) * t.sin_t0_sq / 2 + P1_z ** 2 * P2_z * ( + -2 * L ** 4 * t.cos_t0_sq + L ** 4 + L ** 2 * P1_z ** 2 * t.cos_t0_sq + L ** 2 * P2_z ** 2 * t.cos_t0_sq - P1_z ** 2 * P2_z ** 2) + ( + -L ** 4 + P1_z ** 2 * P2_z ** 2) * ( + 2 * L ** 2 * P2_z * t.cos_t0_sq - 2 * P1_z ** 2 * P2_z) / 2) / sqrt( + L ** 2 * (L ** 2 * P1_z + L ** 2 * P2_z - P1_z ** 2 * P2_z - P1_z * P2_z ** 2) ** 2 * t.sin_t0_sq + ( + -L ** 4 + P1_z ** 2 * P2_z ** 2) * ( + -2 * L ** 4 * t.cos_t0_sq + L ** 4 + L ** 2 * P1_z ** 2 * t.cos_t0_sq + L ** 2 * P2_z ** 2 * t.cos_t0_sq - P1_z ** 2 * P2_z ** 2))) * t.sin_t0 / ( + (L ** 2 + P1_z * P2_z) * (L ** 4 - P1_z ** 2 * P2_z ** 2))] + jac[3] = [ + + -(2 * L ** 2 - 4 * L ** 2 * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 - L ** 3 * P2_z ** 2 * t.sin_t0 + L * P1_z * P2_z ** 3 * t.sin_t0 - P2_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 / ( + (L ** 2 - P2_z ** 2) * (L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2) - 4 * L ** 2 * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z ** 2 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 + L * P1_z ** 3 * P2_z * t.sin_t0 - P1_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 / ( + (L ** 2 - P1_z ** 2) * (L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2)) * (2 * P1_z * P2_z ** 2 * sqrt( + 4 * L ** 2 * t.sin_t0_sq - 4 * L ** 2 * (L ** 5 * t.sin_t0 - L ** 3 * P1_z * P2_z * sin( + T_0) - L ** 3 * P2_z ** 2 * t.sin_t0 + L * P1_z * P2_z ** 3 * t.sin_t0 - P2_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 * t.sin_t0_sq / ( + (L ** 2 - P2_z ** 2) * (L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2) - 4 * L ** 2 * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z ** 2 * sin( + T_0) - L ** 3 * P1_z * P2_z * t.sin_t0 + L * P1_z ** 3 * P2_z * t.sin_t0 - P1_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 * t.sin_t0_sq / ( + (L ** 2 - P1_z ** 2) * (L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2)) * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z ** 2 * sin( + T_0) - L ** 3 * P1_z * P2_z * sin( + T_0) + L * P1_z ** 3 * P2_z * t.sin_t0 - P1_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) / ( + L * sqrt( + L ** 2 - P1_z ** 2) * ( + L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2 * t.sin_t0) + P1_z * sqrt( + 4 * L ** 2 * t.sin_t0_sq - 4 * L ** 2 * (L ** 5 * t.sin_t0 - L ** 3 * P1_z * P2_z * sin( + T_0) - L ** 3 * P2_z ** 2 * t.sin_t0 + L * P1_z * P2_z ** 3 * t.sin_t0 - P2_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 * t.sin_t0_sq / ( + (L ** 2 - P2_z ** 2) * (L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2) - 4 * L ** 2 * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z ** 2 * sin( + T_0) - L ** 3 * P1_z * P2_z * t.sin_t0 + L * P1_z ** 3 * P2_z * t.sin_t0 - P1_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 * t.sin_t0_sq / ( + (L ** 2 - P1_z ** 2) * (L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2)) * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z ** 2 * sin( + T_0) - L ** 3 * P1_z * P2_z * sin( + T_0) + L * P1_z ** 3 * P2_z * t.sin_t0 - P1_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) / ( + L * ( + L ** 2 - P1_z ** 2) ** ( + 3 / 2) * ( + L ** 4 - P1_z ** 2 * P2_z ** 2) * t.sin_t0) + sqrt( + 4 * L ** 2 * t.sin_t0_sq - 4 * L ** 2 * (L ** 5 * t.sin_t0 - L ** 3 * P1_z * P2_z * sin( + T_0) - L ** 3 * P2_z ** 2 * t.sin_t0 + L * P1_z * P2_z ** 3 * t.sin_t0 - P2_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 * t.sin_t0_sq / ( + (L ** 2 - P2_z ** 2) * (L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2) - 4 * L ** 2 * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z ** 2 * sin( + T_0) - L ** 3 * P1_z * P2_z * t.sin_t0 + L * P1_z ** 3 * P2_z * t.sin_t0 - P1_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 * t.sin_t0_sq / ( + (L ** 2 - P1_z ** 2) * (L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2)) * ( + -2 * L ** 3 * P1_z * t.sin_t0 - L ** 3 * P2_z * sin( + T_0) + 3 * L * P1_z ** 2 * P2_z * sin( + T_0) - P1_z * ( + 2 * L ** 6 * P1_z * t.sin_t0_sq - L ** 6 * P1_z + L ** 6 * P2_z * t.sin_t0_sq - 3 * L ** 4 * P1_z ** 2 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 2 * t.sin_t0_sq - L ** 4 * P2_z ** 3 * t.sin_t0_sq + 2 * L ** 2 * P1_z ** 3 * P2_z ** 2 + 3 * L ** 2 * P1_z ** 2 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z * P2_z ** 4 - 2 * P1_z ** 3 * P2_z ** 4) / sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4) - sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) / ( + L * sqrt( + L ** 2 - P1_z ** 2) * ( + L ** 4 - P1_z ** 2 * P2_z ** 2) * t.sin_t0) + ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z ** 2 * sin( + T_0) - L ** 3 * P1_z * P2_z * sin( + T_0) + L * P1_z ** 3 * P2_z * t.sin_t0 - P1_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) * ( + -8 * L ** 2 * P1_z * P2_z ** 2 * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 - L ** 3 * P2_z ** 2 * t.sin_t0 + L * P1_z * P2_z ** 3 * t.sin_t0 - P2_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 * t.sin_t0_sq / ( + ( + L ** 2 - P2_z ** 2) * ( + L ** 4 - P1_z ** 2 * P2_z ** 2) ** 3) - 8 * L ** 2 * P1_z * P2_z ** 2 * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z ** 2 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 + L * P1_z ** 3 * P2_z * t.sin_t0 - P1_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 * t.sin_t0_sq / ( + ( + L ** 2 - P1_z ** 2) * ( + L ** 4 - P1_z ** 2 * P2_z ** 2) ** 3) - 4 * L ** 2 * P1_z * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z ** 2 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 + L * P1_z ** 3 * P2_z * t.sin_t0 - P1_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 * t.sin_t0_sq / ( + ( + L ** 2 - P1_z ** 2) ** 2 * ( + L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2) - 2 * L ** 2 * ( + -2 * L ** 3 * P2_z * t.sin_t0 + 2 * L * P2_z ** 3 * t.sin_t0 - 2 * P2_z * ( + 2 * L ** 6 * P1_z * t.sin_t0_sq - L ** 6 * P1_z + L ** 6 * P2_z * t.sin_t0_sq - 3 * L ** 4 * P1_z ** 2 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 2 * t.sin_t0_sq - L ** 4 * P2_z ** 3 * t.sin_t0_sq + 2 * L ** 2 * P1_z ** 3 * P2_z ** 2 + 3 * L ** 2 * P1_z ** 2 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z * P2_z ** 4 - 2 * P1_z ** 3 * P2_z ** 4) / sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 - L ** 3 * P2_z ** 2 * t.sin_t0 + L * P1_z * P2_z ** 3 * t.sin_t0 - P2_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) * t.sin_t0_sq / ( + ( + L ** 2 - P2_z ** 2) * ( + L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2) - 2 * L ** 2 * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z ** 2 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 + L * P1_z ** 3 * P2_z * t.sin_t0 - P1_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) * ( + -4 * L ** 3 * P1_z * t.sin_t0 - 2 * L ** 3 * P2_z * t.sin_t0 + 6 * L * P1_z ** 2 * P2_z * t.sin_t0 - 2 * P1_z * ( + 2 * L ** 6 * P1_z * t.sin_t0_sq - L ** 6 * P1_z + L ** 6 * P2_z * t.sin_t0_sq - 3 * L ** 4 * P1_z ** 2 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 2 * t.sin_t0_sq - L ** 4 * P2_z ** 3 * t.sin_t0_sq + 2 * L ** 2 * P1_z ** 3 * P2_z ** 2 + 3 * L ** 2 * P1_z ** 2 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z * P2_z ** 4 - 2 * P1_z ** 3 * P2_z ** 4) / sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4) - 2 * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) * t.sin_t0_sq / ( + ( + L ** 2 - P1_z ** 2) * ( + L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2)) / ( + L * sqrt( + L ** 2 - P1_z ** 2) * ( + L ** 4 - P1_z ** 2 * P2_z ** 2) * sqrt( + 4 * L ** 2 * t.sin_t0_sq - 4 * L ** 2 * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 - L ** 3 * P2_z ** 2 * t.sin_t0 + L * P1_z * P2_z ** 3 * t.sin_t0 - P2_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 * t.sin_t0_sq / ( + (L ** 2 - P2_z ** 2) * ( + L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2) - 4 * L ** 2 * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z ** 2 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 + L * P1_z ** 3 * P2_z * t.sin_t0 - P1_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 * t.sin_t0_sq / ( + (L ** 2 - P1_z ** 2) * ( + L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2)) * t.sin_t0)) / ( + 2 * L ** 2 * ((4 * L ** 2 * t.sin_t0_sq - 4 * L ** 2 * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 - L ** 3 * P2_z ** 2 * t.sin_t0 + L * P1_z * P2_z ** 3 * t.sin_t0 - P2_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 * t.sin_t0_sq / ( + (L ** 2 - P2_z ** 2) * ( + L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2) - 4 * L ** 2 * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z ** 2 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 + L * P1_z ** 3 * P2_z * t.sin_t0 - P1_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 * t.sin_t0_sq / ( + (L ** 2 - P1_z ** 2) * (L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2)) * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z ** 2 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 + L * P1_z ** 3 * P2_z * t.sin_t0 - P1_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 / ( + L ** 2 * (L ** 2 - P1_z ** 2) * ( + L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2 * t.sin_t0_sq) + ( + 2 * L ** 2 - 4 * L ** 2 * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 - L ** 3 * P2_z ** 2 * t.sin_t0 + L * P1_z * P2_z ** 3 * t.sin_t0 - P2_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 / ( + (L ** 2 - P2_z ** 2) * ( + L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2) - 4 * L ** 2 * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z ** 2 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 + L * P1_z ** 3 * P2_z * t.sin_t0 - P1_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 / ( + (L ** 2 - P1_z ** 2) * ( + L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2)) ** 2 / (4 * L ** 4))) + sqrt( + 4 * L ** 2 * t.sin_t0_sq - 4 * L ** 2 * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 - L ** 3 * P2_z ** 2 * t.sin_t0 + L * P1_z * P2_z ** 3 * t.sin_t0 - P2_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 * t.sin_t0_sq / ( + (L ** 2 - P2_z ** 2) * (L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2) - 4 * L ** 2 * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z ** 2 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 + L * P1_z ** 3 * P2_z * t.sin_t0 - P1_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 * t.sin_t0_sq / ( + (L ** 2 - P1_z ** 2) * (L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2)) * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z ** 2 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 + L * P1_z ** 3 * P2_z * t.sin_t0 - P1_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) * ( + -16 * L ** 2 * P1_z * P2_z ** 2 * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 - L ** 3 * P2_z ** 2 * t.sin_t0 + L * P1_z * P2_z ** 3 * t.sin_t0 - P2_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 / ( + (L ** 2 - P2_z ** 2) * ( + L ** 4 - P1_z ** 2 * P2_z ** 2) ** 3) - 16 * L ** 2 * P1_z * P2_z ** 2 * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z ** 2 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 + L * P1_z ** 3 * P2_z * t.sin_t0 - P1_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 / ( + (L ** 2 - P1_z ** 2) * (L ** 4 - P1_z ** 2 * P2_z ** 2) ** 3) - 8 * L ** 2 * P1_z * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z ** 2 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 + L * P1_z ** 3 * P2_z * t.sin_t0 - P1_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 / ( + (L ** 2 - P1_z ** 2) ** 2 * (L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2) - 4 * L ** 2 * ( + -2 * L ** 3 * P2_z * t.sin_t0 + 2 * L * P2_z ** 3 * t.sin_t0 - 2 * P2_z * ( + 2 * L ** 6 * P1_z * t.sin_t0_sq - L ** 6 * P1_z + L ** 6 * P2_z * t.sin_t0_sq - 3 * L ** 4 * P1_z ** 2 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 2 * t.sin_t0_sq - L ** 4 * P2_z ** 3 * t.sin_t0_sq + 2 * L ** 2 * P1_z ** 3 * P2_z ** 2 + 3 * L ** 2 * P1_z ** 2 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z * P2_z ** 4 - 2 * P1_z ** 3 * P2_z ** 4) / sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 - L ** 3 * P2_z ** 2 * t.sin_t0 + L * P1_z * P2_z ** 3 * t.sin_t0 - P2_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) / ( + (L ** 2 - P2_z ** 2) * (L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2) - 4 * L ** 2 * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z ** 2 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 + L * P1_z ** 3 * P2_z * t.sin_t0 - P1_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) * ( + -4 * L ** 3 * P1_z * t.sin_t0 - 2 * L ** 3 * P2_z * t.sin_t0 + 6 * L * P1_z ** 2 * P2_z * t.sin_t0 - 2 * P1_z * ( + 2 * L ** 6 * P1_z * t.sin_t0_sq - L ** 6 * P1_z + L ** 6 * P2_z * t.sin_t0_sq - 3 * L ** 4 * P1_z ** 2 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 2 * t.sin_t0_sq - L ** 4 * P2_z ** 3 * t.sin_t0_sq + 2 * L ** 2 * P1_z ** 3 * P2_z ** 2 + 3 * L ** 2 * P1_z ** 2 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z * P2_z ** 4 - 2 * P1_z ** 3 * P2_z ** 4) / sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4) - 2 * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) / ( + (L ** 2 - P1_z ** 2) * (L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2)) / ( + 2 * L ** 3 * sqrt(L ** 2 - P1_z ** 2) * (L ** 4 - P1_z ** 2 * P2_z ** 2) * (( + 4 * L ** 2 * t.sin_t0_sq - 4 * L ** 2 * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 - L ** 3 * P2_z ** 2 * t.sin_t0 + L * P1_z * P2_z ** 3 * t.sin_t0 - P2_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 * t.sin_t0_sq / ( + ( + L ** 2 - P2_z ** 2) * ( + L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2) - 4 * L ** 2 * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z ** 2 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 + L * P1_z ** 3 * P2_z * t.sin_t0 - P1_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 * t.sin_t0_sq / ( + ( + L ** 2 - P1_z ** 2) * ( + L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2)) * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z ** 2 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 + L * P1_z ** 3 * P2_z * t.sin_t0 - P1_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 / ( + L ** 2 * ( + L ** 2 - P1_z ** 2) * ( + L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2 * t.sin_t0_sq) + ( + 2 * L ** 2 - 4 * L ** 2 * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 - L ** 3 * P2_z ** 2 * t.sin_t0 + L * P1_z * P2_z ** 3 * t.sin_t0 - P2_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 / ( + ( + L ** 2 - P2_z ** 2) * ( + L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2) - 4 * L ** 2 * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z ** 2 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 + L * P1_z ** 3 * P2_z * t.sin_t0 - P1_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 / ( + ( + L ** 2 - P1_z ** 2) * ( + L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2)) ** 2 / ( + 4 * L ** 4)) * t.sin_t0), + -(2 * L ** 2 - 4 * L ** 2 * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 - L ** 3 * P2_z ** 2 * t.sin_t0 + L * P1_z * P2_z ** 3 * t.sin_t0 - P2_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 / ( + (L ** 2 - P2_z ** 2) * (L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2) - 4 * L ** 2 * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z ** 2 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 + L * P1_z ** 3 * P2_z * t.sin_t0 - P1_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 / ( + (L ** 2 - P1_z ** 2) * (L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2)) * (2 * P1_z ** 2 * P2_z * sqrt( + 4 * L ** 2 * t.sin_t0_sq - 4 * L ** 2 * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 - L ** 3 * P2_z ** 2 * t.sin_t0 + L * P1_z * P2_z ** 3 * t.sin_t0 - P2_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 * t.sin_t0_sq / ( + (L ** 2 - P2_z ** 2) * (L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2) - 4 * L ** 2 * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z ** 2 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 + L * P1_z ** 3 * P2_z * t.sin_t0 - P1_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 * t.sin_t0_sq / ( + (L ** 2 - P1_z ** 2) * (L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2)) * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z ** 2 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 + L * P1_z ** 3 * P2_z * t.sin_t0 - P1_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) / ( + L * sqrt( + L ** 2 - P1_z ** 2) * ( + L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2 * t.sin_t0) + sqrt( + 4 * L ** 2 * t.sin_t0_sq - 4 * L ** 2 * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 - L ** 3 * P2_z ** 2 * t.sin_t0 + L * P1_z * P2_z ** 3 * t.sin_t0 - P2_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 * t.sin_t0_sq / ( + (L ** 2 - P2_z ** 2) * (L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2) - 4 * L ** 2 * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z ** 2 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 + L * P1_z ** 3 * P2_z * t.sin_t0 - P1_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 * t.sin_t0_sq / ( + (L ** 2 - P1_z ** 2) * (L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2)) * ( + -L ** 3 * P1_z * t.sin_t0 + L * P1_z ** 3 * t.sin_t0 - P1_z * ( + L ** 6 * P1_z * t.sin_t0_sq + 2 * L ** 6 * P2_z * t.sin_t0_sq - L ** 6 * P2_z - L ** 4 * P1_z ** 3 * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z * t.sin_t0_sq - 3 * L ** 4 * P1_z * P2_z ** 2 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z + 3 * L ** 2 * P1_z ** 3 * P2_z ** 2 * t.sin_t0_sq + 2 * L ** 2 * P1_z ** 2 * P2_z ** 3 - 2 * P1_z ** 4 * P2_z ** 3) / sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) / ( + L * sqrt( + L ** 2 - P1_z ** 2) * ( + L ** 4 - P1_z ** 2 * P2_z ** 2) * t.sin_t0) + ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z ** 2 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 + L * P1_z ** 3 * P2_z * t.sin_t0 - P1_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) * ( + -8 * L ** 2 * P1_z ** 2 * P2_z * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 - L ** 3 * P2_z ** 2 * t.sin_t0 + L * P1_z * P2_z ** 3 * t.sin_t0 - P2_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 * t.sin_t0_sq / ( + ( + L ** 2 - P2_z ** 2) * ( + L ** 4 - P1_z ** 2 * P2_z ** 2) ** 3) - 8 * L ** 2 * P1_z ** 2 * P2_z * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z ** 2 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 + L * P1_z ** 3 * P2_z * t.sin_t0 - P1_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 * t.sin_t0_sq / ( + ( + L ** 2 - P1_z ** 2) * ( + L ** 4 - P1_z ** 2 * P2_z ** 2) ** 3) - 4 * L ** 2 * P2_z * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 - L ** 3 * P2_z ** 2 * t.sin_t0 + L * P1_z * P2_z ** 3 * t.sin_t0 - P2_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 * t.sin_t0_sq / ( + ( + L ** 2 - P2_z ** 2) ** 2 * ( + L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2) - 2 * L ** 2 * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 - L ** 3 * P2_z ** 2 * t.sin_t0 + L * P1_z * P2_z ** 3 * t.sin_t0 - P2_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) * ( + -2 * L ** 3 * P1_z * t.sin_t0 - 4 * L ** 3 * P2_z * t.sin_t0 + 6 * L * P1_z * P2_z ** 2 * t.sin_t0 - 2 * P2_z * ( + L ** 6 * P1_z * t.sin_t0_sq + 2 * L ** 6 * P2_z * t.sin_t0_sq - L ** 6 * P2_z - L ** 4 * P1_z ** 3 * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z * t.sin_t0_sq - 3 * L ** 4 * P1_z * P2_z ** 2 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z + 3 * L ** 2 * P1_z ** 3 * P2_z ** 2 * t.sin_t0_sq + 2 * L ** 2 * P1_z ** 2 * P2_z ** 3 - 2 * P1_z ** 4 * P2_z ** 3) / sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4) - 2 * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) * t.sin_t0_sq / ( + ( + L ** 2 - P2_z ** 2) * ( + L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2) - 2 * L ** 2 * ( + -2 * L ** 3 * P1_z * t.sin_t0 + 2 * L * P1_z ** 3 * t.sin_t0 - 2 * P1_z * ( + L ** 6 * P1_z * t.sin_t0_sq + 2 * L ** 6 * P2_z * t.sin_t0_sq - L ** 6 * P2_z - L ** 4 * P1_z ** 3 * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z * t.sin_t0_sq - 3 * L ** 4 * P1_z * P2_z ** 2 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z + 3 * L ** 2 * P1_z ** 3 * P2_z ** 2 * t.sin_t0_sq + 2 * L ** 2 * P1_z ** 2 * P2_z ** 3 - 2 * P1_z ** 4 * P2_z ** 3) / sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z ** 2 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 + L * P1_z ** 3 * P2_z * t.sin_t0 - P1_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) * t.sin_t0_sq / ( + ( + L ** 2 - P1_z ** 2) * ( + L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2)) / ( + L * sqrt( + L ** 2 - P1_z ** 2) * ( + L ** 4 - P1_z ** 2 * P2_z ** 2) * sqrt( + 4 * L ** 2 * t.sin_t0_sq - 4 * L ** 2 * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 - L ** 3 * P2_z ** 2 * t.sin_t0 + L * P1_z * P2_z ** 3 * t.sin_t0 - P2_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 * t.sin_t0_sq / ( + (L ** 2 - P2_z ** 2) * ( + L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2) - 4 * L ** 2 * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z ** 2 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 + L * P1_z ** 3 * P2_z * t.sin_t0 - P1_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 * t.sin_t0_sq / ( + (L ** 2 - P1_z ** 2) * ( + L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2)) * t.sin_t0)) / ( + 2 * L ** 2 * ((4 * L ** 2 * t.sin_t0_sq - 4 * L ** 2 * (L ** 5 * t.sin_t0 - L ** 3 * P1_z * P2_z * sin( + T_0) - L ** 3 * P2_z ** 2 * t.sin_t0 + L * P1_z * P2_z ** 3 * t.sin_t0 - P2_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 * t.sin_t0_sq / ( + (L ** 2 - P2_z ** 2) * (L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2) - 4 * L ** 2 * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z ** 2 * sin( + T_0) - L ** 3 * P1_z * P2_z * t.sin_t0 + L * P1_z ** 3 * P2_z * sin( + T_0) - P1_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 * t.sin_t0_sq / ( + (L ** 2 - P1_z ** 2) * (L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2)) * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z ** 2 * sin( + T_0) - L ** 3 * P1_z * P2_z * t.sin_t0 + L * P1_z ** 3 * P2_z * sin( + T_0) - P1_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 / ( + L ** 2 * (L ** 2 - P1_z ** 2) * ( + L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2 * t.sin_t0_sq) + (2 * L ** 2 - 4 * L ** 2 * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z * P2_z * sin( + T_0) - L ** 3 * P2_z ** 2 * t.sin_t0 + L * P1_z * P2_z ** 3 * t.sin_t0 - P2_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 / ( + ( + L ** 2 - P2_z ** 2) * ( + L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2) - 4 * L ** 2 * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z ** 2 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 + L * P1_z ** 3 * P2_z * t.sin_t0 - P1_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 / ( + ( + L ** 2 - P1_z ** 2) * ( + L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2)) ** 2 / ( + 4 * L ** 4))) + sqrt(4 * L ** 2 * t.sin_t0_sq - 4 * L ** 2 * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 - L ** 3 * P2_z ** 2 * t.sin_t0 + L * P1_z * P2_z ** 3 * t.sin_t0 - P2_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 * t.sin_t0_sq / ( + (L ** 2 - P2_z ** 2) * ( + L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2) - 4 * L ** 2 * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z ** 2 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 + L * P1_z ** 3 * P2_z * t.sin_t0 - P1_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 * t.sin_t0_sq / ( + (L ** 2 - P1_z ** 2) * ( + L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2)) * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z ** 2 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 + L * P1_z ** 3 * P2_z * t.sin_t0 - P1_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) * ( + -16 * L ** 2 * P1_z ** 2 * P2_z * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 - L ** 3 * P2_z ** 2 * t.sin_t0 + L * P1_z * P2_z ** 3 * t.sin_t0 - P2_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 / ( + (L ** 2 - P2_z ** 2) * ( + L ** 4 - P1_z ** 2 * P2_z ** 2) ** 3) - 16 * L ** 2 * P1_z ** 2 * P2_z * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z ** 2 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 + L * P1_z ** 3 * P2_z * t.sin_t0 - P1_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 / ( + (L ** 2 - P1_z ** 2) * (L ** 4 - P1_z ** 2 * P2_z ** 2) ** 3) - 8 * L ** 2 * P2_z * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 - L ** 3 * P2_z ** 2 * t.sin_t0 + L * P1_z * P2_z ** 3 * t.sin_t0 - P2_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 / ( + (L ** 2 - P2_z ** 2) ** 2 * (L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2) - 4 * L ** 2 * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 - L ** 3 * P2_z ** 2 * t.sin_t0 + L * P1_z * P2_z ** 3 * t.sin_t0 - P2_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) * ( + -2 * L ** 3 * P1_z * t.sin_t0 - 4 * L ** 3 * P2_z * t.sin_t0 + 6 * L * P1_z * P2_z ** 2 * t.sin_t0 - 2 * P2_z * ( + L ** 6 * P1_z * t.sin_t0_sq + 2 * L ** 6 * P2_z * t.sin_t0_sq - L ** 6 * P2_z - L ** 4 * P1_z ** 3 * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z * t.sin_t0_sq - 3 * L ** 4 * P1_z * P2_z ** 2 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z + 3 * L ** 2 * P1_z ** 3 * P2_z ** 2 * t.sin_t0_sq + 2 * L ** 2 * P1_z ** 2 * P2_z ** 3 - 2 * P1_z ** 4 * P2_z ** 3) / sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4) - 2 * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) / ( + (L ** 2 - P2_z ** 2) * (L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2) - 4 * L ** 2 * ( + -2 * L ** 3 * P1_z * t.sin_t0 + 2 * L * P1_z ** 3 * t.sin_t0 - 2 * P1_z * ( + L ** 6 * P1_z * t.sin_t0_sq + 2 * L ** 6 * P2_z * t.sin_t0_sq - L ** 6 * P2_z - L ** 4 * P1_z ** 3 * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z * t.sin_t0_sq - 3 * L ** 4 * P1_z * P2_z ** 2 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z + 3 * L ** 2 * P1_z ** 3 * P2_z ** 2 * t.sin_t0_sq + 2 * L ** 2 * P1_z ** 2 * P2_z ** 3 - 2 * P1_z ** 4 * P2_z ** 3) / sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z ** 2 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 + L * P1_z ** 3 * P2_z * t.sin_t0 - P1_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) / ( + (L ** 2 - P1_z ** 2) * (L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2)) / ( + 2 * L ** 3 * sqrt(L ** 2 - P1_z ** 2) * (L ** 4 - P1_z ** 2 * P2_z ** 2) * (( + 4 * L ** 2 * t.sin_t0_sq - 4 * L ** 2 * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 - L ** 3 * P2_z ** 2 * t.sin_t0 + L * P1_z * P2_z ** 3 * t.sin_t0 - P2_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 * t.sin_t0_sq / ( + ( + L ** 2 - P2_z ** 2) * ( + L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2) - 4 * L ** 2 * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z ** 2 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 + L * P1_z ** 3 * P2_z * t.sin_t0 - P1_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 * t.sin_t0_sq / ( + ( + L ** 2 - P1_z ** 2) * ( + L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2)) * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z ** 2 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 + L * P1_z ** 3 * P2_z * t.sin_t0 - P1_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 / ( + L ** 2 * ( + L ** 2 - P1_z ** 2) * ( + L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2 * t.sin_t0_sq) + ( + 2 * L ** 2 - 4 * L ** 2 * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 - L ** 3 * P2_z ** 2 * t.sin_t0 + L * P1_z * P2_z ** 3 * t.sin_t0 - P2_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 / ( + ( + L ** 2 - P2_z ** 2) * ( + L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2) - 4 * L ** 2 * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z ** 2 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 + L * P1_z ** 3 * P2_z * t.sin_t0 - P1_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 / ( + ( + L ** 2 - P1_z ** 2) * ( + L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2)) ** 2 / ( + 4 * L ** 4)) * t.sin_t0) + + ] + jac[4] = [-(2 * P1_z * P2_z ** 2 * sqrt(4 * L ** 2 * t.sin_t0_sq - 4 * L ** 2 * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 - L ** 3 * P2_z ** 2 * t.sin_t0 + L * P1_z * P2_z ** 3 * t.sin_t0 - P2_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 * t.sin_t0_sq / ( + (L ** 2 - P2_z ** 2) * ( + L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2) - 4 * L ** 2 * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z ** 2 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 + L * P1_z ** 3 * P2_z * t.sin_t0 - P1_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 * t.sin_t0_sq / ( + (L ** 2 - P1_z ** 2) * (L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2)) * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 - L ** 3 * P2_z ** 2 * t.sin_t0 + L * P1_z * P2_z ** 3 * t.sin_t0 - P2_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) / ( + L * sqrt(L ** 2 - P2_z ** 2) * (L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2 * t.sin_t0) + sqrt( + 4 * L ** 2 * t.sin_t0_sq - 4 * L ** 2 * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 - L ** 3 * P2_z ** 2 * t.sin_t0 + L * P1_z * P2_z ** 3 * t.sin_t0 - P2_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 * t.sin_t0_sq / ( + (L ** 2 - P2_z ** 2) * (L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2) - 4 * L ** 2 * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z ** 2 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 + L * P1_z ** 3 * P2_z * t.sin_t0 - P1_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 * t.sin_t0_sq / ( + (L ** 2 - P1_z ** 2) * (L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2)) * ( + -L ** 3 * P2_z * t.sin_t0 + L * P2_z ** 3 * t.sin_t0 - P2_z * ( + 2 * L ** 6 * P1_z * t.sin_t0_sq - L ** 6 * P1_z + L ** 6 * P2_z * t.sin_t0_sq - 3 * L ** 4 * P1_z ** 2 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 2 * t.sin_t0_sq - L ** 4 * P2_z ** 3 * t.sin_t0_sq + 2 * L ** 2 * P1_z ** 3 * P2_z ** 2 + 3 * L ** 2 * P1_z ** 2 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z * P2_z ** 4 - 2 * P1_z ** 3 * P2_z ** 4) / sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) / ( + L * sqrt(L ** 2 - P2_z ** 2) * (L ** 4 - P1_z ** 2 * P2_z ** 2) * t.sin_t0) + ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 - L ** 3 * P2_z ** 2 * t.sin_t0 + L * P1_z * P2_z ** 3 * t.sin_t0 - P2_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) * ( + -8 * L ** 2 * P1_z * P2_z ** 2 * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 - L ** 3 * P2_z ** 2 * t.sin_t0 + L * P1_z * P2_z ** 3 * t.sin_t0 - P2_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 * t.sin_t0_sq / ( + (L ** 2 - P2_z ** 2) * ( + L ** 4 - P1_z ** 2 * P2_z ** 2) ** 3) - 8 * L ** 2 * P1_z * P2_z ** 2 * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z ** 2 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 + L * P1_z ** 3 * P2_z * t.sin_t0 - P1_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 * t.sin_t0_sq / ( + (L ** 2 - P1_z ** 2) * (L ** 4 - P1_z ** 2 * P2_z ** 2) ** 3) - 4 * L ** 2 * P1_z * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z ** 2 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 + L * P1_z ** 3 * P2_z * t.sin_t0 - P1_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 * t.sin_t0_sq / ( + (L ** 2 - P1_z ** 2) ** 2 * (L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2) - 2 * L ** 2 * ( + -2 * L ** 3 * P2_z * t.sin_t0 + 2 * L * P2_z ** 3 * t.sin_t0 - 2 * P2_z * ( + 2 * L ** 6 * P1_z * t.sin_t0_sq - L ** 6 * P1_z + L ** 6 * P2_z * t.sin_t0_sq - 3 * L ** 4 * P1_z ** 2 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 2 * t.sin_t0_sq - L ** 4 * P2_z ** 3 * t.sin_t0_sq + 2 * L ** 2 * P1_z ** 3 * P2_z ** 2 + 3 * L ** 2 * P1_z ** 2 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z * P2_z ** 4 - 2 * P1_z ** 3 * P2_z ** 4) / sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 - L ** 3 * P2_z ** 2 * t.sin_t0 + L * P1_z * P2_z ** 3 * t.sin_t0 - P2_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) * t.sin_t0_sq / ( + (L ** 2 - P2_z ** 2) * (L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2) - 2 * L ** 2 * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z ** 2 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 + L * P1_z ** 3 * P2_z * t.sin_t0 - P1_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) * ( + -4 * L ** 3 * P1_z * t.sin_t0 - 2 * L ** 3 * P2_z * t.sin_t0 + 6 * L * P1_z ** 2 * P2_z * t.sin_t0 - 2 * P1_z * ( + 2 * L ** 6 * P1_z * t.sin_t0_sq - L ** 6 * P1_z + L ** 6 * P2_z * t.sin_t0_sq - 3 * L ** 4 * P1_z ** 2 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 2 * t.sin_t0_sq - L ** 4 * P2_z ** 3 * t.sin_t0_sq + 2 * L ** 2 * P1_z ** 3 * P2_z ** 2 + 3 * L ** 2 * P1_z ** 2 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z * P2_z ** 4 - 2 * P1_z ** 3 * P2_z ** 4) / sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4) - 2 * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) * t.sin_t0_sq / ( + (L ** 2 - P1_z ** 2) * (L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2)) / ( + L * sqrt(L ** 2 - P2_z ** 2) * (L ** 4 - P1_z ** 2 * P2_z ** 2) * sqrt( + 4 * L ** 2 * t.sin_t0_sq - 4 * L ** 2 * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 - L ** 3 * P2_z ** 2 * t.sin_t0 + L * P1_z * P2_z ** 3 * t.sin_t0 - P2_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 * t.sin_t0_sq / ( + (L ** 2 - P2_z ** 2) * (L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2) - 4 * L ** 2 * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z ** 2 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 + L * P1_z ** 3 * P2_z * t.sin_t0 - P1_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 * t.sin_t0_sq / ( + (L ** 2 - P1_z ** 2) * (L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2)) * t.sin_t0)) / sqrt(1 - ( + 4 * L ** 2 * t.sin_t0_sq - 4 * L ** 2 * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 - L ** 3 * P2_z ** 2 * t.sin_t0 + L * P1_z * P2_z ** 3 * t.sin_t0 - P2_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 * t.sin_t0_sq / ( + (L ** 2 - P2_z ** 2) * (L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2) - 4 * L ** 2 * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z ** 2 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 + L * P1_z ** 3 * P2_z * sin( + T_0) - P1_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 * t.sin_t0_sq / ( + (L ** 2 - P1_z ** 2) * (L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2)) * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 - L ** 3 * P2_z ** 2 * t.sin_t0 + L * P1_z * P2_z ** 3 * t.sin_t0 - P2_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 / ( + L ** 2 * ( + L ** 2 - P2_z ** 2) * ( + L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2 * t.sin_t0_sq)), + -(2 * P1_z ** 2 * P2_z * sqrt(4 * L ** 2 * t.sin_t0_sq - 4 * L ** 2 * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 - L ** 3 * P2_z ** 2 * t.sin_t0 + L * P1_z * P2_z ** 3 * t.sin_t0 - P2_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 * t.sin_t0_sq / ( + (L ** 2 - P2_z ** 2) * ( + L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2) - 4 * L ** 2 * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z ** 2 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 + L * P1_z ** 3 * P2_z * t.sin_t0 - P1_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 * t.sin_t0_sq / ( + (L ** 2 - P1_z ** 2) * (L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2)) * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 - L ** 3 * P2_z ** 2 * t.sin_t0 + L * P1_z * P2_z ** 3 * t.sin_t0 - P2_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) / ( + L * sqrt(L ** 2 - P2_z ** 2) * (L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2 * t.sin_t0) + P2_z * sqrt( + 4 * L ** 2 * t.sin_t0_sq - 4 * L ** 2 * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 - L ** 3 * P2_z ** 2 * t.sin_t0 + L * P1_z * P2_z ** 3 * t.sin_t0 - P2_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 * t.sin_t0_sq / ( + (L ** 2 - P2_z ** 2) * (L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2) - 4 * L ** 2 * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z ** 2 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 + L * P1_z ** 3 * P2_z * sin( + T_0) - P1_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 * t.sin_t0_sq / ( + (L ** 2 - P1_z ** 2) * (L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2)) * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 - L ** 3 * P2_z ** 2 * t.sin_t0 + L * P1_z * P2_z ** 3 * t.sin_t0 - P2_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) / ( + L * (L ** 2 - P2_z ** 2) ** (3 / 2) * (L ** 4 - P1_z ** 2 * P2_z ** 2) * t.sin_t0) + sqrt( + 4 * L ** 2 * t.sin_t0_sq - 4 * L ** 2 * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 - L ** 3 * P2_z ** 2 * t.sin_t0 + L * P1_z * P2_z ** 3 * t.sin_t0 - P2_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 * t.sin_t0_sq / ( + (L ** 2 - P2_z ** 2) * (L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2) - 4 * L ** 2 * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z ** 2 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 + L * P1_z ** 3 * P2_z * t.sin_t0 - P1_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 * t.sin_t0_sq / ( + (L ** 2 - P1_z ** 2) * (L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2)) * ( + -L ** 3 * P1_z * t.sin_t0 - 2 * L ** 3 * P2_z * t.sin_t0 + 3 * L * P1_z * P2_z ** 2 * t.sin_t0 - P2_z * ( + L ** 6 * P1_z * t.sin_t0_sq + 2 * L ** 6 * P2_z * t.sin_t0_sq - L ** 6 * P2_z - L ** 4 * P1_z ** 3 * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z * t.sin_t0_sq - 3 * L ** 4 * P1_z * P2_z ** 2 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z + 3 * L ** 2 * P1_z ** 3 * P2_z ** 2 * t.sin_t0_sq + 2 * L ** 2 * P1_z ** 2 * P2_z ** 3 - 2 * P1_z ** 4 * P2_z ** 3) / sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4) - sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) / ( + L * sqrt(L ** 2 - P2_z ** 2) * (L ** 4 - P1_z ** 2 * P2_z ** 2) * t.sin_t0) + ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 - L ** 3 * P2_z ** 2 * t.sin_t0 + L * P1_z * P2_z ** 3 * t.sin_t0 - P2_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) * ( + -8 * L ** 2 * P1_z ** 2 * P2_z * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 - L ** 3 * P2_z ** 2 * t.sin_t0 + L * P1_z * P2_z ** 3 * t.sin_t0 - P2_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 * t.sin_t0_sq / ( + (L ** 2 - P2_z ** 2) * ( + L ** 4 - P1_z ** 2 * P2_z ** 2) ** 3) - 8 * L ** 2 * P1_z ** 2 * P2_z * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z ** 2 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 + L * P1_z ** 3 * P2_z * t.sin_t0 - P1_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 * t.sin_t0_sq / ( + (L ** 2 - P1_z ** 2) * (L ** 4 - P1_z ** 2 * P2_z ** 2) ** 3) - 4 * L ** 2 * P2_z * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 - L ** 3 * P2_z ** 2 * t.sin_t0 + L * P1_z * P2_z ** 3 * t.sin_t0 - P2_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 * t.sin_t0_sq / ( + (L ** 2 - P2_z ** 2) ** 2 * (L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2) - 2 * L ** 2 * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 - L ** 3 * P2_z ** 2 * t.sin_t0 + L * P1_z * P2_z ** 3 * t.sin_t0 - P2_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) * ( + -2 * L ** 3 * P1_z * t.sin_t0 - 4 * L ** 3 * P2_z * t.sin_t0 + 6 * L * P1_z * P2_z ** 2 * t.sin_t0 - 2 * P2_z * ( + L ** 6 * P1_z * t.sin_t0_sq + 2 * L ** 6 * P2_z * t.sin_t0_sq - L ** 6 * P2_z - L ** 4 * P1_z ** 3 * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z * t.sin_t0_sq - 3 * L ** 4 * P1_z * P2_z ** 2 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z + 3 * L ** 2 * P1_z ** 3 * P2_z ** 2 * t.sin_t0_sq + 2 * L ** 2 * P1_z ** 2 * P2_z ** 3 - 2 * P1_z ** 4 * P2_z ** 3) / sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4) - 2 * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) * t.sin_t0_sq / ( + (L ** 2 - P2_z ** 2) * (L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2) - 2 * L ** 2 * ( + -2 * L ** 3 * P1_z * t.sin_t0 + 2 * L * P1_z ** 3 * t.sin_t0 - 2 * P1_z * ( + L ** 6 * P1_z * t.sin_t0_sq + 2 * L ** 6 * P2_z * t.sin_t0_sq - L ** 6 * P2_z - L ** 4 * P1_z ** 3 * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z * t.sin_t0_sq - 3 * L ** 4 * P1_z * P2_z ** 2 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z + 3 * L ** 2 * P1_z ** 3 * P2_z ** 2 * t.sin_t0_sq + 2 * L ** 2 * P1_z ** 2 * P2_z ** 3 - 2 * P1_z ** 4 * P2_z ** 3) / sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z ** 2 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 + L * P1_z ** 3 * P2_z * t.sin_t0 - P1_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) * t.sin_t0_sq / ( + (L ** 2 - P1_z ** 2) * (L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2)) / ( + L * sqrt(L ** 2 - P2_z ** 2) * (L ** 4 - P1_z ** 2 * P2_z ** 2) * sqrt( + 4 * L ** 2 * t.sin_t0_sq - 4 * L ** 2 * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 - L ** 3 * P2_z ** 2 * t.sin_t0 + L * P1_z * P2_z ** 3 * t.sin_t0 - P2_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 * t.sin_t0_sq / ( + (L ** 2 - P2_z ** 2) * (L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2) - 4 * L ** 2 * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z ** 2 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 + L * P1_z ** 3 * P2_z * t.sin_t0 - P1_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 * t.sin_t0_sq / ( + (L ** 2 - P1_z ** 2) * (L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2)) * t.sin_t0)) / sqrt(1 - ( + 4 * L ** 2 * t.sin_t0_sq - 4 * L ** 2 * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 - L ** 3 * P2_z ** 2 * t.sin_t0 + L * P1_z * P2_z ** 3 * t.sin_t0 - P2_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 * t.sin_t0_sq / ( + (L ** 2 - P2_z ** 2) * (L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2) - 4 * L ** 2 * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z ** 2 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 + L * P1_z ** 3 * P2_z * sin( + T_0) - P1_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 * t.sin_t0_sq / ( + (L ** 2 - P1_z ** 2) * (L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2)) * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 - L ** 3 * P2_z ** 2 * t.sin_t0 + L * P1_z * P2_z ** 3 * t.sin_t0 - P2_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 / ( + L ** 2 * ( + L ** 2 - P2_z ** 2) * ( + L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2 * t.sin_t0_sq)) + + ] + jac[5] = [ + + (1 - 2 * (L ** 5 * t.sin_t0 - L ** 3 * P1_z * P2_z * sin( + T_0) - L ** 3 * P2_z ** 2 * t.sin_t0 + L * P1_z * P2_z ** 3 * t.sin_t0 - P2_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 / ( + (L ** 2 - P2_z ** 2) * (L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2)) * (-8 * P1_z * P2_z ** 2 * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z ** 2 * sin( + T_0) - L ** 3 * P1_z * P2_z * t.sin_t0 + L * P1_z ** 3 * P2_z * t.sin_t0 - P1_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 - L ** 3 * P2_z ** 2 * t.sin_t0 + L * P1_z * P2_z ** 3 * t.sin_t0 - P2_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) / ( + sqrt( + L ** 2 - P1_z ** 2) * sqrt( + L ** 2 - P2_z ** 2) * ( + L ** 4 - P1_z ** 2 * P2_z ** 2) ** 3) - 2 * P1_z * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z ** 2 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 + L * P1_z ** 3 * P2_z * t.sin_t0 - P1_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 - L ** 3 * P2_z ** 2 * t.sin_t0 + L * P1_z * P2_z ** 3 * t.sin_t0 - P2_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) / ( + (L ** 2 - P1_z ** 2) ** ( + 3 / 2) * sqrt( + L ** 2 - P2_z ** 2) * ( + L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2) - 2 * ( + -L ** 3 * P2_z * t.sin_t0 + L * P2_z ** 3 * t.sin_t0 - P2_z * ( + 2 * L ** 6 * P1_z * t.sin_t0_sq - L ** 6 * P1_z + L ** 6 * P2_z * t.sin_t0_sq - 3 * L ** 4 * P1_z ** 2 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 2 * t.sin_t0_sq - L ** 4 * P2_z ** 3 * t.sin_t0_sq + 2 * L ** 2 * P1_z ** 3 * P2_z ** 2 + 3 * L ** 2 * P1_z ** 2 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z * P2_z ** 4 - 2 * P1_z ** 3 * P2_z ** 4) / sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z ** 2 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 + L * P1_z ** 3 * P2_z * t.sin_t0 - P1_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) / ( + sqrt( + L ** 2 - P1_z ** 2) * sqrt( + L ** 2 - P2_z ** 2) * ( + L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2) - 2 * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 - L ** 3 * P2_z ** 2 * t.sin_t0 + L * P1_z * P2_z ** 3 * t.sin_t0 - P2_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) * ( + -2 * L ** 3 * P1_z * t.sin_t0 - L ** 3 * P2_z * t.sin_t0 + 3 * L * P1_z ** 2 * P2_z * t.sin_t0 - P1_z * ( + 2 * L ** 6 * P1_z * t.sin_t0_sq - L ** 6 * P1_z + L ** 6 * P2_z * t.sin_t0_sq - 3 * L ** 4 * P1_z ** 2 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 2 * t.sin_t0_sq - L ** 4 * P2_z ** 3 * t.sin_t0_sq + 2 * L ** 2 * P1_z ** 3 * P2_z ** 2 + 3 * L ** 2 * P1_z ** 2 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z * P2_z ** 4 - 2 * P1_z ** 3 * P2_z ** 4) / sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4) - sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) / ( + sqrt( + L ** 2 - P1_z ** 2) * sqrt( + L ** 2 - P2_z ** 2) * ( + L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2)) / ( + (1 - 2 * (L ** 5 * t.sin_t0 - L ** 3 * P1_z * P2_z * sin( + T_0) - L ** 3 * P2_z ** 2 * t.sin_t0 + L * P1_z * P2_z ** 3 * t.sin_t0 - P2_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 / ( + (L ** 2 - P2_z ** 2) * (L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2)) ** 2 + 4 * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z ** 2 * sin( + T_0) - L ** 3 * P1_z * P2_z * t.sin_t0 + L * P1_z ** 3 * P2_z * t.sin_t0 - P1_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z * P2_z * sin( + T_0) - L ** 3 * P2_z ** 2 * t.sin_t0 + L * P1_z * P2_z ** 3 * t.sin_t0 - P2_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 / ( + (L ** 2 - P1_z ** 2) * (L ** 2 - P2_z ** 2) * (L ** 4 - P1_z ** 2 * P2_z ** 2) ** 4)) + 2 * ( + -8 * P1_z * P2_z ** 2 * (L ** 5 * t.sin_t0 - L ** 3 * P1_z * P2_z * sin( + T_0) - L ** 3 * P2_z ** 2 * t.sin_t0 + L * P1_z * P2_z ** 3 * t.sin_t0 - P2_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 / ( + (L ** 2 - P2_z ** 2) * (L ** 4 - P1_z ** 2 * P2_z ** 2) ** 3) - 2 * ( + -2 * L ** 3 * P2_z * t.sin_t0 + 2 * L * P2_z ** 3 * t.sin_t0 - 2 * P2_z * ( + 2 * L ** 6 * P1_z * t.sin_t0_sq - L ** 6 * P1_z + L ** 6 * P2_z * t.sin_t0_sq - 3 * L ** 4 * P1_z ** 2 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 2 * t.sin_t0_sq - L ** 4 * P2_z ** 3 * t.sin_t0_sq + 2 * L ** 2 * P1_z ** 3 * P2_z ** 2 + 3 * L ** 2 * P1_z ** 2 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z * P2_z ** 4 - 2 * P1_z ** 3 * P2_z ** 4) / sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z * P2_z * sin( + T_0) - L ** 3 * P2_z ** 2 * t.sin_t0 + L * P1_z * P2_z ** 3 * t.sin_t0 - P2_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) / ( + (L ** 2 - P2_z ** 2) * (L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2)) * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z ** 2 * sin( + T_0) - L ** 3 * P1_z * P2_z * t.sin_t0 + L * P1_z ** 3 * P2_z * t.sin_t0 - P1_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z * P2_z * sin( + T_0) - L ** 3 * P2_z ** 2 * t.sin_t0 + L * P1_z * P2_z ** 3 * t.sin_t0 - P2_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) / ( + sqrt(L ** 2 - P1_z ** 2) * sqrt(L ** 2 - P2_z ** 2) * (L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2 * (( + 1 - 2 * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 - L ** 3 * P2_z ** 2 * t.sin_t0 + L * P1_z * P2_z ** 3 * t.sin_t0 - P2_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 / ( + ( + L ** 2 - P2_z ** 2) * ( + L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2)) ** 2 + 4 * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z ** 2 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 + L * P1_z ** 3 * P2_z * t.sin_t0 - P1_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 - L ** 3 * P2_z ** 2 * t.sin_t0 + L * P1_z * P2_z ** 3 * t.sin_t0 - P2_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 / ( + ( + L ** 2 - P1_z ** 2) * ( + L ** 2 - P2_z ** 2) * ( + L ** 4 - P1_z ** 2 * P2_z ** 2) ** 4))), + (1 - 2 * (L ** 5 * t.sin_t0 - L ** 3 * P1_z * P2_z * sin( + T_0) - L ** 3 * P2_z ** 2 * t.sin_t0 + L * P1_z * P2_z ** 3 * t.sin_t0 - P2_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 / ( + (L ** 2 - P2_z ** 2) * (L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2)) * (-8 * P1_z ** 2 * P2_z * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z ** 2 * sin( + T_0) - L ** 3 * P1_z * P2_z * t.sin_t0 + L * P1_z ** 3 * P2_z * t.sin_t0 - P1_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 - L ** 3 * P2_z ** 2 * t.sin_t0 + L * P1_z * P2_z ** 3 * t.sin_t0 - P2_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) / ( + sqrt( + L ** 2 - P1_z ** 2) * sqrt( + L ** 2 - P2_z ** 2) * ( + L ** 4 - P1_z ** 2 * P2_z ** 2) ** 3) - 2 * P2_z * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z ** 2 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 + L * P1_z ** 3 * P2_z * t.sin_t0 - P1_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 - L ** 3 * P2_z ** 2 * t.sin_t0 + L * P1_z * P2_z ** 3 * t.sin_t0 - P2_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) / ( + sqrt(L ** 2 - P1_z ** 2) * ( + L ** 2 - P2_z ** 2) ** ( + 3 / 2) * ( + L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2) - 2 * ( + -L ** 3 * P1_z * t.sin_t0 + L * P1_z ** 3 * t.sin_t0 - P1_z * ( + L ** 6 * P1_z * t.sin_t0_sq + 2 * L ** 6 * P2_z * t.sin_t0_sq - L ** 6 * P2_z - L ** 4 * P1_z ** 3 * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z * t.sin_t0_sq - 3 * L ** 4 * P1_z * P2_z ** 2 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z + 3 * L ** 2 * P1_z ** 3 * P2_z ** 2 * t.sin_t0_sq + 2 * L ** 2 * P1_z ** 2 * P2_z ** 3 - 2 * P1_z ** 4 * P2_z ** 3) / sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 - L ** 3 * P2_z ** 2 * t.sin_t0 + L * P1_z * P2_z ** 3 * t.sin_t0 - P2_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) / ( + sqrt( + L ** 2 - P1_z ** 2) * sqrt( + L ** 2 - P2_z ** 2) * ( + L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2) - 2 * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z ** 2 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 + L * P1_z ** 3 * P2_z * t.sin_t0 - P1_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) * ( + -L ** 3 * P1_z * t.sin_t0 - 2 * L ** 3 * P2_z * t.sin_t0 + 3 * L * P1_z * P2_z ** 2 * t.sin_t0 - P2_z * ( + L ** 6 * P1_z * t.sin_t0_sq + 2 * L ** 6 * P2_z * t.sin_t0_sq - L ** 6 * P2_z - L ** 4 * P1_z ** 3 * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z * t.sin_t0_sq - 3 * L ** 4 * P1_z * P2_z ** 2 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z + 3 * L ** 2 * P1_z ** 3 * P2_z ** 2 * t.sin_t0_sq + 2 * L ** 2 * P1_z ** 2 * P2_z ** 3 - 2 * P1_z ** 4 * P2_z ** 3) / sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4) - sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) / ( + sqrt( + L ** 2 - P1_z ** 2) * sqrt( + L ** 2 - P2_z ** 2) * ( + L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2)) / ( + (1 - 2 * (L ** 5 * t.sin_t0 - L ** 3 * P1_z * P2_z * sin( + T_0) - L ** 3 * P2_z ** 2 * t.sin_t0 + L * P1_z * P2_z ** 3 * t.sin_t0 - P2_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 / ( + (L ** 2 - P2_z ** 2) * (L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2)) ** 2 + 4 * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z ** 2 * sin( + T_0) - L ** 3 * P1_z * P2_z * t.sin_t0 + L * P1_z ** 3 * P2_z * t.sin_t0 - P1_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z * P2_z * sin( + T_0) - L ** 3 * P2_z ** 2 * t.sin_t0 + L * P1_z * P2_z ** 3 * t.sin_t0 - P2_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 / ( + (L ** 2 - P1_z ** 2) * (L ** 2 - P2_z ** 2) * (L ** 4 - P1_z ** 2 * P2_z ** 2) ** 4)) + 2 * ( + -8 * P1_z ** 2 * P2_z * (L ** 5 * t.sin_t0 - L ** 3 * P1_z * P2_z * sin( + T_0) - L ** 3 * P2_z ** 2 * t.sin_t0 + L * P1_z * P2_z ** 3 * t.sin_t0 - P2_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 / ( + (L ** 2 - P2_z ** 2) * (L ** 4 - P1_z ** 2 * P2_z ** 2) ** 3) - 4 * P2_z * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z * P2_z * sin( + T_0) - L ** 3 * P2_z ** 2 * t.sin_t0 + L * P1_z * P2_z ** 3 * t.sin_t0 - P2_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 / ( + (L ** 2 - P2_z ** 2) ** 2 * (L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2) - 2 * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z * P2_z * sin( + T_0) - L ** 3 * P2_z ** 2 * t.sin_t0 + L * P1_z * P2_z ** 3 * t.sin_t0 - P2_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) * ( + -2 * L ** 3 * P1_z * t.sin_t0 - 4 * L ** 3 * P2_z * sin( + T_0) + 6 * L * P1_z * P2_z ** 2 * t.sin_t0 - 2 * P2_z * ( + L ** 6 * P1_z * t.sin_t0_sq + 2 * L ** 6 * P2_z * t.sin_t0_sq - L ** 6 * P2_z - L ** 4 * P1_z ** 3 * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z * t.sin_t0_sq - 3 * L ** 4 * P1_z * P2_z ** 2 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z + 3 * L ** 2 * P1_z ** 3 * P2_z ** 2 * t.sin_t0_sq + 2 * L ** 2 * P1_z ** 2 * P2_z ** 3 - 2 * P1_z ** 4 * P2_z ** 3) / sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4) - 2 * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) / ( + (L ** 2 - P2_z ** 2) * (L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2)) * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z ** 2 * sin( + T_0) - L ** 3 * P1_z * P2_z * t.sin_t0 + L * P1_z ** 3 * P2_z * t.sin_t0 - P1_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z * P2_z * sin( + T_0) - L ** 3 * P2_z ** 2 * t.sin_t0 + L * P1_z * P2_z ** 3 * t.sin_t0 - P2_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) / ( + sqrt(L ** 2 - P1_z ** 2) * sqrt(L ** 2 - P2_z ** 2) * (L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2 * (( + 1 - 2 * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 - L ** 3 * P2_z ** 2 * t.sin_t0 + L * P1_z * P2_z ** 3 * t.sin_t0 - P2_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 / ( + ( + L ** 2 - P2_z ** 2) * ( + L ** 4 - P1_z ** 2 * P2_z ** 2) ** 2)) ** 2 + 4 * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z ** 2 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 + L * P1_z ** 3 * P2_z * t.sin_t0 - P1_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 * ( + L ** 5 * t.sin_t0 - L ** 3 * P1_z * P2_z * t.sin_t0 - L ** 3 * P2_z ** 2 * t.sin_t0 + L * P1_z * P2_z ** 3 * t.sin_t0 - P2_z * sqrt( + -2 * L ** 8 * t.sin_t0_sq + L ** 8 + 2 * L ** 6 * P1_z ** 2 * t.sin_t0_sq - L ** 6 * P1_z ** 2 + 2 * L ** 6 * P1_z * P2_z * t.sin_t0_sq + 2 * L ** 6 * P2_z ** 2 * t.sin_t0_sq - L ** 6 * P2_z ** 2 - 2 * L ** 4 * P1_z ** 3 * P2_z * t.sin_t0_sq - 2 * L ** 4 * P1_z ** 2 * P2_z ** 2 * t.sin_t0_sq - 2 * L ** 4 * P1_z * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 4 * P2_z ** 2 + 2 * L ** 2 * P1_z ** 3 * P2_z ** 3 * t.sin_t0_sq + L ** 2 * P1_z ** 2 * P2_z ** 4 - P1_z ** 4 * P2_z ** 4)) ** 2 / ( + ( + L ** 2 - P1_z ** 2) * ( + L ** 2 - P2_z ** 2) * ( + L ** 4 - P1_z ** 2 * P2_z ** 2) ** 4)))] + return jac diff --git a/python/hemisphere-joint-demo/hemisphere-joint-demo/terms.py b/python/hemisphere-joint-demo/hemisphere-joint-demo/terms.py new file mode 100755 index 000000000..96997e99e --- /dev/null +++ b/python/hemisphere-joint-demo/hemisphere-joint-demo/terms.py @@ -0,0 +1,13 @@ +import numpy as np + +from numpy import pi, sin, cos, sqrt, arcsin, arctan2 + + +class CommonTerms: + def __init__(self, L, T_0): + self.sin_t0 = sin(T_0) + self.cos_t0 = cos(T_0) + + self.sin_t0_sq = self.sin_t0 ** 2 + self.cos_t0_sq = self.cos_t0 ** 2 + -- GitLab