Ë
    7^(h¦E  ã                   ó|  — d dl mZ d dlmZmZmZmZmZmZm	Z	 d dl
mZ d dlmZ d dlmZmZ d dlmZmZmZ d dlmZ d dlmZ d d	lZ ed
«      \  ZZZd„ Zd„ Zd„ Zd„ Zd„ Z ed„ «       Z!d„ Z"d„ Z#d„ Z$d„ Z%d„ Z&d„ Z'd„ Z(ed„ «       Z)d„ Z*d„ Z+d„ Z,d„ Z-d„ Z.d„ Z/d„ Z0d „ Z1d!„ Z2d"„ Z3d#„ Z4d$„ Z5d%„ Z6d&„ Z7d'„ Z8d(„ Z9d)„ Z:d*„ Z;y	)+é    )ÚStringIO)ÚSÚsymbolsÚEqÚpiÚCatalanÚ
EulerGammaÚFunction)ÚEquality)Ú	Piecewise)ÚMatrixÚMatrixSymbol)ÚOctaveCodeGenÚcodegenÚmake_routine)Úraises)ÚXFAILNzx,y,zc                  ó†   — t        «       } t        «       }| j                  g |ddd¬«       |j                  «       }|dk(  sJ ‚y )NÚfileF©ÚheaderÚemptyÚ )r   r   Údump_mÚgetvalue)Úcode_genÚoutputÚsources      úg/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sympy/utilities/tests/test_codegen_octave.pyÚtest_empty_m_coder       s>   € Ü‹€HÜ‹Z€FØ‡O�O�B˜ ¨u¸E€OÔBØ�_‰_Ó€FØ�RŠ<Ð‰<ó    c                  ó‚   — dt         t        z   t        z  f} t        | ddd¬«      \  }|d   dk(  sJ ‚|d   }d}||k(  sJ ‚y )	NÚtestÚOctaveFr   r   útest.mé   z7function out1 = test(x, y, z)
  out1 = z.*(x + y);
end
©ÚxÚyÚzr   ©Ú	name_exprÚresultr   Úexpecteds       r   Útest_m_simple_coder/      s[   € Øœ!œa™%¤™Ð#€IÜ�i °%¸uÔE�G€FØ�!‰9˜Ò Ð Ð Ø�A‰Y€Fð	ð ð
 �XÒÐÑr!   c                  óª   — dt         t        z   t        z  f} t        | ddd¬«      \  }|d   dk(  sJ ‚|d   }d	t        j
                  z   d
z   }||k(  sJ ‚y )Nr#   r$   TFr   r   r%   r&   z^function out1 = test(x, y, z)
  %TEST  Autogenerated by SymPy
  %   Code generated with SymPy z}
  %
  %   See http://www.sympy.org/ for more information.
  %
  %   This file is part of 'project'
  out1 = z.*(x + y);
end
)r(   r)   r*   r   ÚsympyÚ__version__r+   s       r   Útest_m_simple_code_with_headerr3   %   st   € Øœ!œa™%¤™Ð#€IÜ�i °$¸eÔD�G€FØ�!‰9˜Ò Ð Ð Ø�A‰Y€Fð	+ä-2×->Ñ->ñ	?ðBñ	ð ð �XÒÐÑr!   c                  ó€   — t        t        t        t        z   «      } d| f}t	        |ddd¬«      \  }|d   }d}||k(  sJ ‚y )Nr#   r$   Fr   r&   z)function z = test(x, y)
  z = x + y;
end
)r   r*   r(   r)   r   ©Úexprr,   r-   r   r.   s        r   Útest_m_simple_code_nameoutr7   8   sP   € Ü”AœœA™Ó€DØ˜�€IÜ�i °%¸uÔE�G€FØ�A‰Y€Fð	ð ð
 �XÒÐÑr!   c                  óŒ   — dt         t        z  f} t        | ddd¬«      \  }|d   }dt        j                  d«      z  }||k(  sJ ‚y )Nr#   r$   Fr   r&   z+function out1 = test()
  out1 = pi^%s;
