
    Cpj&                     Z   S r SSKrSSKrSSKrSSKrSSKJr  SSK	J
r
  SS/r/ r\" \R                  R                  5       H7  r\\;  d  M  \R                  \" \R                  R                  \5      5        M9     \" \R                  R"                  5       H/  r\R                  \" \R                  R"                  \5      5        M1     \ V s/ s H  n \" U \R&                  5      (       d  M  U PM!     sn r\R(                  R+                  S\5      S 5       rS r1 S	kr\ Vs/ s HQ  oR2                  UR4                  -
  S
:  d  M!  UR6                  \;  d  M3  UR6                  \R8                  ;   d  MO  UPMS     snr\R(                  R+                  S\5      S 5       rgs  sn f s  snf )a  Test that all ufuncs have float32-preserving signatures.

This was once guaranteed through the code generation script for
generating ufuncs, `scipy/special/_generate_pyx.py`. Starting with
gh-20260, SciPy developers have begun moving to generate ufuncs
through direct use of the NumPy C API (through C++). Existence of
float32 preserving signatures must now be tested since it is no
longer guaranteed.
    N)assert_equal_gen_harmonic_normalized_gen_harmonicufuncc                    [        S U R                   5       5      n[        5       nU HV  nUR                  UR                  SS5      R                  SS5      UR                  SS5      R                  SS5      /5        MX     X:X  d   eg )Nc              3   f   #    U  H'  nS U;   a  M  SU;   a  M  SU;   a  M  SU;   a  M#  Uv   M)     g7fliqpN .0sigs     e/var/www/html/pdf-tiff/venv/lib/python3.13/site-packages/scipy/special/tests/test_ufunc_signatures.py	<genexpr>(test_ufunc_signatures.<locals>.<genexpr>+   C      O{s
 &)Sj 473J BE* {   
1111	1dfDF)settypesupdatereplace)r   r   expanded_typesr   s       r   test_ufunc_signaturesr    "   s      Ou{{ O OE
 UN[[c"**34[[c"**346	
 
 """    c           
         [         R                  " [         R                  [         R                  S9[         R                  " [         R                  [         R                  S9[         R                  " [         R                  [         R
                  S9[         R                  " [         R                  [         R                  S-  -   [         R                  S9[         R                  " [         R                  [         R                  S-  -   [         R                  S9[         R                  " [         R                  [         R                  S-  -   [         R                  S9S.U    $ )N)dtypey              ?)r   r   gr   r   G)	npasarraynanfloat32float64
longdouble	complex64
complex128clongdouble)typecodes    r   _get_nan_valr0   9   s    ZZbjj1ZZbjj1ZZbmm4ZZ*",,?ZZ*"--@ZZ*"..A  r!   >   bdtrbdtrcbdtrihyp1f1hyp2f1eval_chebyceval_chebyseval_chebyteval_chebyueval_jacobieval_laguerreeval_legendreeval_sh_chebyteval_sh_chebyueval_sh_jacobieval_gegenbauereval_genlaguerreeval_sh_legendre   c                 j   [         R                  R                  S5      n[        S U R                   5       5      nU H  nUR                  S5      u  pEU Vs/ s H  n[        U5      PM     nnUR                  [        U5      5      n[         R                  " Xx   5      (       a  [        S5      O
[        S5      Xx'   U " U6 n	[        U5      S:X  a  U	/OU	n	[         R                  " U	5      n	[        U	[         R                  " U Vs/ s H  n[        U5      PM     sn5      SS9  M     g s  snf s  snf )Ni  c              3   f   #    U  H'  nS U;   a  M  SU;   a  M  SU;   a  M  SU;   a  M#  Uv   M)     g7fr	   r   r   s     r   r   test_nep50.<locals>.<genexpr>d   r   r   z->r(   rC   T)strict)r&   randomdefault_rngr   r   splitr0   choicelen	isrealobjfloatcomplexr'   r   )
r   rngr   r   input_typesoutput_typesr/   argsidxresults
             r   
test_nep50rV   _   s    ))


%C Ou{{ O OE$'IIdO! 8CC{8X&{CjjT#$&LL$;$;E%L	 .!3&F# 	BJJ|T|8X 6|TU	
  D  Us   D+D0)__doc__numpyr&   pytestscipy.special._ufuncsscipyscipy.special._gufuncsscipy.specialspecialnumpy.testingr   
exceptions_ufuncsdirfuncnameappendgetattr_gufuncs
isinstancer   markparametrizer    r0   skipsnargsnout__name____all___multi_arg_public_ufuncsrV   )funcr   s   00r   <module>rq      s        &
 9:

EMM))*Hz!wu}}44h?@ + EMM**+HNN75==118<= , $
BGDz$'A4G
B'*# +#,	. e++

":Q">Ee# 
(-'//(I 
w  ":;
 <
A Crs$   F#/F#% F(	F(F(7F(