§
    µ³ÙgA  ã                   óŒ  — d dl Z d dlZd dlmZ d dlZd dlZd dlmZ d dl	m
Z
 d dl	mZ 	 d dlZn# eef$ r  ed¦  «        ZY nw xY wd„ Zddd	d
dddœZd„ Zd„ Z ej        dd¬¦  «        d„ ¦   «         Z e
ed¦  «        ej                             d e¦   «         ¦  «        ej        j        d„ ¦   «         ¦   «         ¦   «         ZdS )é    N)Úuuid4)Úcheck_version)ÚMissingModuleÚcupyc                  ó®  — t           j        ddft           j        ddft           j        ddft           j        ddft           j        d	d
ft           j        j        ddft           j        ddft           j	        ddft           j
        ddft           j        ddft           j        ddfg} g }| D ].\  }}}d|› d�}|j        D ]}|                     |||f¦  «         ŒŒ/|S )Nzcephes/beta.hz"out0 = xsf::cephes::beta(in0, in1)zbinom.hzout0 = xsf::binom(in0, in1)z	digamma.hzxsf::digamma(in0)zcephes/expn.hz"out0 = xsf::cephes::expn(in0, in1)zhyp2f1.hz&out0 = xsf::hyp2f1(in0, in1, in2, in3)z
lambertw.hz#out0 = xsf::lambertw(in0, in1, in2)zcephes/ellik.hz#out0 = xsf::cephes::ellik(in0, in1)zcephes/ellie.hz#out0 = xsf::cephes::ellie(in0, in1)zcdflib.hz!out0 = xsf::gdtrib(in0, in1, in2)zsici.hzxsf::sici(in0, &out0, &out1)zxsf::shichi(in0, &out0, &out1)z#include <xsf/ú>)ÚscÚbetaÚbinomÚdigammaÚexpnÚhyp2f1Ú_ufuncsÚ	_lambertwÚ	ellipkincÚ	ellipeincÚgdtribÚsiciÚshichiÚtypesÚappend)Úcases_sourceÚcasesÚufuncÚheaderÚroutineÚpreambleÚ	signatures          úW/granary/edev/quantum/lib/python3.11/site-packages/scipy/special/tests/test_xsf_cuda.pyÚget_test_casesr       s  € å	Œ�/Ð#GÐHÝ	Œ�9Ð;Ð<Ý	Œ�[Ð"5Ð6Ý	Œ�/Ð#GÐHÝ	Œ�JÐ HÐIÝ	ŒÔ	˜|Ð-RÐSÝ	ŒÐ'Ð)NÐOÝ	ŒÐ'Ð)NÐOÝ	Œ�JÐ CÐDÝ	Œ�(Ð:Ð;Ý	Œ�HÐ>Ð?ð€Lð €EØ".ð 9ð 9Ñˆˆv�wØ- FÐ-Ð-Ð-ˆØœð 	9ð 	9ˆIØ�LŠL˜) X¨wÐ7Ñ8Ô8Ð8Ð8ð	9à€Ló    Úfloat32Úfloat64Ú	complex64Ú
complex128Úint32Úint64©ÚfÚdÚFÚDÚiÚlc                 ó~  — |                       d¦  «        \  }}g }g }t          |¦  «        D ]*\  }}|                     t          |         › d|› �¦  «         Œ+t          |¦  «        D ]*\  }}|                     t          |         › d|› �¦  «         Œ+d                     |¦  «        }d                     |¦  «        }||fS )Nú->z inz outz, )ÚsplitÚ	enumerater   Ú	dtype_mapÚjoin)r   Úin_ÚoutÚ	in_paramsÚ
out_paramsr-   Útypecodes          r   Ú
get_paramsr:   3   sÔ   € Ø�Š˜tÑ$Ô$�H€CˆØ€IØ€JÝ  ‘~”~ð 9ð 9‰ˆˆ8Ø×Ò�I hÔ/Ð7Ð7°AÐ7Ð7Ñ8Ô8Ð8Ð8Ý  ‘~”~ð ;ð ;‰ˆˆ8Ø×Ò�Y xÔ0Ð9Ð9°aÐ9Ð9Ñ:Ô:Ð:Ð:Ø—	’	˜)Ñ$Ô$€IØ—’˜:Ñ&Ô&€JØ�jÐ Ð r!   c                 óò   — |j         |j        |j        |j        |j        |j        dœ}|                      d¦  «        \  }}g }|D ]2}|                     |                     d||         ¬¦  «        ¦  «         Œ3|S )Nr(   r0   é   )Údtype)	r"   r#   r$   r%   r&   r'   r1   r   Úzeros)r   Úxpr3   r5   Ú_Úargsr9   s          r   Úget_sample_inputrB   @   s†   € àŒZØŒZØŒ\ØŒ]ØŒXØŒXðð €Ið �_Š_˜TÑ"Ô"�F€CˆØ€DØð <ð <ˆØ�Š�B—H’H˜Q i°Ô&9�HÑ:Ô:Ñ;Ô;Ð;Ð;Ø€Kr!   ÚmoduleT)ÚscopeÚautousec               #   óü   K  — t          j        ¦   «         } t          j                             dd ¦  «        }| t          j        d<   d V — |�|t          j        d<   nt          j        d= t          j        | ¦  «         d S )NÚCUPY_CACHE_DIR)ÚtempfileÚmkdtempÚosÚenvironÚgetÚshutilÚrmtree)Útemp_cache_dirÚoriginal_cache_dirs     r   Úmanage_cupy_cacherQ   Q   sz   è è € õ Ô%Ñ'Ô'€NÝœŸšÐ(8¸$Ñ?Ô?ÐØ#1…B„JÐÑ à	€E€E€EàÐ%Ø'9�Œ
Ð#Ñ$Ð$åŒJÐ'Ð(Ý
„M�.Ñ!Ô!Ð!Ð!Ð!r!   z13.0.0zsignature,preamble,routinec           
      óæ   — dt          ¦   «         j        › �}t          | ¦  «        \  }}t          j        |||||dt          j        ¦   «         › �df¬¦  «        } |t          | t          ¦  «        Ž }d S )NÚxz--include-path=z