end
é   )r   r   r   Úevalfr+   s       r   Útest_m_numbersymbolr;   E   sU   € ØœœW™Ð%€IÜ�i °%¸uÔE�G€FØ�A‰Y€Fð	ô 	�‰�bÓñ	€Hð
 �XÒÐÑr!   c                  ón   — dt         t        z  t        gf} t        | dddd¬«      \  }|d   }d}||k(  sJ ‚y )Nr#   r$   F©r   r   Úinliner&   z§function [out1, out2] = test()
  Catalan = 0.915965594177219;  % constant
  EulerGamma = 0.5772156649015329;  % constant
  out1 = pi^Catalan;
  out2 = EulerGamma;
end
)r   r   r	   r   r+   s       r   Útest_m_numbersymbol_no_inliner?   Q   sQ   € ð œ"œg™+¤zÐ2Ð3€IÜ�i °%Ø!¨%ô1�G€Fà�A‰Y€Fð	ð ð �XÒÐÑr!   c                  óâ   — t         t        z   } t        d| t        t         t        gd¬«      }t	        «       }t        «       }|j                  |g|ddd¬«       |j                  «       }d}||k(  sJ ‚y )Nr#   Úoctave)Úargument_sequenceÚlanguageFr   z2function out1 = test(z, x, y)
  out1 = x + y;
end
)r(   r)   r   r*   r   r   r   r   )r6   Úroutiner   r   r   r.   s         r   Útest_m_code_argument_orderrE   c   sm   € ÜŒq‰5€DÜ˜6 4¼A¼qÄ!¸9ÈxÔX€GÜ‹€HÜ‹Z€FØ‡O�O�W�I˜v v°eÀ5€OÔIØ�_‰_Ó€Fð	ð ð
 �XÒÐÑr!   c                  óž   — t         t        z   t        z  } t         t        z
  t        z  }d| |gf}t        |ddd¬«      \  }|d   }d}||k(  sJ ‚y )Nr#   r$   Fr   r&   zTfunction [out1, out2] = test(x, y, z)
  out1 = z.*(x + y);
  out2 = z.*(x - y);
end
r'   )Úexpr1Úexpr2r,   r-   r   r.   s         r   Útest_multiple_results_mrI   r   s_   € ä”‰U”A‰I€EÜ”‰U”A‰I€EØ˜% ˜Ð(€IÜ�i °%¸uÔE�G€FØ�A‰Y€Fð	ð ð �XÒÐÑr!   c                  ó  — t        d«      \  } }}t        |t        t        z   t        z  «      }t        | t        t        z
  t        z  «      }t        |dt        z  «      }d|||gf}t        |ddd¬«      \  }|d   }d}	||	k(  sJ ‚y )	NúA,B,Cé   r#   r$   Fr   r&   zVfunction [C, A, B] = test(x, y, z)
  C = z.*(x + y);
  A = z.*(x - y);
  B = 2*x;
end
©r   r   r(   r)   r*   r   ©
ÚAÚBÚCrG   rH   Úexpr3r,   r-   r   r.   s
             r   Útest_results_named_unorderedrS   ‚   s�   € ä�gÓ�G€A€qˆ!Ü�QœœQ™¤™	Ó"€EÜ�QœœQ™¤™	Ó"€EÜ�Q˜œ!™Ó€EØ˜% ¨Ð.Ð/€IÜ�i °%¸uÔE�G€FØ�A‰Y€Fð	ð ð �XÒÐÑr!   c            	      óH  — t        d«      \  } }}t        |t        t        z   t        z  «      }t        | t        t        z
  t        z  «      }t        |dt        z  «      }d|||gf}t        |dddt        t        t        f¬«      }|d   d   dk(  sJ ‚|d   d	   }d
}	||	k(  sJ ‚y )NrK   rL   r#   r$   F©r   r   rB   r   r%   r&   zVfunction [C, A, B] = test(x, z, y)
  C = z.*(x + y);
  A = z.*(x - y);
  B = 2*x;
