Ë
    7^(hlH  ã                   óp  — 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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„ Z/d„ Z0d „ Z1d!„ Z2d"„ Z3d#„ Z4d$„ Z5d%„ Z6d&„ Z7d'„ Z8d(„ Z9d)„ Z:y)*é    )ÚStringIO)ÚSÚsymbolsÚEqÚpiÚCatalanÚ
EulerGammaÚFunction)ÚEquality)Ú	Piecewise)ÚMatrixÚMatrixSymbol)ÚJuliaCodeGenÚcodegenÚmake_routine)ÚXFAILNzx,y,zc                  ó†   — t        «       } t        «       }| j                  g |ddd¬«       |j                  «       }|dk(  sJ ‚y )NÚfileF©ÚheaderÚemptyÚ )r   r   Údump_jlÚgetvalue)Úcode_genÚoutputÚsources      úf/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sympy/utilities/tests/test_codegen_julia.pyÚtest_empty_jl_coder      sA   € Ü‹~€HÜ‹Z€FØ×Ñ�R˜ °¸UÐÔCØ�_‰_Ó€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ÚJuliaFr   r   útest.jlé   zCfunction test(x, y, z)
    out1 = z .* (x + y)
    return out1
end
©ÚxÚyÚzr   ©Ú	name_exprÚresultr   Úexpecteds       r   Útest_jl_simple_coder.      s[   € Øœ!œa™%¤™Ð#€IÜ�i °¸eÔD�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%   ú#   Code generated with SymPy zŸ
#
#   See http://www.sympy.org/ for more information.
#
#   This file is part of 'project'
function test(x, y, z)
    out1 = z .* (x + y)
    return out1
end
)r'   r(   r)   r   ÚsympyÚ__version__r*   s       r   Útest_jl_simple_code_with_headerr3   %   so   € Øœ!œa™%¤™Ð#€IÜ�i °¸UÔC�G€FØ�!‰9˜	Ò!Ð!Ð!Ø�A‰Y€Fà(¬5×+<Ñ+<Ñ<ð @ñ 	ð ð �XÒÐÑr    c                  ó€   — t        t        t        t        z   «      } d| f}t	        |ddd¬«      \  }|d   }d}||k(  sJ ‚y )Nr"   r#   Fr   r%   z3function test(x, y)
    z = x + y
    return z
end
)r   r)   r'   r(   r   ©Úexprr+   r,   r   r-   s        r   Útest_jl_simple_code_nameoutr7   8   sP   € Ü”AœœA™Ó€DØ˜�€IÜ�i °¸eÔD�G€FØ�A‰Y€Fð	ð ð �XÒÐÑr    c                  ó`   — dt         t        z  f} t        | ddd¬«      \  }|d   }d}||k(  sJ ‚y )Nr"   r#   Fr   r%   z<function test()
    out1 = pi ^ catalan
    return out1
end
)r   r   r   r*   s       r   Útest_jl_numbersymbolr9   F   sE   € ØœœW™Ð%€IÜ�i °¸eÔD�G€FØ�A‰Y€Fð	ð ð �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 test()
    Catalan = 0.915965594177219
    EulerGamma = 0.5772156649015329
    out1 = pi ^ Catalan
    out2 = EulerGamma
    return out1, out2
end
)r   r   r	   r   r*   s       r   Útest_jl_numbersymbol_no_inliner=   S   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"   Újulia)Úargument_sequenceÚlanguageFr   z<function test(z, x, y)
    out1 = x + y
    return out1
end
)r'   r(   r   r)   r   r   r   r   )r6   Úroutiner   r   r   r-   s         r   Útest_jl_code_argument_orderrC   f   sp   € ÜŒq‰5€DÜ˜6 4¼A¼qÄ!¸9ÈwÔW€GÜ‹~€HÜ‹Z€FØ×Ñ�g�Y ¨°uÀEÐÔJØ�_‰_Ó€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%   zafunction test(x, y, z)
    out1 = z .* (x + y)
    out2 = z .* (x - y)
    return out1, out2
