§
    PŠtj¦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;d	S )+é    )ÚStringIO)ÚSÚsymbolsÚEqÚpiÚCatalanÚ
EulerGammaÚFunction)ÚEquality)Ú	Piecewise)ÚMatrixÚMatrixSymbol)ÚOctaveCodeGenÚcodegenÚmake_routine)Úraises)ÚXFAILNzx,y,zc                  óª   — t          ¦   «         } t          ¦   «         }|                      g |ddd¬¦  «         |                     ¦   «         }|dk    sJ ‚d S )NÚfileF©ÚheaderÚemptyÚ )r   r   Údump_mÚgetvalue)Úcode_genÚoutputÚsources      úg/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sympy/utilities/tests/test_codegen_octave.pyÚtest_empty_m_coder       sP   € Ý‰Œ€HÝ‰ZŒZ€FØ‡O‚O�B˜ ¨u¸E€OÑBÔBÐ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 ‚d S )	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/      sm   € Ø�!�a™%¥™Ð#€IÝ�i °%¸uÐEÑEÔ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 ‚d S )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   %   sƒ   € Ø�!�a™%¥™Ð#€IÝ�i °$¸eÐDÑDÔ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 ‚d S )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   sb   € Ý•A��A™ÑÔ€DØ˜�€IÝ�i °%¸uÐEÑEÔ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 ‚d S )Nr#   r$   Fr   r&   z+function out1 = test()
  out1 = pi^%s;
end
é   )r   r   r   Úevalfr+   s       r   Útest_m_numbersymbolr;   E   se   € Ø��W™Ð%€IÝ�i °%¸uÐEÑEÔE�G€FØ�AŒY€Fð	õ 	Œ�bÑÔñ	€Hð
 �XÒÐÐÐÐÐr!   c                  ó†   — dt           t          z  t          gf} t          | dddd¬¦  «        \  }|d         }d}||k    sJ ‚d S )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   sd   € ð �"�g™+¥zÐ2Ð3€IÝ�i °%Ø!¨%ð1ñ 1ô 1�G€Fà�AŒY€Fð	ð ð �XÒÐÐÐÐÐr!   c                  ó  — t           t          z   } t          d| t          t           t          gd¬¦  «        }t	          ¦   «         }t          ¦   «         }|                     |g|ddd¬¦  «         |                     ¦   «         }d}||k    sJ ‚d S )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   s‰   € Ý�q‰5€DÝ˜6 4½A½qÅ!¸9ÈxÐXÑXÔX€GÝ‰Œ€HÝ‰ZŒZ€FØ‡O‚O�W�I˜v v°eÀ5€OÑIÔIÐ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 ‚d S )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   sn   € å•‰U•A‰I€EÝ•‰U•A‰I€EØ˜% ˜Ð(€IÝ�i °%¸uÐEÑEÔE�G€FØ�AŒY€Fð	ð ð �XÒÐÐÐÐÐr!   c                  óL  — 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 ‚d S )	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ÑEÔ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t          t          t          f¬¦  «        }|d         d         dk    sJ ‚|d         d	         }d
}	||	k    sJ ‚d S )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ñ 2ô 2€Fà�!Œ9�QŒ<˜8Ò#Ð#Ð#Ð#Ø�AŒY�qŒ\€Fð	ð ð �XÒÐÐÐÐÐr!   c                  óè  — ddl m} m}m} d |t          ¦  «         | t
          ¦  «        z    |t          ¦  «        z   dz                       ¦   «          |  |  |  |  |  |  |  | t          t
          z   t          z   ¦  «        ¦  «        ¦  «        ¦  «        ¦  «        ¦  «        ¦  «        ¦  «        gf}t          |ddd¬¦  «        }|d         d         dk    sJ ‚|d         d	         }d
}||k    sJ ‚d S )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ÐHÐHÐHÐHÐHÐHÐHÐHØØ�•A‘”˜˜�Q™œ‘ # #¥a¡&¤&Ñ(¨1Ñ,×4Ò4Ñ6Ô6ØˆC���C�C˜˜˜C˜C   C C¨¨­Aµ©EµA©I©¬Ñ$7Ô$7Ñ 8Ô 8Ñ9Ô9Ñ:Ô:Ñ;Ô;Ñ<Ô<Ñ=Ô=ðð€Iõ �Y °¸eÐDÑDÔD€FØ�!Œ9�QŒ<˜<Ò'Ð'Ð'Ð'Ø�AŒY�qŒ\€Fð	ð ð �XÒÐÐÐÐÐr!   c                  ól  — 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 ‚d S )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ÐCÐCÐCÐCÐCÐCÐCÝ�‰Œ€AØ˜˜˜Q�q™S™œ¥8­A¨s¨sµ1©v¬vÑ#6Ô#6¸¸½A¹¼ÅÈÈCÈCÐPQÕRSÑPSÉHÌHÑ@UÔ@UÐVÐW€IÝ�i °%¸uÐEÑEÔ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k    fdd¬¦  «        } d| f}t          |d	dd¬
¦  «        \  }|d         }d}||k    sJ ‚d S )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   Ð   sŠ   € Ý	�A•q˜2’v�;¥ A¡¥q¨A¢v µ!°°A±µq¸1²u°¸yÐSXÐ	YÑ	YÔ	Y€BØ˜2�€IÝ�i °%¸uÐEÑEÔ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k    fd¦  «        } d| f}t          |dddd¬	¦  «        \  }|d         }d
}||k    sJ ‚d S )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   ß   s�   € õ 
�A•q˜2’v�;¥ A¡¥q¨A¢v µ!°°A±µq¸1²u°¸yÑ	IÔ	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 ‚d S )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ÑDÔ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 ‚d S )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ÑCÔ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„¦  «         d S )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ñ  Kô  K€ r!   )r(   r)   r   Ú
ValueErrorrz   s   @r   Útest_m_filename_match_first_fcnr}   !  sj   ø€ Ø˜1�Q™3 ¥!¡˜*Ð%¨µ°1±°a½±c¨{Ð';Ð=€IÝ
�:ð Kð Kð Kð Kñ Lô Lð Lð Lð 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 ‚d S )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ÔCÐD€IÝ�Y °¸eÐDÑDÔ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 ‚d S )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  sŽ   € Ý˜( A qÑ)Ô)€FÝ	•!�Q•q‘S�"�Q™$�Ð Ñ	!Ô	!€BØ� &¨"°uÐ=Ñ=Ô=Ð>€IÝ�i °%¸uÐEÑEÔ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 ‚d S )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  sh   € Ý•A•q�‘s˜A�;�-Ñ Ô €DØ˜�€IÝ�i °%¸uÐEÑEÔE�G€FØ�AŒY€Fð	ð ð
 �XÒÐÐÐÐÐr!   c                  óh  — 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 ‚d S )	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ÑEÔE�G€FØ�AŒY€Fð	ð ð �XÒÐÐÐÐÐr!   c            	      ó”  — 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 ‚d S )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ñ 2ô 2�G€Fà�AŒY€Fð	ð ð �XÒÐÐÐÐÐr!   c            	      óz  — 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 ‚d S )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¨1¨1¨¤gÑ.Ô.Ý" 1 a¨¨1¨1¨1¨¤gÑ.Ô.Ý" 1 a¨¨¨¨1¨¤gÑ.Ô.ð0ð 1€Iõ �i °%¸uÐEÑEÔ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 ‚d S )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Ô2Ý" 1 a¨¨!¨¨Q¨q¨S¨¤kÑ2Ô2ð4ð 5€Iå�i °%¸uÐEÑEÔE�G€FØ�AŒY€Fð	ð ð �XÒÐÐÐÐÐr!   c            
      ó4  — 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 ‚d S )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Ô2Ý" 1 a¨¨¨!¨¨S¨S¨q¨S¨¤kÑ2Ô2ð4ð 5€Iå�i °%¸uÐEÑEÔ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 ‚d S )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°1°1°¬v°q¸¸¸¸1¸´v¸qÀÀÀÀ1À¼vÐFÐG€IÝ�i °%¸uÐEÑEÔ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 ‚d S d S )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®   ¾  sE  € ð
 .Ð-Ð-Ð-Ð-Ð-Ð-Ð-Ø)Ð)Ð)Ð)Ð)Ð)Øˆ7�5 $Ð'Ñ'Ô'�D€A€qØˆ�CÑÔ€AØˆ�CÑÔ€AØˆ�CÑÔ€AØˆˆC�‰Œ€AØˆˆC�‰Œ€AÝ�~¥r¨!¨A¬$°°!°Q°$´¸¸!¼±Ñ'=Ô'=Ð>ÀØ"¨%ð1ñ 1ô 1�G€Fà�AŒY€Fð		ð ð �h % %¸a¸a¸aÀÀÀÐ)CÐ!DÑDÒDÐDØ�h % %¸a¸a¸aÀÀÀÐ)CÐ!DÑDÒDÐDÐDðEÐDÐDØDÐDr!   c                  óŽ  — 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 ‚d S )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Ñ1Ô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Ô&HÐIØ u°Eð;ñ ;ô ;�G€Fà�AŒY€Fð	ð ð  �XÒÐÐÐÐÐr!   c                  ó–   — t          t          t          dz  ¦  «        } d| f}t          |ddd¬¦  «        \  }|d         }d}||k    sJ ‚d S )NrL   Úmysqrr$   Fr   r&   z&function x = mysqr(x)
  x = x.^2;