end
rM   rN   s
             r   Útest_results_named_orderedrV   •   s³   € Ü�gÓ�G€A€qˆ!Ü�QœœQ™¤™	Ó"€EÜ�QœœQ™¤™	Ó"€EÜ�Q˜œ!™Ó€EØ˜% ¨Ð.Ð/€IÜ�Y °¸eÜ()¬1¬a yô2€Fà�!‰9�Q‰<˜8Ò#Ð#Ð#Ø�A‰Y�q‰\€Fð	ð ð �XÒÐÑr!   c                  ól  — ddl m} m}m} d |t        «       | t
        «      z    |t        «      z   dz  j                  «        |  |  |  |  |  |  |  | t        t
        z   t        z   «      «      «      «      «      «      «      «      gf}t        |ddd¬«      }|d   d   dk(  sJ ‚|d   d	   }d
}||k(  sJ ‚y )Nr   )ÚcosÚsinÚtanÚtestlongé   r$   Fr   z
testlong.mr&   a5  function [out1, out2] = testlong(x, y, z)
  out1 = sin(x).^3 + 3*sin(x).^2.*cos(y) + 3*sin(x).^2.*tan(z) + 3*sin(x).*cos(y).^2 + 6*sin(x).*cos(y).*tan(z) + 3*sin(x).*tan(z).^2 + cos(y).^3 + 3*cos(y).^2.*tan(z) + 3*cos(y).*tan(z).^2 + tan(z).^3;
  out2 = cos(cos(cos(cos(cos(cos(cos(cos(x + y + z))))))));
end
)	Ú(sympy.functions.elementary.trigonometricrX   rY   rZ   r(   r)   r*   Úexpandr   )rX   rY   rZ   r,   r-   r   r.   s          r   Útest_complicated_m_codegenr_   ©   s¾   € ßHÑHØÙ”A“™œQ›‘¡#¤a£&Ñ(¨1Ñ,×4Ñ4Ó6Ù‘‘C™™C¡¡C©¬A´©E´A©I«Ó$7Ó 8Ó9Ó:Ó;Ó<Ó=ðð€Iô �Y °¸eÔD€FØ�!‰9�Q‰<˜<Ò'Ð'Ð'Ø�A‰Y�q‰\€Fð	ð ð �XÒÐÑr!   c                  ó  — ddl m} m} t        d«      }d | dt        z  «      t        t         |t        «      «       | t        «      t        | |dt        z  «      «      gf}t        |ddd¬«      \  }|d   d	k(  sJ ‚|d
   }d}||k(  sJ ‚y )Nr   )rX   rY   ÚaÚfoorL   r$   Fr   úfoo.mr&   zkfunction [out1, y, out3, a] = foo(x)
  out1 = cos(2*x);
  y = sin(x);
  out3 = cos(x);
  a = sin(2*x);
end
)r]   rX   rY   r   r(   r   r)   r   )rX   rY   ra   r,   r-   r   r.   s          r   Ú!test_m_output_arg_mixed_unorderedrd   ½   s‘   € çCÜ�‹€AØ™˜Qœq™S›¤8¬A©s´1«vÓ#6¹¼A»ÄÈÉCÐPQÔRSÑPSËHÓ@UÐVÐW€IÜ�i °%¸uÔE�G€FØ�!‰9˜ÒÐÐØ�A‰Y€Fð	ð ð �XÒÐÑr!   c                  ó¾   — t        dt        dk  ft        dz  t        dk  ft         dz   t        dkD  fdd¬«      } d| f}t        |d	dd¬
«      \  }|d   }d}||k(  sJ ‚y )Nr   éÿÿÿÿrL   r&   ©r&   TF©ÚevaluateÚpwtestr$   r   zœfunction out1 = pwtest(x)
  out1 = ((x < -1).*(0) + (~(x < -1)).*( ...
  (x <= 1).*(x.^2) + (~(x <= 1)).*( ...
  (x > 1).*(2 - x) + (~(x > 1)).*(1))));
