+
    i(                    V   R t ^ RIt^ RIHt ^ RIHt ^ RIHtHt ^ RI	H
t
Ht ^ RIHt ^ RIHtHt ^ RIHtHt ^ R	IHt ^ R
IHtHtHtHtHtHtHtHtHt ^ RI H!t!H"t"H#t# ^ RI$H%t%H&t&H't' ^ RI(H)t) ^ RI*H+t+ ^ RI,H-t- ^ RI.H/t/ ^ RI0H1t1H2t2H3t3H4t4 ^ RI5H6t6H7t7 ^ RI8H9t9 ]! R4      t:]! R4      t;]:'       d   ]:Px                  P{                  RR4        ! R R4      t> ! R R4      t? ! R R4      t@ ! R R4      tA ! R  R!4      tB ! R" R#4      tC ! R$ R%4      tD ! R& R'4      tE ! R( R)4      tFR# )*zFTests for the ``sympy.physics.biomechanics.characteristic.py`` module.N)UnevaluatedExpr)Function)FloatInteger)Symbolsymbols)import_module)explog)coshsinh)sqrt)	CharacteristicCurveCollectionCharacteristicCurveFunction"FiberForceLengthActiveDeGroote2016#FiberForceLengthPassiveDeGroote2016*FiberForceLengthPassiveInverseDeGroote2016FiberForceVelocityDeGroote2016%FiberForceVelocityInverseDeGroote2016TendonForceLengthDeGroote2016$TendonForceLengthInverseDeGroote2016)C89CodePrinterC99CodePrinterC11CodePrinter)CXX98CodePrinterCXX11CodePrinterCXX17CodePrinter)FCodePrinter)LambdaPrinter)LatexPrinter)OctaveCodePrinter)CuPyPrinter
JaxPrinterNumPyPrinterSciPyPrinter)MpmathPrinterPythonCodePrinter)lambdifyjaxnumpyjax_enable_x64Tc                      a  ] tR t^2t o ]]P                  P                  R]R3]	R3]
R3]R3]R3]R3]R3]R3]R3]R3]R3]R3]R3]R3]R3.4      R 4       4       tRtV tR# )TestCharacteristicCurveFunctioncode_printer, expectedz(a + b)*(c + d)*(e + f)z      (a + b)*(c + d)*(e + f)z(a + b).*(c + d).*(e + f)c                     ! R  R\         4      p\        R4      w  r4rVrxV! W44      p	V! WV4      p
V! Wx4      pV ! 4       P                  W,          V,          4      V8X  g   Q hR# )c                   6   a  ] tR t^Kt o ]R 4       tR tRtV tR# )UTestCharacteristicCurveFunction.test_print_code_parenthesize.<locals>.ExampleFunctionc                    R # N )clsabs   &&&i/var/www/html/photoedit/myenv/lib/python3.14/site-packages/sympy/physics/biomechanics/tests/test_curve.pyevalZTestCharacteristicCurveFunction.test_print_code_parenthesize.<locals>.ExampleFunction.evalM   s        c                .    V P                   w  r#W#,           # r2   )args)selfkwargsr5   r6   s   &,  r7   doitZTestCharacteristicCurveFunction.test_print_code_parenthesize.<locals>.ExampleFunction.doitQ   s    yyur:   r3   N)	__name__
__module____qualname____firstlineno__classmethodr8   r?   __static_attributes____classdictcell____classdict__s   @r7   ExampleFunctionr0   K   s!       r:   rJ   za, b, c, d, e, fN)r   r   doprint)code_printerexpectedrJ   r5   r6   cdeff1f2f3s   &&          r7   test_print_code_parenthesize<TestCharacteristicCurveFunction.test_print_code_parenthesize4   sb    .	9 	 ##56aAQ"Q"Q"~%%beBh/8;;;r:   r3   N)rA   rB   rC   rD   staticmethodpytestmarkparametrizer   r   r   r   r   r   r   r    r&   r#   r$   r!   r"   r%   r   rU   rF   rG   rH   s   @r7   r,   r,   2   s     [[ 676767898989:; ;< 9:454534235656	
(<) *<r:   r,   c                     a  ] tR t^\t o ]P
                  ! RR7      R 4       t]R 4       tR t	R t
R tR tR	 tR
 tR tR tR tR tR tR t]P*                  P-                  R]R3]R3]R3]R3]R3]R3]R3]R3]R3] R3]!R3]"R3]#R3]$R3]%R3.4      R 4       t&R t'R t(]P*                  PS                  ]*RJ RR 7      R! 4       t+]P*                  PS                  ],RJ R"R 7      R# 4       t-R$t.V t/R# )%!TestTendonForceLengthDeGroote2016Tautousec                   \        R 4      V n        \        R4      V n        \        R4      V n        \        R4      V n        \        R4      V n        V P                  V P                  V P                  V P
                  3V n        R# )	l_T_tildec_0c_1c_2c_3N)r   r`   c0c1c2c3	constantsr=   s   &r7   &_tendon_force_length_arguments_fixtureHTestTendonForceLengthDeGroote2016._tendon_force_length_arguments_fixture^   Z    ,----''477DGGTWW=r:   c                     \        \        \        4      '       g   Q h\        \        \        4      '       g   Q h\        P                  R 8X  g   Q hR# )r   N)
issubclassr   r   r   rA   r3   r:   r7   
test_class,TestTendonForceLengthDeGroote2016.test_classg   s@    7BBBB79TUUUU,559XXXXr:   c                    \        V P                  .V P                  O5!  p\        V\         4      '       g   Q h\	        V4      R 8X  g   Q hR# )z<TendonForceLengthDeGroote2016(l_T_tilde, c_0, c_1, c_2, c_3)N)r   r`   ri   
isinstancestrr=   fl_Ts   & r7   test_instance/TestTendonForceLengthDeGroote2016.test_instancem   s@    ,T^^MdnnM$ =>>>>4yZZZZr:   c                "   \        V P                  .V P                  O5!  P                  4       pWP                  \        V P                  V P                  V P                  ,
          ,          4      ,          V P                  ,
          8X  g   Q hR # r2   )	r   r`   ri   r?   re   r	   rh   rf   rg   ru   s   & r7   	test_doit+TestTendonForceLengthDeGroote2016.test_doitr   s[    ,T^^MdnnMRRTwws477DNNTWW,D#EFFPPPPr:   c           	     8   \        V P                  .V P                  O5!  P                  R R7      pWP                  \        V P                  \        V P                  V P                  ,
          4      ,          4      ,          V P                  ,
          8X  g   Q hR# F)evaluateN)
r   r`   ri   r?   re   r	   rh   r   rf   rg   ru   s   & r7   test_doit_evaluate_false:TestTendonForceLengthDeGroote2016.test_doit_evaluate_falsev   si    ,T^^MdnnMRR\aRbwws477?4>>DGG;S+T#TUUX\X_X_____r:   c                    \        R 4      \        R4      \        R4      \        R4      3p\        V P                  .VO5!  p\        P                  ! V P                  4      pW#8X  g   Q hR# 0.2z0.995z0.25z33.93669377311689N)r   r   r`   with_defaults)r=   ri   fl_T_manualfl_T_constantss   &   r7   test_with_defaults4TestTendonForceLengthDeGroote2016.test_with_defaultsz   s\    %L'N&M%&	
	 4DNNOYO6DDT^^T,,,r:   c                R   \        V P                  .V P                  O5!  pV P                  V P                  ,          \        V P                  \        V P                  ) V P                  ,           4      ,          4      ,          pVP                  V P                  4      V8X  g   Q hR # r2   	r   r`   ri   re   rh   r	   r   rf   diffr=   rv   rM   s   &  r7    test_differentiate_wrt_l_T_tildeBTestTendonForceLengthDeGroote2016.test_differentiate_wrt_l_T_tilde   sl    ,T^^MdnnM77477?3twwx$..?X/Y'Y#ZZyy(H444r:   c                   \        V P                  .V P                  O5!  p\        V P                  \        V P                  ) V P                  ,           4      ,          4      pVP                  V P                  4      V8X  g   Q hR # r2   )	r   r`   ri   r	   rh   r   rf   r   re   r   s   &  r7   test_differentiate_wrt_c0;TestTendonForceLengthDeGroote2016.test_differentiate_wrt_c0   s[    ,T^^MdnnMtwwx$../HIIJyy!X---r:   c                R   \        V P                  .V P                  O5!  pV P                  ) V P                  ,          \        V P                  \        V P                  V P                  ,
          4      ,          4      ,          pVP                  V P                  4      V8X  g   Q hR # r2   r   r   s   &  r7   test_differentiate_wrt_c1;TestTendonForceLengthDeGroote2016.test_differentiate_wrt_c1   sp    ,T^^MdnnMGG8DGG#CQUQXQX@X0Y(Y$ZZyy!X---r:   c                    \        V P                  .V P                  O5!  p\        R4      pVP	                  V P
                  4      V8X  g   Q hR#    N)r   r`   ri   r   r   rg   r   s   &  r7   test_differentiate_wrt_c2;TestTendonForceLengthDeGroote2016.test_differentiate_wrt_c2   s=    ,T^^MdnnM2;yy!X---r:   c                r   \        V P                  .V P                  O5!  pV P                  V P                  V P                  ,
          ,          \        V P                  \        V P                  V P                  ,
          4      ,          4      ,          pVP                  V P                  4      V8X  g   Q hR # r2   )	r   r`   ri   re   rf   r	   rh   r   r   r   s   &  r7   test_differentiate_wrt_c3;TestTendonForceLengthDeGroote2016.test_differentiate_wrt_c3   sz    ,T^^MdnnM77DNNTWW45c$''/RVR`R`cgcjcjRjBk:k6llyy!X---r:   c                |    \        V P                  .V P                  O5!  pVP                  4       \        J g   Q hR # r2   )r   r`   ri   inverser   ru   s   & r7   test_inverse.TestTendonForceLengthDeGroote2016.test_inverse   s.    ,T^^MdnnM||~!EEEEr:   c                    \        V P                  .V P                  O5!  pR p\        4       P	                  V4      V8X  g   Q hR# )z.\operatorname{fl}^T \left( l_{T tilde} \right)N)r   r`   ri   r   rK   r   s   &  r7   test_function_print_latex;TestTendonForceLengthDeGroote2016.test_function_print_latex   s9    ,T^^MdnnMD~%%d+x777r:   c                    \        V P                  .V P                  O5!  pR p\        4       P	                  VP                  4       4      V8X  g   Q hR# )z:c_{0} e^{c_{3} \left(- c_{1} + l_{T tilde}\right)} - c_{2}N)r   r`   ri   r   rK   r?   r   s   &  r7   test_expression_print_latex=TestTendonForceLengthDeGroote2016.test_expression_print_latex   s?    ,T^^MdnnMP~%%diik2h>>>r:   r-   zH(-0.25 + 0.20000000000000001*exp(33.93669377311689*(l_T_tilde - 0.995)))zM(-0.25 + 0.20000000000000001*std::exp(33.93669377311689*(l_T_tilde - 0.995)))zF      (-0.25d0 + 0.2d0*exp(33.93669377311689d0*(l_T_tilde - 0.995d0)))z8(-0.25 + 0.2*exp(33.93669377311689*(l_T_tilde - 0.995)))z=(-0.25 + 0.2*math.exp(33.93669377311689*(l_T_tilde - 0.995)))z>(-0.25 + 0.2*numpy.exp(33.93669377311689*(l_T_tilde - 0.995)))z=(-0.25 + 0.2*cupy.exp(33.93669377311689*(l_T_tilde - 0.995)))zB(-0.25 + 0.2*jax.numpy.exp(33.93669377311689*(l_T_tilde - 0.995)))z(mpmath.mpf((1, 1, -2, 1)) + mpmath.mpf((0, 3602879701896397, -54, 52))*mpmath.exp(mpmath.mpf((0, 9552330089424741, -48, 54))*(l_T_tilde + mpmath.mpf((1, 8962163258467287, -53, 53)))))c                    \         P                  ! V P                  4      pV! 4       P                  V4      V8X  g   Q hR # r2   )r   r   r`   rK   )r=   rL   rM   rv   s   &&& r7   test_print_code1TestTendonForceLengthDeGroote2016.test_print_code   s4    H -::4>>J~%%d+x777r:   c                    \         P                  ! V P                  4      pVP                  V P                  4      pR p\	        4       P                  V4      V8X  g   Q hR# )zA6.787338754623378*math.exp(33.93669377311689*(l_T_tilde - 0.995))N)r   r   r`   r   r&   rK   )r=   rv   dfl_T_dl_T_tilderM   s   &   r7   test_derivative_print_code<TestTendonForceLengthDeGroote2016.test_derivative_print_code   sK    ,::4>>J99T^^4V "**+;<HHHr:   c                    \         P                  ! V P                  4      p\        V P                  V4      pV! R 4      \        P
                  ! R4      8X  g   Q hR# )      ?Ng A)r   r   r`   r'   rX   approx)r=   rv   fl_T_callables   &  r7   test_lambdify/TestTendonForceLengthDeGroote2016.test_lambdify   sC    ,::4>>J 6S!V]]3H%IIIIr:   NNumPy not installedreasonc                   \         P                  ! V P                  4      p\        V P                  VR 4      p\        P                  . RO4      p\        P                  . RO4      p\        P                  P                  V! V4      V4       R# )r)   Ngffffff?r   )\(??gOpʿg Agg.?gY估?)r   r   r`   r'   r)   arraytestingassert_allcloser=   rv   r   r`   rM   s   &    r7   test_lambdify_numpy5TestTendonForceLengthDeGroote2016.test_lambdify_numpy   se    ,::4>>J w?KK 78	;;  
  	%%mI&>Ir:   JAX not installedc                j   \         P                  ! V P                  4      p\        P	                  \        V P                  VR 4      4      p\        P                  P                  . RO4      p\        P                  P                  . RO4      p\        P                  P                  V! V4      V4       R# )r(   Nr   r   )