end
)r   r(   r   r5   s        r   Útest_m_InOutArgumentr¸      sb   € Ý•A•q˜!‘tÑÔ€DØ˜$�€IÝ�i °%¸uÐEÑEÔ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 ‚d S )	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ÑEÔE�G€FØ�AŒY€Fð	ð ð
 �XÒÐÐÐÐÐr!   c                  óÞ   — t          d¦  «        } d | t          ¦  «                             t          ¦  «        t          j        gf}t          |ddd¬¦  «        \  }|d         }d}||k    sJ ‚d S )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¿   '  su   € Ý�‰Œ€AØ˜!˜!�A™$œ$Ÿ)š)¥A™,œ,­Ô(9Ð:Ð;€IÝ�i °%¸uÐEÑEÔ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 ‚d S )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ñ Cô 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Ð HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HØ *Ð *Ð *Ð *Ð *Ð *Ø :Ð :Ð :Ð :Ð :Ð :Ø /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ø HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HØ 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø &Ð &Ð &Ð &Ð &Ð &Ø €€€ð ˆ'�'Ñ
Ô
�€€1€aðð ð ð
ð 
ð 
ðð ð ð&
ð 
ð 
ð	ð 	ð 	ð ðð ñ „ðð"ð ð ðð ð ð ð ð ð&ð ð ð(ð ð ð(ð ð ð&ð ð ð ðð ñ „ðð.ð ð ð$ð ð ð0Lð Lð Lðð ð ðð ð ð
ð 
ð 
ðð ð ð&ð ð ð(ð ð ð(ð ð ð"ð ð ð"ð ð ð"Fð Fð Fð@ð ð ðD
ð 
ð 
ðð ð ð4ð ð ð ð ð ð ð r!   