end
©r   r(   r   ©Úpwr,   r-   r   r.   s        r   Útest_m_piecewise_rn   Ð   su   € Ü	�A”q˜2‘v�;¤ A¡¤q¨A¡v ´!°°A±´q¸1±u°¸yÐSXÔ	Y€BØ˜2�€IÜ�i °%¸uÔE�G€FØ�A‰Y€Fð	ð ð �XÒÐÑr!   c                  ó¼   — t        dt        dk  ft        dz  t        dk  ft         dz   t        dkD  fd«      } d| f}t        |dddd¬	«      \  }|d   }d
}||k(  sJ ‚y )Nr   rf   rL   r&   rg   rj   r$   Fr=   zœfunction out1 = pwtest(x)
  if (x < -1)
    out1 = 0;
  elseif (x <= 1)
    out1 = x.^2;
  elseif (x > 1)
    out1 = -x + 2;
  else
    out1 = 1;
  end
end
rk   rl   s        r   Útest_m_piecewise_no_inlinerp   ß   sy   € ô 
�A”q˜2‘v�;¤ A¡¤q¨A¡v ´!°°A±´q¸1±u°¸yÓ	I€BØ˜2�€IÜ�i °%¸uØ"ô$�G€Fà�A‰Y€Fð
	ð ð �XÒÐÑr!   c                  ó®   — ddt         z  dt        z  gfdt        dz  dt        z  gfg} t        | ddd¬«      }|d	   d	   d
k(  sJ ‚|d	   d   }d}||k(  sJ ‚y )Nrb   rL   r\   Úbaré   r$   Fr   r   rc   r&   z‚function [out1, out2] = foo(x, y)
  out1 = 2*x;
  out2 = 3*y;
end
function [out1, out2] = bar(y)
  out1 = y.^2;
  out2 = 4*y;
end
)r(   r)   r   r+   s       r   Útest_m_multifcns_per_filert   ÷   s{   € Ø˜1œQ™3 ¤!¡˜*Ð%¨´°1±°a¼±c¨{Ð';Ð=€IÜ�Y °¸eÔD€FØ�!‰9�Q‰<˜7Ò"Ð"Ð"Ø�A‰Y�q‰\€Fð	ð ð �XÒÐÑr!   c                  óÖ   — ddt         z  dt        z  gfdt        dz  dt        z  gfg} t        | ddd¬	«      }|d
   d
   dk(  sJ ‚|d
   d   }dt        j                  z   dz   }||k(  sJ ‚y )Nrb   rL   r\   rr   rs   r$   TFr   r   rc   r&   zafunction [out1, out2] = foo(x, y)
  %FOO  Autogenerated by SymPy
  %   Code generated with SymPy zÄ
  %
  %   See http://www.sympy.org/ for more information.
  %
  %   This file is part of 'project'
  out1 = 2*x;
  out2 = 3*y;
end
function [out1, out2] = bar(y)
  out1 = y.^2;
  out2 = 4*y;
end
)r(   r)   r   r1   r2   r+   s       r   Ú"test_m_multifcns_per_file_w_headerrv   	  s”   € Ø˜1œQ™3 ¤!¡˜*Ð%¨´°1±°a¼±c¨{Ð';Ð=€IÜ�Y °¸UÔC€FØ�!‰9�Q‰<˜7Ò"Ð"Ð"Ø�A‰Y�q‰\€Fð	+ä-2×->Ñ->ñ	?ðBñ	ð ð  �XÒÐÑr!   c                  ó|   ‡ — ddt         z  dt        z  gfdt        dz  dt        z  gfgŠ t        t        ˆ fd„«       y )Nrb   rL   r\   rr   rs   c                  ó$   •— t        ‰ dddd¬«      S )Nr$   rr   F)Úprefixr   r   )r   ©r,   s   €r   ú<lambda>z1test_m_filename_match_first_fcn.<locals>.<lambda>#  s   ø€ œw yØ ¨°uÀEô K€ r!   )r(   r)   r   Ú
ValueErrorrz   s   @r   Útest_m_filename_match_first_fcnr}   !  s@   ø€ Ø˜1œQ™3 ¤!¡˜*Ð%¨´°1±°a¼±c¨{Ð';Ð=€IÜ
Œ:ó Kõ Lr!   c                  óÚ   — t        t        dt        z  t        t        z  gg«      } dt        t        ddd«      | «      f}t        |ddd¬«      }|d	   d	   d
k(  sJ ‚|d	   d   }d}||k(  sJ ‚y )NrL   r#   Úmyout1r&   r\   r$   Fr   r   r%   ú=function myout1 = test(x, y, z)
  myout1 = [x 2*y pi*z];
