Ë
    1Ò^j&  ã                   ó"  — d Z ddlZddlZddlZddlZddlmZ ddl	m
Z
 ddgZg Z eej                  j                  «      D ]3  ZeevsŒej                   eej                  j                  e«      «       Œ5  eej                  j"                  «      D ].  Zej                   eej                  j"                  e«      «       Œ0 eD � cg c]  }  e| ej&                  «      sŒ| ‘Œ c} Zej(                  j+                  de«      d„ «       Zd„ Zh d	£ZeD �cg c]G  }|j2                  |j4                  z
  d
kD  sŒ |j6                  evr|j6                  ej8                  v r|‘ŒI c}Zej(                  j+                  de«      d„ «       Zyc c} w c c}w )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                 ó  — t        d„ | j                  D «       «      }t        «       }|D ]U  }|j                  |j                  dd«      j                  dd«      |j                  dd«      j                  dd«      g«       ŒW ||k(  sJ ‚y )Nc              3   ó@   K  — | ]  }d |v sd|v sd|v sd|v s|–— Œ y­w©ÚlÚiÚqÚpN© ©Ú.0Úsigs     út/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/scipy/special/tests/test_ufunc_signatures.pyú	<genexpr>z(test_ufunc_signatures.<locals>.<genexpr>+   ó2   è ø€ ò O˜Ø˜s™
 c¨S¡j°C¸3±JÀ#ÈÁ*ô ñ Oùó   ‚ÚdÚfÚDÚF)ÚsetÚtypesÚupdateÚreplace)r   r   Úexpanded_typesr   s       r   Útest_ufunc_signaturesr   "   s’   € ô ñ O˜uŸ{™{ô Oó O€Eô
 “U€NØò 
ˆØ×ÑØ�[‰[˜˜cÓ"×*Ñ*¨3°Ó4Ø�[‰[˜˜cÓ"×*Ñ*¨3°Ó4ð6õ	
ð
ð
 �NÒ"Ð"Ñ"ó    c           
      óÞ  — t        j                  t         j                  t         j                  ¬«      t        j                  t         j                  t         j                  ¬«      t        j                  t         j                  t         j
                  ¬«      t        j                  t         j                  t         j                  dz  z   t         j                  ¬«      t        j                  t         j                  t         j                  dz  z   t         j                  ¬«      t        j                  t         j                  t         j                  dz  z   t         j                  ¬«      dœ|    S )N)Údtypey              ð?)r   r   Úgr   r   ÚG)	ÚnpÚasarrayÚnanÚfloat32Úfloat64Ú
longdoubleÚ	complex64Ú
complex128Úclongdouble)Útypecodes    r   Ú_get_nan_valr/   9   sÁ   € ä�Z‰ZœŸ™¤b§j¡jÔ1Ü�Z‰ZœŸ™¤b§j¡jÔ1Ü�Z‰ZœŸ™¤b§m¡mÔ4Ü�Z‰ZœŸ™¤§¡¨¡Ñ*´"·,±,Ô?Ü�Z‰ZœŸ™¤§¡¨¡Ñ*´"·-±-Ô@Ü�Z‰ZœŸ™¤§¡¨¡Ñ*´"·.±.Ô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                 óT  — t         j                  j                  d«      }t        d„ | j                  D «       «      }|D ]Þ  }|j                  d«      \  }}|D �cg c]  }t        |«      ‘Œ }}|j                  t        |«      «      }t        j                  ||   «      rt        d«      n
t        d«      ||<    | |Ž }	t        |«      dk(  r|	gn|	}	t        j                  |	«      }	t        |	t        j                  |D �cg c]  }t        |«      ‘Œ c}«      d¬«       Œà y c c}w c c}w )NiÒ  c              3   ó@   K  — | ]  }d |v sd|v sd|v sd|v s|–— Œ y­wr	   r   r   s     r   r   ztest_nep50.<locals>.<genexpr>d   r   r   z->r'   rB   T)Ústrict)r%   ÚrandomÚdefault_rngr   r   Úsplitr/   ÚchoiceÚlenÚ	isrealobjÚfloatÚcomplexr&   r   )
r   Úrngr   r   Úinput_typesÚoutput_typesr.   ÚargsÚidxÚresults
             r   Ú
test_nep50rT   _   s  € ô �)‰)×
Ñ
 Ó
%€Cäñ O˜uŸ{™{ô Oó O€Eàò 
ˆØ$'§I¡I¨d£OÑ!ˆ�\ð 8CÖC¨8”˜XÕ&ÐCˆÐCà�j‰jœ˜T›Ó#ˆÜ$&§L¡L°°c±Ô$;”E˜%”LÄÈÃˆˆS‰	Ù˜�ˆÜ  Ó.°!Ò3�&‘¸ˆÜ—‘˜FÓ#ˆô 	Ø”B—J‘JÀ|ÖT¸8¤¨XÕ 6ÒTÓUØö	
ñ
ùò Dùò  Us   ÁD Ã>D%)Ú__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   r/   ÚskipsÚnargsÚnoutÚ__name__Ú__all__Ú_multi_arg_public_ufuncsrT   )Úfuncr   s   00r   ú<module>ro      s}  ðñó Û Û Û Ý å &ð
 Ð9Ð:€
à
€Ù�E—M‘M×)Ñ)Ó*ò A€HØ�zÒ!Ø�‰‘w˜uŸ}™}×4Ñ4°hÓ?Õ@ðAñ �E—M‘M×*Ñ*Ó+ò >€HØ‡N�N‘7˜5Ÿ=™=×1Ñ1°8Ó<Õ=ð>ð $Ö
B�D¡z°$¸¿¹Õ'AŠ4Ò
B€à‡�×Ñ˜ 'Ó*ñ#ó +ð#ò,ò	€ð. öØ %§+¡+°·
±
Ñ":¸QÓ">Ø�‰˜eÑ#¨¯©¸'¿/¹/Ñ(Iò 
òÐ ð ‡�×Ñ˜Ð":Ó;ñ
ó <ñ
ùòA Cùòrs   ÃFÃ!FÄ!FÄ7*F