
    \h(                    R   S r SSKrSSKJr  SSKJr  SSKJrJr  SSK	J
r
Jr  SSKJr  SSKJrJr  SS	KJrJr  SS
KJr  SSKJrJrJrJrJrJrJrJrJr  SSK J!r!J"r"J#r#  SSK$J%r%J&r&J'r'  SSK(J)r)  SSK*J+r+  SSK,J-r-  SSK.J/r/  SSK0J1r1J2r2J3r3J4r4  SSK5J6r6J7r7  SSK8J9r9  \" S5      r:\" S5      r;\:(       a  \:Rx                  R{                  SS5         " S S5      r> " S S5      r? " S S5      r@ " S S 5      rA " S! S"5      rB " S# S$5      rC " S% S&5      rD " S' S(5      rE " S) S*5      rFg)+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                       \ rS rSr\\R                  R                  S\S4\	S4\
S4\S4\S4\S4\S4\S4\S4\S4\S4\S4\S4\S4\S4/5      S 5       5       rSrg)	TestCharacteristicCurveFunction2   code_printer, expectedz(a + b)*(c + d)*(e + f)z      (a + b)*(c + d)*(e + f)z(a + b).*(c + d).*(e + f)c                      " S S[         5      n[        S5      u  p4pVpxU" X45      n	U" XV5      n
U" Xx5      nU " 5       R                  X-  U-  5      U:X  d   eg )Nc                   *    \ rS rSr\S 5       rS rSrg)UTestCharacteristicCurveFunction.test_print_code_parenthesize.<locals>.ExampleFunctionK   c                     g N )clsabs      c/var/www/auris/envauris/lib/python3.13/site-packages/sympy/physics/biomechanics/tests/test_curve.pyevalZTestCharacteristicCurveFunction.test_print_code_parenthesize.<locals>.ExampleFunction.evalM   s        c                 &    U R                   u  p#X#-   $ r5   )args)selfkwargsr8   r9   s       r:   doitZTestCharacteristicCurveFunction.test_print_code_parenthesize.<locals>.ExampleFunction.doitQ   s    yyur=   r6   N)__name__
__module____qualname____firstlineno__classmethodr;   rB   __static_attributes__r6   r=   r:   ExampleFunctionr2   K   s     r=   rJ   za, b, c, d, e, f)r   r   doprint)code_printerexpectedrJ   r8   r9   cdeff1f2f3s               r:   test_print_code_parenthesize<TestCharacteristicCurveFunction.test_print_code_parenthesize4   sb    .	9 	 ##56aAQ"Q"Q"~%%beBh/8;;;r=   r6   N)rD   rE   rF   rG   staticmethodpytestmarkparametrizer   r   r   r   r   r   r   r!   r'   r$   r%   r"   r#   r&   r   rU   rI   r6   r=   r:   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                      \ rS rSr\R
                  " SS9S 5       r\S 5       rS r	S r