end
)r   r(   r)   r   r*   r   r   r   )Úe2r,   r-   r   r.   s        r   Útest_m_matrix_namedr‚   '  s„   € Ü	”!�Q”q‘Sœ"œQ™$�Ð Ó	!€BØœ¤,¨x¸¸AÓ">ÀÓCÐD€IÜ�Y °¸eÔD€FØ�!‰9�Q‰<˜8Ò#Ð#Ð#Ø�A‰Y�q‰\€Fð	ð ð
 �XÒÐÑr!   c                  óÆ   — t        ddd«      } t        t        dt        z  t        t
        z  gg«      }dt        | |d¬«      f}t        |ddd¬	«      \  }|d   }d
}||k(  sJ ‚y )Nr   r&   r\   rL   r#   Frh   r$   r   r€   )r   r   r(   r)   r   r*   r   r   )r   r�   r,   r-   r   r.   s         r   Útest_m_matrix_named_matsymr„   5  ss   € Ü˜( A qÓ)€FÜ	”!�Q”q‘Sœ"œQ™$�Ð Ó	!€BØœ &¨"°uÔ=Ð>€IÜ�i °%¸uÔE�G€FØ�A‰Y€Fð	ð ð
 �XÒÐÑr!   c                  ó†   — t        t        t        t        z   dgg«      } d| f}t        |ddd¬«      \  }|d   }d}||k(  sJ ‚y )Nr\   r#   r$   Fr   r&   z5function out1 = test(x, y)
  out1 = [x x + y 3];
end
)r   r(   r)   r   r5   s        r   Útest_m_matrix_output_autonamer†   C  sV   € Ü”A”qœ‘s˜A�;�-Ó €DØ˜�€IÜ�i °%¸uÔE�G€FØ�A‰Y€Fð	ð ð
 �XÒÐÑr!   c                  ó(  — t         t        z   } t        dt         z  dt        z  dt        z  gg«      }t        t         gt        gt        gg«      }t        t         t        gt        dgg«      }d| |||ff}t	        |ddd¬«      \  }|d   }d}||k(  sJ ‚y )	NrL   é   r#   r$   Fr   r&   zˆfunction [out1, out2, out3, out4] = test(x, y, z)
  out1 = x + y;
  out2 = [2*x 2*y 2*z];
  out3 = [x; y; z];
  out4 = [x y; z 16];
end
)r(   r)   r   r*   r   )Úe1r�   Úe3Úe4r,   r-   r   r.   s           r   Útest_m_matrix_output_autoname_2rŒ   P  sŸ   € Ü
Œa‰%€BÜ	�!”A‘#�qœ‘s˜Aœa™C�Ð!Ó	"€BÜ	”!�”q�cœA˜3�Ó	 €BÜ	”!”Q�œ!˜R˜Ð!Ó	"€BØ˜"˜b " bÐ)Ð*€IÜ�i °%¸uÔE�G€FØ�A‰Y€Fð	ð ð �XÒÐÑr!   c            	      óB  — t        d«      \  } }t        ddd«      }t        |t        t        z   t
        z  «      }t        |t        ddt        gg«      «      }t        | dt        z  «      }d|||gf}t        |dddt        t
        t        f¬	«      \  }|d   }d
}	||	k(  sJ ‚y )NzB,CrO   r&   r\   rL   r#   r$   FrU   zSfunction [C, A, B] = test(x, z, y)
  C = z.*(x + y);
  A = [1 2 x];
  B = 2*x;