r   r   r`   r(   jitr'   r)   r   r   r   r   s   &    r7   test_lambdify_jax3TestTendonForceLengthDeGroote2016.test_lambdify_jax  sv    ,::4>>Ju EFIIOO$;<	99?? $
  	%%mI&>Ir:   )re   rf   rg   rh   ri   r`   )0rA   rB   rC   rD   rX   fixturerk   rW   rp   rw   rz   r   r   r   r   r   r   r   r   r   r   rY   rZ   r   r   r   r   r   r   r   r    r&   r#   r$   r!   r"   r%   r   r   r   r   skipifr)   r   r(   r   rF   rG   rH   s   @r7   r\   r\   \   s    ^^D!> "> Y Y
[
Q`	-5
.
.
.
.
F8
?
 [[  Z
 Z
 Z
 !Z
 !_
 !_
 X
 "J
 "O
 P
 P
 O
 T
 @ Ow?	
BF8GBF8IJ
 [[.CD
J E
J [[t,?@
J A
Jr:   r\   c                     a  ] tR tRt o ]P
                  ! RR7      R 4       t]R 4       tR t	R t
R tR	 tR
 tR tR tR tR tR tR tR t]P*                  P-                  R]R3]R3]R3]R3]R3]R3]R3]R3]R3] R3]!R3]"R3]#R3]$R3]%R3.4      R 4       t&R t'R t(]P*                  PS                  ]*RJ R R!7      R" 4       t+]P*                  PS                  ],RJ R#R!7      R$ 4       t-R%t.V t/R# )&(TestTendonForceLengthInverseDeGroote2016i  Tr]   c                   \        R 4      V n        \        R4      V n        \        R4      V n        \        R4      V n        \        R4      V n        V P                  V P                  V P                  V P
                  3V n        R# )rv   ra   rb   rc   rd   N)r   rv   re   rf   rg   rh   ri   rj   s   &r7   ._tendon_force_length_inverse_arguments_fixtureWTestTendonForceLengthInverseDeGroote2016._tendon_force_length_inverse_arguments_fixture  Y    6N	----''477DGGTWW=r:   c                     \        \        \        4      '       g   Q h\        \        \        4      '       g   Q h\        P                  R 8X  g   Q hR# )r   N)ro   r   r   r   rA   r3   r:   r7   rp   3TestTendonForceLengthInverseDeGroote2016.test_class$  s@    >IIII>@[\\\\3<<@ffffr:   c                    \        V P                  .V P                  O5!  p\        V\         4      '       g   Q h\	        V4      R 8X  g   Q hR# )z>TendonForceLengthInverseDeGroote2016(fl_T, c_0, c_1, c_2, c_3)N)r   rv   ri   rs   rt   r=   fl_T_invs   & r7   rw   6TestTendonForceLengthInverseDeGroote2016.test_instance*  s@    7		SDNNS($HIIII8} ````r:   c                $   \        V P                  .V P                  O5!  P                  4       pV\	        V P                  V P
                  ,           V P                  ,          4      V P                  ,          V P                  ,           8X  g   Q hR # r2   )	r   rv   ri   r?   r
   rg   re   rh   rf   r   s   & r7   rz   2TestTendonForceLengthInverseDeGroote2016.test_doit/  s]    7		SDNNSXXZ3		DGG 3TWW<=dggEOOOOr:   c                :   \        V P                  .V P                  O5!  P                  R R7      pV\	        \        V P                  V P                  ,           V P                  ,          4      4      V P                  ,          V P                  ,           8X  g   Q hR# r}   )
r   rv   ri   r?   r
   r   rg   re   rh   rf   r   s   & r7   r   ATestTendonForceLengthInverseDeGroote2016.test_doit_evaluate_false3  sk    7		SDNNSXXbgXh3		DGG0CTWW/LMNtwwVY]Y`Y`````r:   c                    \        R 4      \        R4      \        R4      \        R4      3p\        V P                  .VO5!  p\        P                  ! V P                  4      pW#8X  g   Q hR# r   )r   r   rv   r   )r=   ri   fl_T_inv_manualfl_T_inv_constantss   &   r7   r   ;TestTendonForceLengthInverseDeGroote2016.test_with_defaults7  s`    %L'N&M%&	
	 ?tyyU9UAOOPTPYPYZ444r:   c                    \        V P                  .V P                  O5!  p^V P                  V P                  V P                  ,           ,          ,          pVP                  V P                  4      V8X  g   Q hR# r   Nr   rv   ri   rh   rg   r   r=   r   rM   s   &  r7   test_differentiate_wrt_fl_TDTestTendonForceLengthInverseDeGroote2016.test_differentiate_wrt_fl_TB  sT    7		SDNNSdggtyy477234}}TYY'8333r:   c                    \        V P                  .V P                  O5!  pRV P                  V P                  ,          ,          pVP                  V P                  4      V8X  g   Q hR# r   )r   rv   ri   re   rh   r   r   s   &  r7   r   BTestTendonForceLengthInverseDeGroote2016.test_differentiate_wrt_c0G  sJ    7		SDNNStwwtww'}}TWW%111r:   c                    \        V P                  .V P                  O5!  p\        ^4      pVP	                  V P
                  4      V8X  g   Q hR# r   )r   rv   ri   r   r   rf   r   s   &  r7   r   BTestTendonForceLengthInverseDeGroote2016.test_differentiate_wrt_c1L  s=    7		SDNNS1:}}TWW%111r:   c                    \        V P                  .V P                  O5!  p^V P                  V P                  V P                  ,           ,          ,          pVP                  V P                  4      V8X  g   Q hR# r   r   r   s   &  r7   r   BTestTendonForceLengthInverseDeGroote2016.test_differentiate_wrt_c2Q  sT    7		SDNNSdggtyy477234}}TWW%111r:   c                >   \        V P                  .V P                  O5!  p\        \	        V P                  V P
                  ,           V P                  ,          4      4      ) V P                  ^,          ,          pVP                  V P                  4      V8X  g   Q hR#    N)	r   rv   ri   r
   r   rg   re   rh   r   r   s   &  r7   r   BTestTendonForceLengthInverseDeGroote2016.test_differentiate_wrt_c3V  sj    7		SDNNSTWW)<dgg(EFGGQR
R}}TWW%111r:   c                |    \        V P                  .V P                  O5!  pVP                  4       \        J g   Q hR # r2   )r   rv   ri   r   r   r   s   & r7   r   5TestTendonForceLengthInverseDeGroote2016.test_inverse[  s1    7		SDNNS!%BBBBr:   c                    \        V P                  .V P                  O5!  pR p\        4       P	                  V4      V8X  g   Q hR# )z=\left( \operatorname{fl}^T \right)^{-1} \left( fl_{T} \right)N)r   rv   ri   r   rK   r   s   &  r7   r   BTestTendonForceLengthInverseDeGroote2016.test_function_print_latex_  s9    7		SDNNSS~%%h/8;;;r:   c                    \        V P                  .V P                  O5!  pR p\        4       P	                  VP                  4       4      V8X  g   Q hR# )zFc_{1} + \frac{\log{\left(\frac{c_{2} + fl_{T}}{c_{0}} \right)}}{c_{3}}N)r   rv   ri   r   rK   r?   r   s   &  r7   r   DTestTendonForceLengthInverseDeGroote2016.test_expression_print_latexd  s?    3DIIOO\~%%diik2h>>>r:   r-   z3(0.995 + 0.029466630034306838*log(5.0*fl_T + 1.25))z8(0.995 + 0.029466630034306838*std::log(5.0*fl_T + 1.25))z@      (0.995d0 + 0.02946663003430684d0*log(5.0d0*fl_T + 1.25d0))z2(0.995 + 0.02946663003430684*log(5.0*fl_T + 1.25))z7(0.995 + 0.02946663003430684*math.log(5.0*fl_T + 1.25))z8(0.995 + 0.02946663003430684*numpy.log(5.0*fl_T + 1.25))z7(0.995 + 0.02946663003430684*cupy.log(5.0*fl_T + 1.25))z<(0.995 + 0.02946663003430684*jax.numpy.log(5.0*fl_T + 1.25))z(mpmath.mpf((0, 8962163258467287, -53, 53)) + mpmath.mpf((0, 33972711434846347, -60, 55))*mpmath.log(mpmath.mpf((0, 5, 0, 3))*fl_T + mpmath.mpf((0, 5, -2, 3))))c                    \         P                  ! V P                  4      pV! 4       P                  V4      V8X  g   Q hR # r2   )r   r   rv   rK   )r=   rL   rM   r   s   &&& r7   r   8TestTendonForceLengthInverseDeGroote2016.test_print_codei  s4    H 8EEdiiP~%%h/8;;;r:   c                    \         P                  ! V P                  4      pVP                  V P                  4      pR p\	        4       P                  V4      V8X  g   Q hR# )z.1/(33.93669377311689*fl_T + 8.484173443279222)N)r   r   rv   r   r&   rK   )r=   r   dfl_T_inv_dfl_TrM   s   &   r7   r   CTestTendonForceLengthInverseDeGroote2016.test_derivative_print_code  sI    7EEdiiP"--		2C "**?;xGGGr:   c                    \         P                  ! V P                  4      p\        V P                  V4      pV! R 4      \        P
                  ! R4      8X  g   Q hR# )        mIs?N)r   r   rv   r'   rX   r   )r=   r   fl_T_inv_callables   &  r7   r   6TestTendonForceLengthInverseDeGroote2016.test_lambdify  sC    7EEdiiP$TYY9 %|)DDDDr:   Nr   r   c                   \         P                  ! V P                  4      p\        V P                  VR 4      p\        P                  . RO4      p\        P                  . RO4      p\        P                  P                  V! V4      V4       R# )r)   Ngɿ{Gzr   r   gRQ?r   gPgf?g}?r   gyl?g­?gp?)r   r   rv   r'   r)   r   r   r   r=   r   r   rv   rM   s   &    r7   r   <TestTendonForceLengthInverseDeGroote2016.test_lambdify_numpy  sg    7EEdiiP$TYY'B{{?@;;  
  	%%&7&=xHr:   r   c                j   \         P                  ! V P                  4      p\        P	                  \        V P                  VR 4      4      p\        P                  P                  . RO4      p\        P                  P                  . RO4      p\        P                  P                  V! V4      V4       R# )r(   Nr   r  )
r   r   rv   r(   r   r'   r)   r   r   r   r  s   &    r7   r   :TestTendonForceLengthInverseDeGroote2016.test_lambdify_jax  sx    7EEdiiPGGHTYY%$HIyyCD99?? $
  	%%&7&=xHr:   )re   rf   rg   rh   ri   rv   )0rA   rB   rC   rD   rX   r   r   rW   rp   rw   rz   r   r   r   r   r   r   r   r   r   r   rY   rZ   r   r   r   r   r   r   r   r    r&   r#   r$   r!   r"   r%   r   r   r   r   r   r)   r   r(   r   rF   rG   rH   s   @r7   r   r     s    ^^D!> "> g g
