
    Vhk                        U d dl Z d dlmZ d dlmZ d dlZd dlZd dlm	Z	 d dl
mZmZmZ d dlmZmZ d dlmZ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 d d
l m!Z! erd dl"Z#d Z$d Z%d Z&d Z'd Z(g  eddere#jR                  jT                  nd eejV                  dejX                  di      f eejZ                  ej\                  ejV                        e$dd       edder e!e#jR                  j^                        nd eejZ                  ej\                  ejV                         e       e$ e eej`                   edd       ejZ                   edd       i            f e e jb                  d      ddejd                  f      fdd
       eddere#jR                  jf                  nd eejZ                  ej\                  ejV                         e       e$dd        ed!d" eejV                  d#ejX                  d$i      fere#jR                  jh                  nd eejZ                  ej\                  ejV                        dd ee jj                  d%d&d'(      f)       ed*d+ d,ere&nd eejZ                  ej\                  ejV                        dde% ee jj                  d-d.       ee jj                  d/d0      fd1  ed2 d34      5       ed6d7 eejZ                  ej\                  ejV                        dddd e6d89      :       ed;d< eejZ                        dd=d ee jj                  d>d?      f@       edAere#jR                  jn                  nddBdd eejX                  dCejV                  dCi      f eejZ                  ej\                  ejV                         e e jb                  dD      ddejV                  ejX                  g      fd=e'E
       edFere#jR                  jp                  nddGdH eejZ                        ddI       edJdKere#jR                  jr                  nd eejZ                        ddL       edMere#jR                  jt                  nddN eej`                   ed dO      i      f eejZ                        dde(P       edQ eej`                  dRejv                  dSi      f eejZ                        dT  e e jb                  dD      dd      fd=U       edV eej`                  dejv                  dSi      f eejZ                        ere#jR                  jx                  ndd=W       edX eej`                  dejv                  dSi      f eejZ                        ere#jR                  jz                  ndd=W       edY eej`                  dejv                  dSi      f eejZ                        ere#jR                  j|                  ndd=W       edZ eej`                  dejv                  dSi      f eejZ                        ere#jR                  j~                  ndd=W       ed[ eejZ                        d e e jb                  dD      d\       e e jb                  dD      d]       e e jb                  d^      d>d?      fdd=_       ed` eejZ                        d e e jb                  dD      d\       e e jb                  dD      d]       e e jb                  d^      d>d?      fdd=_       eda eejZ                        d e e jb                  db             e e jb                  dD      d\       e e jb                  dD      d]      fdd=_       edc eejZ                        d e e jb                  db             e e jb                  dD      d\       e e jb                  dD      d]      fdd=_       edd eejZ                        d e e jb                  dD      d\       e e jb                  dD      d]       ee jj                  d>d?      fdd=_       ede eejZ                        d e e jb                  dD      d\       e e jb                  dD      d]       e e jb                  d^      d>d?      fdd=_       edf eejZ                        d e e jb                  dD      d\       e e jb                  dD      d]       e e jb                  d^      d>d?      fdd=_       edg eejZ                        d e e jb                  db             e e jb                  dD      d\       e e jb                  dD      d]       e e jb                  d^      d>d?      fdd=_       edh eej`                  dRejv                  dSi      f eejZ                        ere#jR                  j                  ndd=W       edi eej`                  dRejv                  dSi      f eejZ                        ere#jR                  j^                  ndd=W       edj eej`                  dRejv                  dSi      f eejZ                        ere#jR                  j                  ndd=W       edk eej`                  dRejv                  dSi      f eejZ                        ere#jR                  j                  ndd=W       edl eej`                   edRdR      ejv                   edSdR      i      f eejZ                        ere#jR                  j                  ndd=W       edm eej`                   edRdR      ejv                   edSdR      i      f eejZ                        ere#jR                  j                  ndd=W       edn eejZ                        d e e jb                  db             e e jb                  dD      d\       e e jb                  dD      d]       e e jb                  d^      d>d?      fdd=_       edo eejZ                        d e e jb                  db             e e jb                  dD      d\       e e jb                  dD      d]       e e jb                  d^      d>d?      fdd=_       edp eejZ                        d e e jb                  db             e e jb                  dD      d\       e e jb                  dD      d]       e e jb                  d^      d>d?      fdd=_       edq eejZ                        d e e jb                  db             e e jb                  dD      d\       e e jb                  dD      d]       e e jb                  d^      d>d?      fdd=_       edr eej`                   edRdR      ejv                   edSdR      i      f eejZ                        ds d=W      ZEeFe   eGdt<    edudVeE eej`                  dejv                  dSi      fv       edwdXeE eej`                  dejv                  dSi      fv       edxdAeE eejX                  dCejV                  dCi      f e e jb                  dD      ddejV                  ejX                  g      fy       edzdMeE eej`                   ed dO      i      fv       ed{deE eejV                  dejX                  di      fv       ed|deE e eej`                   edd       ejZ                   edd       i            f e e jb                  d      ddejd                  f      fy       ed}deE~       eddJeE~       edd!eE~       eddFeE~       eddreE eej`                   edRdR      ejv                   edSdR      i      fv       edd;deE ee jj                  d>d?      f      gZHeFe   eGd<   y)    N)partial)product)make_tensor)precisionOverridetoltoleranceOverride)all_types_andfloating_types)
