a
    kº”ho  ã                   @   sÀ   d dl mZmZmZ d dlmZ d dlmZmZm	Z	m
Z
mZmZmZmZ d dlmZmZmZmZ d dlmZ edƒ\ZZZZdd„ Zd	d
„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Z dd„ Z!dS )é    )ÚFloatÚIntegerÚRational)Úsymbols)ÚbetaÚEiÚzetaÚMaxÚMinÚsqrtÚ
riemann_xiÚfrac)ÚCXX98CodePrinterÚCXX11CodePrinterÚCXX17CodePrinterÚcxxcode)Úlog1pzx y u vc                  C   s|   t ƒ  ttdƒ¡dv sJ ‚t ƒ  ttdttƒƒ¡dks:J ‚t ƒ } | jdksNJ ‚| jdks\J ‚d| jv sjJ ‚d| jvsxJ ‚d S )Né   )zstd::max(x, 3)zstd::max(3, x)z&std::min(3, std::min(x, std::sqrt(x)))úC++zC++98ÚtemplateZalignas)	r   Údoprintr	   Úxr
   r   ÚlanguageÚstandardÚreserved_words)Zcxx98printer© r   úK/var/www/auris/lib/python3.9/site-packages/sympy/printing/tests/test_cxx.pyÚtest_CXX98CodePrinter   s     r   c                  C   sh   t ƒ  ttƒ¡dksJ ‚t ƒ } | jdks,J ‚| jdks:J ‚d| jv sHJ ‚d| jv sVJ ‚d| jvsdJ ‚d S )Nústd::log1p(x)r   zC++11ÚoperatorZnoexceptZconcept)r   r   r   r   r   r   r   )Zcxx11printerr   r   r   Útest_CXX11CodePrinter   s    r    c                  C   s,   G dd„ dt ƒ} | ƒ  ttƒ¡dks(J ‚d S )Nc                   @   s   e Zd Zdd„ ZdS )z-test_subclass_print_method.<locals>.MyPrinterc                 S   s   dd  t| j|jƒ¡ S )Nzmy_library::log1p(%s)z, )ÚjoinÚmapÚ_printÚargs)ÚselfÚexprr   r   r   Ú_print_log1p"   s    z:test_subclass_print_method.<locals>.MyPrinter._print_log1pN)Ú__name__Ú
__module__Ú__qualname__r'   r   r   r   r   Ú	MyPrinter!   s   r+   úmy_library::log1p(x)©r   r   r   r   )r+   r   r   r   Útest_subclass_print_method    s    r.   c                  C   sL   G dd„ dt ƒ} t ƒ }| ƒ }| ttƒ¡dks2J ‚| ttƒ¡dksHJ ‚d S )Nc                   @   s   e Zd ZdZdS )z1test_subclass_print_method__ns.<locals>.MyPrinterzmy_library::N)r(   r)   r*   Z_nsr   r   r   r   r+   )   s   r+   r   r,   r-   )r+   ÚpZmypr   r   r   Útest_subclass_print_method__ns(   s
    r0   c                   C   s~   t ƒ  tttƒ¡dksJ ‚t ƒ  ttƒ¡dks2J ‚t ƒ  ttƒ¡dksJJ ‚t ƒ  ttƒ¡dksbJ ‚t ƒ  ttƒ¡dkszJ ‚d S )Nzstd::beta(x, y)zstd::expint(x)zstd::riemann_zeta(x)z(x - std::floor(x))z^((1.0/2.0)*std::pow(M_PI, -1.0/2.0*x)*x*(x - 1)*std::tgamma((1.0/2.0)*x)*std::riemann_zeta(x)))	r   r   r   r   Úyr   r   r   r   r   r   r   r   Útest_CXX17CodePrinter3   s
    r2   c                   C   s.   t tttƒd ƒ d¡ƒt ddgƒks*J ‚d S )Nç      à?Ú*z0.5zstd::sqrt(x))Úsortedr   r   r   Úsplitr   r   r   r   Útest_cxxcode=   s    r7   c                   C   sH   t ttttƒtttƒƒƒdks"J ‚t ttttƒtttƒƒƒdksDJ ‚d S )Nz(std::max(std::min(u, v), std::min(x, y))z(std::min(std::max(u, v), std::max(x, y)))r   r	   r
   r   r1   ÚuÚvr   r   r   r   Útest_cxxcode_nested_minmax@   s    ÿÿr:   c                  C   sj   G dd„ dt ƒ} | ƒ }tdƒD ]}| |¡d| ksJ ‚q| tdƒ¡dksPJ ‚| td ¡dksfJ ‚d S )	Nc                       s$   e Zd Z‡ fdd„Zdd„ Z‡  ZS )z.test_subclass_Integer_Float.<locals>.MyPrinterc                    s   dt ƒ  |¡ S )NzbigInt("%s"))ÚsuperÚ_print_Integer)r%   Úarg©Ú	__class__r   r   r<   H   s    z=test_subclass_Integer_Float.<locals>.MyPrinter._print_Integerc                 S   s,   t |ƒ}d|  t|jƒ¡|  t|jƒ¡f S )NzbigFloat(%s, %s))r   r#   r   r/   Úq)r%   r=   Zratr   r   r   Ú_print_FloatK   s
    þz;test_subclass_Integer_Float.<locals>.MyPrinter._print_Float)r(   r)   r*   r<   rA   Ú__classcell__r   r   r>   r   r+   G   s   r+   é   zbigInt("%d")r3   z"bigFloat(bigInt("1"), bigInt("2"))g      ð¿z$bigFloat(bigInt("1"), bigInt("1"))/x)r   Úranger   r   r   )r+   r/   Úir   r   r   Útest_subclass_Integer_FloatF   s    rF   N)"Zsympy.core.numbersr   r   r   Zsympy.core.symbolr   Zsympy.functionsr   r   r   r	   r
   r   r   r   Zsympy.printing.cxxr   r   r   r   Zsympy.codegen.cfunctionsr   r   r1   r8   r9   r   r    r.   r0   r2   r7   r:   rF   r   r   r   r   Ú<module>   s   (