a
Pa	54
2
2
2
2
C<
?
 [[  E
 E
 E
 !E
 !J
 !J
 R
 "D
 "I
 J
 J
 I
 N
 Z Iw?	
BF<GBF<HE
 [[.CDI EI [[t,?@I AIr:   r   c                     a  ] tR tRt o ]P
                  ! RR7      R 4       t]R 4       tR t	R t
R tR	 tR
 tR tR tR tR tR t]P&                  P)                  R]R3]R3]R3]R3]R3]R3]R3]R3]R3]R3]R3] R3]!R3]"R3]#R3.4      R 4       t$R t%R t&]P&                  PO                  ](RJ RR7      R  4       t)]P&                  PO                  ]*RJ R!R7      R" 4       t+R#t,V t-R# )$'TestFiberForceLengthPassiveDeGroote2016i  Tr]   c                    \        R 4      V n        \        R4      V n        \        R4      V n        V P                  V P                  3V n        R# )	l_M_tildera   rb   N)r   r	  re   rf   ri   rj   s   &r7   -_fiber_force_length_passive_arguments_fixtureUTestFiberForceLengthPassiveDeGroote2016._fiber_force_length_passive_arguments_fixture  s8    ,--''477+r:   c                     \        \        \        4      '       g   Q h\        \        \        4      '       g   Q h\        P                  R 8X  g   Q hR# )r   N)ro   r   r   r   rA   r3   r:   r7   rp   2TestFiberForceLengthPassiveDeGroote2016.test_class  s@    =xHHHH=?Z[[[[2;;?ddddr:   c                    \        V P                  .V P                  O5!  p\        V\         4      '       g   Q h\	        V4      R 8X  g   Q hR# )z8FiberForceLengthPassiveDeGroote2016(l_M_tilde, c_0, c_1)N)r   r	  ri   rs   rt   r=   fl_M_pass   & r7   rw   5TestFiberForceLengthPassiveDeGroote2016.test_instance  s@    6t~~WW($GHHHH8} ZZZZr:   c                >   \        V P                  .V P                  O5!  P                  4       pV\	        V P
                  V P                  ^,
          ,          V P                  ,          4      ^,
          \	        V P
                  4      ^,
          ,          8X  g   Q hR# r   )r   r	  ri   r?   r	   rf   re   r  s   & r7   rz   1TestFiberForceLengthPassiveDeGroote2016.test_doit  sk    6t~~WW\\^C$..1*<!=tww FG!KcRVRYRYl]^N^____r:   c                T   \        V P                  .V P                  O5!  P                  R R7      pV\	        V P
                  \        V P                  ^,
          4      ,          V P                  ,          4      ^,
          \	        V P
                  4      ^,
          ,          8X  g   Q hR# r}   )r   r	  ri   r?   r	   rf   r   re   r  s   & r7   r   @TestFiberForceLengthPassiveDeGroote2016.test_doit_evaluate_false  sy    6t~~WW\\fk\lC!9K)L!Ldgg UVYZZ]`aeahah]ilm]mnnnnr:   c                    \        R 4      \        R4      3p\        V P                  .VO5!  p\        P                  ! V P                  4      pW#8X  g   Q hR# z0.6z4.0N)r   r   r	  r   )r=   ri   fl_M_pas_manualfl_M_pas_constantss   &   r7   r   :TestFiberForceLengthPassiveDeGroote2016.test_with_defaults  sM    %L%L
	 >dnnYyY@NNt~~^444r:   c                   \        V P                  .V P                  O5!  pV P                  \	        V P                  \        V P                  ^,
          4      ,          V P                  ,          4      ,          V P                  \	        V P                  4      ^,
          ,          ,          pVP                  V P                  4      V8X  g   Q hR# r   r   r	  ri   rf   r	   r   re   r   r=   r  rM   s   &  r7    test_differentiate_wrt_l_M_tildeHTestFiberForceLengthPassiveDeGroote2016.test_differentiate_wrt_l_M_tilde  s    6t~~WW773twwt~~7I'JJ477RSSUYU\U\^abfbibi^jmn^nUop}}T^^,888r:   c                   \        V P                  .V P                  O5!  pV P                  ) \	        V P                  \        V P                  ^,
          4      ,          V P                  ,          4      ,          \        V P                  ^,
          4      ,          V P                  ^,          \	        V P                  4      ^,
          ,          ,          pVP                  V P                  4      V8X  g   Q hR# r   r  r  s   &  r7   r   ATestFiberForceLengthPassiveDeGroote2016.test_differentiate_wrt_c0  s    6t~~WWWWHS!1C!DDTWWLMMT^^a/0126''1*c$''lQ>N2OQ 	 }}TWW%111r:   c           	        \        V P                  .V P                  O5!  p\        V P                  4      ) R\        V P                  \        V P                  ^,
          4      ,          V P                  ,          4      ,           ,          \        V P                  4      ^,
          ^,          ,          \        V P                  \        V P                  ^,
          4      ,          V P                  ,          4      V P                  ^,
          ,          V P                  \        V P                  4      ^,
          ,          ,          ,           pVP                  V P                  4      V8X  g   Q hR# r   )r   r	  ri   r	   rf   r   re   r   r  s   &  r7   r   ATestFiberForceLengthPassiveDeGroote2016.test_differentiate_wrt_c1  s    6t~~WW\M2DGGODNNQ<N,O$OPTPWPW$W XXY[^_c_f_f[gjk[knoZoo$''/$..1*<==dggEFYZHZ[]a]d]dfijnjqjqfruvfv]wxy 	 }}TWW%111r:   c                |    \        V P                  .V P                  O5!  pVP                  4       \        J g   Q hR # r2   )r   r	  ri   r   r   r  s   & r7   r   4TestFiberForceLengthPassiveDeGroote2016.test_inverse  s1    6t~~WW!%OOOOr:   c                    \        V P                  .V P                  O5!  pR p\        4       P	                  V4      V8X  g   Q hR# )z4\operatorname{fl}^M_{pas} \left( l_{M tilde} \right)N)r   r	  ri   r   rK   r  s   &  r7   r   ATestFiberForceLengthPassiveDeGroote2016.test_function_print_latex  s9    6t~~WWJ~%%h/8;;;r:   c                    \        V P                  .V P                  O5!  pR p\        4       P	                  VP                  4       4      V8X  g   Q hR# )zN\frac{e^{\frac{c_{1} \left(l_{M tilde} - 1\right)}{c_{0}}} - 1}{e^{c_{1}} - 1}N)r   r	  ri   r   rK   r?   r  s   &  r7   r   CTestFiberForceLengthPassiveDeGroote2016.test_expression_print_latex  s?    6t~~WWd~%%hmmo6(BBBr:   r-   zC(0.01865736036377405*(-1 + exp(6.666666666666667*(l_M_tilde - 1))))zH(0.01865736036377405*(-1 + std::exp(6.666666666666667*(l_M_tilde - 1))))zT      (0.0186573603637741d0*(-1 + exp(6.666666666666667d0*(l_M_tilde - 1
     @ ))))zA(0.0186573603637741*(-1 + exp(6.66666666666667*(l_M_tilde - 1))))zF(0.0186573603637741*(-1 + math.exp(6.66666666666667*(l_M_tilde - 1))))zG(0.0186573603637741*(-1 + numpy.exp(6.66666666666667*(l_M_tilde - 1))))zF(0.0186573603637741*(-1 + cupy.exp(6.66666666666667*(l_M_tilde - 1))))zK(0.0186573603637741*(-1 + jax.numpy.exp(6.66666666666667*(l_M_tilde - 1))))zy(mpmath.mpf((0, 672202249456079, -55, 50))*(-1 + mpmath.exp(mpmath.mpf((0, 7505999378950827, -50, 53))*(l_M_tilde - 1))))c                    \         P                  ! V P                  4      pV! 4       P                  V4      V8X  g   Q hR # r2   )r   r   r	  rK   )r=   rL   rM   r  s   &&& r7   r   7TestFiberForceLengthPassiveDeGroote2016.test_print_code"  s4    H 7DDT^^T~%%h/8;;;r:   c                    \         P                  ! V P                  4      pVP                  V P                  4      pR p\	        4       P                  V4      V8X  g   Q hR# )z;0.12438240242516*math.exp(6.66666666666667*(l_M_tilde - 1))N)r   r   r	  r   r&   rK   )r=   r  fl_M_pas_dl_M_tilderM   s   &   r7   r   BTestFiberForceLengthPassiveDeGroote2016.test_derivative_print_codei  sK    6DDT^^T&mmDNN;P "**+>?8KKKr:   c                    \         P                  ! V P                  4      p\        V P                  V4      pV! R 4      \        P
                  ! R4      8X  g   Q hR# )r   r   N)r   r   r	  r'   rX   r   )r=   r  fl_M_pas_callables   &  r7   r   5TestFiberForceLengthPassiveDeGroote2016.test_lambdifyo  sC    6DDT^^T$T^^X> %s);;;;r:   Nr   r   c                   \         P                  ! V P                  4      p\        V P                  VR 4      p\        P                  . RO4      p\        P                  . RO4      p\        P                  P                  V! V4      V4       R# )r)   N      ?皙??r   皙?333333?      ?g1olgx#^#ggΫr   g4],eI?g-˯?gO#?)r   r   r	  r'   r)   r   r   r   r=   r  r0  r	  rM   s   &    r7   r   ;TestFiberForceLengthPassiveDeGroote2016.test_lambdify_numpyt  sg    6DDT^^T$T^^XwGKK CD	;;  
  	%%&7	&BHMr:   r   c                j   \         P                  ! V P                  4      p\        P	                  \        V P                  VR 4      4      p\        P                  P                  . RO4      p\        P                  P                  . RO4      p\        P                  P                  V! V4      V4       R# )r(   Nr3  r:  )
r   r   r	  r(   r   r'   r)   r   r   r   r;  s   &    r7   r   9TestFiberForceLengthPassiveDeGroote2016.test_lambdify_jax  sx    6DDT^^TGGHT^^Xu$MNIIOO$GH	99?? $
  	%%&7	&BHMr:   )re   rf   ri   r	  ).rA   rB   rC   rD   rX   r   r
  rW   rp   rw   rz   r   r   r  r   r   r   r   r   rY   rZ   r   r   r   r   r   r   r   r    r&   r#   r$   r!   r"   r%   r   r   r   r   r   r)   r   r(   r   rF   rG   rH   s   @r7   r  r    s    ^^D!, ", e e