TEST_SCIPYtorch_to_numpy_dtype_dict)BinaryUfuncInfoDecorateInfoLNumericsFilterOpInfoSSampleInputUnaryUfuncInfo)ElementwiseBinaryPythonRefInfoElementwiseUnaryPythonRefInfo)(np_unary_ufunc_integer_promotion_wrapperc              +   *  K   |xr' | j                   t        j                  j                  k(  }t	        t
        ||||      }t         |t        f             t         |d             |r#|s  |t        f      }d|d<   t        |       y y y w)N)dtypedevicerequires_gradexclude_zero r   )optorchspeciali0er   r   r   r   )op_infor   r   r   kwargsr   make_argts           b/home/dcms/DCMS/lib/python3.12/site-packages/torch/testing/_internal/opinfo/definitions/special.pysample_inputs_i0_i1r'   ,   s      DWZZ5==3D3D%DL#!H htn
%%
hrl
##\ aTN!!n *}s   BBc              +      K   t        t        ||t        j                  t        j                  hv rdnd ||      }t
        t
        fdf}d}t        ||      D ]  \  }}	t         ||      |	f        y w)N   )r   lowr   r   r   )r)               )args)r   r   r   int32int64r   r   r   )
r"   r   r   r   r#   r$   tensor_shapesnsshapens
             r&   sample_inputs_polygammar6   A   sv     EKK55Q4#H VRLM	BM2. 6q(5/556s   A4A6c                     t         t        j                            }| j                  t        j
                  k(  rt        j
                  }t        j                  j                  ||       j                  |      S N)
r   r   get_default_dtyper   npdoublescipyr    	polygammaastype)xr5   result_dtypes      r&   reference_polygammarA   Q   sR     -U-D-D-FGLww"))yy==""1a(//==    c              +      K   | j                   \  }}|rd| j                  z   }t        t        ||||      }t	         |t
        f             t	         |d             y w)Nr   )r   r   r*   r   r   )domain_domain_epsr   r   r   r   )r"   r   r   r   r#   r*   _r$   s           r&   sample_inputs_entrrG   _   s]     ^^FC'%%%5SH htn
