Ë
    7^(hì=  ã                   ó&  — d dl Z d dlmZmZ d dlmZ d dl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mZ d dlmZ d dlmZ d dlmZ d dlmZm Z m!Z!m"Z" d dl#m$Z$m%Z% d dl&m'Z'm(Z( d dl)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9 d dl:m;Z;m<Z< d dl=m>Z> d dl?m@Z@mAZA d dlBmCZC  ed«      ZD ed«      ZE ed«      ZFd„ ZGd„ ZHd„ ZId„ ZJd„ ZKd„ ZLd„ ZMd-d „ZNd!„ ZOd"„ ZPd#„ ZQd$„ ZRd%„ ZSd&„ ZTd'„ ZUd(„ ZVd)„ ZWd*„ ZXe;d+„ «       ZYeCd,„ «       ZZy).é    N)ÚpiÚRational)ÚPow)ÚS)ÚSymbol)ÚAbs)ÚexpÚlog)ÚcosÚsinÚsinc)ÚMatrixSymbol)ÚassumingÚQ)Úimport_module)Úccode)ÚMatrixSolve)Úlog2Úexp2Úexpm1Úlog1p)Ú	logaddexpÚ
logaddexp2)Úcosm1Úpowm1)ÚoptimizeÚ	cosm1_optÚlog2_optÚexp2_optÚ	expm1_optÚ	log1p_optÚ	powm1_optÚ
optims_c99Úcreate_expand_pow_optimizationÚ
matinv_optÚlogaddexp_optÚlogaddexp2_optÚoptims_numpyÚoptims_scipyÚ	sinc_optsÚFuncMinusOneOptim)ÚXFAILÚskip)Úlambdify)Úcompile_link_import_stringsÚhas_c)Ú	may_xfailÚcythonÚnumpyÚscipyc                  óB  — t        d«      } dt        d| z  dz   «      z  t        d«      z  }t        |t        g«      }|dt	        d| z  dz   «      z  k(  sJ ‚|j                  t        «      |k(  sJ ‚dt        d| z  dz   «      z  dt        d«      z  z  }t        |t        g«      }|dt	        d| z  dz   «      z  dz  k(  sJ ‚|j                  t        «      |k(  sJ ‚t        | «      t        d«      z  }t        |t        g«      }|t	        | «      k(  sJ ‚|j                  t        «      |k(  sJ ‚t        | «      t        d«      z  t        | dz   «      z   }t        |t        g«      }|t	        | «      t        d«      t	        | dz   «      z  z   k(  sJ ‚|j                  t        «      |k(  sJ ‚t        d«      }	t        |	t        g«      }
|
|	k(  sJ ‚t        | dz   «      t        d«      z  }t        |t        g«      }t        |«      d	k(  sJ ‚|j                  t        «      |k(  sJ ‚y )
NÚxé   é   é   é   é   é   é   zlog2(x + 3))r   r
   r   r   r   ÚrewriteÚstr)r6   Úexpr1Úopt1Úexpr2Úopt2Úexpr3Úopt3Úexpr4Úopt4Úexpr5Úopt5Úexpr6Úopt6s                ú`/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sympy/codegen/tests/test_rewriting.pyÚtest_log2_optrM       s÷  € Üˆs‹€AØŒc�!�A‘#˜‘'‹l‰NœC ›FÑ#€EÜ�EœH˜:Ó&€DØ�1”T˜!˜A™# ™'“]‘?Ò"Ð"Ð"Ø�<‰<œÓ Ò%Ð%Ð%àŒc�!�A‘#˜‘'‹l‰N˜Bœs 1›v™IÑ&€EÜ�EœH˜:Ó&€DØ�1”T˜!˜A™# ™'“]‘? 2Ñ%Ò%Ð%Ð%Ø�<‰<œÓ Ò%Ð%Ð%ä�‹F”3�q“6‰M€EÜ�EœH˜:Ó&€DØ”4˜“7Š?Ðˆ?Ø�<‰<œÓ Ò%Ð%Ð%ä�‹F”3�q“6‰MœC  !¡›HÑ$€EÜ�EœH˜:Ó&€DØ”4˜“7œS ›V¤D¨¨1©£IÑ-Ñ-Ò-Ð-Ð-Ø�<‰<œÓ Ò%Ð%Ð%ä�‹G€EÜ�EœH˜:Ó&€DØ�5Š=Ðˆ=ä��A‘‹J”s˜1“vÑ€EÜ�EœH˜:Ó&€DÜˆt‹9˜Ò%Ð%Ð%Ø�<‰<œÓ Ò%Ð%Ñ%ó    c                  óâ   — t        d«      } dd| z  z   }t        |t        g«      }|dt        | «      z   k(  sJ ‚|j	                  t
        «      |k(  sJ ‚dd| z  z   }|t        |t        g«      k(  sJ ‚y )Nr6   r<   r:   r8   )r   r   r   r   r>   r   )r6   r@   rA   rB   s       rL   Útest_exp2_optrP   @   sw   € Üˆs‹€AØ��1‘‰H€EÜ�EœH˜:Ó&€DØ�1”t˜A“w‘;ÒÐÐØ�<‰<œÓ Ò%Ð%Ð%à��1‘‰H€EØ”H˜U¤X JÓ/Ò/Ð/Ñ/rN   c                  óž  ‡— t        d«      Št        ‰«      dz
  } t        | t        g«      }t	        ‰«      |z
  dk(  sJ ‚|j                  t        «      | k(  sJ ‚dt        ‰«      z  dz
  }t        |t        g«      }dt	        ‰«      z  |k(  sJ ‚|j                  t        «      |k(  sJ ‚dt        ‰«      z  dz
  }t        |t        g«      }dt	        ‰«      z  dz
  |k(  sJ ‚|j                  t        «      |k(  sJ ‚t        t        t        d¬«      }|t        ||g«      k(  sJ ‚|t        | |g«      k(  sJ ‚|t        ||g«      k(  sJ ‚dt        ‰«      z  t        ‰«      z   dz
  }t        |t        g«      }dt	        ‰«      z  t        ‰«      z   |k(  sJ ‚|j                  t        «      |k(  sJ ‚dt        d‰z  «      z  dz
  }	t        |	t        g«      }
dt	        d‰z  «      z  |
k(  sJ ‚|
j                  t        «      |	k(  sJ ‚dt        ‰«      z  dz   t        ‰«      dz   z  dz   }t        |t        g«      }|j                  «       |j                  «       k  sJ ‚ˆfd	„}t         ||«       ||«      z
  «      d
k  sJ ‚t        d«      }dt        ‰«      z  dz
  dt        |«      z
  z  ddt        |«      z
  z  z
  }t        |t        g«      }dt	        ‰«      z  t	        |«      z  |k(  sJ ‚|j                  t        «      |z
  j                  «       dk(  sJ ‚dt        ‰«      z   dz  dz
  }t        |t        g«      }t        ‰«      dz   t	        ‰«      z  }dt	        ‰«      z  t	        d‰z  «      z   }||z
  j                  t        «      j                  «       dk(  sJ ‚|||fv sJ ‚|j                  t        «      |z
  j                  «       dk(  sJ ‚t        |«      }t        |t        g«      }t        |«      }t        |«      }|||fv sJ ‚|j                  t        «      |j                  t        «      z
  j                  «       j                  sJ ‚y )Nr6   r<   r   r8   r9   r:   F©Úopportunisticc                 óD   •— | j                  ‰d«      j                  «       S )Nr8   )ÚsubsÚevalf)Úer6   s    €rL   Úevztest_expm1_opt.<locals>.evo   s   ø€ Ø�v‰v�a˜‹|×!Ñ!Ó#Ð#rN   gVçž¯Ò<Úyéþÿÿÿé   )r   r	   r   r    r   r>   r+   r
   Ú	count_opsÚabsÚfactorr   Úis_zero)r@   rA   rB   rC   rD   rE   Úexpm1_opt_non_opportunisticrF   rG   rH   rI   rJ   rK   rX   rY   Úexpr7Úopt7Úexpr8Úopt8Útgt8aÚtgt8bÚexpr9Úopt9Útgt9aÚtgt9br6   s                            @rL   Útest_expm1_optrk   K   s  ø€ Üˆs‹€Aä�‹F�Q‰J€EÜ�EœI˜;Ó'€DÜ�‹8�d‰?˜aÒÐÐØ�<‰<œÓ Ò%Ð%Ð%àŒc�!‹f‰H�q‰L€EÜ�EœI˜;Ó'€DØŒU�1‹X‰:˜ÒÐÐØ�<‰<œÓ Ò%Ð%Ð%àŒc�!‹f‰H�q‰L€EÜ�EœI˜;Ó'€DØŒU�1‹X‰:˜‰>˜TÒ!Ð!Ð!Ø�<‰<œÓ Ò%Ð%Ð%Ü"3´C¼ÈeÔ"TÐØ”H˜UÐ%@Ð$AÓBÒBÐBÐBØ”8˜EÐ$?Ð#@ÓAÒAÐAÐAØ”8˜EÐ$?Ð#@ÓAÒAÐAÐAàŒc�!‹f‰H”s˜1“vÑ Ñ!€EÜ�EœI˜;Ó'€DØŒU�1‹X‰:œ˜A›Ñ $Ò&Ð&Ð&Ø�<‰<œÓ Ò%Ð%Ð%àŒc�!�A‘#‹h‰J˜‰N€EÜ�EœI˜;Ó'€DØŒU�1�Q‘3‹Z‰<˜4ÒÐÐØ�<‰<œÓ Ò%Ð%Ð%àŒs�1‹v‰X˜‰\œC ›F Q™JÑ'¨!Ñ+€EÜ�EœI˜;Ó'€DØ�>‰>Ó˜uŸ™Ó0Ò0Ð0Ð0ô$ä‰r�%‹y™2˜d›8Ñ#Ó$ uÒ,Ð,Ð,äˆs‹€AØŒs�1‹v‰X˜‰\˜A¤ A£™JÑ'¨!¨Q¬s°1«v©X©,Ñ6€EÜ�EœI˜;Ó'€DØŒe�A‹h‰;”u˜Q“xÑ 4Ò'Ð'Ð'Ø�L‰LœÓ Ñ%×-Ñ-Ó/°1Ò4Ð4Ð4àŒs�1‹v‰X˜‰M˜AÑ€EÜ�EœI˜;Ó'€DÜ�‹V�a‰Zœ˜q›Ñ!€EØŒe�A‹h‰Jœ˜q ™s›Ñ#€Eð
 �E‰M×"Ñ"¤3Ó'×.Ñ.Ó0°AÒ5Ð5Ð5Ø�E˜5�>Ñ!Ð!Ð!Ø�L‰LœÓ Ñ%×-Ñ-Ó/°1Ò4Ð4Ð4ä�‹J€EÜ�EœI˜;Ó'€DÜ�‹J€EÜ�‹J€EØ�E˜5�>Ñ!Ð!Ð!Ø�L‰LœÓ §¡¬cÓ 2Ñ2×:Ñ:Ó<×DÒDÐDÑDrN   c                  óÔ   — t        t        dj                  «       «      \  } }t        | «      t        |«      z   dz
  }t	        |t
        g«      }|t        | «      t        |«      z   k(  sJ ‚y ©Núx yr:   )Úmapr   Úsplitr	   r   r    r   ©r6   rY   r@   rA   s       rL   Útest_expm1_two_exp_termsrr   �   óW   € ÜŒv�u—{‘{“}Ó%�D€A€qÜ�‹F”S˜“V‰O˜aÑ€EÜ�EœI˜;Ó'€DØ”5˜“8œe A›hÑ&Ò&Ð&Ñ&rN   c                  ó¢  — t        d«      } t        | «      dz
  }t        |t        g«      }t	        | «      |z
  dk(  sJ ‚|j                  t        «      |k(  sJ ‚dt        | «      z  dz
  }t        |t        g«      }dt	        | «      z  |k(  sJ ‚|j                  t        «      |k(  sJ ‚dt        | «      z  dz
  }t        |t        g«      }dt	        | «      z  dz
  |k(  sJ ‚|j                  t        «      |k(  sJ ‚t        t        t        d¬«      }|t        ||g«      k(  sJ ‚|t        ||g«      k(  sJ ‚|t        ||g«      k(  sJ ‚dt        | «      z  t        | «      z   dz
  }t        |t        g«      }	dt	        | «      z  t        | «      z   |	k(  sJ ‚|	j                  t        «      |k(  sJ ‚dt        d| z  «      z  dz
  }
t        |
t        g«      }dt	        d| z  «      z  |k(  sJ ‚|j                  t        «      |
k(  sJ ‚ddt        | «      z  z
  }t        |t        g«      }d	t	        | «      z  |k(  sJ ‚|j                  t        «      |k(  sJ ‚y )
Nr6   r<   r   r8   r9   r:   FrR   rZ   )r   r   r   r   r   r>   r+   r
   )r6   r@   rA   rB   rC   rD   rE   Úcosm1_opt_non_opportunisticrF   rG   rH   rI   rJ   rK   s                 rL   Útest_cosm1_optrv   ”   sH  € Üˆs‹€Aä�‹F�Q‰J€EÜ�EœI˜;Ó'€DÜ�‹8�d‰?˜aÒÐÐØ�<‰<œÓ Ò%Ð%Ð%àŒc�!‹f‰H�q‰L€EÜ�EœI˜;Ó'€DØŒU�1‹X‰:˜ÒÐÐØ�<‰<œÓ Ò%Ð%Ð%àŒc�!‹f‰H�q‰L€EÜ�EœI˜;Ó'€DØŒU�1‹X‰:˜‰>˜TÒ!Ð!Ð!Ø�<‰<œÓ Ò%Ð%Ð%Ü"3´C¼ÈeÔ"TÐØ”H˜UÐ%@Ð$AÓBÒBÐBÐBØ”8˜EÐ$?Ð#@ÓAÒAÐAÐAØ”8˜EÐ$?Ð#@ÓAÒAÐAÐAàŒc�!‹f‰H”s˜1“vÑ Ñ!€EÜ�EœI˜;Ó'€DØŒU�1‹X‰:œ˜A›Ñ $Ò&Ð&Ð&Ø�<‰<œÓ Ò%Ð%Ð%àŒc�!�A‘#‹h‰J˜‰N€EÜ�EœI˜;Ó'€DØŒU�1�Q‘3‹Z‰<˜4ÒÐÐØ�<‰<œÓ Ò%Ð%Ð%à�”#�a“&‘‰L€EÜ�EœI˜;Ó'€DØŒe�A‹h‰;˜$ÒÐÐØ�<‰<œÓ Ò%Ð%Ñ%rN   c                  óÔ   — t        t        dj                  «       «      \  } }t        | «      t        |«      z   dz
  }t	        |t
        g«      }|t        | «      t        |«      z   k(  sJ ‚y rm   )ro   r   rp   r   r   r   r   rq   s       rL   Útest_cosm1_two_cos_termsrx   º   rs   rN   c                  ó²   — t        d«      } t        | «      t        | «      z   dz
  }t        |t        t
        g«      }|t        | «      t        | «      z   k(  sJ ‚y )Nr6   r:   )r   r	   r   r   r    r   r   r   )r6   r@   rA   s      rL   Útest_expm1_cosm1_mixedrz   Á   sM   € Üˆs‹€AÜ�‹F”S˜“V‰O˜aÑ€EÜ�EœI¤yÐ1Ó2€DØ”5˜“8œe A›hÑ&Ò&Ð&Ñ&rN   c                 óL  — | j                  |«      j                  «       }t        j                  t        j                  «      j
                  }t        ||z
  «      ||z  k  sJ ‚t        t        |j                  «       «      |fi |xs i ¤Ž}t        t        t        |j                  «       «      «      }	t         ||	Ž |z
  «      }
|
t        ||z  «      k  sJ ‚t        t        |j                  «       «      | fi |xs i ¤Ž}t         ||	Ž |z
  «      }|t        ||z  |z  «      kD  sJ ‚y)zU poorness=1e10 signifies that `expr` loses precision of at least ten decimal digits. N)rU   rV   r3   ÚfinfoÚfloat64Úepsr]   r.   ÚlistÚkeysÚtuplero   ÚfloatÚvalues)ÚexprÚoptÚval_subsÚ
approx_refÚlambdify_kwÚpoornessÚnum_refr~   Úf1Ú
args_floatÚnum_err1Úf2Únum_err2s                rL   Ú_check_num_lambdifyr�   È   s   € à�i‰i˜Ó!×'Ñ'Ó)€GÜ
�+‰+”e—m‘mÓ
$×
(Ñ
(€CÜˆw˜Ñ#Ó$ z°#¡~Ò5Ð5Ð5Ü	”$�x—}‘}“Ó'¨Ñ	D°Ò1BÀÑ	D€BÜ”sœ5 (§/¡/Ó"3Ó4Ó5€JÜ‘2�z�? ZÑ/Ó0€HØ”c˜' #™+Ó&Ò&Ð&Ð&Ü	”$�x—}‘}“Ó'¨Ñ	E°+Ò2CÀÑ	E€BÜ‘2�z�? ZÑ/Ó0€HØ”c˜' #™+ hÑ.Ó/Ò/Ð/Ñ/rN   c            	      óÒ  — t        d«      } dt        | «      z  dz
  }t        |t        g«      }|t	        | «       t        | «      z  k(  sJ ‚t
        r t        ||| t        d«      dz  idddi¬«       d	t        | «      z  d	z
  }t        |t        «      }|d
t	        | «      z  t        | «      z  k(  sJ ‚t
        r t        ||| t        d«      dz  idddi¬«       t        t        d| z  «      z  t        z
  }t        |t        g«      }|t         t	        d| z  «      z  t        d| z  «      z  k(  sJ ‚t
        r4t        ||| t        d«      dz  dz  it        dt        z  «      ddi¬«       y y )Nr6   r<   é
   iâÿÿÿg&¦¬ª¶i3Úmodulesr4   )rˆ   r:   rZ   g&¦¬ª¶y3r8   )r   r   r   r   r   r4   r�   r   r)   r   r‚   )r6   r@   rA   rB   rC   rD   rE   s          rL   Útest_cosm1_apartr”   Ö   sR  € Üˆs‹€AàŒc�!‹f‰H�q‰L€EÜ�EœI˜;Ó'€DØ”E˜!“H�9œS ›VÑ#Ò#Ð#Ð#ÝÜ˜E 4¨!¬Q¨r«U°C©Z¨¸%ÈiÐY`ÐMaÕbàŒc�!‹f‰H�q‰L€EÜ�Eœ<Ó(€DØ�2”e˜A“h‘;œs 1›vÑ%Ò%Ð%Ð%ÝÜ˜E 4¨!¬Q¨r«U°C©Z¨¸%ÈiÐY`ÐMaÕbäŒs�1�Q‘3‹x‰Kœ"Ñ€EÜ�EœI˜;Ó'€DØ”B�3”u˜Q˜q™S“z‘>¤# a¨¡c£(Ñ*Ò*Ð*Ð*ÝÜ˜E 4¨!¬Q¨r«U°C©Z¸©\Ð):¼EÀ%ÌÁ(»OÐZcÐelÐYmÖnð rN   c                  óB  — t        t        d«      x} \  }}||z  dz
  }t        |t        g«      }|t	        ||«      k(  sJ ‚| D ]'  }|j                  |«      |j                  |«      k(  rŒ'J ‚ t        r®t        t        t        t        j                  j                  j                  d«      d d «      «      dk\  rg|t        dj                  «       Ž |t        i}d}t        ||||dd	id
¬«       |t        |t        dj                  «       Ž i}d}	t        ||||	dd	id¬«       y y y )NÚxyr<   ú.r8   )r<   r’   r   gÂ    ð?g<îåÝV=r“   r4   l    hí] )rˆ   r‰   g»½×Ùß|Û=gh˜ùRwß=i Êš;)ro   r   r   r"   r   Údiffr4   r�   ÚintÚversionrp   r   Úas_integer_ratior   r�   )
Úargsr6   rY   r@   rA   ÚargÚsubs1_aÚ
ref1_f64_aÚsubs1_bÚ
ref1_f64_bs
             rL   Ú
test_powm1r¢   ì   s!  € Ü”f˜dÓ#Ð#€D‰4ˆ1ˆaàˆq‰D�1‰H€EÜ�EœI˜;Ó'€DØ”5˜˜A“;ÒÐÐØò 1ˆØ�z‰z˜#‹ $§)¡)¨C£.Ó0Ð0Ð0ð1å””sœ3¤§¡× 5Ñ 5× ;Ñ ;¸CÓ @ÀÀ!Ð DÓEÓFÈ*ÒTØ”h × <Ñ <Ó >Ð?ÀÄBÐGˆØ*ˆ
Ü˜E 4¨°*È9ÐV]ÐJ^ÐioÕpà”b˜!œX¨×'?Ñ'?Ó'AÐBÐCˆØ+ˆ
Ü˜E 4¨°*È9ÐV]ÐJ^ÐinÖoð U€urN   c                  ó†  — t        d«      } t        | dz   «      }t        |t        g«      }t	        | «      |z
  dk(  sJ ‚|j                  t        «      |k(  sJ ‚t        d| z  dz   «      }t        |t        g«      }t	        | «      t        d«      z   |k(  sJ ‚|j                  t        «      |z
  j                  «       dk(  sJ ‚t        d| z  dz   «      }t        |t        g«      }t	        d| z  «      |z
  dk(  sJ ‚|j                  t        «      |k(  sJ ‚t        | dz   «      }t        |t        g«      }t        |«      dk(  sJ ‚y )Nr6   r<   r   r8   r:   z
log(x + 3))r   r
   r   r!   r   r>   Úsimplifyr?   )	r6   r@   rA   rB   rC   rD   rE   rF   rG   s	            rL   Útest_log1p_optr¥   þ   s0  € Üˆs‹€AÜ��A‘‹J€EÜ�EœI˜;Ó'€DÜ�‹8�d‰?˜aÒÐÐØ�<‰<œÓ Ò%Ð%Ð%ä��!‘�a‘‹L€EÜ�EœI˜;Ó'€DÜ�‹8”c˜!“fÑ Ò$Ð$Ð$Ø�L‰LœÓ Ñ%×/Ñ/Ó1°QÒ6Ð6Ð6ä��!‘�a‘‹L€EÜ�EœI˜;Ó'€DÜ��1‘‹:˜Ñ Ò!Ð!Ð!Ø�<‰<œÓ Ò%Ð%Ð%ä��!‘‹H€EÜ�EœI˜;Ó'€DÜˆt‹9˜Ò$Ð$Ñ$rN   c                  ó  — t        d«      } d| z  t        | «      t        d«      z  z   t        | dz   «      z   t        | «      z   dz
  }t        |t        «      j                  «       }|t        | «      t        | «      z   t        | «      z   t        | «      z   k(  sJ ‚|j                  t        «      j                  t        «      j                  t        «      |k(  sJ ‚t        | «      t        d«      z  t        | dz   «      z   }t        |t        «      }|t        | «      t        | «      z   k(  sJ ‚|j                  t        «      |k(  sJ ‚t        | «      t        d«      z  t        d| z  dz   «      z   }t        |t        «      }|t        | «      t        d«      z   t        | «      z   z
  }|dk(  sJ ‚|j                  t        «      |z
  j                  «       dk(  sJ ‚d| z  dt        d| z  dz   «      z  d	t        d«      z  z  z   d
t        | «      z  z   d
z
  t        d| z  dz   «      z   }t        |t        «      j                  «       }	|	t        | «      dt        d| z  dz   «      z  d	z  z   d
t        | «      z  z   t        d«      z   t        | «      z   z
  }
|
dk(  sJ ‚|	j                  t        «      j                  t        «      j                  t        «      |z
  j                  «       dk(  sJ ‚dt        d| z  «      z  dz
  }t        |t        «      }|dt        d| z  «      z  z
  }|dk(  sJ ‚|j                  t        «      |k(  sJ ‚t        d| z  «      dz
  }t        |t        «      }|t        d| z  «      dz
  |fv sJ ‚t        d| z  dz   «      }t        |t        «      }|t        d«      t        | «      z   z
  }|dk(  sJ ‚|j                  t        «      |z
  j                  «       dk(  sJ ‚t        d| z  dz   «      }t        |t        «      }||k(  sJ ‚y )Nr6   r:   r<   r=   r   r8   r9   r7   r;   é   )r   r
   r	   r   r#   r¤   r   r   r   r   r>   r   )r6   r@   rA   rB   rC   rD   rE   Údelta3rF   rG   Údelta4rH   rI   Údelta5rJ   rK   ra   rb   Údelta7rc   rd   s                        rL   Útest_optims_c99r¬     s   € Üˆs‹€Aàˆq‰D”3�q“6œ#˜a›&‘=Ñ ¤3 q¨1¡u£:Ñ-´°A³Ñ6¸Ñ:€EÜ�Eœ:Ó&×/Ñ/Ó1€DØ”4˜“7œT !›WÑ$¤u¨Q£xÑ/´%¸³(Ñ:Ò:Ð:Ð:Ø�<‰<œÓ×$Ñ$¤SÓ)×1Ñ1´#Ó6¸%Ò?Ð?Ð?ä�‹F”3�q“6‰MœC  A¡›JÑ&€EÜ�Eœ:Ó&€DØ”4˜“7œU 1›XÑ%Ò%Ð%Ð%Ø�<‰<œÓ Ò%Ð%Ð%ä�‹F”3�q“6‰MœC  1¡ r¡	›NÑ*€EÜ�Eœ:Ó&€DØ”T˜!“Wœs 2›wÑ&¬¨q«Ñ1Ñ2€FØ�QŠ;Ðˆ;Ø�L‰LœÓ Ñ%×/Ñ/Ó1°QÒ6Ð6Ð6àˆq‰D�1”S˜˜1™˜q™“\‘> 2¤c¨!£f¡9Ñ-Ñ-°´3°q³6±	Ñ9¸BÑ>ÄÀRÈÁTÈBÁYÃÑO€EÜ�Eœ:Ó&×/Ñ/Ó1€DØ”T˜!“W˜q¤ a¨¡c¨A¡g£™¨rÑ1Ñ1°B´u¸Q³x±KÑ?Ä#ÀbÃ'ÑIÌEÐRSËHÑTÑU€FØ�QŠ;Ðˆ;Ø�L‰LœÓ×%Ñ%¤cÓ*×2Ñ2´3Ó7¸%Ñ?×IÑIÓKÈqÒPÐPÐPàŒc�!�A‘#‹h‰J˜‰N€EÜ�Eœ:Ó&€DØ�A”e˜A˜a™C“j‘LÑ €FØ�QŠ;Ðˆ;Ø�<‰<œÓ Ò%Ð%Ð%ä��!‘‹H�q‰L€EÜ�Eœ:Ó&€DØ”E˜!˜A™#“J ‘N EÐ*Ñ*Ð*Ð*ä��!‘�a‘‹L€EÜ�Eœ:Ó&€DØ”S˜“Vœe A›hÑ&Ñ'€FØ�QŠ;Ðˆ;Ø�L‰LœÓ Ñ%×/Ñ/Ó1°QÒ6Ð6Ð6ä��!‘�a‘‹L€EÜ�Eœ:Ó&€DØ�5Š=Ð‰=rN   c                  ó@  — d„ } t        d«      } | |dz  «      dk(  sJ ‚ | |dz  |dz  z   «      dk(  sJ ‚ | |dz  |dz  z   «      dk(  sJ ‚ | t        |«      dz  «      d	k(  sJ ‚ | |d
z  «      dk(  sJ ‚ | |dz  «      dk(  sJ ‚ | |dz   «      dk(  sJ ‚ | |dz  |dz  z
  «      dk(  sJ ‚t        dd¬«      } | ||z  |dz  z
  «      dk(  sJ ‚t        dd¬«      } | t        t        |dz  «      «      «      dk(  sJ ‚d„ } ||dz  t        |«      dz  z   «      dk(  sJ ‚y )Nc                 ó@   — t        t        | t        d«      g«      «      S )Nr[   ©r   r   r$   ©r6   s    rL   ú<lambda>z5test_create_expand_pow_optimization.<locals>.<lambda>C  s   € ”5Ü�Ô3°AÓ6Ð7Ó8ó:€ rN   r6   r[   zx*x*x*xr:   zx*x + x*x*x*xr9   zpow(x, 5) + x*x*x*xzpow(sin(x), 4)éüÿÿÿz1.0/(x*x*x*x)éûÿÿÿz
pow(x, -5)z
-(x*x*x*x)z-(x*x) + x*x*x*xÚiT©Úintegerzpow(x, i) - (x*x)rY   )Úrealzexp(y*y*y*y)c           	      óF   — t        t        | t        dd„ ¬«      g«      «      S )Nr[   c                 ó   — | j                   S ©N)Úis_Function)Úbs    rL   r±   zGtest_create_expand_pow_optimization.<locals>.<lambda>.<locals>.<lambda>V  s
   € ˜aŸm™m€ rN   )Úbase_reqr¯   r°   s    rL   r±   z5test_create_expand_pow_optimization.<locals>.<lambda>U  s'   € ”Eœ( 1Ô'EØ	Ñ+ô(-ð '.ó /ó 0€ rN   r8   z pow(x, 3) + sin(x)*sin(x)*sin(x))r   r   r   r	   )Úccr6   r´   rY   Úcc2s        rL   Ú#test_create_expand_pow_optimizationrÀ   B  se  € ñ
:€Bäˆs‹€AÙˆa�‰d‹8�yÒ Ð Ð Ùˆa�‰d�Q˜‘T‰k‹?˜oÒ-Ð-Ð-Ùˆa�‰d�Q˜‘T‰k‹?Ð3Ò3Ð3Ð3ÙŒc�!‹f�a‰i‹=Ð,Ò,Ð,Ð,áˆa�"‰g‹;˜/Ò)Ð)Ð)Ùˆa�"‰g‹;˜,Ò&Ð&Ð&Ùˆq�!‰tˆe‹9˜Ò$Ð$Ð$Ùˆa�‰d�Q˜‘T‰k‹?Ð0Ò0Ð0Ð0Üˆs˜DÔ!€AÙˆa�‰d�Q˜‘T‰k‹?Ð1Ò1Ð1Ð1Üˆs˜Ô€AÙŒc”#�a˜‘d“)‹nÓ Ò/Ð/Ð/ñ0€Cáˆq�!‰t”c˜!“f˜a‘iÑÓ Ð$FÒFÐFÑFrN   c                  ó^  — t        dd¬«      } t        d| | «      }t        d| d«      }t        t        j                  |«      «      5  t        |dz  |z  t        g«      t        ||«      k(  sJ ‚t        |dz  |z  |z   t        g«      t        ||«      |z   k(  sJ ‚	 d d d «       y # 1 sw Y   y xY w)NÚnTrµ   ÚAr6   r<   éÿÿÿÿ)r   r   r   r   Úfullrankr   r%   r   )rÂ   rÃ   r6   s      rL   Útest_matsolverÆ   Z  s¨   € Üˆs˜DÔ!€AÜ�S˜!˜QÓ€AÜ�S˜!˜QÓ€Aä	”!—*‘*˜Q“-Ó	 ñ PÜ˜˜B™ !™¤j \Ó2´kÀ!ÀQÓ6GÒGÐGÐGÜ˜˜B™ !™ a™¬*¨Ó6¼+ÀaÈÓ:KÈaÑ:OÒOÐOÑO÷P÷ Pñ Pús   ÁAB#Â#B,c                  ó,  — t        t        dj                  «       «      \  } }t        t	        | «      t	        |«      z   «      }t        |t        g«      }t        | |«      |z
  dk(  sJ ‚t        || «      |z
  dk(  sJ ‚|j                  t        «      |k(  sJ ‚y )Nrn   r   )	ro   r   rp   r
   r	   r   r&   r   r>   rq   s       rL   Útest_logaddexp_optrÈ   d  s…   € ÜŒv�u—{‘{“}Ó%�D€A€qÜ”�A“œ˜Q›‘Ó €EÜ�EœM˜?Ó+€DÜ�Q˜‹?˜TÑ! QÒ&Ð&Ð&Ü�Q˜‹?˜TÑ! QÒ&Ð&Ð&Ø�<‰<œÓ Ò%Ð%Ñ%rN   c                  ó,  — t        t        dj                  «       «      \  } }t        d| z  d|z  z   «      t        d«      z  }t	        |t
        g«      }t        | |«      |z
  dk(  sJ ‚t        || «      |z
  dk(  sJ ‚|j                  t        «      |k(  sJ ‚y )Nrn   r:   r   )ro   r   rp   r
   r   r'   r   r>   rq   s       rL   Útest_logaddexp2_optrÊ   m  s‘   € ÜŒv�u—{‘{“}Ó%�D€A€qÜ��1‘�q˜!‘t‘ÓœS ›VÑ#€EÜ�EœNÐ+Ó,€DÜ�a˜Ó˜dÑ" aÒ'Ð'Ð'Ü�a˜Ó˜dÑ" aÒ'Ð'Ð'Ø�<‰<œÓ Ò%Ð%Ñ%rN   c                  óÆ  — d„ } t        d«      } | t        |«      |z  t        |«      t        d|z  «      d|z  z  t        d|z  «      t        d|z  «      |z  dt        d|z  «      z  |t        |«      z  |t        |«      z  i«       t        d«      } | t        ||z  «      ||z  z  t        ||z  «      |t        ||z  «      z  |z  t        ||z  «      t        t        |«      «      t        |«      z  t        t        |«      «      t        dt        |«      z  «      t        |«      z  dt        dt        |«      z  «      z  t        |«      |z  t        |«      |z  i«       y )Nc                 ó^   — | j                  «       D ]  \  }}t        |t        «      |k(  rŒJ ‚ y rº   )Úitemsr   r*   ©ÚdÚkÚvs      rL   Úcheckztest_sinc_opts.<locals>.checkw  s0   € Ø—G‘G“Iò 	/‰DˆAˆqÜ˜AœyÓ)¨QÓ.Ð.Ð.ñ	/rN   r6   r:   r8   rY   )r   r   r   ©rÒ   r6   rY   s      rL   Útest_sinc_optsrÔ   v  s/  € ò/ô 	ˆs‹€AÙ	ÜˆA‹ˆq‰œ˜a›ÜˆAˆa‰C‹�!�A‘#‰œ˜a ™c›ÜˆAˆa‰C‹�‰
˜œ4  !¡›9™Ø	Œ#ˆa‹&‰˜œ3˜q›6™ð	ô ô 	ˆs‹€AÙ	ÜˆAˆa‰C‹�!�A‘#‰œt A a¡C›yØ	Œ#ˆa�‰c‹(‰
�1‰œt A a¡C›yÜŒC�‹F‹”C˜“FÑœt¤C¨£F›|ÜˆAŒc�!‹f‰H‹”c˜!“fÑ˜q¤ a¬¨A«¡h£Ñ/ÜˆA‹ˆq‰œs 1›v a™xðõ rN   c            
      ó@  — d„ } t        d«      } | t        d|z  «      d|z  z  t        d|z  «      z   dz
  t        d|z  «      t	        d|z  «      z   t        |dz   «      t        d«      z  t        |dz  dz   «      z   t        |dz  «      t        |dz   «      z   i«       y )Nc                 ó^   — | j                  «       D ]  \  }}t        |t        «      |k(  rŒJ ‚ y rº   ©rÍ   r   r(   rÎ   s      rL   rÒ   z test_optims_numpy.<locals>.checkŽ  ó0   € Ø—G‘G“Iò 	2‰DˆAˆqÜ˜Aœ|Ó,°Ó1Ð1Ð1ñ	2rN   r6   r:   r<   r8   )r   r   r	   r   r   r
   r   r   )rÒ   r6   s     rL   Útest_optims_numpyrÙ   �  s–   € ò2ô 	ˆs‹€AÙ	ÜˆAˆa‰C‹�!�A‘#‰œ˜Q˜q™S›Ñ! AÑ%¤t¨A¨a©C£y´5¸¸1¹³:Ñ'=ÜˆAˆa‰C‹”�Q“‰œ#˜a ™d Q™h›-Ñ'¬¨q°!©t«´t¸A¸a¹C³yÑ)@ðõ rN   c                  ó–  — d„ } t        t        dj                  «       «      \  }} | t        ||z  «      t	        ||z  «      z  t        ||z  dz   «      z  t        d«      |z  |z  z  t        ||z  «      t        ||z  «      z  t        ||z  «      z  t        |t	        |«      z  |z  «      dz
  t        |t        |«      z  «      i«       y )Nc                 ó^   — | j                  «       D ]  \  }}t        |t        «      |k(  rŒJ ‚ y rº   r×   rÎ   s      rL   rÒ   z%test_optims_numpy_TODO.<locals>.check›  rØ   rN   rn   r<   r:   )
ro   r   rp   r
   r   r   r   r   r	   r   rÓ   s      rL   Útest_optims_numpy_TODOrÜ   ™  s±   € ò2ô Œv�u—{‘{“}Ó%�D€A€qÙ	ÜˆAˆa‰C‹”�Q�q‘S“Ñœ#˜a ™c !™e›*Ñ$¤c¨!£f¨Q¡h¨q¡jÑ1´4¸¸!¹³9¼TÀ!ÀAÁ#»YÑ3FÄuÈQÈqÉSÃzÑ3QÜˆAŒc�!‹f‰H�Q‰J‹˜!ÑœU 1¤T¨!£W¡9Ó-ðõ rN   c                  óŒ  — t         st        d«       t        «       st        d«       t        d«      } ddt	        d«      z  z  ddt	        d«      z  z  z  d	d
t	        d«      z  z  z  ddt	        d«      z  z  z  t	        d«      z  t
        z  }dt        | «      z  |z
  }t	        d«      dz  }|j                  | |«      j                  d«      }t        dt        | «      z  |z
  t        g«      }d}dt        |j                  |«      «      t        |j                  |«      «      dœz  }d}t        j                  «       5 }	t        d|fd|fg|	ddi¬«      \  }
}t        |
j!                  d«      |z
  «      }t        |
j#                  d«      |z
  «      }d|cxk  rdk  sJ ‚ J ‚d|cxk  rdk  sJ ‚ J ‚	 d d d «       y # 1 sw Y   y xY w) Nzcython not installed.zNo C compiler found.r6   r:   é:   éu   r8   éa   r9   r[   é'   r7   é\   é   r’   iõÿÿÿé   é   z�
#include <math.h>

double func_unchanged(double x) {
    return %(unchanged)s;
}
double func_rewritten(double x) {
    return %(rewritten)s;
}
)Ú	unchangedÚ	rewrittenzÓ
#cython: language_level=3
cdef extern double func_unchanged(double)
cdef extern double func_rewritten(double)
def py_unchanged(x):
    return func_unchanged(x)
def py_rewritten(x):
    return func_rewritten(x)
zfunc.cz	_func.pyxÚstdÚc99)Ú	build_dirÚcompile_kwargsg•dyáý¥=g<ò6šÎS:gÙ}ÚõÐò¾:g¬Ò¶OÉƒý;g¼‰Ø—²Òœ<)r2   r-   r0   r   r   r   r	   rU   rÂ   r   r    r   ÚtempfileÚTemporaryDirectoryr/   r]   Úpy_rewrittenÚpy_unchanged)r6   Ú	about_tworæ   ÚxvalÚrefrç   ÚNUMBER_OF_DIGITSÚfunc_cÚfunc_pyxÚfolderÚmodÚinfoÚerr_rewrittenÚerr_unchangeds                 rL   Ú"test_compiled_ccode_with_rewritingrû   ¦  sÉ  € åÜÐ$Ô%ÜŒ7ÜÐ#Ô$äˆs‹€AØ�B”q˜“v‘I‘˜q 2¤a¨£f¡9™~Ñ-¨a°!´A°b³E±'©lÑ:¸1¸rÄ!ÀCÃ&¹y¹>ÑIÌ!ÈBË%ÑOÔPRÑR€Ià”#�a“&‘˜9Ñ$€IÜˆR‹5�#‰:€DØ
�.‰.˜˜DÓ
!×
#Ñ
# BÓ
'€Cä˜œ3˜q›6™ IÑ-´	¨{Ó;€Ið Ðð	ô ˜)Ÿ+™+Ð&6Ó7Ó8Ü˜iŸk™kÐ*:Ó;Ó<ñ>ñ
>€Fð€Hô 
×	$Ñ	$Ó	&ð -¨&Ü/Ø˜Ð +¨xÐ!8Ð9Ø¨e°U¨^ô
‰	ˆˆTô ˜C×,Ñ,¨UÓ3°cÑ9Ó:ˆÜ˜C×,Ñ,¨UÓ3°cÑ9Ó:ˆØ�}Ô, uÒ,Ð,Ñ,Ð,Ð,Ø�}Ô, uÒ,Ð,Ñ,Ð,Ñ,÷-÷ -ñ -ús   Ä<A4F:Æ:G)Ng    _ B)[rì   Úsympy.core.numbersr   r   Úsympy.core.powerr   Úsympy.core.singletonr   Úsympy.core.symbolr   Ú$sympy.functions.elementary.complexesr   Ú&sympy.functions.elementary.exponentialr	   r
   Ú(sympy.functions.elementary.trigonometricr   r   r   Ú"sympy.matrices.expressions.matexprr   Úsympy.assumptionsr   r   Úsympy.externalr   Úsympy.printing.codeprinterr   Úsympy.codegen.matrix_nodesr   Úsympy.codegen.cfunctionsr   r   r   r   Úsympy.codegen.numpy_nodesr   r   Úsympy.codegen.scipy_nodesr   r   Úsympy.codegen.rewritingr   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   Úsympy.testing.pytestr,   r-   Úsympy.utilitiesr.   Úsympy.utilities._compilationr/   r0   Ú!sympy.utilities._compilation.utilr1   r2   r3   r4   rM   rP   rk   rr   rv   rx   rz   r�   r”   r¢   r¥   r¬   rÀ   rÆ   rÈ   rÊ   rÔ   rÙ   rÜ   rû   © rN   rL   ú<module>r     s  ðÛ ß +Ý  Ý "Ý $Ý 4ß =ß EÑ EÝ ;ß )Ý (Ý ,Ý 2ß =Ó =ß ;ß 2÷÷ ÷ ÷ ó ÷
 -Ý $ß KÝ 7á	�xÓ	 €Ù�gÓ€Ù�gÓ€ò&ò@0ò?EòD'ò#&òL'ò'ó0òoò,pò$%ò,+ò\Gò0Pò&ò&òò.	ð ñ	ó ð	ð ñ2-ó ñ2-rN   