[
`o59
22P<
C
 [[  U
 U
 U
 !U
 !Z
 !Z
  "S
 "X
 Y
 Y
 X
 ]
 P Xw?	
BF<GBF<L<
 [[.CDN EN [[t,?@N ANr:   r  c                     a  ] tR tRt o ]P
                  ! RR7      R 4       t]R 4       tR t	R t
R tR	 tR
 tR tR tR tR tR t]P&                  P)                  R]R3]R3]R3]R3]R3]R3]R3]R3]R3]R3]R3] R3]!R3]"R3]#R3.4      R 4       t$R t%R t&]P&                  PO                  ](RJ RR7      R  4       t)]P&                  PO                  ]*RJ R!R7      R" 4       t+R#t,V t-R# )$.TestFiberForceLengthPassiveInverseDeGroote2016i  Tr]   c                    \        R 4      V n        \        R4      V n        \        R4      V n        V P                  V P                  3V n        R# )r  ra   rb   N)r   r  re   rf   ri   rj   s   &r7   r
  \TestFiberForceLengthPassiveInverseDeGroote2016._fiber_force_length_passive_arguments_fixture  s8    z*--''477+r:   c                     \        \        \        4      '       g   Q h\        \        \        4      '       g   Q h\        P                  R 8X  g   Q hR# )r   N)ro   r   r   r   rA   r3   r:   r7   rp   9TestFiberForceLengthPassiveInverseDeGroote2016.test_class  s@    DhOOOODFabbbb9BBFrrrrr:   c                    \        V P                  .V P                  O5!  p\        V\         4      '       g   Q h\	        V4      R 8X  g   Q hR# )z>FiberForceLengthPassiveInverseDeGroote2016(fl_M_pas, c_0, c_1)N)r   r  ri   rs   rt   r=   fl_M_pas_invs   & r7   rw   <TestFiberForceLengthPassiveInverseDeGroote2016.test_instance  sD    A$--aRVR`R`a,(RSSSS< $ddddr:   c                <   \        V P                  .V P                  O5!  P                  4       pWP                  \        V P                  \        V P                  4      ^,
          ,          ^,           4      ,          V P                  ,          ^,           8X  g   Q hR# r   )r   r  ri   r?   re   r
   r	   rf   rF  s   & r7   rz   8TestFiberForceLengthPassiveInverseDeGroote2016.test_doit  sl    A$--aRVR`R`affhwws4==#dgg,:J+Ka+O'PPQUQXQXX[\\\\\r:   c           
     R   \        V P                  .V P                  O5!  P                  R R7      pWP                  \        \        V P                  \        V P                  4      ^,
          ,          4      ^,           4      ,          V P                  ,          ^,           8X  g   Q hR# r}   )	r   r  ri   r?   re   r
   r   r	   rf   rF  s   & r7   r   GTestFiberForceLengthPassiveInverseDeGroote2016.test_doit_evaluate_false  sy    A$--aRVR`R`affpufvwws?4==#dgg,YZJZ;[+\_`+`'aabfbibiilmmmmmr:   c                    \        R 4      \        R4      3p\        V P                  .VO5!  p\        P                  ! V P                  4      pW#8X  g   Q hR# r  )r   r   r  r   )r=   ri   fl_M_pas_inv_manualfl_M_pas_inv_constantss   &   r7   r   ATestFiberForceLengthPassiveInverseDeGroote2016.test_with_defaults  sS    %L%L
	 IcYbc!K!Y!YZ^ZgZg!h"<<<r:   c                z   \        V P                  .V P                  O5!  pV P                  \	        V P
                  4      ^,
          ,          V P
                  V P                  \	        V P
                  4      ^,
          ,          ^,           ,          ,          pVP                  V P                  4      V8X  g   Q hR# r   )r   r  ri   re   r	   rf   r   r=   rG  rM   s   &  r7   r   JTestFiberForceLengthPassiveInverseDeGroote2016.test_differentiate_wrt_fl_T  s    A$--aRVR`R`a77CL1,-twws477|VWGW8X[\8\/]^  /8;;;r:   c                (   \        V P                  .V P                  O5!  p\        V P                  \	        V P
                  4      ^,
          ,          ^,           4      V P
                  ,          pVP                  V P                  4      V8X  g   Q hR# r   )r   r  ri   r
   r	   rf   r   re   rR  s   &  r7   r   HTestFiberForceLengthPassiveInverseDeGroote2016.test_differentiate_wrt_c0  sg    A$--aRVR`R`at}}c$''lQ&67!;<TWWD  )X555r:   c                d   \        V P                  .V P                  O5!  pV P                  V P                  ,          \	        V P
                  4      ,          V P
                  V P                  \	        V P
                  4      ^,
          ,          ^,           ,          ,          V P                  \        V P                  \	        V P
                  4      ^,
          ,          ^,           4      ,          V P
                  ^,          ,          ,
          pVP                  V P
                  4      V8X  g   Q hR# r   )r   r  ri   re   r	   rf   r
   r   rR  s   &  r7   r   HTestFiberForceLengthPassiveInverseDeGroote2016.test_differentiate_wrt_c1  s    A$--aRVR`R`aGGDMM!#dgg,.DGGWXHX9Y\]9]0^_ggc$--TWW)9:Q>??
JK 	   )X555r:   c                |    \        V P                  .V P                  O5!  pVP                  4       \        J g   Q hR # r2   )r   r  ri   r   r   rF  s   & r7   r   ;TestFiberForceLengthPassiveInverseDeGroote2016.test_inverse  s4    A$--aRVR`R`a##%)LLLLr:   c                    \        V P                  .V P                  O5!  pR p\        4       P	                  V4      V8X  g   Q hR# )zG\left( \operatorname{fl}^M_{pas} \right)^{-1} \left( fl_{M pas} \right)N)r   r  ri   r   rK   rR  s   &  r7   r   HTestFiberForceLengthPassiveInverseDeGroote2016.test_function_print_latex  s<    A$--aRVR`R`a]~%%l3x???r:   c                    \        V P                  .V P                  O5!  pR p\        4       P	                  VP                  4       4      V8X  g   Q hR# )zU\frac{c_{0} \log{\left(fl_{M pas} \left(e^{c_{1}} - 1\right) + 1 \right)}}{c_{1}} + 1N)r   r  ri   r   rK   r?   r   s   &  r7   r   JTestFiberForceLengthPassiveInverseDeGroote2016.test_expression_print_latex  s?    9$--Y$..Yk~%%diik2h>>>r:   r-   z>(1 + 0.14999999999999999*log(1 + 53.598150033144236*fl_M_pas))zC(1 + 0.14999999999999999*std::log(1 + 53.598150033144236*fl_M_pas))z;      (1 + 0.15d0*log(1.0d0 + 53.5981500331442d0*fl_M_pas))z-(1 + 0.15*log(1 + 53.5981500331442*fl_M_pas))z2(1 + 0.15*math.log(1 + 53.5981500331442*fl_M_pas))z3(1 + 0.15*numpy.log(1 + 53.5981500331442*fl_M_pas))z2(1 + 0.15*cupy.log(1 + 53.5981500331442*fl_M_pas))z7(1 + 0.15*jax.numpy.log(1 + 53.5981500331442*fl_M_pas))zs(1 + mpmath.mpf((0, 5404319552844595, -55, 53))*mpmath.log(1 + mpmath.mpf((0, 942908627019595, -44, 50))*fl_M_pas))c                    \         P                  ! V P                  4      pV! 4       P                  V4      V8X  g   Q hR # r2   )r   r   r  rK   )r=   rL   rM   rG  s   &&& r7   r   >TestFiberForceLengthPassiveInverseDeGroote2016.test_print_code  s8    F BOOPTP]P]^~%%l3x???r:   c                    \         P                  ! V P                  4      pVP                  V P                  4      pR p\	        4       P                  V4      V8X  g   Q hR# )z232.1588900198865/(214.392600132577*fl_M_pas + 4.0)N)r   r   r  r   r&   rK   )r=   rG  dfl_M_pas_inv_dfl_TrM   s   &   r7   r   ITestFiberForceLengthPassiveInverseDeGroote2016.test_derivative_print_code   sP    AOOPTP]P]^*//>G "**+>?8KKKr:   c                    \         P                  ! V P                  4      p\        V P                  V4      pV! R 4      \        P
                  ! R4      8X  g   Q hR# )r   r   N)r   r   r  r'   rX   r   )r=   rG  fl_M_pas_inv_callables   &  r7   r   <TestFiberForceLengthPassiveInverseDeGroote2016.test_lambdify&  sF    AOOPTP]P]^ ( E$S)V]]3-????r:   Nr   r   c                   \         P                  ! V P                  4      p\        V P                  VR 4      p\        P                  . RO4      p\        P                  . RO4      p\        P                  P                  V! V4      V4       R# )r)   Nr   r   g{Gz?g{Gz?g?g?gL}P?r   g>7?g,5?gx~ ?ghlp?)r   r   r  r'   r)   r   r   r   r=   rG  rd  r  rM   s   &    r7   r   BTestFiberForceLengthPassiveInverseDeGroote2016.test_lambdify_numpy+  sj    AOOPTP]P]^ (g N;;BC;;  
  	%%&;H&ExPr:   r   c                j   \         P                  ! V P                  4      p\        P	                  \        V P                  VR 4      4      p\        P                  P                  . RO4      p\        P                  P                  . RO4      p\        P                  P                  V! V4      V4       R# )r(   Nrg  rh  )
r   r   r  r(   r   r'   r)   r   r   r   ri  s   &    r7   r   @TestFiberForceLengthPassiveInverseDeGroote2016.test_lambdify_jax:  s{    AOOPTP]P]^ #e(T U99??#FG99?? $
  	%%&;H&ExPr:   )re   rf   ri   r  ).rA   rB   rC   rD   rX   r   r
  rW   rp   rw   rz   r   r   r   r   r   r   r   r   rY   rZ   r   r   r   r   r   r   r   r    r&   r#   r$   r!   r"   r%   r   r   r   r   r   r)   r   r(   r   rF   rG   rH   s   @r7   r@  r@    s    ^^D!, ", s s
e
]n=<
6
6M@
?
 [[  P
 P
 P
 !P
 !U
 !U
 M
 "?
 "D
 E
 E
 D
 I
 I Du>	
AD@EAD@L@
 [[.CDQ EQ [[t,?@Q AQr:   r@  c                     a  ] tR tRt o ]P
                  ! RR7      R 4       t]R 4       tR t	R t
R tR	 tR
 tR tR tR tR tR tR tR tR tR tR tR tR tR tR t]P8                  P;                  R]R3]R3] R3]!R3]"R3]#R3]$R3]%R3]&R3]'R 3](R 3])R!3]*R"3]+R#3],R3.4      R$ 4       t-R% t.R& t/]P8                  Pa                  ]1R'J R(R)7      R* 4       t2]P8                  Pa                  ]3R'J R+R)7      R, 4       t4R-t5V t6R'# ).&TestFiberForceLengthActiveDeGroote2016iJ  Tr]   c                   \        R 4      V n        \        R4      V n        \        R4      V n        \        R4      V n        \        R4      V n        \        R4      V n        \        R4      V n        \        R4      V n        \        R4      V n	        \        R	4      V n
        \        R
4      V n        \        R4      V n        \        R4      V n        V P                  V P                  V P                  V P
                  V P                  V P                  V P                  V P                  V P                  V P                  V P                  V P                  3V n        R# )r	  ra   rb   rc   rd   c_4c_5c_6c_7c_8c_9c_10c_11N)r   r	  re   rf   rg   rh   c4c5c6c7c8c9c10c11ri   rj   s   &r7   ,_fiber_force_length_active_arguments_fixtureSTestFiberForceLengthActiveDeGroote2016._fiber_force_length_active_arguments_fixtureL  s    ,----------&>&>GGTWWdggtwwGGTWWdggtww$((
r:   c                     \        \        \        4      '       g   Q h\        \        \        4      '       g   Q h\        P                  R 8X  g   Q hR# )r   N)ro   r   r   r   rA   r3   r:   r7   rp   1TestFiberForceLengthActiveDeGroote2016.test_class`  s@    <hGGGG<>YZZZZ1::>bbbbr:   c                    \        V P                  .V P                  O5!  p\        V\         4      '       g   Q h\	        V4      R 8X  g   Q hR# )zkFiberForceLengthActiveDeGroote2016(l_M_tilde, c_0, c_1, c_2, c_3, c_4, c_5, c_6, c_7, c_8, c_9, c_10, c_11)N)r   r	  ri   rs   rt   r=   fl_M_acts   & r7   rw   4TestFiberForceLengthActiveDeGroote2016.test_instancef  sH    5dnnVt~~V($FGGGG8}8
 	
 
r:   c           	     \   \        V P                  .V P                  O5!  P                  4       pVV P                  \        V P                  V P                  ,
          V P                  V P                  V P                  ,          ,           ,          ^,          ) ^,          4      ,          V P                  \        V P                  V P                  ,
          V P                  V P                  V P                  ,          ,           ,          ^,          ) ^,          4      ,          ,           V P                  \        V P                  V P                  ,
          V P                  V P                   V P                  ,          ,           ,          ^,          ) ^,          4      ,          ,           8X  g   Q hR# r   )r   r	  ri   r?   re   r	   rf   rg   rh   rx  ry  rz  r{  r|  r}  r~  r  r  s   & r7   rz   0TestFiberForceLengthActiveDeGroote2016.test_doitn  s   5dnnVt~~V[[]GGCDNNTWW4twwAW7WX[\\]^__``ggcdnntww64774>>CY9YZ]^^_`aabbcggcdnntww6DHHT^^D[9[\_``abccdde
 	
 