end
)r   r   r   r(   r)   r*   r   r   )
rP   rQ   rO   rG   rH   rR   r,   r-   r   r.   s
             r   Ú#test_m_results_matrix_named_orderedrŽ   c  s«   € Ü�5‹>�D€A€qÜ�S˜!˜QÓ€AÜ�QœœQ™¤™	Ó"€EÜ�Qœ  A¤q 	˜{Ó+Ó,€EÜ�Q˜œ!™Ó€EØ˜% ¨Ð.Ð/€IÜ�i °%¸uÜ()¬1¬a yô2�G€Fà�A‰Y€Fð	ð ð �XÒÐÑr!   c            	      ó  — t        ddd«      } t        ddd«      }t        ddd«      }t        ddd«      }dt        || d	d d …f   «      t        || dd d …f   «      t        || d d …df   «      gf}t        |d
dd¬«      \  }|d   }d}||k(  sJ ‚y )NrO   rL   r\   rP   r&   rQ   ÚDr#   r   r$   Fr   zNfunction [B, C, D] = test(A)
  B = A(1, :);
  C = A(2, :);
  D = A(:, 3);
end
©r   r   r   )rO   rP   rQ   r�   r,   r-   r   r.   s           r   Útest_m_matrixsymbol_slicer’   w  sµ   € Ü�S˜!˜QÓ€AÜ�S˜!˜QÓ€AÜ�S˜!˜QÓ€AÜ�S˜!˜QÓ€AØœ( 1 a¨ª1¨¡gÓ.Ü" 1 a¨ª1¨¡gÓ.Ü" 1 aª¨1¨¡gÓ.ð0ð 1€Iô �i °%¸uÔE�G€FØ�A‰Y€Fð	ð ð �XÒÐÑr!   c            	      óè   — t        ddd«      } t        ddd«      }t        ddd«      }dt        || dd…dd…f   «      t        || dd…d	d…f   «      gf}t        |d
dd¬«      \  }|d	   }d}||k(  sJ ‚y )NrO   r\   rs   rP   rL   rQ   r#   r   r&   r$   Fr   zDfunction [B, C] = test(A)
  B = A(1:2, 1:2);
  C = A(1:2, 2:3);
end
r‘   ©rO   rP   rQ   r,   r-   r   r.   s          r   Útest_m_matrixsymbol_slice2r•   ‹  s£   € Ü�S˜!˜QÓ€AÜ�S˜!˜QÓ€AÜ�S˜!˜QÓ€AØœ( 1 a¨¨!¨¨Q¨q¨S¨¡kÓ2Ü" 1 a¨¨!¨¨Q¨q¨S¨¡kÓ2ð4ð 5€Iä�i °%¸uÔE�G€FØ�A‰Y€Fð	ð ð �XÒÐÑr!   c            
      óî   — t        ddd«      } t        ddd«      }t        ddd«      }dt        || d	d …d
d d…f   «      t        || d d d…d d d…f   «      gf}t        |ddd¬«      \  }|d
   }d}||k(  sJ ‚y )NrO   é   é   rP   rL   rQ   rs   r#   é   r&   r\   r$   Fr   zRfunction [B, C] = test(A)
  B = A(7:end, 2:3:end);
  C = A(1:2:end, 1:3:end);
end
r‘   r”   s          r   Útest_m_matrixsymbol_slice3rš   œ  s£   € Ü�S˜!˜QÓ€AÜ�S˜!˜QÓ€AÜ�S˜!˜QÓ€AØœ( 1 a¨©¨A¨D¨q¨D¨¡kÓ2Ü" 1 a©¨!¨©S¨q¨S¨¡kÓ2ð4ð 5€Iä�i °%¸uÔE�G€FØ�A‰Y€Fð	ð ð �XÒÐÑr!   c                  óÒ   — t        ddd«      } t        ddd«      }dt        || dd d …f   «      | dd d …f   | d d …df   | d d …df   gf}t        |dd	d	¬
«      \  }|d   }d}||k(  sJ ‚y )NrO   rL   r\   rP   r&   r#   r   r$   Fr   zrfunction [B, out2, out3, out4] = test(A)
  B = A(1, :);
  out2 = A(2, :);
  out3 = A(:, 1);
  out4 = A(:, 2);