end
r&   )Úexpr1Úexpr2r+   r,   r   r-   s         r   Útest_multiple_results_mrG   v   s_   € ä”‰U”A‰I€EÜ”‰U”A‰I€EØ˜% ˜Ð(€IÜ�i °¸eÔD�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%   zffunction test(x, y, z)
    C = z .* (x + y)
    A = z .* (x - y)
    B = 2 * x
    return C, A, B
end
©r   r   r'   r(   r)   r   ©
ÚAÚBÚCrE   rF   Úexpr3r+   r,   r   r-   s
             r   Útest_results_named_unorderedrQ   ‡   s�   € ä�gÓ�G€A€qˆ!Ü�QœœQ™¤™	Ó"€EÜ�QœœQ™¤™	Ó"€EÜ�Q˜œ!™Ó€EØ˜% ¨Ð.Ð/€IÜ�i °¸eÔD�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 )NrI   rJ   r"   r#   F©r   r   r@   r   r$   r%   zffunction test(x, z, y)
    C = z .* (x + y)
    A = z .* (x - y)
    B = 2 * x
    return C, A, B
end
rK   rL   s
             r   Útest_results_named_orderedrT   ›   s³   € Ü�gÓ�G€A€qˆ!Ü�QœœQ™¤™	Ó"€EÜ�QœœQ™¤™	Ó"€EÜ�Q˜œ!™Ó€EØ˜% ¨Ð.Ð/€IÜ�Y °¸UÜ()¬1¬a yô2€Fà�!‰9�Q‰<˜9Ò$Ð$Ð$Ø�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.jlr%   an  function 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))))))))
    return out1, out2
end
)	Ú(sympy.functions.elementary.trigonometricrV   rW   rX   r'   r(   r)   Úexpandr   )rV   rW   rX   r+   r,   r   r-   s          r   Útest_complicated_jl_codegenr]   °   s¾   € ßHÑHØÙ”A“™œQ›‘¡#¤a£&Ñ(¨1Ñ,×4Ñ4Ó6Ù‘‘C™™C¡¡C©¬A´©E´A©I«Ó$7Ó 8Ó9Ó:Ó;Ó<Ó=ðð€Iô �Y °¸UÔC€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   )rV   rW   ÚaÚfoorJ   r#   Fr   úfoo.jlr%   zzfunction foo(x)
    out1 = cos(2 * x)
    y = sin(x)
    out3 = cos(x)
    a = sin(2 * x)
    return out1, y, out3, a
end
)r[   rV   rW   r   r'   r   r(   r   )rV   rW   r_   r+   r,   r   r-   s          r   Ú"test_jl_output_arg_mixed_unorderedrb   Å   s‘   € çCÜ�‹€AØ™˜Qœq™S›¤8¬A©s´1«vÓ#6¹¼A»ÄÈÉCÐPQÔRSÑPSËHÓ@UÐVÐW€IÜ�i °¸eÔD�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   éÿÿÿÿrJ   r%   ©r%   TF©ÚevaluateÚpwtestr#   r   z{function pwtest(x)
    out1 = ((x < -1) ? (0) :
    (x <= 1) ? (x .^ 2) :
    (x > 1) ? (2 - x) : (1))
    return out1
end
©r   r'   r   ©Úpwr+   r,   r   r-   s        r   Útest_jl_piecewise_rl   Ù   su   € Ü	�A”q˜2‘v�;¤ A¡¤q¨A¡v ´!°°A±´q¸1±u°¸yÐSXÔ	Y€BØ˜2�€IÜ�i °¸eÔD�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   rd   rJ   r%   re   rh   r#   Fr;   z½function pwtest(x)
    if (x < -1)
        out1 = 0
    elseif (x <= 1)
        out1 = x .^ 2
    elseif (x > 1)
        out1 = -x + 2
    else
        out1 = 1
    end
    return out1
end
ri   rj   s        r   Útest_jl_piecewise_no_inlinern   é   sy   € ô 
�A”q˜2‘v�;¤ A¡¤q¨A¡v ´!°°A±´q¸1±u°¸yÓ	I€BØ˜2�€IÜ�i °¸eØ"ô$�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 )Nr`   rJ   rZ   Úbaré   r#   Fr   r   ra   r%   zœfunction foo(x, y)
    out1 = 2 * x
    out2 = 3 * y
    return out1, out2
end
function bar(y)
    out1 = y .^ 2
    out2 = 4 * y
    return out1, out2
end
©r'   r(   r   r*   s       r   Útest_jl_multifcns_per_filers     s{   € Ø˜1œQ™3 ¤!¡˜*Ð%¨´°1±°a¼±c¨{Ð';Ð=€IÜ�Y °¸UÔC€FØ�!‰9�Q‰<˜8Ò#Ð#Ð#Ø�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 )Nr`   rJ   rZ   rp   rq   r#   TFr   r   ra   r%   r0   zø
#
#   See http://www.sympy.org/ for more information.
#
#   This file is part of 'project'
function foo(x, y)
    out1 = 2 * x
    out2 = 3 * y
    return out1, out2
end
function bar(y)
    out1 = y .^ 2
    out2 = 4 * y
    return out1, out2
end
)r'   r(   r   r1   r2   r*   s       r   Ú#test_jl_multifcns_per_file_w_headerru     s�   € Ø˜1œQ™3 ¤!¡˜*Ð%¨´°1±°a¼±c¨{Ð';Ð=€IÜ�Y °¸EÔB€FØ�!‰9�Q‰<˜8Ò#Ð#Ð#Ø�A‰Y�q‰\€Fà(¬5×+<Ñ+<Ñ<ð @ñ 	ð ð" �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 ‚y )Nr`   rJ   rZ   rp   rq   r#   ÚbazF)Úprefixr   r   r   zbaz.jlrr   )r+   r,   s     r   Útest_jl_filename_match_prefixry   /  sW   € Ø˜1œQ™3 ¤!¡˜*Ð%¨´°1±°a¼±c¨{Ð';Ð=€IÜ�i °¸uØ ô"�G€Fà�!‰9˜Ò Ð Ñ 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 )NrJ   r"   Úmyout1r%   rZ   r#   Fr   r   r$   úKfunction test(x, y, z)
    myout1 = [x 2 * y pi * z]
    return myout1