r:   c           	        \        V P                  .V P                  O5!  P                  R R7      pVV P                  \        \        V P                  V P                  ,
          4      V P                  V P                  V P                  ,          ,           ,          ^,          ) ^,          4      ,          V P                  \        \        V P                  V P                  ,
          4      V P                  V P                  V P                  ,          ,           ,          ^,          ) ^,          4      ,          ,           V P                  \        \        V P                  V P                  ,
          4      V P                   V P"                  V P                  ,          ,           ,          ^,          ) ^,          4      ,          ,           8X  g   Q hR# r}   )r   r	  ri   r?   re   r	   r   rf   rg   rh   rx  ry  rz  r{  r|  r}  r~  r  r  s   & r7   r   ?TestFiberForceLengthActiveDeGroote2016.test_doit_evaluate_falsev  s?   5dnnVt~~V[[ej[kGGC?4>>DGG+CDdggPTPWPWX\XfXfPfFfgjkklmnnooggc_T^^dgg-EFRVRYRYZ^ZhZhRhHhilmmnoppqqrggc_T^^dgg-EFSWS[S[\`\j\jSjHjknoopqrrsst
 	
 
r:   c                x   \        R 4      \        R4      \        R4      \        R4      \        R4      \        R4      \        R4      \        R4      \        R4      \        R	4      \        R
4      \        R4      3p\        V P                  .VO5!  p\        P                  ! V P                  4      pW#8X  g   Q hR# )z0.814z1.06z0.162z0.0633z0.433z0.717z-0.0299r   z0.1z1.0z0.354z0.0N)r   r   r	  r   )r=   ri   fl_M_act_manualfl_M_act_constantss   &   r7   r   9TestFiberForceLengthActiveDeGroote2016.test_with_defaults~  s    'N&M'N(O'N'N)%L%L%L'N%L
	 =T^^XiX?MMdnn]444r:   c           	        \        V P                  .V P                  O5!  pV P                  V P                  V P                  V P
                  ,
          ^,          ,          V P                  V P                  V P                  ,          ,           ^,          ,          V P
                  V P                  ,
          V P                  V P                  V P                  ,          ,           ^,          ,          ,           ,          \        V P                  V P
                  ,
          ^,          ) ^V P                  V P                  V P                  ,          ,           ^,          ,          ,          4      ,          V P                  V P                  V P                  V P                  ,
          ^,          ,          V P                  V P                  V P                  ,          ,           ^,          ,          V P                  V P                  ,
          V P                  V P                  V P                  ,          ,           ^,          ,          ,           ,          \        V P                  V P                  ,
          ^,          ) ^V P                  V P                  V P                  ,          ,           ^,          ,          ,          4      ,          ,           V P                  V P                  V P                  V P                  ,
          ^,          ,          V P                  V P                  V P                  ,          ,           ^,          ,          V P                  V P                  ,
          V P                  V P                  V P                  ,          ,           ^,          ,          ,           ,          \        V P                  V P                  ,
          ^,          ) ^V P                  V P                  V P                  ,          ,           ^,          ,          ,          4      ,          ,           pVP!                  V P                  4      V8X  g   Q hR# r   )r   r	  ri   re   rh   rf   rg   r	   rx  r{  ry  rz  r|  r  r}  r~  r   r=   r  rM   s   &  r7   r  GTestFiberForceLengthActiveDeGroote2016.test_differentiate_wrt_l_M_tilde  s   5dnnVt~~VGG$''1A55twwAW7WZ[6[[77T^^+tww9O/ORS.STU DNNTWW,q00!TWWtwwt~~?U5UXY4Y2YZ[\ gg$''1A55twwAW7WZ[6[[77T^^+tww9O/ORS.STU DNNTWW,q00!TWWtwwt~~?U5UXY4Y2YZ[\	\ gg$..4772Q66488DNNCZ8Z]^7^^77T^^+txx$((4>>:Q/QTU.UVW DNNTWW,q00!TXX@W5WZ[4[2[\]^^ 	 }}T^^,888r:   c                   \        V P                  .V P                  O5!  p\        V P                  V P                  ,
          ^,          ) ^V P
                  V P                  V P                  ,          ,           ^,          ,          ,          4      pVP                  4       P                  V P                  4      V8X  g   Q hR# r   )