end
r‘   )rO   rP   r,   r-   r   r.   s         r   Ú"test_m_matrixsymbol_slice_autonamerœ   ­  s�   € Ü�S˜!˜QÓ€AÜ�S˜!˜QÓ€AØœ( 1 a¨ª!¨¡fÓ-¨q°²1°©v°qº¸1¸±v¸qÂÀ1À¹vÐFÐG€IÜ�i °%¸uÔE�G€FØ�A‰Y€Fð	ð ð �XÒÐÑr!   c            	      ó<  — ddl m} m} ddlm}  |dd¬«      \  }} | d«      } | d«      } | d	«      } |d
|«      } |d|«      }	t        dt        ||   |||	f   ||	   z  «      fddd¬«      \  }
|
d   }d}||dd|›d|	›d�iz  k(  s||dd|›d|	›d�iz  k(  sJ ‚y y )Nr   ©ÚIndexedBaseÚIdx©r   zn mT©ÚintegerrO   r(   r)   ÚiÚjÚmat_vec_multr$   Fr   r&   z•function y = mat_vec_mult(A, m, n, x)
  for i = 1:m
    y(i) = 0;
  end
  for i = 1:m
    for j = 1:n
      y(i) = %(rhs)s + y(i);
    end
  end
end
ÚrhszA(z, z).*x(j)zx(j).*A(ú)©Úsympy.tensorrŸ   r    Úsympy.core.symbolr   r   r   )rŸ   r    r   ÚnÚmrO   r(   r)   r¤   r¥   r-   r   r.   s                r   Útest_m_loopsr®   ¾  sÛ   € ÷
 .Ý)Ù�5 $Ô'�D€A€qÙ�CÓ€AÙ�CÓ€AÙ�CÓ€AÙˆC�‹€AÙˆC�‹€AÜ�~¤r¨!¨A©$°°!°Q°$±¸¸!¹±Ó'=Ð>ÀØ"¨%ô1�G€Fà�A‰Y€Fð		ð ð �h¡%ºaÂÐ)CÐ!DÑDÒDØ�h¡%ºaÂÐ)CÐ!DÑDÒDðFð EØDð Er!   c                  ó2  — ddl m} m} ddlm}  |dd¬«      \  }}}} | d«      } | d«      } | d	«      }	 |d
|«      }
 |d|«      } |d|«      } |d|«      }t        dt        |	|
   ||||f   ||
|||f   z  «      fddd¬«      \  }|d   }d}||k(  sJ ‚y )Nr   rž   r¡   zn m o pTr¢   rO   rP   r)   r¤   r¥   ÚkÚlÚtensorthingr$   Fr   r&   zìfunction y = tensorthing(A, B, m, n, o, p)
  for i = 1:m
    y(i) = 0;
  end
  for i = 1:m
    for j = 1:n
      for k = 1:o
        for l = 1:p
          y(i) = A(i, j, k, l).*B(j, k, l) + y(i);
        end
      end
    end
  end
end
r©   )rŸ   r    r   r¬   r­   ÚoÚprO   rP   r)   r¤   r¥   r°   r±   r-   r   r.   s                    r   Ú)test_m_tensor_loops_multiple_contractionsrµ   Þ  sÉ   € ç-Ý)Ù˜¨DÔ1�J€A€qˆ!ˆQÙ�CÓ€AÙ�CÓ€AÙ�CÓ€AÙˆC�‹€AÙˆC�‹€AÙˆC�‹€AÙˆC�‹€AÜ�}¤b¨¨1©¨q°°A°q°©z¸!¸A¸qÀ!ÀQ¸J¹-Ñ/GÓ&HÐIØ u°Eô;�G€Fà�A‰Y€Fð	ð ð  �XÒÐÑr!   c                  óx   — t        t        t        dz  «      } d| f}t        |ddd¬«      \  }|d   }d}||k(  sJ ‚y )NrL   Úmysqrr$   Fr   r&   z&function x = mysqr(x)
  x = x.^2;