-std=c++17)r   Úoptions)r   Úhexr:   r   ÚElementwiseKernelr	   Ú_get_includerB   )	r   r   r   rQ   Únamer7   r8   Úfuncr@   s	            r   Útest_compiles_in_cupyrZ   b   s„   € ð �u‰wŒwŒ{ÐÐ€DÝ& yÑ1Ô1Ñ€IˆzåÔ!ØØØØØØ6¥2¤?Ñ#4Ô#4Ð6Ð6¸ÐEðñ ô €Dð 	ˆÕ˜y­$Ñ/Ô/Ð0€A€A€Ar!   )rJ   ÚpytestÚscipy.specialÚspecialr	   rM   rH   Úuuidr   Úscipy.special._testutilsr   r   r   ÚImportErrorÚAttributeErrorr    r3   r:   rB   ÚfixturerQ   ÚmarkÚparametrizeÚxslowrZ   © r!   r   ú<module>rg      s—  ðØ 	€	€	€	Ø €€€Ø Ð Ð Ð Ð Ð Ø €€€Ø €€€à Ð Ð Ð Ð Ð à 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2ð!Ø€K€K€K€KøØ�^Ð$ð !ð !ð !Øˆ=˜Ñ Ô €D€D€Dð!øøøðð ð ð0 
Ø	Ø	Ø	Ø	Ø	ðð €	ð
!ð 
!ð 
!ðð ð ð" €„�h¨Ð-Ñ-Ô-ð"ð "ñ .Ô-ð"ð  €ˆt�XÑÔØ„×ÒÐ5°~°~Ñ7GÔ7GÑHÔHØ„Ôð1ð 1ñ Ôñ IÔHñ Ôð1ð 1ð 1s   ª/ ¯AÁA