r   r	  ri   r	   rf   rg   rh   r?   r   re   r  s   &  r7   r   @TestFiberForceLengthActiveDeGroote2016.test_differentiate_wrt_c0  s    5dnnVt~~V$''1A55q$''DGGDNNDZ:Z]^9^7^_`}}##DGG,888r:   c                D   \        V P                  .V P                  O5!  pV P                  V P                  V P                  ,
          ,          V P
                  V P                  V P                  ,          ,           ^,          ,          \        V P                  V P                  ,
          ^,          ) ^V P
                  V P                  V P                  ,          ,           ^,          ,          ,          4      ,          pVP                  V P                  4      V8X  g   Q hR# r   	r   r	  ri   re   rf   rg   rh   r	   r   r  s   &  r7   r   @TestFiberForceLengthActiveDeGroote2016.test_differentiate_wrt_c1      5dnnVt~~VGGT^^dgg-.$''$..:P0PST/TT4>>DGG+a//DGGdggdnn>T4TWX3X1XYZ[ 	 }}TWW%111r:   c                R   \        V P                  .V P                  O5!  pV P                  V P                  V P                  ,
          ^,          ,          V P
                  V P                  V P                  ,          ,           ^,          ,          \        V P                  V P                  ,
          ^,          ) ^V P
                  V P                  V P                  ,          ,           ^,          ,          ,          4      ,          pVP                  V P
                  4      V8X  g   Q hR# r   r  r  s   &  r7   r   @TestFiberForceLengthActiveDeGroote2016.test_differentiate_wrt_c2      5dnnVt~~VGGT^^dgg-11477TWWT^^=S3SVW2WW4>>DGG+a//DGGdggdnn>T4TWX3X1XYZ[ 	 }}TWW%111r:   c                t   \        V P                  .V P                  O5!  pV P                  V P                  ,          V P                  V P                  ,
          ^,          ,          V P
                  V P                  V P                  ,          ,           ^,          ,          \        V P                  V P                  ,
          ^,          ) ^V P
                  V P                  V P                  ,          ,           ^,          ,          ,          4      ,          pVP                  V P                  4      V8X  g   Q hR# r   r  r  s   &  r7   r   @TestFiberForceLengthActiveDeGroote2016.test_differentiate_wrt_c3      5dnnVt~~VGGDNN"DNNTWW$<q#@@$''DGGTXTbTbLbBbefAff4>>DGG+a//DGGdggdnn>T4TWX3X1XYZ[ 	 }}TWW%111r:   c                j   \        V P                  .V P                  O5!  p\        V P                  V P                  ,
          ^,          ) ^V P
                  V P                  V P                  ,          ,           ^,          ,          ,          4      pVP                  V P                  4      V8X  g   Q hR# r   )	r   r	  ri   r	   ry  rz  r{  r   rx  r  s   &  r7   test_differentiate_wrt_c4@TestFiberForceLengthActiveDeGroote2016.test_differentiate_wrt_c4  sy    5dnnVt~~V$''1A55q$''DGGDNNDZ:Z]^9^7^_`}}TWW%111r:   c                D   \        V P                  .V P                  O5!  pV P                  V P                  V P                  ,
          ,          V P
                  V P                  V P                  ,          ,           ^,          ,          \        V P                  V P                  ,
          ^,          ) ^V P
                  V P                  V P                  ,          ,           ^,          ,          ,          4      ,          pVP                  V P                  4      V8X  g   Q hR# r   	r   r	  ri   rx  ry  rz  r{  r	   r   r  s   &  r7   test_differentiate_wrt_c5@TestFiberForceLengthActiveDeGroote2016.test_differentiate_wrt_c5  r  r:   c                R   \        V P                  .V P                  O5!  pV P                  V P                  V P                  ,
          ^,          ,          V P
                  V P                  V P                  ,          ,           ^,          ,          \        V P                  V P                  ,
          ^,          ) ^V P
                  V P                  V P                  ,          ,           ^,          ,          ,          4      ,          pVP                  V P
                  4      V8X  g   Q hR# r   r  r  s   &  r7   test_differentiate_wrt_c6@TestFiberForceLengthActiveDeGroote2016.test_differentiate_wrt_c6  r  r:   c                t   \        V P                  .V P                  O5!  pV P                  V P                  ,          V P                  V P                  ,
          ^,          ,          V P
                  V P                  V P                  ,          ,           ^,          ,          \        V P                  V P                  ,
          ^,          ) ^V P
                  V P                  V P                  ,          ,           ^,          ,          ,          4      ,          pVP                  V P                  4      V8X  g   Q hR# r   r  r  s   &  r7   test_differentiate_wrt_c7@TestFiberForceLengthActiveDeGroote2016.test_differentiate_wrt_c7  r  r:   c                j   \        V P                  .V P                  O5!  p\        V P                  V P                  ,
          ^,          ) ^V P
                  V P                  V P                  ,          ,           ^,          ,          ,          4      pVP                  V P                  4      V8X  g   Q hR# r   )	r   r	  ri   r	   r}  r~  r  r   r|  r  s   &  r7   test_differentiate_wrt_c8@TestFiberForceLengthActiveDeGroote2016.test_differentiate_wrt_c8  sy    5dnnVt~~V$''1A55q$((TXXdnnE\:\_`9`7`ab}}TWW%111r:   c                D   \        V P                  .V P                  O5!  pV P                  V P                  V P                  ,
          ,          V P
                  V P                  V P                  ,          ,           ^,          ,          \        V P                  V P                  ,
          ^,          ) ^V P
                  V P                  V P                  ,          ,           ^,          ,          ,          4      ,          pVP                  V P                  4      V8X  g   Q hR# r   	r   r	  ri   r|  r}  r~  r  r	   r   r  s   &  r7   test_differentiate_wrt_c9@TestFiberForceLengthActiveDeGroote2016.test_differentiate_wrt_c9  s    5dnnVt~~VGGT^^dgg-.488DNN;R0RUV/VV4>>DGG+a//DHHtxx?V4VYZ3Z1Z[\] 	 }}TWW%111r:   c                R   \        V P                  .V P                  O5!  pV P                  V P                  V P                  ,
          ^,          ,          V P
                  V P                  V P                  ,          ,           ^,          ,          \        V P                  V P                  ,
          ^,          ) ^V P
                  V P                  V P                  ,          ,           ^,          ,          ,          4      ,          pVP                  V P
                  4      V8X  g   Q hR# r   r  r  s   &  r7   test_differentiate_wrt_c10ATestFiberForceLengthActiveDeGroote2016.test_differentiate_wrt_c10  s    5dnnVt~~VGGT^^dgg-11488dhht~~>U3UXY2YY4>>DGG+a//DHHtxx?V4VYZ3Z1Z[\] 	 }}TXX&(222r:   c                t   \        V P                  .V P                  O5!  pV P                  V P                  ,          V P                  V P                  ,
          ^,          ,          V P
                  V P                  V P                  ,          ,           ^,          ,          \        V P                  V P                  ,
          ^,          ) ^V P
                  V P                  V P                  ,          ,           ^,          ,          ,          4      ,          pVP                  V P                  4      V8X  g   Q hR# r   r  r  s   &  r7   test_differentiate_wrt_c11ATestFiberForceLengthActiveDeGroote2016.test_differentiate_wrt_c11  s    5dnnVt~~VGGDNN"DNNTWW$<q#@@$((TXXVZVdVdMdBdghAhh4>>DGG+a//DHHtxx?V4VYZ3Z1Z[\] 	 }}TXX&(222r:   c                    \        V P                  .V P                  O5!  pR p\        4       P	                  V4      V8X  g   Q hR# )z4\operatorname{fl}^M_{act} \left( l_{M tilde} \right)N)r   r	  ri   r   rK   r  s   &  r7   r   @TestFiberForceLengthActiveDeGroote2016.test_function_print_latex  s9    5dnnVt~~VJ~%%h/8;;;r:   c                    \        V P                  .V P                  O5!  pR p\        4       P	                  VP                  4       4      V8X  g   Q hR# )a=  c_{0} e^{- \frac{\left(- c_{1} + l_{M tilde}\right)^{2}}{2 \left(c_{2} + c_{3} l_{M tilde}\right)^{2}}} + c_{4} e^{- \frac{\left(- c_{5} + l_{M tilde}\right)^{2}}{2 \left(c_{6} + c_{7} l_{M tilde}\right)^{2}}} + c_{8} e^{- \frac{\left(- c_{9} + l_{M tilde}\right)^{2}}{2 \left(c_{10} + c_{11} l_{M tilde}\right)^{2}}}N)r   r	  ri   r   rK   r?   r  s   &  r7   r   BTestFiberForceLengthActiveDeGroote2016.test_expression_print_latex  sG    5dnnVt~~V{ 	
 ~%%hmmo6(BBBr:   r-   aI  (0.81399999999999995*exp(-1.0/2.0*pow(l_M_tilde - 1.0600000000000001, 2)/pow(0.063299999999999995*l_M_tilde + 0.16200000000000001, 2)) + 0.433*exp(-1.0/2.0*pow(l_M_tilde - 0.71699999999999997, 2)/pow(0.20000000000000001*l_M_tilde - 0.029899999999999999, 2)) + 0.10000000000000001*exp(-3.9899134986753491*pow(l_M_tilde - 1.0, 2)))ab  (0.81399999999999995*exp(-1.0/2.0*std::pow(l_M_tilde - 1.0600000000000001, 2)/std::pow(0.063299999999999995*l_M_tilde + 0.16200000000000001, 2)) + 0.433*exp(-1.0/2.0*std::pow(l_M_tilde - 0.71699999999999997, 2)/std::pow(0.20000000000000001*l_M_tilde - 0.029899999999999999, 2)) + 0.10000000000000001*exp(-3.9899134986753491*std::pow(l_M_tilde - 1.0, 2)))aq  (0.81399999999999995*std::exp(-1.0/2.0*std::pow(l_M_tilde - 1.0600000000000001, 2)/std::pow(0.063299999999999995*l_M_tilde + 0.16200000000000001, 2)) + 0.433*std::exp(-1.0/2.0*std::pow(l_M_tilde - 0.71699999999999997, 2)/std::pow(0.20000000000000001*l_M_tilde - 0.029899999999999999, 2)) + 0.10000000000000001*std::exp(-3.9899134986753491*std::pow(l_M_tilde - 1.0, 2)))a6        (0.814d0*exp(-0.5d0*(l_M_tilde - 1.06d0)**2/(
     @ 0.063299999999999995d0*l_M_tilde + 0.16200000000000001d0)**2) +
     @ 0.433d0*exp(-0.5d0*(l_M_tilde - 0.717d0)**2/(
     @ 0.20000000000000001d0*l_M_tilde - 0.029899999999999999d0)**2) +
     @ 0.1d0*exp(-3.9899134986753491d0*(l_M_tilde - 1.0d0)**2))z(0.814*exp(-(l_M_tilde - 1.06).^2./(2*(0.0633*l_M_tilde + 0.162).^2)) + 0.433*exp(-(l_M_tilde - 0.717).^2./(2*(0.2*l_M_tilde - 0.0299).^2)) + 0.1*exp(-3.98991349867535*(l_M_tilde - 1.0).^2))z(0.814*math.exp(-1/2*(l_M_tilde - 1.06)**2/(0.0633*l_M_tilde + 0.162)**2) + 0.433*math.exp(-1/2*(l_M_tilde - 0.717)**2/(0.2*l_M_tilde - 0.0299)**2) + 0.1*math.exp(-3.98991349867535*(l_M_tilde - 1.0)**2))z(0.814*numpy.exp(-1/2*(l_M_tilde - 1.06)**2/(0.0633*l_M_tilde + 0.162)**2) + 0.433*numpy.exp(-1/2*(l_M_tilde - 0.717)**2/(0.2*l_M_tilde - 0.0299)**2) + 0.1*numpy.exp(-3.98991349867535*(l_M_tilde - 1.0)**2))z(0.814*cupy.exp(-1/2*(l_M_tilde - 1.06)**2/(0.0633*l_M_tilde + 0.162)**2) + 0.433*cupy.exp(-1/2*(l_M_tilde - 0.717)**2/(0.2*l_M_tilde - 0.0299)**2) + 0.1*cupy.exp(-3.98991349867535*(l_M_tilde - 1.0)**2))z(0.814*jax.numpy.exp(-1/2*(l_M_tilde - 1.06)**2/(0.0633*l_M_tilde + 0.162)**2) + 0.433*jax.numpy.exp(-1/2*(l_M_tilde - 0.717)**2/(0.2*l_M_tilde - 0.0299)**2) + 0.1*jax.numpy.exp(-3.98991349867535*(l_M_tilde - 1.0)**2))a  (mpmath.mpf((0, 7331860193359167, -53, 53))*mpmath.exp(-mpmath.mpf(1)/mpmath.mpf(2)*(l_M_tilde + mpmath.mpf((1, 2386907802506363, -51, 52)))**2/(mpmath.mpf((0, 2280622851300419, -55, 52))*l_M_tilde + mpmath.mpf((0, 5836665117072163, -55, 53)))**2) + mpmath.mpf((0, 7800234554605699, -54, 53))*mpmath.exp(-mpmath.mpf(1)/mpmath.mpf(2)*(l_M_tilde + mpmath.mpf((1, 6458161865649291, -53, 53)))**2/(mpmath.mpf((0, 3602879701896397, -54, 52))*l_M_tilde + mpmath.mpf((1, 8618088246936181, -58, 53)))**2) + mpmath.mpf((0, 3602879701896397, -55, 52))*mpmath.exp(-mpmath.mpf((0, 8984486472937407, -51, 53))*(l_M_tilde + mpmath.mpf((1, 1, 0, 1)))**2))c                    \         P                  ! V P                  4      pV! 4       P                  V4      V8X  g   Q hR # r2   )r   r   r	  rK   )r=   rL   rM   r  s   &&& r7   r   6TestFiberForceLengthActiveDeGroote2016.test_print_code  s4    H 6CCDNNS~%%h/8;;;r:   c                    \         P                  ! V P                  4      pVP                  V P                  4      pR p\	        4       P                  V4      V8X  g   Q hR# )a  (0.79798269973507 - 0.79798269973507*l_M_tilde)*math.exp(-3.98991349867535*(l_M_tilde - 1.0)**2) + (0.433*(0.717 - l_M_tilde)/(0.2*l_M_tilde - 0.0299)**2 + 0.0866*(l_M_tilde - 0.717)**2/(0.2*l_M_tilde - 0.0299)**3)*math.exp(-1/2*(l_M_tilde - 0.717)**2/(0.2*l_M_tilde - 0.0299)**2) + (0.814*(1.06 - l_M_tilde)/(0.0633*l_M_tilde + 0.162)**2 + 0.0515262*(l_M_tilde - 1.06)**2/(0.0633*l_M_tilde + 0.162)**3)*math.exp(-1/2*(l_M_tilde - 1.06)**2/(0.0633*l_M_tilde + 0.162)**2)N)r   r   r	  r   r&   rK   )r=   r  fl_M_act_dl_M_tilderM   s   &   r7   r   ATestFiberForceLengthActiveDeGroote2016.test_derivative_print_codeo  sS    5CCDNNS&mmDNN; e 	 !"**+>?8KKKr:   c                    \         P                  ! V P                  4      p\        V P                  V4      pV! R 4      \        P
                  ! R4      8X  g   Q hR# )r   s?N)r   r   r	  r'   rX   r   )r=   r  fl_M_act_callables   &  r7   r   4TestFiberForceLengthActiveDeGroote2016.test_lambdifyw  sC    5CCDNNS$T^^X> %|)DDDDr:   Nr   r   c                   \         P                  ! V P                  4      p\        V P                  VR 4      p\        P                  . RO4      p\        P                  . RO4      p\        P                  P                  V! V4      V4       R# )r)   Nr   r4  r   r9  g       @g	> P^?g]Q?r  g)`?gߌ'|?)r   r   r	  r'   r)   r   r   r   r=   r  r  r	  rM   s   &    r7   r   :TestFiberForceLengthActiveDeGroote2016.test_lambdify_numpy|  sg    5CCDNNS$T^^XwGKK 9:	;;  
  	%%&7	&BHMr:   r   c                j   \         P                  ! V P                  4      p\        P	                  \        V P                  VR 4      4      p\        P                  P                  . RO4      p\        P                  P                  . RO4      p\        P                  P                  V! V4      V4       R# )r(   Nr  r  )
r   r   r	  r(   r   r'   r)   r   r   r   r  s   &    r7   r   8TestFiberForceLengthActiveDeGroote2016.test_lambdify_jax  sx    5CCDNNSGGHT^^Xu$MNIIOO$=>	99?? $
  	%%&7	&BHMr:   )re   rf   r~  r  rg   rh   rx  ry  rz  r{  r|  r}  ri   r	  )7rA   rB   rC   rD   rX   r   r  rW   rp   rw   rz   r   r   r  r   r   r   r   r  r  r  r  r  r  r  r  r   r   rY   rZ   r   r   r   r   r   r   r   r    r&   r#   r$   r!   r"   r%   r   r   r   r   r   r)   r   r(   r   rF   rG   rH   s   @r7   rn  rn  J  s$    ^^D!
 "
& c c