end
)r   r'   r(   r   r)   r   r   r   )Úe2r+   r,   r   r-   s        r   Útest_jl_matrix_namedr~   6  s„   € Ü	”!�Q”q‘Sœ"œQ™$�Ð Ó	!€BØœ¤,¨x¸¸AÓ">ÀÓCÐD€IÜ�Y °¸UÔC€FØ�!‰9�Q‰<˜9Ò$Ð$Ð$Ø�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%   rZ   rJ   r"   Frf   r#   r   r|   )r   r   r'   r(   r   r)   r   r   )r{   r}   r+   r,   r   r-   s         r   Útest_jl_matrix_named_matsymr€   E  ss   € Ü˜( A qÓ)€FÜ	”!�Q”q‘Sœ"œQ™$�Ð Ó	!€BØœ &¨"°uÔ=Ð>€IÜ�i °¸eÔD�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 )NrZ   r"   r#   Fr   r%   z?function test(x, y)
    out1 = [x x + y 3]
    return out1
end
)r   r'   r(   r   r5   s        r   Útest_jl_matrix_output_autonamer‚   T  sV   € Ü”A”qœ‘s˜A�;�-Ó €DØ˜�€IÜ�i °¸eÔD�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 )	NrJ   é   r"   r#   Fr   r%   zžfunction test(x, y, z)
    out1 = x + y
    out2 = [2 * x 2 * y 2 * z]
    out3 = [x, y, z]
    out4 = [x  y;
    z 16]
    return out1, out2, out3, out4
end
)r'   r(   r   r)   r   )Úe1r}   Úe3Úe4r+   r,   r   r-   s           r   Ú test_jl_matrix_output_autoname_2rˆ   b  sŸ   € Ü
Œa‰%€BÜ	�!”A‘#�qœ‘s˜Aœa™C�Ð!Ó	"€BÜ	”!�”q�cœA˜3�Ó	 €BÜ	”!”Q�œ!˜R˜Ð!Ó	"€BØ˜"˜b " bÐ)Ð*€IÜ�i °¸eÔD�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,CrM   r%   rZ   rJ   r"   r#   FrS   zafunction test(x, z, y)
    C = z .* (x + y)
    A = [1 2 x]
    B = 2 * x
    return C, A, B
end
)r   r   r   r'   r(   r)   r   r   )
rN   rO   rM   rE   rF   rP   r+   r,   r   r-   s
             r   Ú$test_jl_results_matrix_named_orderedrŠ   w  s«   € Ü�5‹>�D€A€qÜ�S˜!˜QÓ€AÜ�QœœQ™¤™	Ó"€EÜ�Qœ  A¤q 	˜{Ó+Ó,€EÜ�Q˜œ!™Ó€EØ˜% ¨Ð.Ð/€IÜ�i °¸eÜ()¬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 )NrM   rJ   rZ   rN   r%   rO   ÚDr"   r   r#   Fr   zUfunction test(A)
    B = A[1,:]
    C = A[2,:]
    D = A[:,3]
    return B, C, D