S rS	 rS
 rS rS rS rS rS rS rS r\R*                  R-                  S\S4\S4\S4\S4\S4\S4\S4\S4\S4\ S4\!S4\"S4\#S4\$S4\%S4/5      S 5       r&S r'S r(\R*                  RS                  \*SL S S!9S" 5       r+\R*                  RS                  \,SL S#S!9S$ 5       r-S%r.g)&!TestTendonForceLengthDeGroote2016\   Tautousec                 
   [        S5      U l        [        S5      U l        [        S5      U l        [        S5      U l        [        S5      U l        U R                  U R                  U R                  U R
                  4U l        g )N	l_T_tildec_0c_1c_2c_3)r   ra   c0c1c2c3	constantsr@   s    r:   &_tendon_force_length_arguments_fixtureHTestTendonForceLengthDeGroote2016._tendon_force_length_arguments_fixture^   Z    ,----''477DGGTWW=r=   c                      [        [        [        5      (       d   e[        [        [        5      (       d   e[        R                  S:X  d   eg )Nr   )
issubclassr   r   r   rD   r6   r=   r:   
test_class,TestTendonForceLengthDeGroote2016.test_classg   s@    7BBBB79TUUUU,559XXXXr=   c                     [        U R                  /U R                  Q76 n[        U[         5      (       d   e[	        U5      S:X  d   eg )Nz<TendonForceLengthDeGroote2016(l_T_tilde, c_0, c_1, c_2, c_3))r   ra   rj   
isinstancestrr@   fl_Ts     r:   test_instance/TestTendonForceLengthDeGroote2016.test_instancem   s@    ,T^^MdnnM$ =>>>>4yZZZZr=   c                     [        U R                  /U R                  Q76 R                  5       nXR                  [        U R                  U R                  U R                  -
  -  5      -  U R                  -
  :X  d   eg r5   )	r   ra   rj   rB   rf   r
   ri   rg   rh   rv   s     r:   	test_doit+TestTendonForceLengthDeGroote2016.test_doitr   s[    ,T^^MdnnMRRTwws477DNNTWW,D#EFFPPPPr=   c           	         [        U R                  /U R                  Q76 R                  SS9nXR                  [        U R                  [        U R                  U R                  -
  5      -  5      -  U R                  -
  :X  d   eg NFevaluate)
r   ra   rj   rB   rf   r
   ri   r   rg   rh   rv   s     r:   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                     [        S5      [        S5      [        S5      [        S5      4n[        U R                  /UQ76 n[        R                  " U R                  5      nX#:X  d   eg N0.2z0.995z0.25z33.93669377311689)r   r   ra   with_defaults)r@   rj   fl_T_manualfl_T_constantss       r:   test_with_defaults4TestTendonForceLengthDeGroote2016.test_with_defaultsz   s\    %L'N&M%&	
	 4DNNOYO6DDT^^T,,,r=   c                 ,   [        U R                  /U R                  Q76 nU R                  U R                  -  [        U R                  [        U R                  * U R                  -   5      -  5      -  nUR                  U R                  5      U:X  d   eg r5   	r   ra   rj   rf   ri   r
   r   rg   diffr@   rw   rM   s      r:    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                     [        U R                  /U R                  Q76 n[        U R                  [        U R                  * U R                  -   5      -  5      nUR                  U R                  5      U:X  d   eg r5   )	r   ra   rj   r
   ri   r   rg   r   rf   r   s      r:   test_differentiate_wrt_c0;TestTendonForceLengthDeGroote2016.test_differentiate_wrt_c0   s[    ,T^^MdnnMtwwx$../HIIJyy!X---r=   c                 ,   [        U R                  /U R                  Q76 nU R                  * U R                  -  [        U R                  [        U R                  U R                  -
  5      -  5      -  nUR                  U R                  5      U:X  d   eg r5   r   r   s      r:   test_differentiate_wrt_c1;TestTendonForceLengthDeGroote2016.test_differentiate_wrt_c1   sp    ,T^^MdnnMGG8DGG#CQUQXQX@X0Y(Y$ZZyy!X---r=   c                     [        U R                  /U R                  Q76 n[        S5      nUR	                  U R
                  5      U:X  d   eg N)r   ra   rj   r   r   rh   r   s      r:   test_differentiate_wrt_c2;TestTendonForceLengthDeGroote2016.test_differentiate_wrt_c2   s=    ,T^^MdnnM2;yy!X---r=   c                 D   [        U R                  /U R                  Q76 nU R                  U R                  U R                  -
  -  [        U R                  [        U R                  U R                  -
  5      -  5      -  nUR                  U R                  5      U:X  d   eg r5   )	r   ra   rj   rf   rg   r
   ri   r   r   r   s      r:   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    [        U R                  /U R                  Q76 nUR                  5       [        L d   eg r5   )r   ra   rj   inverser   rv   s     r:   test_inverse.TestTendonForceLengthDeGroote2016.test_inverse   s.    ,T^^MdnnM||~!EEEEr=   c                     [        U R                  /U R                  Q76 nSn[        5       R	                  U5      U:X  d   eg )Nz.\operatorname{fl}^T \left( l_{T tilde} \right))r   ra   rj   r    rK   r   s      r:   test_function_print_latex;TestTendonForceLengthDeGroote2016.test_function_print_latex   s9    ,T^^MdnnMD~%%d+x777r=   c                     [        U R                  /U R                  Q76 nSn[        5       R	                  UR                  5       5      U:X  d   eg )Nz:c_{0} e^{c_{3} \left(- c_{1} + l_{T tilde}\right)} - c_{2})r   ra   rj   r    rK   rB   r   s      r:   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                 |    [         R                  " U R                  5      nU" 5       R                  U5      U:X  d   eg r5   )r   r   ra   rK   )r@   rL   rM   rw   s       r:   test_print_code1TestTendonForceLengthDeGroote2016.test_print_code   s4    H -::4>>J~%%d+x777r=   c                     [         R                  " U R                  5      nUR                  U R                  5      nSn[	        5       R                  U5      U:X  d   eg )NzA6.787338754623378*math.exp(33.93669377311689*(l_T_tilde - 0.995)))r   r   ra   r   r'   rK   )r@   rw   dfl_T_dl_T_tilderM   s       r:   test_derivative_print_code<TestTendonForceLengthDeGroote2016.test_derivative_print_code   sK    ,::4>>J99T^^4V "**+;<HHHr=   c                     [         R                  " U R                  5      n[        U R                  U5      nU" S5      [        R
                  " S5      :X  d   eg )N      ?g A)r   r   ra   r(   rX   approx)r@   rw   fl_T_callables      r:   test_lambdify/TestTendonForceLengthDeGroote2016.test_lambdify   sC    ,::4>>J 6S!V]]3H%IIIIr=   NNumPy not installedreasonc                    [         R                  " U R                  5      n[        U R                  US5      n[        R                  / SQ5      n[        R                  / SQ5      n[        R                  R                  U" U5      U5        g )Nr*   gffffff?r   )\(??gOpʿg Agg.?gY估?)r   r   ra   r(   r*   arraytestingassert_allcloser@   rw   r   ra   rM   s        r:   test_lambdify_numpy5TestTendonForceLengthDeGroote2016.test_lambdify_numpy   se    ,::4>>J w?KK 78	;;  
  	%%mI&>Ir=   JAX not installedc                 h   [         R                  " U R                  5      n[        R	                  [        U R                  US5      5      n[        R                  R                  / SQ5      n[        R                  R                  / SQ5      n[        R                  R                  U" U5      U5        g )Nr)   r   r   )
r   r   ra   r)   jitr(   r*   r   r   r   r   s        r:   test_lambdify_jax3TestTendonForceLengthDeGroote2016.test_lambdify_jax  sv    ,::4>>Ju EFIIOO$;<	99?? $
  	%%mI&>Ir=   )rf   rg   rh   ri   rj   ra   )/rD   rE   rF   rG   rX   fixturerl   rW   rq   rx   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   skipifr*   r   r)   r   rI   r6   r=   r:   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                      \ rS rSr\R
                  " SS9S 5       r\S 5       rS r	S r
S rS	 rS
 rS rS rS rS rS rS rS r\R*                  R-                  S\S4\S4\S4\S4\S4\S4\S4\S4\S4\ S4\!S4\"S4\#S4\$S4\%S4/5      S 5       r&S r'S r(\R*                  RS                  \*SL S S!9S" 5       r+\R*                  RS                  \,SL S#S!9S$ 5       r-S%r.g)&(TestTendonForceLengthInverseDeGroote2016i  Tr^   c                 
   [        S5      U l        [        S5      U l        [        S5      U l        [        S5      U l        [        S5      U l        U R                  U R                  U R                  U R
                  4U l        g )Nrw   rb   rc   rd   re   )r   rw   rf   rg   rh   ri   rj   rk   s    r:   ._tendon_force_length_inverse_arguments_fixtureWTestTendonForceLengthInverseDeGroote2016._tendon_force_length_inverse_arguments_fixture  Y    6N	----''477DGGTWW=r=   c                      [        [        [        5      (       d   e[        [        [        5      (       d   e[        R                  S:X  d   eg )Nr   )rp   r   r   r   rD   r6   r=   r:   rq   3TestTendonForceLengthInverseDeGroote2016.test_class$  s@    >IIII>@[\\\\3<<@ffffr=   c                     [        U R                  /U R                  Q76 n[        U[         5      (       d   e[	        U5      S:X  d   eg )Nz>TendonForceLengthInverseDeGroote2016(fl_T, c_0, c_1, c_2, c_3))r   rw   rj   rt   ru   r@   fl_T_invs     r:   rx   6TestTendonForceLengthInverseDeGroote2016.test_instance*  s@    7		SDNNS($HIIII8} ````r=   c                     [        U R                  /U R                  Q76 R                  5       nU[	        U R                  U R
                  -   U R                  -  5      U R                  -  U R                  -   :X  d   eg r5   )	r   rw   rj   rB   r   rh   rf   ri   rg   r   s     r:   r{   2TestTendonForceLengthInverseDeGroote2016.test_doit/  s]    7		SDNNSXXZ3		DGG 3TWW<=dggEOOOOr=   c                    [        U R                  /U R                  Q76 R                  SS9nU[	        [        U R                  U R                  -   U R                  -  5      5      U R                  -  U R                  -   :X  d   eg r~   )
r   rw   rj   rB   r   r   rh   rf   ri   rg   r   s     r:   r   ATestTendonForceLengthInverseDeGroote2016.test_doit_evaluate_false3  sk    7		SDNNSXXbgXh3		DGG0CTWW/LMNtwwVY]Y`Y`````r=   c                     [        S5      [        S5      [        S5      [        S5      4n[        U R                  /UQ76 n[        R                  " U R                  5      nX#:X  d   eg r   )r   r   rw   r   )r@   rj   fl_T_inv_manualfl_T_inv_constantss       r:   r   ;TestTendonForceLengthInverseDeGroote2016.test_with_defaults7  s`    %L'N&M%&	
	 ?tyyU9UAOOPTPYPYZ444r=   c                     [        U R                  /U R                  Q76 nSU R                  U R                  U R                  -   -  -  nUR                  U R                  5      U:X  d   eg N   r   rw   rj   ri   rh   r   r@   r   rM   s      r:   test_differentiate_wrt_fl_TDTestTendonForceLengthInverseDeGroote2016.test_differentiate_wrt_fl_TB  sT    7		SDNNSdggtyy477234}}TYY'8333r=   c                     [        U R                  /U R                  Q76 nSU R                  U R                  -  -  nUR                  U R                  5      U:X  d   eg r   )r   rw   rj   rf   ri   r   r   s      r:   r   BTestTendonForceLengthInverseDeGroote2016.test_differentiate_wrt_c0G  sJ    7		SDNNStwwtww'}}TWW%111r=   c                     [        U R                  /U R                  Q76 n[        S5      nUR	                  U R
                  5      U:X  d   eg r   )r   rw   rj   r   r   rg   r   s      r:   r   BTestTendonForceLengthInverseDeGroote2016.test_differentiate_wrt_c1L  s=    7		SDNNS1:}}TWW%111r=   c                     [        U R                  /U R                  Q76 nSU R                  U R                  U R                  -   -  -  nUR                  U R                  5      U:X  d   eg r   r   r   s      r:   r   BTestTendonForceLengthInverseDeGroote2016.test_differentiate_wrt_c2Q  sT    7		SDNNSdggtyy477234}}TWW%111r=   c                    [        U R                  /U R                  Q76 n[        [	        U R                  U R
                  -   U R                  -  5      5      * U R                  S-  -  nUR                  U R                  5      U:X  d   eg N   )	r   rw   rj   r   r   rh   rf   ri   r   r   s      r:   r   BTestTendonForceLengthInverseDeGroote2016.test_differentiate_wrt_c3V  sj    7		SDNNSTWW)<dgg(EFGGQR
R}}TWW%111r=   c                 v    [        U R                  /U R                  Q76 nUR                  5       [        L d   eg r5   )r   rw   rj   r   r   r   s     r:   r   5TestTendonForceLengthInverseDeGroote2016.test_inverse[  s1    7		SDNNS!%BBBBr=   c                     [        U R                  /U R                  Q76 nSn[        5       R	                  U5      U:X  d   eg )Nz=\left( \operatorname{fl}^T \right)^{-1} \left( fl_{T} \right))r   rw   rj   r    rK   r   s      r:   r   BTestTendonForceLengthInverseDeGroote2016.test_function_print_latex_  s9    7		SDNNSS~%%h/8;;;r=   c                     [        U R                  /U R                  Q76 nSn[        5       R	                  UR                  5       5      U:X  d   eg )NzFc_{1} + \frac{\log{\left(\frac{c_{2} + fl_{T}}{c_{0}} \right)}}{c_{3}})r   rw   rj   r    rK   rB   r   s      r:   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                 |    [         R                  " U R                  5      nU" 5       R                  U5      U:X  d   eg r5   )r   r   rw   rK   )r@   rL   rM   r   s       r:   r   8TestTendonForceLengthInverseDeGroote2016.test_print_codei  s4    H 8EEdiiP~%%h/8;;;r=   c                     [         R                  " U R                  5      nUR                  U R                  5      nSn[	        5       R                  U5      U:X  d   eg )Nz.1/(33.93669377311689*fl_T + 8.484173443279222))r   r   rw   r   r'   rK   )r@   r   dfl_T_inv_dfl_TrM   s       r:   r   CTestTendonForceLengthInverseDeGroote2016.test_derivative_print_code  sI    7EEdiiP"--		2C "**?;xGGGr=   c                     [         R                  " U R                  5      n[        U R                  U5      nU" S5      [        R
                  " S5      :X  d   eg )N        mIs?)r   r   rw   r(   rX   r   )r@   r   fl_T_inv_callables      r:   r   6TestTendonForceLengthInverseDeGroote2016.test_lambdify  sC    7EEdiiP$TYY9 %|)DDDDr=   Nr   r   c                    [         R                  " U R                  5      n[        U R                  US5      n[        R                  / SQ5      n[        R                  / SQ5      n[        R                  R                  U" U5      U5        g )Nr*   gɿ{Gzr   r   gRQ?r   gPgf?g}?r   gyl?g­?gp?)r   r   rw   r(   r*   r   r   r   r@   r   r   rw   rM   s        r:   r   <TestTendonForceLengthInverseDeGroote2016.test_lambdify_numpy  sg    7EEdiiP$TYY'B{{?@;;  
  	%%&7&=xHr=   r   c                 h   [         R                  " U R                  5      n[        R	                  [        U R                  US5      5      n[        R                  R                  / SQ5      n[        R                  R                  / SQ5      n[        R                  R                  U" U5      U5        g )Nr)   r  r  )
r   r   rw   r)   r   r(   r*   r   r   r   r  s        r:   r   :TestTendonForceLengthInverseDeGroote2016.test_lambdify_jax  sx    7EEdiiPGGHTYY%$HIyyCD99?? $
  	%%&7&=xHr=   )rf   rg   rh   ri   rj   rw   )/rD   rE   rF   rG   rX   r   r   rW   rq   rx   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   rI   r6   r=   r:   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                      \ rS rSr\R
                  " SS9S 5       r\S 5       rS r	S r
S rS	 rS
 rS rS rS rS rS r\R&                  R)                  S\S4\S4\S4\S4\S4\S4\S4\S4\S4\S4\S4\ S4\!S4\"S4\#S4/5      S 5       r$S r%S r&\R&                  RO                  \(SL SS9S  5       r)\R&                  RO                  \*SL S!S9S" 5       r+S#r,g)$'TestFiberForceLengthPassiveDeGroote2016i  Tr^   c                     [        S5      U l        [        S5      U l        [        S5      U l        U R                  U R                  4U l        g )N	l_M_tilderb   rc   )r   r  rf   rg   rj   rk   s    r:   -_fiber_force_length_passive_arguments_fixtureUTestFiberForceLengthPassiveDeGroote2016._fiber_force_length_passive_arguments_fixture  s8    ,--''477+r=   c                      [        [        [        5      (       d   e[        [        [        5      (       d   e[        R                  S:X  d   eg )Nr   )rp   r   r   r   rD   r6   r=   r:   rq   2TestFiberForceLengthPassiveDeGroote2016.test_class  s@    =xHHHH=?Z[[[[2;;?ddddr=   c                     [        U R                  /U R                  Q76 n[        U[         5      (       d   e[	        U5      S:X  d   eg )Nz8FiberForceLengthPassiveDeGroote2016(l_M_tilde, c_0, c_1))r   r  rj   rt   ru   r@   fl_M_pass     r:   rx   5TestFiberForceLengthPassiveDeGroote2016.test_instance  s@    6t~~WW($GHHHH8} ZZZZr=   c                    [        U R                  /U R                  Q76 R                  5       nU[	        U R
                  U R                  S-
  -  U R                  -  5      S-
  [	        U R
                  5      S-
  -  :X  d   eg r   )r   r  rj   rB   r
   rg   rf   r  s     r:   r{   1TestFiberForceLengthPassiveDeGroote2016.test_doit  sk    6t~~WW\\^C$..1*<!=tww FG!KcRVRYRYl]^N^____r=   c                    [        U R                  /U R                  Q76 R                  SS9nU[	        U R
                  [        U R                  S-
  5      -  U R                  -  5      S-
  [	        U R
                  5      S-
  -  :X  d   eg NFr   r   )r   r  rj   rB   r
   rg   r   rf   r  s     r:   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                     [        S5      [        S5      4n[        U R                  /UQ76 n[        R                  " U R                  5      nX#:X  d   eg Nz0.6z4.0)r   r   r  r   )r@   rj   fl_M_pas_manualfl_M_pas_constantss       r:   r   :TestFiberForceLengthPassiveDeGroote2016.test_with_defaults  sM    %L%L
	 >dnnYyY@NNt~~^444r=   c                 b   [        U R                  /U R                  Q76 nU R                  [	        U R                  [        U R                  S-
  5      -  U R                  -  5      -  U R                  [	        U R                  5      S-
  -  -  nUR                  U R                  5      U:X  d   eg r   r   r  rj   rg   r
   r   rf   r   r@   r  rM   s      r:    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                    [        U R                  /U R                  Q76 nU R                  * [	        U R                  [        U R                  S-
  5      -  U R                  -  5      -  [        U R                  S-
  5      -  U R                  S-  [	        U R                  5      S-
  -  -  nUR                  U R                  5      U:X  d   eg Nr   r   r  r   s      r:   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           	      L   [        U R                  /U R                  Q76 n[        U R                  5      * S[        U R                  [        U R                  S-
  5      -  U R                  -  5      -   -  [        U R                  5      S-
  S-  -  [        U R                  [        U R                  S-
  5      -  U R                  -  5      U R                  S-
  -  U R                  [        U R                  5      S-
  -  -  -   nUR                  U R                  5      U:X  d   eg )Nr   r   r   )r   r  rj   r
   rg   r   rf   r   r   s      r:   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    [        U R                  /U R                  Q76 nUR                  5       [        L d   eg r5   )r   r  rj   r   r   r  s     r:   r   4TestFiberForceLengthPassiveDeGroote2016.test_inverse  s1    6t~~WW!%OOOOr=   c                     [        U R                  /U R                  Q76 nSn[        5       R	                  U5      U:X  d   eg )Nz4\operatorname{fl}^M_{pas} \left( l_{M tilde} \right))r   r  rj   r    rK   r   s      r:   r   ATestFiberForceLengthPassiveDeGroote2016.test_function_print_latex  s9    6t~~WWJ~%%h/8;;;r=   c                     [        U R                  /U R                  Q76 nSn[        5       R	                  UR                  5       5      U:X  d   eg )NzN\frac{e^{\frac{c_{1} \left(l_{M tilde} - 1\right)}{c_{0}}} - 1}{e^{c_{1}} - 1})r   r  rj   r    rK   rB   r   s      r:   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                 |    [         R                  " U R                  5      nU" 5       R                  U5      U:X  d   eg r5   )r   r   r  rK   )r@   rL   rM   r  s       r:   r   7TestFiberForceLengthPassiveDeGroote2016.test_print_code"  s4    H 7DDT^^T~%%h/8;;;r=   c                     [         R                  " U R                  5      nUR                  U R                  5      nSn[	        5       R                  U5      U:X  d   eg )Nz;0.12438240242516*math.exp(6.66666666666667*(l_M_tilde - 1)))r   r   r  r   r'   rK   )r@   r  fl_M_pas_dl_M_tilderM   s       r:   r   BTestFiberForceLengthPassiveDeGroote2016.test_derivative_print_codei  sK    6DDT^^T&mmDNN;P "**+>?8KKKr=   c                     [         R                  " U R                  5      n[        U R                  U5      nU" S5      [        R
                  " S5      :X  d   eg )Nr   r   )r   r   r  r(   rX   r   )r@   r  fl_M_pas_callables      r:   r   5TestFiberForceLengthPassiveDeGroote2016.test_lambdifyo  sC    6DDT^^T$T^^X> %s);;;;r=   Nr   r   c                    [         R                  " U R                  5      n[        U R                  US5      n[        R                  / SQ5      n[        R                  / SQ5      n[        R                  R                  U" U5      U5        g )Nr*         ?皙??r   皙?333333?      ?g1olgx#^#ggΫr   g4],eI?g-˯?gO#?)r   r   r  r(   r*   r   r   r   r@   r  r4  r  rM   s        r:   r   ;TestFiberForceLengthPassiveDeGroote2016.test_lambdify_numpyt  sg    6DDT^^T$T^^XwGKK CD	;;  
  	%%&7	&BHMr=   r   c                 h   [         R                  " U R                  5      n[        R	                  [        U R                  US5      5      n[        R                  R                  / SQ5      n[        R                  R                  / SQ5      n[        R                  R                  U" U5      U5        g )Nr)   r7  r>  )
r   r   r  r)   r   r(   r*   r   r   r   r?  s        r:   r   9TestFiberForceLengthPassiveDeGroote2016.test_lambdify_jax  sx    6DDT^^TGGHT^^Xu$MNIIOO$GH	99?? $
  	%%&7	&BHMr=   )rf   rg   rj   r  )-rD   rE   rF   rG   rX   r   r  rW   rq   rx   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   rI   r6   r=   r:   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                      \ rS rSr\R
                  " SS9S 5       r\S 5       rS r	S r
S rS	 rS
 rS rS rS rS rS r\R&                  R)                  S\S4\S4\S4\S4\S4\S4\S4\S4\S4\S4\S4\ S4\!S4\"S4\#S4/5      S 5       r$S r%S r&\R&                  RO                  \(SL SS9S  5       r)\R&                  RO                  \*SL S!S9S" 5       r+S#r,g)$.TestFiberForceLengthPassiveInverseDeGroote2016i  Tr^   c                     [        S5      U l        [        S5      U l        [        S5      U l        U R                  U R                  4U l        g )Nr  rb   rc   )r   r  rf   rg   rj   rk   s    r:   r  \TestFiberForceLengthPassiveInverseDeGroote2016._fiber_force_length_passive_arguments_fixture  s8    z*--''477+r=   c                      [        [        [        5      (       d   e[        [        [        5      (       d   e[        R                  S:X  d   eg )Nr   )rp   r   r   r   rD   r6   r=   r:   rq   9TestFiberForceLengthPassiveInverseDeGroote2016.test_class  s@    DhOOOODFabbbb9BBFrrrrr=   c                     [        U R                  /U R                  Q76 n[        U[         5      (       d   e[	        U5      S:X  d   eg )Nz>FiberForceLengthPassiveInverseDeGroote2016(fl_M_pas, c_0, c_1))r   r  rj   rt   ru   r@   fl_M_pas_invs     r:   rx   <TestFiberForceLengthPassiveInverseDeGroote2016.test_instance  sD    A$--aRVR`R`a,(RSSSS< $ddddr=   c                    [        U R                  /U R                  Q76 R                  5       nXR                  [        U R                  [        U R                  5      S-
  -  S-   5      -  U R                  -  S-   :X  d   eg r   )r   r  rj   rB   rf   r   r
   rg   rJ  s     r:   r{   8TestFiberForceLengthPassiveInverseDeGroote2016.test_doit  sl    A$--aRVR`R`affhwws4==#dgg,:J+Ka+O'PPQUQXQXX[\\\\\r=   c           
         [        U R                  /U R                  Q76 R                  SS9nXR                  [        [        U R                  [        U R                  5      S-
  -  5      S-   5      -  U R                  -  S-   :X  d   eg r  )	r   r  rj   rB   rf   r   r   r
   rg   rJ  s     r:   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                     [        S5      [        S5      4n[        U R                  /UQ76 n[        R                  " U R                  5      nX#:X  d   eg r  )r   r   r  r   )r@   rj   fl_M_pas_inv_manualfl_M_pas_inv_constantss       r:   r   ATestFiberForceLengthPassiveInverseDeGroote2016.test_with_defaults  sS    %L%L
	 IcYbc!K!Y!YZ^ZgZg!h"<<<r=   c                 <   [        U R                  /U R                  Q76 nU R                  [	        U R
                  5      S-
  -  U R
                  U R                  [	        U R
                  5      S-
  -  S-   -  -  nUR                  U R                  5      U:X  d   eg r   )r   r  rj   rf   r
   rg   r   r@   rK  rM   s      r:   r   JTestFiberForceLengthPassiveInverseDeGroote2016.test_differentiate_wrt_fl_T  s    A$--aRVR`R`a77CL1,-twws477|VWGW8X[\8\/]^  /8;;;r=   c                    [        U R                  /U R                  Q76 n[        U R                  [	        U R
                  5      S-
  -  S-   5      U R
                  -  nUR                  U R                  5      U:X  d   eg r   )r   r  rj   r   r
   rg   r   rf   rV  s      r:   r   HTestFiberForceLengthPassiveInverseDeGroote2016.test_differentiate_wrt_c0  sg    A$--aRVR`R`at}}c$''lQ&67!;<TWWD  )X555r=   c                    [        U R                  /U R                  Q76 nU R                  U R                  -  [	        U R
                  5      -  U R
                  U R                  [	        U R
                  5      S-
  -  S-   -  -  U R                  [        U R                  [	        U R
                  5      S-
  -  S-   5      -  U R
                  S-  -  -
  nUR                  U R
                  5      U:X  d   eg r$  )r   r  rj   rf   r
   rg   r   r   rV  s      r:   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    [        U R                  /U R                  Q76 nUR                  5       [        L d   eg r5   )r   r  rj   r   r   rJ  s     r:   r   ;TestFiberForceLengthPassiveInverseDeGroote2016.test_inverse  s4    A$--aRVR`R`a##%)LLLLr=   c                     [        U R                  /U R                  Q76 nSn[        5       R	                  U5      U:X  d   eg )NzG\left( \operatorname{fl}^M_{pas} \right)^{-1} \left( fl_{M pas} \right))r   r  rj   r    rK   rV  s      r:   r   HTestFiberForceLengthPassiveInverseDeGroote2016.test_function_print_latex  s<    A$--aRVR`R`a]~%%l3x???r=   c                     [        U R                  /U R                  Q76 nSn[        5       R	                  UR                  5       5      U:X  d   eg )NzU\frac{c_{0} \log{\left(fl_{M pas} \left(e^{c_{1}} - 1\right) + 1 \right)}}{c_{1}} + 1)r   r  rj   r    rK   rB   r   s      r:   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                 |    [         R                  " U R                  5      nU" 5       R                  U5      U:X  d   eg r5   )r   r   r  rK   )r@   rL   rM   rK  s       r:   r   >TestFiberForceLengthPassiveInverseDeGroote2016.test_print_code  s8    F BOOPTP]P]^~%%l3x???r=   c                     [         R                  " U R                  5      nUR                  U R                  5      nSn[	        5       R                  U5      U:X  d   eg )Nz232.1588900198865/(214.392600132577*fl_M_pas + 4.0))r   r   r  r   r'   rK   )r@   rK  dfl_M_pas_inv_dfl_TrM   s       r:   r   ITestFiberForceLengthPassiveInverseDeGroote2016.test_derivative_print_code   sP    AOOPTP]P]^*//>G "**+>?8KKKr=   c                     [         R                  " U R                  5      n[        U R                  U5      nU" S5      [        R
                  " S5      :X  d   eg )Nr   r   )r   r   r  r(   rX   r   )r@   rK  fl_M_pas_inv_callables      r:   r   <TestFiberForceLengthPassiveInverseDeGroote2016.test_lambdify&  sF    AOOPTP]P]^ ( E$S)V]]3-????r=   Nr   r   c                    [         R                  " U R                  5      n[        U R                  US5      n[        R                  / SQ5      n[        R                  / SQ5      n[        R                  R                  U" U5      U5        g )Nr*   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@   rK  rh  r  rM   s        r:   r   BTestFiberForceLengthPassiveInverseDeGroote2016.test_lambdify_numpy+  sj    AOOPTP]P]^ (g N;;BC;;  
  	%%&;H&ExPr=   r   c                 h   [         R                  " U R                  5      n[        R	                  [        U R                  US5      5      n[        R                  R                  / SQ5      n[        R                  R                  / SQ5      n[        R                  R                  U" U5      U5        g )Nr)   rk  rl  )
r   r   r  r)   r   r(   r*   r   r   r   rm  s        r:   r   @TestFiberForceLengthPassiveInverseDeGroote2016.test_lambdify_jax:  s{    AOOPTP]P]^ #e(T U99??#FG99?? $
  	%%&;H&ExPr=   )rf   rg   rj   r  )-rD   rE   rF   rG   rX   r   r  rW   rq   rx   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   rI   r6   r=   r:   rD  rD    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=   rD  c                      \ rS rSr\R
                  " SS9S 5       r\S 5       rS r	S r
S rS	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS r\R8                  R;                  S\S4\S4\ S4\!S4\"S4\#S4\$S4\%S4\&S4\'S 4\(S 4\)S!4\*S"4\+S#4\,S4/5      S$ 5       r-S% r.S& r/\R8                  Ra                  \1S'L S(S)9S* 5       r2\R8                  Ra                  \3S'L S+S)9S, 5       r4S-r5g').&TestFiberForceLengthActiveDeGroote2016iJ  Tr^   c                    [        S5      U l        [        S5      U l        [        S5      U l        [        S5      U l        [        S5      U l        [        S5      U l        [        S5      U l        [        S5      U l        [        S	5      U l	        [        S
5      U l
        [        S5      U l        [        S5      U l        [        S5      U l        U R                  U R                  U R                  U R
                  U R                  U R                  U R                  U R                  U R                  U R                  U R                  U R                  4U l        g )Nr  rb   rc   rd   re   c_4c_5c_6c_7c_8c_9c_10c_11)r   r  rf   rg   rh   ri   c4c5c6c7c8c9c10c11rj   rk   s    r:   ,_fiber_force_length_active_arguments_fixtureSTestFiberForceLengthActiveDeGroote2016._fiber_force_length_active_arguments_fixtureL  s    ,----------&>&>GGTWWdggtwwGGTWWdggtww$((
r=   c                      [        [        [        5      (       d   e[        [        [        5      (       d   e[        R                  S:X  d   eg )Nr   )rp   r   r   r   rD   r6   r=   r:   rq   1TestFiberForceLengthActiveDeGroote2016.test_class`  s@    <hGGGG<>YZZZZ1::>bbbbr=   c                     [        U R                  /U R                  Q76 n[        U[         5      (       d   e[	        U5      S:X  d   eg )NzkFiberForceLengthActiveDeGroote2016(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))r   r  rj   rt   ru   r@   fl_M_acts     r:   rx   4TestFiberForceLengthActiveDeGroote2016.test_instancef  sH    5dnnVt~~V($FGGGG8}8
 	
 
r=   c           	         [        U R                  /U R                  Q76 R                  5       nUU R                  [        U R                  U R                  -
  U R                  U R                  U R                  -  -   -  S-  * S-  5      -  U R                  [        U R                  U R                  -
  U R                  U R                  U R                  -  -   -  S-  * S-  5      -  -   U R                  [        U R                  U R                  -
  U R                  U R                   U R                  -  -   -  S-  * S-  5      -  -   :X  d   eg r   )r   r  rj   rB   rf   r
   rg   rh   ri   r|  r}  r~  r  r  r  r  r  r  s     r:   r{   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           	         [        U R                  /U R                  Q76 R                  SS9nUU R                  [        [        U R                  U R                  -
  5      U R                  U R                  U R                  -  -   -  S-  * S-  5      -  U R                  [        [        U R                  U R                  -
  5      U R                  U R                  U R                  -  -   -  S-  * S-  5      -  -   U R                  [        [        U R                  U R                  -
  5      U R                   U R"                  U R                  -  -   -  S-  * S-  5      -  -   :X  d   eg )NFr   r   )r   r  rj   rB   rf   r
   r   rg   rh   ri   r|  r}  r~  r  r  r  r  r  r  s     r:   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                 r   [        S5      [        S5      [        S5      [        S5      [        S5      [        S5      [        S5      [        S5      [        S	5      [        S
5      [        S5      [        S5      4n[        U R                  /UQ76 n[        R                  " U R                  5      nX#:X  d   eg )Nz0.814z1.06z0.162z0.0633z0.433z0.717z-0.0299r   z0.1z1.0z0.354z0.0)r   r   r  r   )r@   rj   fl_M_act_manualfl_M_act_constantss       r:   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           	      Z   [        U R                  /U R                  Q76 nU R                  U R                  U R                  U R
                  -
  S-  -  U R                  U R                  U R                  -  -   S-  -  U R
                  U R                  -
  U R                  U R                  U R                  -  -   S-  -  -   -  [        U R                  U R
                  -
  S-  * SU R                  U R                  U R                  -  -   S-  -  -  5      -  U R                  U R                  U R                  U R                  -
  S-  -  U R                  U R                  U R                  -  -   S-  -  U R                  U R                  -
  U R                  U R                  U R                  -  -   S-  -  -   -  [        U R                  U R                  -
  S-  * SU R                  U R                  U R                  -  -   S-  -  -  5      -  -   U R                  U R                  U R                  U R                  -
  S-  -  U R                  U R                  U R                  -  -   S-  -  U R                  U R                  -
  U R                  U R                  U R                  -  -   S-  -  -   -  [        U R                  U R                  -
  S-  * SU R                  U R                  U R                  -  -   S-  -  -  5      -  -   nUR!                  U R                  5      U:X  d   eg Nr      )r   r  rj   rf   ri   rg   rh   r
   r|  r  r}  r~  r  r  r  r  r   r@   r  rM   s      r:   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                 H   [        U R                  /U R                  Q76 n[        U R                  U R                  -
  S-  * SU R
                  U R                  U R                  -  -   S-  -  -  5      nUR                  5       R                  U R                  5      U:X  d   eg r   )
r   r  rj   r
   rg   rh   ri   rB   r   rf   r  s      r:   r   @TestFiberForceLengthActiveDeGroote2016.test_differentiate_wrt_c0  s    5dnnVt~~V$''1A55q$''DGGDNNDZ:Z]^9^7^_`}}##DGG,888r=   c                    [        U R                  /U R                  Q76 nU R                  U R                  U R                  -
  -  U R
                  U R                  U R                  -  -   S-  -  [        U R                  U R                  -
  S-  * SU R
                  U R                  U R                  -  -   S-  -  -  5      -  nUR                  U R                  5      U:X  d   eg r   	r   r  rj   rf   rg   rh   ri   r
   r   r  s      r:   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                    [        U R                  /U R                  Q76 nU R                  U R                  U R                  -
  S-  -  U R
                  U R                  U R                  -  -   S-  -  [        U R                  U R                  -
  S-  * SU R
                  U R                  U R                  -  -   S-  -  -  5      -  nUR                  U R
                  5      U:X  d   eg r  r  r  s      r:   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                    [        U R                  /U R                  Q76 nU R                  U R                  -  U R                  U R                  -
  S-  -  U R
                  U R                  U R                  -  -   S-  -  [        U R                  U R                  -
  S-  * SU R
                  U R                  U R                  -  -   S-  -  -  5      -  nUR                  U R                  5      U:X  d   eg r  r  r  s      r:   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                 ,   [        U R                  /U R                  Q76 n[        U R                  U R                  -
  S-  * SU R
                  U R                  U R                  -  -   S-  -  -  5      nUR                  U R                  5      U:X  d   eg r   )	r   r  rj   r
   r}  r~  r  r   r|  r  s      r:   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                    [        U R                  /U R                  Q76 nU R                  U R                  U R                  -
  -  U R
                  U R                  U R                  -  -   S-  -  [        U R                  U R                  -
  S-  * SU R
                  U R                  U R                  -  -   S-  -  -  5      -  nUR                  U R                  5      U:X  d   eg r   	r   r  rj   r|  r}  r~  r  r
   r   r  s      r:   test_differentiate_wrt_c5@TestFiberForceLengthActiveDeGroote2016.test_differentiate_wrt_c5  r  r=   c                    [        U R                  /U R                  Q76 nU R                  U R                  U R                  -
  S-  -  U R
                  U R                  U R                  -  -   S-  -  [        U R                  U R                  -
  S-  * SU R
                  U R                  U R                  -  -   S-  -  -  5      -  nUR                  U R
                  5      U:X  d   eg r  r  r  s      r:   test_differentiate_wrt_c6@TestFiberForceLengthActiveDeGroote2016.test_differentiate_wrt_c6  r  r=   c                    [        U R                  /U R                  Q76 nU R                  U R                  -  U R                  U R                  -
  S-  -  U R
                  U R                  U R                  -  -   S-  -  [        U R                  U R                  -
  S-  * SU R
                  U R                  U R                  -  -   S-  -  -  5      -  nUR                  U R                  5      U:X  d   eg r  r  r  s      r:   test_differentiate_wrt_c7@TestFiberForceLengthActiveDeGroote2016.test_differentiate_wrt_c7  r  r=   c                 ,   [        U R                  /U R                  Q76 n[        U R                  U R                  -
  S-  * SU R
                  U R                  U R                  -  -   S-  -  -  5      nUR                  U R                  5      U:X  d   eg r   )	r   r  rj   r
   r  r  r  r   r  r  s      r:   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                    [        U R                  /U R                  Q76 nU R                  U R                  U R                  -
  -  U R
                  U R                  U R                  -  -   S-  -  [        U R                  U R                  -
  S-  * SU R
                  U R                  U R                  -  -   S-  -  -  5      -  nUR                  U R                  5      U:X  d   eg r   	r   r  rj   r  r  r  r  r
   r   r  s      r:   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                    [        U R                  /U R                  Q76 nU R                  U R                  U R                  -
  S-  -  U R
                  U R                  U R                  -  -   S-  -  [        U R                  U R                  -
  S-  * SU R
                  U R                  U R                  -  -   S-  -  -  5      -  nUR                  U R
                  5      U:X  d   eg r  r  r  s      r:   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                    [        U R                  /U R                  Q76 nU R                  U R                  -  U R                  U R                  -
  S-  -  U R
                  U R                  U R                  -  -   S-  -  [        U R                  U R                  -
  S-  * SU R
                  U R                  U R                  -  -   S-  -  -  5      -  nUR                  U R                  5      U:X  d   eg r  r  r  s      r:   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                     [        U R                  /U R                  Q76 nSn[        5       R	                  U5      U:X  d   eg )Nz4\operatorname{fl}^M_{act} \left( l_{M tilde} \right))r   r  rj   r    rK   r  s      r:   r   @TestFiberForceLengthActiveDeGroote2016.test_function_print_latex  s9    5dnnVt~~VJ~%%h/8;;;r=   c                     [        U R                  /U R                  Q76 nSn[        5       R	                  UR                  5       5      U:X  d   eg )Na=  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}}})r   r  rj   r    rK   rB   r  s      r:   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                 |    [         R                  " U R                  5      nU" 5       R                  U5      U:X  d   eg r5   )r   r   r  rK   )r@   rL   rM   r  s       r:   r   6TestFiberForceLengthActiveDeGroote2016.test_print_code  s4    H 6CCDNNS~%%h/8;;;r=   c                     [         R                  " U R                  5      nUR                  U R                  5      nSn[	        5       R                  U5      U:X  d   eg )Na  (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))r   r   r  r   r'   rK   )r@   r  fl_M_act_dl_M_tilderM   s       r:   r   ATestFiberForceLengthActiveDeGroote2016.test_derivative_print_codeo  sS    5CCDNNS&mmDNN; e 	 !"**+>?8KKKr=   c                     [         R                  " U R                  5      n[        U R                  U5      nU" S5      [        R
                  " S5      :X  d   eg )Nr   s?)r   r   r  r(   rX   r   )r@   r  fl_M_act_callables      r:   r   4TestFiberForceLengthActiveDeGroote2016.test_lambdifyw  sC    5CCDNNS$T^^X> %|)DDDDr=   Nr   r   c                    [         R                  " U R                  5      n[        U R                  US5      n[        R                  / SQ5      n[        R                  / SQ5      n[        R                  R                  U" U5      U5        g )Nr*   r   r8  r   r=  g       @g	> P^?g]Q?r  g)`?gߌ'|?)r   r   r  r(   r*   r   r   r   r@   r  r  r  rM   s        r:   r   :TestFiberForceLengthActiveDeGroote2016.test_lambdify_numpy|  sg    5CCDNNS$T^^XwGKK 9:	;;  
  	%%&7	&BHMr=   r   c                 h   [         R                  " U R                  5      n[        R	                  [        U R                  US5      5      n[        R                  R                  / SQ5      n[        R                  R                  / SQ5      n[        R                  R                  U" U5      U5        g )Nr)   r  r  )
r   r   r  r)   r   r(   r*   r   r   r   r  s        r:   r   8TestFiberForceLengthActiveDeGroote2016.test_lambdify_jax  sx    5CCDNNSGGHT^^Xu$MNIIOO$=>	99?? $
  	%%&7	&BHMr=   )rf   rg   r  r  rh   ri   r|  r}  r~  r  r  r  rj   r  )6rD   rE   rF   rG   rX   r   r  rW   rq   rx   r{   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   rI   r6   r=   r:   rr  rr  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=   rr  c                      \ rS rSr\R
                  " SS9S 5       r\S 5       rS r	S r
S rS	 rS
 rS rS rS rS rS rS rS r\R*                  R-                  S\S4\S4\S4\S4\S4\S4\S4\S4\S4\ S4\!S4\"S4\#S4\$S4\%S4/5      S 5       r&S r'S  r(\R*                  RS                  \*S!L S"S#9S$ 5       r+\R*                  RS                  \,S!L S%S#9S& 5       r-S'r.g!)("TestFiberForceVelocityDeGroote2016i  Tr^   c                 
   [        S5      U l        [        S5      U l        [        S5      U l        [        S5      U l        [        S5      U l        U R                  U R                  U R                  U R
                  4U l        g )N	v_M_tilderb   rc   rd   re   )r   r  rf   rg   rh   ri   rj   rk   s    r:   ._muscle_fiber_force_velocity_arguments_fixtureQTestFiberForceVelocityDeGroote2016._muscle_fiber_force_velocity_arguments_fixture  rn   r=   c                      [        [        [        5      (       d   e[        [        [        5      (       d   e[        R                  S:X  d   eg )Nr   )rp   r   r   r   rD   r6   r=   r:   rq   -TestFiberForceVelocityDeGroote2016.test_class  s@    8(CCCC8:UVVVV-66:ZZZZr=   c                     [        U R                  /U R                  Q76 n[        U[         5      (       d   e[	        U5      S:X  d   eg )Nz=FiberForceVelocityDeGroote2016(v_M_tilde, c_0, c_1, c_2, c_3))r   r  rj   rt   ru   r@   fv_Ms     r:   rx   0TestFiberForceVelocityDeGroote2016.test_instance  s@    -dnnNt~~N$ >????4y[[[[r=   c                 l   [        U R                  /U R                  Q76 R                  5       nU R                  [        U R                  U R                  -  U R                  -   [        U R                  U R                  -  U R                  -   S-  S-   5      -   5      -  U R                  -   nX:X  d   eg Nr   r   )
r   r  rj   rB   rf   r   rg   rh   r   ri   r@   r  rM   s      r:   r{   ,TestFiberForceVelocityDeGroote2016.test_doit  s    -dnnNt~~NSSUGGc477T^^3dgg=DGGdnn,tww6:Q>?@ A ACG77K 	 r=   c           
      |   [        U R                  /U R                  Q76 R                  SS9nU R                  [        U R                  U R                  -  U R                  -   [        [        U R                  U R                  -  U R                  -   5      S-  S-   5      -   5      -  U R                  -   nX:X  d   eg )NFr   r   r   )r   r  rj   rB   rf   r   rg   rh   r   r   ri   r  s      r:   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                     [        S5      [        S5      [        S5      [        S5      4n[        U R                  /UQ76 n[        R                  " U R                  5      nX#:X  d   eg Nz-0.318z-8.149z-0.374z0.886)r   r   r  r   )r@   rj   fv_M_manualfv_M_constantss       r:   r   5TestFiberForceVelocityDeGroote2016.test_with_defaults  sZ    (O(O(O'N	
	 5T^^PiP7EEdnnU,,,r=   c                 6   [        U R                  /U R                  Q76 nU R                  U R                  -  [        [        U R                  U R                  -  U R                  -   5      S-  S-   5      -  nUR                  U R                  5      U:X  d   eg r  )	r   r  rj   rf   rg   r   r   rh   r   r  s      r:    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           	      b   [        U R                  /U R                  Q76 n[        U R                  U R                  -  U R
                  -   [        [        U R                  U R                  -  U R
                  -   5      S-  S-   5      -   5      nUR                  U R                  5      U:X  d   eg r  )
r   r  rj   r   rg   rh   r   r   r   rf   r  s      r:   r   <TestFiberForceVelocityDeGroote2016.test_differentiate_wrt_c0  s    -dnnNt~~NGGDNN"TWW,?4774>>#9DGG#CDaG!KLM
 yy!X---r=   c                 6   [        U R                  /U R                  Q76 nU R                  U R                  -  [	        [        U R                  U R                  -  U R                  -   5      S-  S-   5      -  nUR                  U R                  5      U:X  d   eg r  	r   r  rj   rf   r   r   rg   rh   r   r  s      r:   r   <TestFiberForceVelocityDeGroote2016.test_differentiate_wrt_c1  s~    -dnnNt~~NGGDNN"/$''$.."8477"BCQFJKL 	 yy!X---r=   c                    [        U R                  /U R                  Q76 nU R                  [	        [        U R                  U R                  -  U R                  -   5      S-  S-   5      -  nUR                  U R                  5      U:X  d   eg r  r  r  s      r:   r   <TestFiberForceVelocityDeGroote2016.test_differentiate_wrt_c2  su    -dnnNt~~NGG/$''$.."8477"BCQFJKL 	 yy!X---r=   c                     [        U R                  /U R                  Q76 n[        S5      nUR	                  U R
                  5      U:X  d   eg r   )r   r  rj   r   r   ri   r  s      r:   r   <TestFiberForceVelocityDeGroote2016.test_differentiate_wrt_c3  s=    -dnnNt~~N1:yy!X---r=   c                 v    [        U R                  /U R                  Q76 nUR                  5       [        L d   eg r5   )r   r  rj   r   r   r  s     r:   r   /TestFiberForceVelocityDeGroote2016.test_inverse  s.    -dnnNt~~N||~!FFFFr=   c                     [        U R                  /U R                  Q76 nSn[        5       R	                  U5      U:X  d   eg )Nz.\operatorname{fv}^M \left( v_{M tilde} \right))r   r  rj   r    rK   r  s      r:   r   <TestFiberForceVelocityDeGroote2016.test_function_print_latex  s9    -dnnNt~~ND~%%d+x777r=   c                     [        U R                  /U R                  Q76 nSn[        5       R	                  UR                  5       5      U:X  d   eg )Nzsc_{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})r   r  rj   r    rK   rB   r  s      r:   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                 |    [         R                  " U R                  5      nU" 5       R                  U5      U:X  d   eg r5   )r   r   r  rK   )r@   rL   rM   r  s       r:   r   2TestFiberForceVelocityDeGroote2016.test_print_code   s4    j .;;DNNK~%%d+x777r=   c                     [         R                  " U R                  5      nUR                  U R                  5      nSn[	        5       R                  U5      U:X  d   eg )Nz42.591382*(1 + (-8.149*v_M_tilde - 0.374)**2)**(-1/2))r   r   r  r   r'   rK   )r@   r  dfv_M_dv_M_tilderM   s       r:   r   =TestFiberForceVelocityDeGroote2016.test_derivative_print_codeX  sK    -;;DNNK99T^^4I "**+;<HHHr=   c                     [         R                  " U R                  5      n[        U R                  U5      nU" S5      [        R
                  " S5      :X  d   eg )Nr   gJ<_Y	?)r   r   r  r(   rX   r   )r@   r  fv_M_callables      r:   r   0TestFiberForceVelocityDeGroote2016.test_lambdify^  sC    -;;DNNK 6S!V]]3D%EEEEr=   Nr   r   c                    [         R                  " U R                  5      n[        U R                  US5      n[        R                  / SQ5      n[        R                  / SQ5      n[        R                  R                  U" U5      U5        g )Nr*   g      g      r   r8  g$bG?g5?g[Y	?gŇ^)\?)r   r   r  r(   r*   r   r   r   r@   r  r  r  rM   s        r:   r   6TestFiberForceVelocityDeGroote2016.test_lambdify_numpyc  se    -;;DNNK w?KK 67	;;  
  	%%mI&>Ir=   r   c                 h   [         R                  " U R                  5      n[        R	                  [        U R                  US5      5      n[        R                  R                  / SQ5      n[        R                  R                  / SQ5      n[        R                  R                  U" U5      U5        g )Nr)   r  r  )
r   r   r  r)   r   r(   r*   r   r   r   r  s        r:   r   4TestFiberForceVelocityDeGroote2016.test_lambdify_jaxp  sv    -;;DNNKu EFIIOO$:;	99?? $
  	%%mI&>Ir=   )rf   rg   rh   ri   rj   r  )/rD   rE   rF   rG   rX   r   r  rW   rq   rx   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   rI   r6   r=   r:   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                      \ rS rSr\R
                  " SS9S 5       r\S 5       rS r	S r
S rS	 rS
 rS rS rS rS rS rS rS r\R*                  R-                  S\S4\S4\S4\S4\S4\S4\S4\S4\S4\ S4\!S4\"S4\#S4\$S4\%S4/5      S 5       r&S r'S r(\R*                  RS                  \*SL S S!9S" 5       r+\R*                  RS                  \,SL S#S!9S$ 5       r-S%r.g)&)TestFiberForceVelocityInverseDeGroote2016i~  Tr^   c                 
   [        S5      U l        [        S5      U l        [        S5      U l        [        S5      U l        [        S5      U l        U R                  U R                  U R                  U R
                  4U l        g )Nr  rb   rc   rd   re   )r   r  rf   rg   rh   ri   rj   rk   s    r:   r   XTestFiberForceVelocityInverseDeGroote2016._tendon_force_length_inverse_arguments_fixture  r   r=   c                      [        [        [        5      (       d   e[        [        [        5      (       d   e[        R                  S:X  d   eg )Nr   )rp   r   r   r   rD   r6   r=   r:   rq   4TestFiberForceVelocityInverseDeGroote2016.test_class  s@    ?JJJJ?A\]]]]4==Ahhhhr=   c                     [        U R                  /U R                  Q76 n[        U[         5      (       d   e[	        U5      S:X  d   eg )Nz?FiberForceVelocityInverseDeGroote2016(fv_M, c_0, c_1, c_2, c_3))r   r  rj   rt   ru   r@   fv_M_invs     r:   rx   7TestFiberForceVelocityInverseDeGroote2016.test_instance  s@    8TT^^T($IJJJJ8} aaaar=   c                     [        U R                  /U R                  Q76 R                  5       nU[	        U R                  U R
                  -
  U R                  -  5      U R                  -
  U R                  -  :X  d   eg r5   )	r   r  rj   rB   r   ri   rf   rh   rg   r  s     r:   r{   3TestFiberForceVelocityInverseDeGroote2016.test_doit  s]    8TT^^TYY[D$))dgg"5tww!>?$''I477RRRRr=   c                    [        U R                  /U R                  Q76 R                  SS9nU[	        [        U R                  U R                  -
  5      U R                  -  5      U R                  -
  U R                  -  :X  d   eg r~   )
r   r  rj   rB   r   r   ri   rf   rh   rg   r  s     r:   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                     [        S5      [        S5      [        S5      [        S5      4n[        U R                  /UQ76 n[        R                  " U R                  5      nX#:X  d   eg r  )r   r   r  r   )r@   rj   fv_M_inv_manualfv_M_inv_constantss       r:   r   <TestFiberForceVelocityInverseDeGroote2016.test_with_defaults  s_    (O(O(O'N	
	 @		VIVBPPQUQZQZ[444r=   c                    [        U R                  /U R                  Q76 n[        U R                  U R                  -
  U R
                  -  5      U R
                  U R                  -  -  nUR                  U R                  5      U:X  d   eg r5   r   r  rj   r   ri   rf   rg   r   r@   r  rM   s      r:   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                 R   [        U R                  /U R                  Q76 nU R                  U R                  -
  [	        U R                  U R                  -
  U R
                  -  5      -  U R
                  S-  U R                  -  -  nUR                  U R
                  5      U:X  d   eg r   )r   r  rj   ri   r   rf   rg   r   r  s      r:   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                    [        U R                  /U R                  Q76 nU R                  [	        U R                  U R
                  -
  U R                  -  5      -
  U R                  S-  -  nUR                  U R                  5      U:X  d   eg r   )	r   r  rj   rh   r   ri   rf   rg   r   r  s      r:   r   CTestFiberForceVelocityInverseDeGroote2016.test_differentiate_wrt_c1  sj    8TT^^TGGdDII$7#@AA477A:M}}TWW%111r=   c                     [        U R                  /U R                  Q76 nSU R                  -  nUR	                  U R
                  5      U:X  d   eg r   )r   r  rj   rg   r   rh   r  s      r:   r   CTestFiberForceVelocityInverseDeGroote2016.test_differentiate_wrt_c2  sA    8TT^^Tdgg:}}TWW%111r=   c                    [        U R                  /U R                  Q76 n[        U R                  U R                  -
  U R
                  -  5      * U R
                  U R                  -  -  nUR                  U R                  5      U:X  d   eg r5   r  r  s      r:   r   CTestFiberForceVelocityInverseDeGroote2016.test_differentiate_wrt_c3  sh    8TT^^T$))dgg-tww677I}}TWW%111r=   c                 v    [        U R                  /U R                  Q76 nUR                  5       [        L d   eg r5   )r   r  rj   r   r   r  s     r:   r   6TestFiberForceVelocityInverseDeGroote2016.test_inverse  s1    8TT^^T!%CCCCr=   c                     [        U R                  /U R                  Q76 nSn[        5       R	                  U5      U:X  d   eg )Nz=\left( \operatorname{fv}^M \right)^{-1} \left( fv_{M} \right))r   r  rj   r    rK   r  s      r:   r   CTestFiberForceVelocityInverseDeGroote2016.test_function_print_latex  s9    8TT^^TS~%%h/8;;;r=   c                     [        U R                  /U R                  Q76 nSn[        5       R	                  UR                  5       5      U:X  d   eg )NzK\frac{- c_{2} + \sinh{\left(\frac{- c_{3} + fv_{M}}{c_{0}} \right)}}{c_{1}})r   r  rj   r    rK   rB   r  s      r:   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                 |    [         R                  " U R                  5      nU" 5       R                  U5      U:X  d   eg r5   )r   r   r  rK   )r@   rL   rM   r  s       r:   r   9TestFiberForceVelocityInverseDeGroote2016.test_print_code  s4    f 9FFtyyQ~%%h/8;;;r=   c                     [         R                  " U R                  5      nUR                  U R                  5      nSn[	        5       R                  U5      U:X  d   eg )NzE0.385894476383644*math.cosh(3.14465408805031*fv_M - 2.78616352201258))r   r   r  r   r'   rK   )r@   r  dfv_M_inv_dfv_MrM   s       r:   r   DTestFiberForceVelocityInverseDeGroote2016.test_derivative_print_code$  sP    8FFtyyQ"--		2" 	 !"**?;xGGGr=   c                     [         R                  " U R                  5      n[        U R                  U5      nU" S5      [        R
                  " S5      :X  d   eg )Nr   gM8'$JO)r   r   r  r(   rX   r   )r@   r  fv_M_inv_callables      r:   r   7TestFiberForceVelocityInverseDeGroote2016.test_lambdify-  sD    8FFtyyQ$TYY9 %7M)NNNNr=   Nr   r   c                    [         R                  " U R                  5      n[        U R                  US5      n[        R                  / SQ5      n[        R                  / SQ5      n[        R                  R                  U" U5      U5        g )Nr*   r9  r:  r   r;  r<  ggUYgm7H:gƲ$JOg^8?gH?)r   r   r  r(   r*   r   r   r   r@   r  r6  r  rM   s        r:   r   =TestFiberForceVelocityInverseDeGroote2016.test_lambdify_numpy2  sg    8FFtyyQ$TYY'B{{45;;  
  	%%&7&=xHr=   r   c                 h   [         R                  " U R                  5      n[        R	                  [        U R                  US5      5      n[        R                  R                  / SQ5      n[        R                  R                  / SQ5      n[        R                  R                  U" U5      U5        g )Nr)   r9  r:  )
r   r   r  r)   r   r(   r*   r   r   r   r;  s        r:   r   ;TestFiberForceVelocityInverseDeGroote2016.test_lambdify_jax@  sx    8FFtyyQGGHTYY%$HIyy8999?? $
  	%%&7&=xHr=   )rf   rg   rh   ri   rj   r  )/rD   rE   rF   rG   rX   r   r   rW   rq   rx   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   rI   r6   r=   r:   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                       \ rS rSr\S 5       r\\R                  R                  SS9S 5       5       r	\\R                  R                  SS\0\\\\\\\SS	./5      S
 5       5       r\S 5       rSrg)!TestCharacteristicCurveCollectioniO  c            
         [        [        [        [        [        [
        [        [        S9n U R                  [        L d   eU R                  [        L d   eU R                  [        L d   eU R                  [        L d   eU R                  [
        L d   eU R                  [        L d   eU R                  [        L d   eg N)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_inverse)r   r   r   r   r   r   r   r   rC  rD  rE  rF  rG  rH  rI  curvess    r:   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            
          [         R                  " [        5         [        [        [
        [        [        [        [        [        5      n S S S 5        g ! , (       d  f       g = fr5   )rX   raises	TypeErrorr   r   r   r   r   r   r   r   )_s    r:   %test_invalid_constructor_keyword_onlyGTestCharacteristicCurveCollection.test_invalid_constructor_keyword_onlyd  s;     ]]9%--43:2.5A &%%s   .A
A rA   rC  N)rC  rD  rE  rF  rG  rH  rI  extra_kwargc                     [         R                  " [        5         [        S0 U D6nS S S 5        g ! , (       d  f       g = f)Nr6   )rX   rO  rP  r   )rA   rQ  s     r:   *test_invalid_constructor_wrong_number_argsLTestCharacteristicCurveCollection.test_invalid_constructor_wrong_number_argsr  s)    $ ]]9%-77A &%%s   0
>c            
         [        [        [        [        [        [
        [        [        S9n [        R                  " [        5         S U l        S S S 5        [        R                  " [        5         S U l        S S S 5        [        R                  " [        5         S U l        S S S 5        [        R                  " [        5         S U l        S S S 5        [        R                  " [        5         S U l        S S S 5        [        R                  " [        5         S U l        S S S 5        [        R                  " [        5         S U l        S S S 5        g ! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = frB  )r   r   r   r   r   r   r   r   rX   rO  AttributeErrorrC  rD  rE  rF  rG  rH  rI  rJ  s    r:   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   E0E%E6F.FF)F:
E"%
E36
F
F
F&)
F7:
Gr6   )rD   rE   rF   rG   rW   rL  rX   rY   skiprR  rZ   r   r   r   r   r   r   r   rV  rZ  rI   r6   r=   r:   r@  r@  O  s    \ \$ [[MN
 O 
 [["$AB'D/S.Q6`-O(F0U#		
 8! "8 7 7r=   r@  )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	  rD  rr  r  r  r@  r6   r=   r:   <module>rr     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=   