5&9$9
2222
2222
233<
C [[   `  `  ` ! y ! H ! H V	 " U " b  e  e  b  q  W
  bs_	
bF<GbF<LE
 [[.CDN EN [[t,?@N ANr:   rn  c                     a  ] tR tRt o ]P
                  ! RR7      R 4       t]R 4       tR t	R t
R tR	 tR
 tR tR tR tR tR tR tR t]P*                  P-                  R]R3]R3]R3]R3]R3]R3]R3]R3]R3] R3]!R3]"R3]#R3]$R3]%R3.4      R 4       t&R t'R  t(]P*                  PS                  ]*R!J R"R#7      R$ 4       t+]P*                  PS                  ],R!J R%R#7      R& 4       t-R't.V t/R!# )("TestFiberForceVelocityDeGroote2016i  Tr]   c                   \        R 4      V n        \        R4      V n        \        R4      V n        \        R4      V n        \        R4      V n        V P                  V P                  V P                  V P
                  3V n        R# )	v_M_tildera   rb   rc   rd   N)r   r  re   rf   rg   rh   ri   rj   s   &r7   ._muscle_fiber_force_velocity_arguments_fixtureQTestFiberForceVelocityDeGroote2016._muscle_fiber_force_velocity_arguments_fixture  rm   r:   c                     \        \        \        4      '       g   Q h\        \        \        4      '       g   Q h\        P                  R 8X  g   Q hR# )r   N)ro   r   r   r   rA   r3   r:   r7   rp   -TestFiberForceVelocityDeGroote2016.test_class  s@    8(CCCC8:UVVVV-66:ZZZZr:   c                    \        V P                  .V P                  O5!  p\        V\         4      '       g   Q h\	        V4      R 8X  g   Q hR# )z=FiberForceVelocityDeGroote2016(v_M_tilde, c_0, c_1, c_2, c_3)N)r   r  ri   rs   rt   r=   fv_Ms   & r7   rw   0TestFiberForceVelocityDeGroote2016.test_instance  s@    -dnnNt~~N$ >????4y[[[[r:   c                   \        V P                  .V P                  O5!  P                  4       pV P                  \        V P                  V P                  ,          V P                  ,           \        V P                  V P                  ,          V P                  ,           ^,          ^,           4      ,           4      ,          V P                  ,           pW8X  g   Q hR# r   )
r   r  ri   r?   re   r
   rf   rg   r   rh   r=   r  rM   s   &  r7   rz   ,TestFiberForceVelocityDeGroote2016.test_doit  s    -dnnNt~~NSSUGGc477T^^3dgg=DGGdnn,tww6:Q>?@ A ACG77K 	 r:   c           
        \        V P                  .V P                  O5!  P                  R R7      pV P                  \        V P                  V P                  ,          V P                  ,           \        \        V P                  V P                  ,          V P                  ,           4      ^,          ^,           4      ,           4      ,          V P                  ,           pW8X  g   Q hR# r}   )r   r  ri   r?   re   r
   rf   rg   r   r   rh   r  s   &  r7   r   ;TestFiberForceVelocityDeGroote2016.test_doit_evaluate_false  s    -dnnNt~~NSS]bScGGc477T^^3dgg=?477T^^#;dgg#EFIAMNO P PRVRYRYZ 	 r:   c                    \        R 4      \        R4      \        R4      \        R4      3p\        V P                  .VO5!  p\        P                  ! V P                  4      pW#8X  g   Q hR# z-0.318z-8.149z-0.374z0.886N)r   r   r  r   )r=   ri   fv_M_manualfv_M_constantss   &   r7   r   5TestFiberForceVelocityDeGroote2016.test_with_defaults  sZ    (O(O(O'N	
	 5T^^PiP7EEdnnU,,,r:   c                l   \        V P                  .V P                  O5!  pV P                  V P                  ,          \        \        V P                  V P                  ,          V P                  ,           4      ^,          ^,           4      ,          pVP                  V P                  4      V8X  g   Q hR# r   )	r   r  ri   re   rf   r   r   rg   r   r  s   &  r7    test_differentiate_wrt_v_M_tildeCTestFiberForceVelocityDeGroote2016.test_differentiate_wrt_v_M_tilde  s}    -dnnNt~~NGGDGGO/$''$.."8477"BCQFJKL 	 yy(H444r:   c           	        \        V P                  .V P                  O5!  p\        V P                  V P                  ,          V P
                  ,           \        \        V P                  V P                  ,          V P
                  ,           4      ^,          ^,           4      ,           4      pVP                  V P                  4      V8X  g   Q hR# r   )
r   r  ri   r
   rf   rg   r   r   r   re   r  s   &  r7   r   <TestFiberForceVelocityDeGroote2016.test_differentiate_wrt_c0  s    -dnnNt~~NGGDNN"TWW,?4774>>#9DGG#CDaG!KLM
 yy!X---r:   c                l   \        V P                  .V P                  O5!  pV P                  V P                  ,          \	        \        V P                  V P                  ,          V P                  ,           4      ^,          ^,           4      ,          pVP                  V P                  4      V8X  g   Q hR# r   	r   r  ri   re   r   r   rf   rg   r   r  s   &  r7   r   <TestFiberForceVelocityDeGroote2016.test_differentiate_wrt_c1  s~    -dnnNt~~NGGDNN"/$''$.."8477"BCQFJKL 	 yy!X---r:   c                J   \        V P                  .V P                  O5!  pV P                  \	        \        V P                  V P                  ,          V P                  ,           4      ^,          ^,           4      ,          pVP                  V P                  4      V8X  g   Q hR# r   r  r  s   &  r7   r   <TestFiberForceVelocityDeGroote2016.test_differentiate_wrt_c2  su    -dnnNt~~NGG/$''$.."8477"BCQFJKL 	 yy!X---r:   c                    \        V P                  .V P                  O5!  p\        ^4      pVP	                  V P
                  4      V8X  g   Q hR# r   )r   r  ri   r   r   rh   r  s   &  r7   r   <TestFiberForceVelocityDeGroote2016.test_differentiate_wrt_c3  s=    -dnnNt~~N1:yy!X---r:   c                |    \        V P                  .V P                  O5!  pVP                  4       \        J g   Q hR # r2   )r   r  ri   r   r   r  s   & r7   r   /TestFiberForceVelocityDeGroote2016.test_inverse  s.    -dnnNt~~N||~!FFFFr:   c                    \        V P                  .V P                  O5!  pR p\        4       P	                  V4      V8X  g   Q hR# )z.\operatorname{fv}^M \left( v_{M tilde} \right)N)r   r  ri   r   rK   r  s   &  r7   r   <TestFiberForceVelocityDeGroote2016.test_function_print_latex  s9    -dnnNt~~ND~%%d+x777r:   c                    \        V P                  .V P                  O5!  pR p\        4       P	                  VP                  4       4      V8X  g   Q hR# )zsc_{0} \log{\left(c_{1} v_{M tilde} + c_{2} + \sqrt{\left(c_{1} v_{M tilde} + c_{2}\right)^{2} + 1} \right)} + c_{3}N)r   r  ri   r   rK   r?   r  s   &  r7   r   >TestFiberForceVelocityDeGroote2016.test_expression_print_latex  sG    -dnnNt~~ND 	 ~%%diik2h>>>r:   r-   z(0.88600000000000001 - 0.318*log(-8.1489999999999991*v_M_tilde - 0.374 + sqrt(1 + pow(-8.1489999999999991*v_M_tilde - 0.374, 2))))z(0.88600000000000001 - 0.318*log(-8.1489999999999991*v_M_tilde - 0.374 + std::sqrt(1 + std::pow(-8.1489999999999991*v_M_tilde - 0.374, 2))))z(0.88600000000000001 - 0.318*std::log(-8.1489999999999991*v_M_tilde - 0.374 + std::sqrt(1 + std::pow(-8.1489999999999991*v_M_tilde - 0.374, 2))))z      (0.886d0 - 0.318d0*log(-8.1489999999999991d0*v_M_tilde - 0.374d0 +
     @ sqrt(1.0d0 + (-8.149d0*v_M_tilde - 0.374d0)**2)))zW(0.886 - 0.318*log(-8.149*v_M_tilde - 0.374 + sqrt(1 + (-8.149*v_M_tilde - 0.374).^2)))za(0.886 - 0.318*math.log(-8.149*v_M_tilde - 0.374 + math.sqrt(1 + (-8.149*v_M_tilde - 0.374)**2)))zc(0.886 - 0.318*numpy.log(-8.149*v_M_tilde - 0.374 + numpy.sqrt(1 + (-8.149*v_M_tilde - 0.374)**2)))za(0.886 - 0.318*cupy.log(-8.149*v_M_tilde - 0.374 + cupy.sqrt(1 + (-8.149*v_M_tilde - 0.374)**2)))zk(0.886 - 0.318*jax.numpy.log(-8.149*v_M_tilde - 0.374 + jax.numpy.sqrt(1 + (-8.149*v_M_tilde - 0.374)**2)))aC  (mpmath.mpf((0, 7980378539700519, -53, 53)) - mpmath.mpf((0, 5728578726015271, -54, 53))*mpmath.log(-mpmath.mpf((0, 4587479170430271, -49, 53))*v_M_tilde + mpmath.mpf((1, 3368692521273131, -53, 52)) + mpmath.sqrt(1 + (-mpmath.mpf((0, 4587479170430271, -49, 53))*v_M_tilde + mpmath.mpf((1, 3368692521273131, -53, 52)))**2)))z\(0.886 - 0.318*math.log(-8.149*v_M_tilde - 0.374 + sqrt(1 + (-8.149*v_M_tilde - 0.374)**2)))c                    \         P                  ! V P                  4      pV! 4       P                  V4      V8X  g   Q hR # r2   )r   r   r  rK   )r=   rL   rM   r  s   &&& r7   r   2TestFiberForceVelocityDeGroote2016.test_print_code   s4    j .;;DNNK~%%d+x777r:   c                    \         P                  ! V P                  4      pVP                  V P                  4      pR p\	        4       P                  V4      V8X  g   Q hR# )z42.591382*(1 + (-8.149*v_M_tilde - 0.374)**2)**(-1/2)N)r   r   r  r   r&   rK   )r=   r  dfv_M_dv_M_tilderM   s   &   r7   r   =TestFiberForceVelocityDeGroote2016.test_derivative_print_codeX  sK    -;;DNNK99T^^4I "**+;<HHHr:   c                    \         P                  ! V P                  4      p\        V P                  V4      pV! R 4      \        P
                  ! R4      8X  g   Q hR# )r   gJ<_Y	?N)r   r   r  r'   rX   r   )r=   r  fv_M_callables   &  r7   r   0TestFiberForceVelocityDeGroote2016.test_lambdify^  sC    -;;DNNK 6S!V]]3D%EEEEr:   Nr   r   c                   \         P                  ! V P                  4      p\        V P                  VR 4      p\        P                  . RO4      p\        P                  . RO4      p\        P                  P                  V! V4      V4       R# )r)   Ng      g      r   r4  g$bG?g5?g[Y	?gŇ^)\?)r   r   r  r'   r)   r   r   r   r=   r  r  r  rM   s   &    r7   r   6TestFiberForceVelocityDeGroote2016.test_lambdify_numpyc  se    -;;DNNK w?KK 67	;;  
  	%%mI&>Ir:   r   c                j   \         P                  ! V P                  4      p\        P	                  \        V P                  VR 4      4      p\        P                  P                  . RO4      p\        P                  P                  . RO4      p\        P                  P                  V! V4      V4       R# )r(   Nr  r  )
r   r   r  r(   r   r'   r)   r   r   r   r   s   &    r7   r   4TestFiberForceVelocityDeGroote2016.test_lambdify_jaxp  sv    -;;DNNKu EFIIOO$:;	99?? $
  	%%mI&>Ir:   )re   rf   rg   rh   ri   r  )0rA   rB   rC   rD   rX   r   r  rW   rp   rw   rz   r   r   r  r   r   r   r   r   r   r   rY   rZ   r   r   r   r   r   r   r   r    r&   r#   r$   r!   r"   r%   r   r   r   r   r   r)   r   r(   r   rF   rG   rH   s   @r7   r  r    s     ^^D!> "> [ [
\
  	-5....
G8
? [[  V V V !` !` !` K "> "C D D C H F >WP	
Sh8iSh8IF
 [[.CD
J E
J [[t,?@
J A
Jr:   r  c                     a  ] tR tRt o ]P
                  ! RR7      R 4       t]R 4       tR t	R t
R tR	 tR
 tR tR tR tR tR tR tR t]P*                  P-                  R]R3]R3]R3]R3]R3]R3]R3]R3]R3] R3]!R3]"R3]#R3]$R3]%R3.4      R 4       t&R t'R t(]P*                  PS                  ]*RJ R R!7      R" 4       t+]P*                  PS                  ],RJ R#R!7      R$ 4       t-R%t.V t/R# )&)TestFiberForceVelocityInverseDeGroote2016i~  Tr]   c                   \        R 4      V n        \        R4      V n        \        R4      V n        \        R4      V n        \        R4      V n        V P                  V P                  V P                  V P
                  3V n        R# )r  ra   rb   rc   rd   N)r   r  re   rf   rg   rh   ri   rj   s   &r7   r   XTestFiberForceVelocityInverseDeGroote2016._tendon_force_length_inverse_arguments_fixture  r   r:   c                     \        \        \        4      '       g   Q h\        \        \        4      '       g   Q h\        P                  R 8X  g   Q hR# )r   N)ro   r   r   r   rA   r3   r:   r7   rp   4TestFiberForceVelocityInverseDeGroote2016.test_class  s@    ?JJJJ?A\]]]]4==Ahhhhr:   c                    \        V P                  .V P                  O5!  p\        V\         4      '       g   Q h\	        V4      R 8X  g   Q hR# )z?FiberForceVelocityInverseDeGroote2016(fv_M, c_0, c_1, c_2, c_3)N)r   r  ri   rs   rt   r=   fv_M_invs   & r7   rw   7TestFiberForceVelocityInverseDeGroote2016.test_instance  s@    8TT^^T($IJJJJ8} aaaar:   c                $   \        V P                  .V P                  O5!  P                  4       pV\	        V P                  V P
                  ,
          V P                  ,          4      V P                  ,
          V P                  ,          8X  g   Q hR # r2   )	r   r  ri   r?   r   rh   re   rg   rf   r  s   & r7   rz   3TestFiberForceVelocityInverseDeGroote2016.test_doit  s]    8TT^^TYY[D$))dgg"5tww!>?$''I477RRRRr:   c                :   \        V P                  .V P                  O5!  P                  R R7      pV\	        \        V P                  V P                  ,
          4      V P                  ,          4      V P                  ,
          V P                  ,          8X  g   Q hR# r}   )