end
©r   r   r   )rM   rN   rO   rŒ   r+   r,   r   r-   s           r   Útest_jl_matrixsymbol_slicerŽ   Œ  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 °¸eÔD�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 )NrM   rZ   rq   rN   rJ   rO   r"   r   r%   r#   Fr   zKfunction test(A)
    B = A[1:2,1:2]
    C = A[1:2,2:3]
    return B, C
end
r�   ©rM   rN   rO   r+   r,   r   r-   s          r   Útest_jl_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 °¸eÔD�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 )NrM   é   é   rN   rJ   rO   rq   r"   é   r%   rZ   r#   Fr   zYfunction test(A)
    B = A[7:end,2:3:end]
    C = A[1:2:end,1:3:end]
    return B, C
end
r�   r�   s          r   Útest_jl_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 °¸eÔD�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 )NrM   rJ   rZ   rN   r%   r"   r   r#   Fr   zyfunction test(A)
    B = A[1,:]
    out2 = A[2,:]
    out3 = A[:,1]
    out4 = A[:,2]
    return B, out2, out3, out4
end
r�   )rM   rN   r+   r,   r   r-   s         r   Ú#test_jl_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 °¸eÔD�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©ÚintegerrM   r'   r(   ÚiÚjÚmat_vec_multr#   Fr   r%   z¹function mat_vec_mult(y, 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
    return y
end
ÚrhszA[ú,z	] .* x[j]z
x[j] .* A[ú]©Úsympy.tensorr›   rœ   Úsympy.core.symbolr   r   r   )r›   rœ   r   ÚnÚmrM   r'   r(   r    r¡   r,   r   r-   s                r   Útest_jl_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¡%ºqÂ!Ð)DÐ!EÑEÒEØ�h¡%ºqÂ!Ð)DÐ!EÑEÒEðGð FØEð F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ž   rM   rN   r(   r    r¡   ÚkÚlÚtensorthingr#   Fr   r%   a-  function tensorthing(y, 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
    return y
end
r¦   )r›   rœ   r   r©   rª   ÚoÚprM   rN   r(   r    r¡   r­   r®   r,   r   r-   s                    r   Ú*test_jl_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Ø e°5ô:�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 )NrJ   Úmysqrr#   Fr   r%   z2function mysqr(x)
    x = x .^ 2
    return x
end
)r   r'   r   r5   s        r   Útest_jl_InOutArgumentrµ     sP   € Ü”A”q˜!‘tÓ€DØ˜$�€IÜ�i °¸eÔD�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 )	NrJ   r"   r#   FrS   r%   z8function test(x, y)
    x = x .^ 2 + y
    return x
end
r   )r   r'   r(   r   r5   s        r   Útest_jl_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 °¸eÔD�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 test(x)
    # unsupported: Derivative(f(x), x)
    # unsupported: zoo
    out1 = Derivative(f(x), x)
    out2 = zoo
    return out1, out2
end
)r
   r'   Údiffr   ÚComplexInfinityr   )r¹   r+   r,   r   r-   s        r   Útest_jl_not_supportedr¼   E  sa   € Ü�‹€AØ™!œA›$Ÿ)™)¤A›,¬×(9Ñ(9Ð:Ð;€IÜ�i °¸eÔD�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%   z4function f(x)
    out1 = x .* y
    return out1
end
)r   r   r@   r¾   z;function f(x, y)
    out1 = x .* y + z
    return out1
end
)r   r   )r'   r(   r)   Útr,   r   r-   s          r   Útest_global_vars_octaverÀ   V  s­   € Ü˜Ó#�J€A€qˆ!ˆQÜ�c˜1˜Q™3�Z °¸eØ"# ô'€Fà�A‰Y�q‰\€Fð	ð ð �XÒÐÐä�c˜1˜Q™3˜q™5�\ 7°5ÀØ()¨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   r1   r'   r(   r)   r   r.   r3   r7   r9   r=   rC   rG   rQ   rT   r]   rb   rl   rn   rs   ru   ry   r~   r€   r‚   rˆ   rŠ   rŽ   r‘   r–   r˜   r«   r²   rµ   r·   r¼   rÀ   © r    r   ú<module>rÉ      sù   ðÝ ç H× HÑ HÝ *Ý :ß /ß GÑ GÝ &Û ñ �'Ó
�€€1€aòòòò&ò
ð ñó ðò$ò ò"ò(ò*ò*ò(ð  ñó ðò0ò(ò2!òòòòò*ò*ò*ò$ò$ò$GòB òFòò8ó"r    