%%
hrl
##s   A!A#c           
   +   `   K   t         fddfD ]  }t        t        |||d|              y w)N)r)   r   r,   r   )r   r   r*   r   )r   r   r   )r"   r   r   r   r#   r4   s         r&   sample_inputs_erfcxrJ   l   sB     $	2& 	
+
 	
	
s   ,.zspecial.i0especial_i0eg333333?T)	aten_nameref
decoratorsdtypessample_inputs_funcsupports_forward_adsupports_fwgrad_bwgradz
special.i1
special_i1-C6?)atolrtolzIncorrect result!TestUnaryUfuncstest_reference_numerics_large)rO   )	rL   rM   rO   backward_dtypesrP   rN   skipsrR   rQ   zspecial.i1especial_i1e)rL   rM   rO   rY   rP   rQ   rR   zspecial.ndtrspecial_ndtrg{Gzt?gMb@?TestFwdGradientstest_fn_fwgrad_bwgradmeta)device_type)rL   rN   rM   rO   rQ   rR   rZ   zspecial.polygammac                 D    t        j                  j                  || fi |S r8   )r   r    r=   )r?   r5   r#   s      r&   <lambda>rb      s    %--"9"9!Q"I&"I rB   special_polygamma_n_0TestJittest_variant_consistency_jitTestNormalizeOperators"test_normalize_operator_exhaustivec                     ddiddifS )Nr5   r   r   )r   r   inputs      r&   rb   rb      s    S!HsAh3G rB   c                 V    | dk  | | j                         z
  j                         dk  z  S )N皙?rT   )roundabsr?   s    r&   rb   rb      s'    Sa!'')m-@-@-BT-I J rB   r)   )	conditionsafe_val)
r   variant_test_namerM   rO   rQ   rR   rP   rZ   sample_kwargsreference_numerics_filterzspecial.xlog1pyspecial_xlog1pygGz)r*   )rL   rO   promotes_int_to_floatrQ   rR   supports_one_python_scalarrhs_make_tensor_kwargszspecial.zetaspecial_zetaF
TestCommontest_compare_cpu)rL   rO   ru   supports_autogradrv   rZ   zspecial.entrspecial_entrrk   zSkipped!)	rM   rL   rQ   rR   rN   rO   rZ   supports_inplace_autogradrP   zspecial.ndtri)r   r)   special_ndtri)rM   rD   rL   rO   rQ   rR   zspecial.log_ndtrspecial_log_ndtr)rL   rM   rO   rQ   rR   zspecial.erfcxspecial_erfcxg>)rM   rL   rN   rO   rQ   rR   rP   zspecial.airy_aigMbP?gh㈵>c                 V    t         r"t        j                  j                  |       d   S d S Nr   )r   r<   r    airyrn   s    r&   rb   rb   D  s     *emm((+A. $ rB   )rN   rO   rM   rZ   r{   zspecial.bessel_j0)rN   rO   rM   r{   zspecial.bessel_j1zspecial.bessel_y0zspecial.bessel_y1zspecial.chebyshev_polynomial_tTestCudaFuserOpInfoTestNNCOpInfoz/testing takes an unreasonably long time, #79528)rO   ru   rZ   rv   r{   zspecial.chebyshev_polynomial_uzspecial.chebyshev_polynomial_vz:Skipping - testing takes an unreasonably long time, #79528zspecial.chebyshev_polynomial_wzspecial.hermite_polynomial_hzspecial.hermite_polynomial_hezspecial.laguerre_polynomial_lzspecial.legendre_polynomial_pzspecial.modified_bessel_i0zspecial.modified_bessel_i1zspecial.modified_bessel_k0zspecial.modified_bessel_k1z!special.scaled_modified_bessel_k0z!special.scaled_modified_bessel_k1z&special.shifted_chebyshev_polynomial_tz&special.shifted_chebyshev_polynomial_uz&special.shifted_chebyshev_polynomial_vz&special.shifted_chebyshev_polynomial_wzspecial.spherical_bessel_j0c                 R    t         r t        j                  j                  d|       S d S r   )r   r<   r    spherical_jnrn   s    r&   rb   rb     s    *emm00A6 $ rB   op_dbz_refs.special.bessel_j0)torch_opinfo_namer   rN   z_refs.special.bessel_j1z_refs.special.entr)r   r   rN   rZ   z_refs.special.erfcxz_refs.special.i0ez_refs.special.i1z_refs.special.i1e)r   r   z_refs.special.log_ndtrz_refs.special.ndtrz_refs.special.ndtriz!_refs.special.spherical_bessel_j0z_refs.special.zeta)r   rv   r   rZ   python_ref_db)Iunittest	functoolsr   	itertoolsr   numpyr:   r   torch.testingr   *torch.testing._internal.common_device_typer   r   r   $torch.testing._internal.common_dtyper	   r
   $torch.testing._internal.common_utilsr   r   #torch.testing._internal.opinfo.corer   r   r   r   r   r   r   r   #torch.testing._internal.opinfo.refsr   r   $torch.testing._internal.opinfo.utilsr   scipy.specialr<   r'   r6   rA   rG   rJ   r    r!   bfloat16float16boolhalfi1float32skipint8i1endtrexpectedFailuredictentrndtrilog_ndtrerfcxfloat64j0j1y0y1i0k0k1k0ek1er   list__annotations__r   r   rB   r&   <module>r      s        % 
 O V	 	 	
 *6 >
$

E	!+EMM%u~~tU]]D&QRTUZZU^^D. #	E	  5U]]5E5EFUZZU^^D&(.!s1'=

CT$:	
 12!/

}	
  $ 9E	R !+EMMUZZU^^D&(. #	SE	f  %u~~tU]]D&QRT",EMM$UZZU^^D # (("'"	
gE	N I1#-4UZZU^^D #2 (()5S (((4

 H"0JUV#
-OE	B #UZZU^^D" ##'#
CE	X  UZZ("#' 11<AST
YE	X ",EMM$  #%u}}dENND&QRTUZZU^^Dj)!/6	
 #(-#YE	~ #-EMM4!UZZ( #E	P $&0EMM""dUZZ( #QE	` #-EMM4!MM3AD#9
 UZZ( #.aE	@ MM5MM5
 UZZ(Fj)!/
  'AE	j MM5MM5
 UZZ( *EMMkE	F MM5MM5
 UZZ( *EMMGE	b MM5MM5
 UZZ( *EMMcE	~ MM5MM5
 UZZ( *EMME	Z (UZZ("z24IJz2ODOP"
 $([E	z (UZZ("z24IJz2ODOP"
 $({E	Z	 (UZZ("P
 z24IJz2OD
 $([	E	z	 (UZZ("P
 z24IJz2OD
 $({	E	Z
 &UZZ("z24IJz2OD11<AST	
 $([
E	t
 'UZZ("z24IJz2ODOP"
 $(u
E	T 'UZZ("z24IJz2ODOP"
 $(UE	t 'UZZ("P
 z24IJz2ODOP"
 $('uE	^ $MM5MM5
 UZZ( *EMM_E	z $MM5MM5
 UZZ( *EMM{E	V $MM5MM5
 UZZ( *EMMWE	r $MM5MM5
 UZZ( *EMMsE	N +MM3E#>MM3E#>
 UZZ(!+EMMOE	j +MM3E#>MM3E#>
 UZZ(!+EMMkE	F 0UZZ("P
 z24IJz2ODOP"
 $('GE	p 0UZZ("P
 z24IJz2ODOP"
 $('qE	Z 0UZZ("P
 z24IJz2ODOP"
 $('[E	D 0UZZ("P
 z24IJz2ODOP"
 $('EE	n %MM3E#>MM3E#>
 UZZ(NoE	tF| E	V "!-MM5MM5
	 "!-MM5MM5
	 "(%u}}dENND&QRTj)!/6	
 ")MM3AD#9
	 "'%u~~tU]]D&QRT	 "&!s1'=

CT$:	
 12!/

}	
. "'
 " ,
 "(
 ")
 "+7MM3E#>MM3E#>
	  #(#' 11<AST
	sCtF| CrB   