r   r  ri   r?   r   r   rh   re   rg   rf   r  s   & r7   r   BTestFiberForceVelocityInverseDeGroote2016.test_doit_evaluate_false  sn    8TT^^TYYchYiDTWW1D!Edgg!MNQUQXQXXZ^ZaZaaaaar:   c                    \        R 4      \        R4      \        R4      \        R4      3p\        V P                  .VO5!  p\        P                  ! V P                  4      pW#8X  g   Q hR# r  )r   r   r  r   )r=   ri   fv_M_inv_manualfv_M_inv_constantss   &   r7   r   <TestFiberForceVelocityInverseDeGroote2016.test_with_defaults  s_    (O(O(O'N	
	 @		VIVBPPQUQZQZ[444r:   c                >   \        V P                  .V P                  O5!  p\        V P                  V P                  ,
          V P
                  ,          4      V P
                  V P                  ,          ,          pVP                  V P                  4      V8X  g   Q hR # r2   r   r  ri   r   rh   re   rf   r   r=   r  rM   s   &  r7   test_differentiate_wrt_fv_METestFiberForceVelocityInverseDeGroote2016.test_differentiate_wrt_fv_M  se    8TT^^TTWW,dgg56H}}TYY'8333r:   c                   \        V P                  .V P                  O5!  pV P                  V P                  ,
          \	        V P                  V P                  ,
          V P
                  ,          4      ,          V P
                  ^,          V P                  ,          ,          pVP                  V P
                  4      V8X  g   Q hR# r   )r   r  ri   rh   r   re   rf   r   r  s   &  r7   r   CTestFiberForceVelocityInverseDeGroote2016.test_differentiate_wrt_c0  s    8TT^^TGGdii'tyy477/BDGG.K)LLdggWXjY]Y`Y`N`a}}TWW%111r:   c                L   \        V P                  .V P                  O5!  pV P                  \	        V P                  V P
                  ,
          V P                  ,          4      ,
          V P                  ^,          ,          pVP                  V P                  4      V8X  g   Q hR# r   )	r   r  ri   rg   r   rh   re   rf   r   r  s   &  r7   r   CTestFiberForceVelocityInverseDeGroote2016.test_differentiate_wrt_c1  sj    8TT^^TGGdDII$7#@AA477A:M}}TWW%111r:   c                    \        V P                  .V P                  O5!  pRV P                  ,          pVP	                  V P
                  4      V8X  g   Q hR# r   )r   r  ri   rf   r   rg   r  s   &  r7   r   CTestFiberForceVelocityInverseDeGroote2016.test_differentiate_wrt_c2  sA    8TT^^Tdgg:}}TWW%111r:   c                @   \        V P                  .V P                  O5!  p\        V P                  V P                  ,
          V P
                  ,          4      ) V P
                  V P                  ,          ,          pVP                  V P                  4      V8X  g   Q hR # r2   r  r  s   &  r7   r   CTestFiberForceVelocityInverseDeGroote2016.test_differentiate_wrt_c3  sh    8TT^^T$))dgg-tww677I}}TWW%111r:   c                |    \        V P                  .V P                  O5!  pVP                  4       \        J g   Q hR # r2   )r   r  ri   r   r   r  s   & r7   r   6TestFiberForceVelocityInverseDeGroote2016.test_inverse  s1    8TT^^T!%CCCCr:   c                    \        V P                  .V P                  O5!  pR p\        4       P	                  V4      V8X  g   Q hR# )z=\left( \operatorname{fv}^M \right)^{-1} \left( fv_{M} \right)N)r   r  ri   r   rK   r  s   &  r7   r   CTestFiberForceVelocityInverseDeGroote2016.test_function_print_latex  s9    8TT^^TS~%%h/8;;;r:   c                    \        V P                  .V P                  O5!  pR p\        4       P	                  VP                  4       4      V8X  g   Q hR# )zK\frac{- c_{2} + \sinh{\left(\frac{- c_{3} + fv_{M}}{c_{0}} \right)}}{c_{1}}N)r   r  ri   r   rK   r?   r  s   &  r7   r   ETestFiberForceVelocityInverseDeGroote2016.test_expression_print_latex  s?    4TYYPPa~%%diik2h>>>r:   r-   zV(-0.12271444348999878*(0.374 - sinh(3.1446540880503142*(fv_M - 0.88600000000000001))))z[(-0.12271444348999878*(0.374 - std::sinh(3.1446540880503142*(fv_M - 0.88600000000000001))))z[      (-0.122714443489999d0*(0.374d0 - sinh(3.1446540880503142d0*(fv_M -
     @ 0.886d0))))zD(-0.122714443489999*(0.374 - sinh(3.14465408805031*(fv_M - 0.886))))zI(-0.122714443489999*(0.374 - math.sinh(3.14465408805031*(fv_M - 0.886))))zJ(-0.122714443489999*(0.374 - numpy.sinh(3.14465408805031*(fv_M - 0.886))))zI(-0.122714443489999*(0.374 - cupy.sinh(3.14465408805031*(fv_M - 0.886))))zN(-0.122714443489999*(0.374 - jax.numpy.sinh(3.14465408805031*(fv_M - 0.886))))z(-mpmath.mpf((0, 8842507551592581, -56, 53))*(mpmath.mpf((0, 3368692521273131, -53, 52)) - mpmath.sinh(mpmath.mpf((0, 7081131489576251, -51, 53))*(fv_M + mpmath.mpf((1, 7980378539700519, -53, 53))))))c                    \         P                  ! V P                  4      pV! 4       P                  V4      V8X  g   Q hR # r2   )r   r   r  rK   )r=   rL   rM   r  s   &&& r7   r   9TestFiberForceVelocityInverseDeGroote2016.test_print_code  s4    f 9FFtyyQ~%%h/8;;;r:   c                    \         P                  ! V P                  4      pVP                  V P                  4      pR p\	        4       P                  V4      V8X  g   Q hR# )zE0.385894476383644*math.cosh(3.14465408805031*fv_M - 2.78616352201258)N)r   r   r  r   r&   rK   )r=   r  dfv_M_inv_dfv_MrM   s   &   r7   r   DTestFiberForceVelocityInverseDeGroote2016.test_derivative_print_code$  sP    8FFtyyQ"--		2" 	 !"**?;xGGGr:   c                    \         P                  ! V P                  4      p\        V P                  V4      pV! R 4      \        P
                  ! R4      8X  g   Q hR# )r   NgM8'$JO)r   r   r  r'   rX   r   )r=   r  fv_M_inv_callables   &  r7   r   7TestFiberForceVelocityInverseDeGroote2016.test_lambdify-  sD    8FFtyyQ$TYY9 %7M)NNNNr:   Nr   r   c                   \         P                  ! V P                  4      p\        V P                  VR 4      p\        P                  . RO4      p\        P                  . RO4      p\        P                  P                  V! V4      V4       R# )r)   Nr5  r6  r   r7  r8  ggUYgm7H:gƲ$JOg^8?gH?)r   r   r  r'   r)   r   r   r   r=   r  r/  r  rM   s   &    r7   r   =TestFiberForceVelocityInverseDeGroote2016.test_lambdify_numpy2  sg    8FFtyyQ$TYY'B{{45;;  
  	%%&7&=xHr:   r   c                j   \         P                  ! V P                  4      p\        P	                  \        V P                  VR 4      4      p\        P                  P                  . RO4      p\        P                  P                  . RO4      p\        P                  P                  V! V4      V4       R# )r(   Nr2  r3  )
r   r   r  r(   r   r'   r)   r   r   r   r4  s   &    r7   r   ;TestFiberForceVelocityInverseDeGroote2016.test_lambdify_jax@  sx    8FFtyyQGGHTYY%$HIyy8999?? $
  	%%&7&=xHr:   )re   rf   rg   rh   ri   r  )0rA   rB   rC   rD   rX   r   r   rW   rp   rw   rz   r   r   r  r   r   r   r   r   r   r   rY   rZ   r   r   r   r   r   r   r   r    r&   r#   r$   r!   r"   r%   r   r   r   r   r   r)   r   r(   r   rF   rG   rH   s   @r7   r  r  ~  s    ^^D!> "> i i
b
Sb	54
2
2
2
2
D<
?
 [[  , , , !, !3 !3 % " " % %  % 2 SN	
Qd<eQd<HO
 [[.CDI EI [[t,?@I AIr:   r  c                     a  ] tR tRt o ]R 4       t]]P                  P                  RR7      R 4       4       t	]]P                  P                  RR]/R]R]R	]R
]R]R]R]RR/.4      R 4       4       t]R 4       tRtV tR# )!TestCharacteristicCurveCollectioniO  c            
        \        \        \        \        \        \
        \        \        R 7      p V P                  \        J g   Q hV P                  \        J g   Q hV P                  \        J g   Q hV P                  \        J g   Q hV P                  \
        J g   Q hV P                  \        J g   Q hV P                  \        J g   Q hR# )tendon_force_lengthtendon_force_length_inversefiber_force_length_passive"fiber_force_length_passive_inversefiber_force_length_activefiber_force_velocityfiber_force_velocity_inverseN)r   r   r   r   r   r   r   r   r<  r=  r>  r?  r@  rA  rB  curvess    r7   test_valid_constructor8TestCharacteristicCurveCollection.test_valid_constructorQ  s    . =(L'J/Y&H!?)N
 ))-JJJJ115YYYY004WWWW88<ffff//3UUUU**.LLLL226[[[[r:   z.kw_only dataclasses only valid in Python >3.10r   c                     \         P                  ! \        4      ;_uu_ 4        \        \        \
        \        \        \        \        \        4      p R R R 4       R #   + '       g   i     R # ; ir2   )rX   raises	TypeErrorr   r   r   r   r   r   r   r   )_s    r7   %test_invalid_constructor_keyword_onlyGTestCharacteristicCurveCollection.test_invalid_constructor_keyword_onlyd  sA     ]]9%%--43:2.5A &%%%s   .AA,	r>   r<  r=  r>  r?  r@  rA  rB  extra_kwargNc                    \         P                  ! \        4      ;_uu_ 4        \        R/ V B pR R R 4       R #   + '       g   i     R # ; i)Nr3   )rX   rH  rI  r   )r>   rJ  s   & r7   *test_invalid_constructor_wrong_number_argsLTestCharacteristicCurveCollection.test_invalid_constructor_wrong_number_argsr  s/    $ ]]9%%-77A &%%%s	   9A
	c            
     0   \        \        \        \        \        \
        \        \        R 7      p \        P                  ! \        4      ;_uu_ 4        RV n        RRR4       \        P                  ! \        4      ;_uu_ 4        RV n        RRR4       \        P                  ! \        4      ;_uu_ 4        RV n        RRR4       \        P                  ! \        4      ;_uu_ 4        RV n        RRR4       \        P                  ! \        4      ;_uu_ 4        RV n        RRR4       \        P                  ! \        4      ;_uu_ 4        RV n        RRR4       \        P                  ! \        4      ;_uu_ 4        RV n        RRR4       R#   + '       g   i     EL?; i  + '       g   i     EL!; i  + '       g   i     EL; i  + '       g   i     L; i  + '       g   i     L; i  + '       g   i     L; i  + '       g   i     R# ; ir;  )r   r   r   r   r   r   r   r   rX   rH  AttributeErrorr<  r=  r>  r?  r@  rA  rB  rC  s    r7   test_instance_is_immutable<TestCharacteristicCurveCollection.test_instance_is_immutable  s)   . =(L'J/Y&H!?)N
 ]]>**)-F& +]]>**15F. +]]>**04F- +]]>**8<F5 +]]>**/3F, +]]>***.F' +]]>**26F/ +* +*****************sT   FF#5F7'GGG1=HF 	#F4	7G	G	G.	1H	H	r3   )rA   rB   rC   rD   rW   rE  rX   rY   skiprK  rZ   r   r   r   r   r   r   r   rO  rS  rF   rG   rH   s   @r7   r9  r9  O  s     \ \$ [[MN
 O 
 [["$AB%'D-/S,.Q46`+-O&(F.0Ut		
 8! "8 7 7r:   r9  )G__doc__rX   sympy.core.exprr   sympy.core.functionr   sympy.core.numbersr   r   sympy.core.symbolr   r   sympy.external.importtoolsr   &sympy.functions.elementary.exponentialr	   r
   %sympy.functions.elementary.hyperbolicr   r   (sympy.functions.elementary.miscellaneousr    sympy.physics.biomechanics.curver   r   r   r   r   r   r   r   r   sympy.printing.cr   r   r   sympy.printing.cxxr   r   r   sympy.printing.fortranr   sympy.printing.lambdareprr   sympy.printing.latexr   sympy.printing.octaver    sympy.printing.numpyr!   r"   r#   r$   sympy.printing.pycoder%   r&   sympy.utilities.lambdifyr'   r(   r)   configupdater,   r\   r   r  r@  rn  r  r  r9  r3   r:   r7   <module>rk     s   L  + ( - - 4 ; < 9
 
 
 L K 
 0 3 - 3  C -EgJJ&-'< '<TzJ zJz~I ~IBxN xNvrQ rQjLN LN^
bJ bJJNI NIbP7 P7r:   