end
)r   r(   r   r5   s        r   Útest_m_InOutArgumentr¸      sP   € Ü”A”q˜!‘tÓ€DØ˜$�€IÜ�i °%¸uÔE�G€FØ�A‰Y€Fð	ð ð
 �XÒÐÑr!   c                  ó  — t        t        t        dz  t        z   «      } d| f}t        |dddt        t        f¬«      \  }|d   }d}||k(  sJ ‚t        t        t        dz  t        z   «      } d| f}t        |ddd¬«      \  }|d   }d}||k(  sJ ‚y )	NrL   r#   r$   FrU   r&   z,function x = test(x, y)
  x = x.^2 + y;
end
r   )r   r(   r)   r   r5   s        r   Útest_m_InOutArgument_orderrº     s¯   € ä”A”q˜!‘tœa‘xÓ €DØ˜�€IÜ�i °%Ø!´a¼°Uô<�G€Fà�A‰Y€Fð	ð ð
 �XÒÐÐä”A”q˜!‘tœa‘xÓ €DØ˜�€IÜ�i °%¸uÔE�G€FØ�A‰Y€Fð	ð ð
 �XÒÐÑr!   c                  óº   — t        d«      } d | t        «      j                  t        «      t        j                  gf}t        |ddd¬«      \  }|d   }d}||k(  sJ ‚y )NÚfr#   r$   Fr   r&   zŠfunction [out1, out2] = test(x)
  % unsupported: Derivative(f(x), x)
  % unsupported: zoo
  out1 = Derivative(f(x), x);
  out2 = zoo;
end
)r
   r(   Údiffr   ÚComplexInfinityr   )r¼   r,   r-   r   r.   s        r   Útest_m_not_supportedr¿   '  sa   € Ü�‹€AØ™!œA›$Ÿ)™)¤A›,¬×(9Ñ(9Ð:Ð;€IÜ�i °%¸uÔE�G€FØ�A‰Y€Fð	ð ð �XÒÐÑr!   c            	      óÎ   — t        d«      \  } }}}t        d| |z  fddd|f¬«      }|d   d   }d}||k(  sJ ‚t        d| |z  |z   fddd| |f||f¬	«      }|d   d   }d
}||k(  sJ ‚y )Nzx y z tr¼   r$   F)r   r   Úglobal_varsr   r&   z3function out1 = f(x)
  global y
  out1 = x.*y;
end
)r   r   rB   rÁ   z<function out1 = f(x, y)
  global t z
  out1 = x.*y + z;
end
)r   r   )r(   r)   r*   Útr-   r   r.   s          r   Útest_global_vars_octaverÃ   7  s­   € Ü˜Ó#�J€A€qˆ!ˆQÜ�c˜1˜Q™3�Z °%¸uØ"# ô'€Fà�A‰Y�q‰\€Fð	ð ð �XÒÐÐä�c˜1˜Q™3˜q™5�\ 8°EÀØ()¨1 v¸A¸q¸6ôC€Fà�A‰Y�q‰\€Fð	ð ð �XÒÐÑr!   )<Úior   Ú
sympy.corer   r   r   r   r   r	   r
   Úsympy.core.relationalr   Ú$sympy.functions.elementary.piecewiser   Úsympy.matricesr   r   Úsympy.utilities.codegenr   r   r   Úsympy.testing.pytestr   r   r1   r(   r)   r*   r    r/   r3   r7   r;   r?   rE   rI   rS   rV   r_   rd   rn   rp   rt   rv   r}   r‚   r„   r†   rŒ   rŽ   r’   r•   rš   rœ   r®   rµ   r¸   rº   r¿   rÃ   © r!   r   ú<module>rÌ      sý   ðÝ ç H× HÑ HÝ *Ý :ß /ß HÑ HÝ 'Ý &Û ñ �'Ó
�€€1€aòò
òò&
ò	ð ñó ðò"òò ò&ò(ò(ò&ð ñó ðò.ò$ò0Lòòò
òò&ò(ò(ò"ò"ò"Fò@òD
òò4ó r!   