o
    8Va                     @   s   d dl 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mZmZmZmZmZ d dlm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d ZdS )    )symbolsSymbolexplogpiRationalS)	expm1log1pexp2log2fmalog10SqrtCbrthypot)
expand_logc                  C   s8  t ddksJ tdddd} t | jddt|  dksJ t | dt|  dks.J t | dt|  dks=J td	 d
 d	 d dk rMJ tt d	 d	 d dk s]J t | jsdJ t | jskJ t d|  	| dtd|    dksJ t d|  	| t d|  jdd	|  dksJ d S )Nr   xTrealZfinitefunc	tractabler   g|=   g#B;g^ 9^;*   )
r	   r   expandr   rewriteevalfabsis_real	is_finitediffr    r$   E/usr/lib/python3/dist-packages/sympy/codegen/tests/test_cfunctions.py
test_expm1   s      *8r&   c                  C   s  t ddksJ td} tt | d t| d d  t| d  dks&J tdddd}t |jdd	t|d  dks?J t |d
t|d  dksPJ t |dt|d  dksaJ ttd d dk roJ ttt d d dk sJ t dt	dd  j
sJ t djrJ t tjsJ t |jrJ t tdddjsJ t |jrJ t tdddjsJ t |jrJ t tdddjsJ t d| |dd| d   dksJ t d| |t d| jdd	| dksJ d S )Nr   
   ii  r   r   Tr   r   r   r   g      ?g>N}a+g0.++   r   y)Zpositivez)Zzeroo)Znonnegativer   )r
   r   r   r   r   r   r   r   r   r   r    r!   r   Zis_positiveZis_zeroZis_nonnegativer"   )dr   r$   r$   r%   
test_log1p    s(   4$"" *8r-   c                  C   s   t ddksJ tdddd} t | jddd|   dksJ t d|  | dt d|   td  dks8J t d|  | t d|  |  dksNJ d S )	Nr(      r   Tr   r   r   r   )r   r   r   r"   r   r#   r$   r$   r%   	test_exp2E   s
    20r/   c                  C   s   t ddksJ t ttttd ksJ tdddd} t | t| td ks+J t d|  | ks5J t | jddt| td  dksIJ t d	|   d
td|    dks]J t d	|   t d	|  jdd|  dksvJ d S )N      r(   r   Tr   r   r   r   r   )r   r   r   r   r   r"   r#   r$   r$   r%   	test_log2S   s   ((6r2   c                  C   s  t d\} }}t| ||jdd| |  | dksJ td|  d| d| }|| |jdd|  dks9J |||jdd| dksKJ |||jdd| dks]J || d|  dksjJ ||d|   dkswJ ||d dksJ d S )	Nzx y zTr   r      r   e   i  )r   r   r   r"   )r   r)   r*   exprr$   r$   r%   test_fmad   s   ($$$r6   c                  C   s   t d} t| jddt| td  dksJ td|  | dtd|    dks-J td|  | td|  jdd|  dksGJ d S )Nr   Tr   r'   r   r   r   )r   r   r   r   r"   r#   r$   r$   r%   
test_log10v   s   (*8r7   c                  C   s   t d} t| jdd| tdd  dksJ td|  | dd|  tddd   d  dks3J td|  | td|  jdd|  dksMJ d S )Nr   Tr   r   r1   r   r   )r   r   r   r   r"   r#   r$   r$   r%   	test_Cbrt   s   &88r8   c                  C   s   t d} t| jdd| tj  dksJ td|  | dd|  tjd   d  dks/J td|  | td|  jdd|  dksIJ d S )Nr   Tr   r   r   r   r(   )r   r   r   r   Halfr"   r#   r$   r$   r%   	test_Sqrt   s   "48r:   c                  C   s|  t d\} }t| |jdd| d |d  tj  dksJ td|  d| | jddtd|  d| jdd|  dksBJ td|  d| |jddtd|  d| jdd| dksfJ td|  d| | jddd|  d|  d d| d  td	d  d  dksJ td|  d| |jddd
| d|  d d| d  td	d  d  dksJ d S )Nzx yTr   r(   r   r3   r   iB  r   i  )r   r   r   r   r9   r"   r   )r   r)   r$   r$   r%   
test_hypot   s   0HHVZr;   N)Zsympyr   r   r   r   r   r   r   Zsympy.codegen.cfunctionsr	   r
   r   r   r   r   r   r   r   Zsympy.core.functionr   r&   r-   r/   r2   r6   r7   r8   r:   r;   r$   r$   r$   r%   <module>   s   $ ,%