
    f`                     f    d dl Z d dlZd dlZd dlmZmZmZmZ d dlm	Z	m
Z
mZmZ d Z G d d      Zy)    N)uint16float16float32float64)assert_assert_equal_OLD_PROMOTIONIS_WASMc                     	  ||i | t        dd| z         y # t        $ r4}t        t        |      j                  |       dk\  d| z         Y d }~y d }~ww xY w)NFz%Did not raise floating point %s errorr   )r   FloatingPointErrorstrfind)strmatchcallableargskwargsexcs        </usr/lib/python3/dist-packages/numpy/core/tests/test_half.pyassert_raises_fper   	   si    D$!&!
 	7(B	D	  DCh'1,7(B	D 	DDs    	A*AAc                   z   e Zd Zd Zd Zej                  j                  dddg      d        Zej                  j                  dddg      d        Z	ej                  j                  dg d	      ej                  j                  d
g d	      ej                  j                  de
j                  e
j                  g       e
j                         d                             Zej                  j                  g de
j                  e
j                  dfe
j                  e
j                   dfg      d        Zd Zd Zd Zd Zd Zd Zd Zd Z e
j                         d        Zej                  j7                   ej:                         dk(  d      ej                  j7                  ed      d               Zd Z y )!TestHalfc           	      \   t        j                  dt              | _        t        | j                  _        t        j                  d      5  t        j                  | j                  t              | _	        t        j                  | j                  t              | _        d d d        t        j                  t        j                  dddt              t        j                  dd	d
t              f      | _        t        | j                  _        t        j                  | j                  t              | _        t        j                  | j                  t              | _        | j                  d
d | _        | j                  d
d | _        | j                  d
d | _        y # 1 sw Y   xY w)Ni   dtypeignoreinvalid   i  r   i|     )nparanger   all_f16r   r   errstatearrayr   all_f32r   all_f64concatenate	nonan_f16	nonan_f32	nonan_f64
finite_f16
finite_f32
finite_f64)selfs    r   setup_methodzTestHalf.setup_method   s"   yy7$ [[* 	A88DLL@DL88DLL@DL	A
 !#662V!L!#661F!K!MN  '$..@$..@ ..2...2...2.	A 	As   AF!!F+c                 ,   t        j                  d      5  t        j                  | j                  t              }ddd       |k(  }t        | j                  |   j                  t              ||   j                  t                     t        j                  d      5  t        j                  | j                  t              }ddd       ||k(  }t        | j                  |   j                  t              ||   j                  t                     t        j                  | j                  t         j                        }t        j                  |t              }t        | j                  j                  t              |j                  t                     t        j                  dd      }t        j                  |t              }t        j                  |t              }t        ||       y# 1 sw Y   xY w# 1 sw Y   AxY w)z[Checks that all 16-bit values survive conversion
           to/from 32-bit and 64-bit floatr   r   r   Ni i  )r!   r$   r%   r&   r   r   r#   viewr   r'   r)   
longdoubler"   int)r/   bb_nna_ldi_inti_f16js          r   test_half_conversionszTestHalf.test_half_conversions+   sz    [[* 	6W5A	6 AvT\\$',,6,:tW\\\/	1 [[* 	6W5A	6AvT\\$',,6,:tW\\\/	1 xxbmm<HHT)T^^((v(6VV&V)	+ 		%&g.HHU#&UA5	6 	6	6 	6s   &G<$&H	<H	H	string_dtSUc                 b   t        j                  | d      }t        j                  t         j                  |      |k(  sJ t        j                  |t         j                        |k(  sJ t        j                  dt         j                        j                  |      }|j                  |k(  sJ y )N32   r   )r!   r   promote_typesr   onesastype)r/   r<   expected_dtarrs       r   test_half_conversion_to_stringz'TestHalf.test_half_conversion_to_stringN   s     hh)B/0

I6+EEE	2::6+EEEggarzz*11)<yyK'''    c                     t        j                  d|      }|j                  t         j                        t        j                  dt         j                        k(  sJ y )Nz3.1416r   gH.!	@)r!   r%   rD   r   )r/   r<   strings      r    test_half_conversion_from_stringz)TestHalf.test_half_conversion_from_stringX   s<    ()4}}RZZ(BHHV2::,NNNNrH   offset)Nupdownshiftfloat_tc                 :   t        j                  t        j                  t         j                        j                        j	                  t         j
                        }t        j                  d|dz   t         j
                        }|j	                  t         j                        j                  |      }|dk(  rd|d d |dd  z   dd  z  }n|dk(  rd|d d |dd  z   d d z  }n|dd }|dk(  r+t        j                  | |t         j                              }n0|dk(  r+t        j                  | |t         j                               }|j                  t         j                        j	                  t         j
                        }|dd j                         }|dk(  r|dk7  rd}	n|dk(  r|dk7  rd}	nd}	|1|dd d   j	                  t         j                        d	xx   |	z  cc<   n*|j	                  t         j                        d	xx   |	z  cc<   t        ||       y )
Nr   r    r   rM         ?r   rN      .)r!   r   finfomaxr2   r   r"   rD   	nextafterinfcopyint16r   )
r/   rP   rO   rL   max_patternf16s_patterns
f16s_floatres_patternscmp_patternsshift_patterns
             r   test_half_conversion_roundingz&TestHalf.test_half_conversion_rounding]   s    jj"**!5!9!9:??		J 		![]"))D"''

3::7C
 D=
3B*QR. @!"EEJf_
3B*QR. @#2FFJ#Ab)J T>j'"&&/BJvj'266'2BCJ "((499"))D %Qr*//1F?v~Md]v/M M >A##BHH-c2mC2bhh',=,\<0rH   )rP   uint_tbits   4   c                    t        j                  d      j                  t         j                        j	                  |      }|dk(  sJ | |d      z  }|j	                  t         j                        dk(  sJ t        |      D ]T  }|j                  |       |d|z        z  }|j                  |      }|j	                  t         j                        |k(  rTJ  y )Nr          p>rS   r   )r!   r   r2   r   rD   range)	r/   rP   ra   rb   smallest_valuerounded_to_zeroilarger_patternlarger_values	            r   (test_half_conversion_denormal_round_evenz1TestHalf.test_half_conversion_denormal_round_even   s     1**2::6==gF''' )71:5%%bjj1Q666 t 	EA,11&9F16NJN)..w7L&&rzz2nDDD		ErH   c                    t        j                  d      5  t        t        j                  | j                        t        j                  | j
                               t        t        j                  | j                        t        j                  | j
                               t        t        j                  | j                        t        j                  | j
                               t        t        j                  | j                        t        j                  | j
                               t        t        j                  t        d            t         j                         t        t         j                        }t        | j                  |k(  j                                 t        || j                  k(  j                                 t        | j                  |k7  j                                t        || j                  k7  j                                t        | j                  |k  j                                 t        || j                  k  j                                 t        | j                  |k  j                                 t        || j                  k  j                                 t        | j                  |kD  j                                 t        || j                  kD  j                                 t        | j                  |k\  j                                 t        || j                  k\  j                                 d d d        y # 1 sw Y   y xY w)Nr   all  )r!   r$   r   isnanr#   r&   isinfisfinitesignbitspacingr   rW   nanr   anyrp   )r/   rw   s     r   test_nans_infszTestHalf.test_nans_infs   s3   [[X& 	5$,,/$,,1GH$,,/$,,1GHT\\2BKK4MNDLL12::dll3KLGEN3RVV< "&&/C,11334,11334T\\S(--/0SDLL(--/0+00223t||+00223,11334,11334+00223t||+00223,11334,113347	5 	5 	5s   L:MM#c                     t        j                  ddddddddd	d
ddddt         j                  t         j                   g      }t        j                  g dt              }t        |_        t        ||       y)z,Confirms a small number of known half values      ?             @g       g     ?     T?rq           ?      rf   g      pr   g       )i <  i   i @  i   if.  iU5  i{  i     i   r    i  r       |  r   r   N)r!   r%   rW   r   r   r   r   r/   ar5   s      r   test_half_valueszTestHalf.test_half_values   ss    HHc44%~V + +ffrvvg' ( HH & .45 QrH   c                    t        j                  g dt              }dddddddt         j                  g}t        j                  d	      5  t        j                  |t
              }d
d
d
       t        |       t        j                  |t              }t        j                  d	      5  t        j                  |t
              }d
d
d
       t        ||       y
# 1 sw Y   wxY w# 1 sw Y   "xY w)z7Checks that rounding when converting to half is correct)g     `>g      `>g      P>g    ?g     ?g     ?i  i  r   rf   g        g     ?r{   rq   r   )overN)r!   r%   r   rW   r$   r   r   r   )r/   r   roundedr5   s       r   test_half_roundingzTestHalf.test_half_rounding   s    HH  $% !66 [[h' 	+'*A	+Q  HHQg&[[h' 	+'*A	+Q 	+ 	+	+ 	+s   C-C*C'*C3c           	         | j                   j                  t              }d|dz  dz	  z  }t        j                  |dz  dz	  t        j
                        dz
  }|dz  dz  }||d	k7  xx   d
z  cc<   d||d	k(  <   ||z  d|z  z  }t        j                  | j                  |k7        d   }t        |      dk7  r5|d   }t        | j                  |d||   | j                  |   ||   fz         t        j                  | j                  |k7        d   }t        |      dk7  r6|d   }t        | j                  |d||   | j                  |   ||   fz         yy)z_Take every finite float16, and check the casting functions with
           a manual conversion.r   r|   r      r   
   i  g      P?ir    ir}   r   z.First non-equal is half value 0x%x -> %g != %gN)r,   r2   r   r!   r%   int32nonzeror-   lenr   r.   )	r/   a_bitsa_sgna_expa_mana_manuala32_fail	bad_indexa64_fails	            r   test_half_correctnesszTestHalf.test_half_correctness   so   
 %%F%3 &6/b01&6/b0ABF&J.eslq !esl5=3:-::doo9:1=x=A I(A#I.!__Y7%i0223 ::doo9:1=x=A I(A#I.!__Y7%i0223 rH   c                    | j                   ddd   j                         }t        j                  |t              }|j                          |j                          t        ||       t        |dd |dd k  j                                t        |dd |dd kD  j                                 t        |dd |dd k\  j                                t        |dd |dd k  j                                 t        t        j                  |dd |dd k        d   j                  |j                  dz
         t        t        j                  |dd |dd kD        d   j                  |j                  dz
         y)z'Make sure comparisons are working rightNr   r   r    r   rS   )r)   rX   r!   r%   r   sortr   r   rp   rx   r   sizer   s      r   test_half_orderingzTestHalf.test_half_ordering#  sG    NN4R4 %%' HHQg& 	
	Q 	3B1QR5%%'(QsVae^((**+12!CR&%%'(QqrUQsV^((**+RZZ#212/277BRZZ!"#2/277BrH   c           
         t        t        j                  dt              t        j                  dt                     t        j
                  dt              }|j                  d       t        |t        j                  dt                     t        j                  g dt              }t        |j                         d   g d       |j                         }|j                  |j                  j                               }t        |j                         d   g d       t        j                  dddt              }t        j                  d	t              }t        t        j                  ||      d
       t        j                  dt        j                   ddddddgt              }t        |j!                         d       t        j                  dt        j                   dt        j                  dt        j"                  ddgt              }t        |j!                         d       t        j                  dt              }t%        d      D ]  }t        |j'                  |      |        y)zTest the various ArrFuncsr   r   )   r    )r   r   r   g#Bǻr   rf   gT>r   )rS   r      rR   )   _   g)@g333333@g @g(@   r   N)r   r!   r"   r   r   zerosfillrC   r%   r   byteswapr2   r   newbyteorderdotrW   argmaxrw   rg   item)r/   r   r5   rj   s       r   test_half_funcszTestHalf.test_half_funcs:  s    	RYYr1YYr1	3 HHT)	q	QG45 HH?wOQYY[^	 JJLFF177'')*QYY[^	  IIaS0GGE)RVVAq\	 HHa"&&"c5#sDAQQXXZ	HHa"&&"bffeRVVS$GwWQXXZ	 IIb(r 	'AA&	'rH   c                    t        j                  dt              }t        j                  t         j                  ft
              }t        j                  t         j                  ft
              }|j                  t
              }t        t        j                  |dd       |dd |dd z
         t        t        j                  |dd |      |dd        t        t        j                  |d   |       |d           t        t        j                  |dd |       |dd        t        t        j                  ||      |d          t        t        j                  | |      |d           t        t        j                  ||      |       t        t        j                  ||       |d          t        t        j                  | |      |d           t        t        j                  | |       |        t        t        j                  ||      |d          t        t        j                  ||      |d          t        t        j                  ||      |       t        t        j                  ||      |       t        t        j                  ||      |       |dz  }t        t        j                  |d         t        j                  |d                t        t        j                  |dd       |dd |dd z
         t        t        j                  |d   |      |d           t        t        j                  |dd |      |dd        t        t        j                  |dd |       |dd        t        t        j                  ||      |d           t        t        j                  | |      |d          t        t        j                  ||      |d          t        t        j                  ||      |d          y)z Test np.spacing and np.nextafterr   r   Nr   r    r   r   )r!   r"   r   r%   rW   r   rw   r2   r   rv   rV   )r/   r   hinfhnana_f16s        r   test_spacing_nextafterzTestHalf.test_spacing_nextafterb  s    IIfF+xx	1xx	1W%RZZcr
+U12YuSbz-ABR\\%*d3U12Y?R\\%(TE2U1XI>R\\%)dU3U3BZ@R\\$.b	:R\\4%/%)<R\\$-t4R\\$.b	:R\\4%.r
;R\\4%$/$7R\\%.Q8R\\$.Q8R\\$-t4R\\$-t4R\\$-t4 	
VRZZa)2::eAh+?@RZZab	*E#2JuQRy,@AR\\%(D1E!H9=R\\%)T2E#2J?R\\%*te4eABi@R\\$.r
;R\\4%/r;R\\%.Q8R\\$.Q8rH   c                    t        j                  g dt              }t        j                  g dt              }t        j                  ddt         j                   t         j                  dgt              }t        t        j                  ||      g d       t        t        j                  ||      g d       t        t        j                  ||      g d	       t        t        j                  ||      g d
       t        t        j                  ||      g d       t        t        j                  ||      g d       t        t        j                  ||      g d       t        t        j                  ||      g d       t        t        j                  ||      g d       t        t        j                  ||      g d       t        t        j                   ||      g d       t        t        j"                  ||      g d       t        t        j$                  ||      g d       t        t        j&                  |      g d       t        t        j(                  |      g d       t        t        j*                  |      g d       t        t        j,                  |      g d       t        t        j.                  |      g d       t        t        j0                  ||      g d       t        t        j2                  ||      g d       t        j2                  ||      }t5        t        j(                  |d                d|d<   t        |g d       t        t        j6                  ||      g d       t        j6                  ||      }t5        t        j(                  |d                d|d<   t        |ddt         j                   ddg       t        t        j8                  ||      g d       t        t        j8                  ||      g d       t        t        j:                  ||      g d       t        t        j:                  ||      ddt         j                   ddg       t        t        j<                  ||      g d       t        t        j>                  ||      g d       t        t        j@                  ||      g dg df       t        t        jB                  |      g d        t        t        jD                  |      g d!       t        t        jF                  |      g d"       t        t        jH                  |      |       t        t        jJ                  |      g d       t        t        jL                  |      g d#       t        t        jN                  |      |       t        t        jP                  |      g d$       t        t        jR                  |      g d%|f       t        t        jT                  |      g d&g d'f       t        t        jV                  |g d      g d(       y))*zTest the various ufuncs)r   r    rS   r   rS   r   )r   r   r    r   rA   r   r   r   )r   r   rA      r   )rS   r    r   r   )r   r   rS      r   )r        ?rS   r    g     T?)FFFTF)TTTFT)FTFFT)FTFTT)TFTFF)TFTTF)FTTTT)TTTTT)TFFFF)FFTFF)TTFFT)rS   r   r    r   rA   )r   r   rS   r   rA   rA   )r   r   r    r   r   )r   r    r    r   rS   r   )r   r   r    r   r   r   )r   r   rS   r    r   )r   r    r   r   rS   )r      r    r   	   )      r   r    g      ?r~   )r    r    r    r    r    )rS   r   r   )r   r    r    r    r    )r   r   r   r   r   )r   g      ?rR   rR   g      ?)rS   rA   r    rA   rS   )r   r   r   @      N),r!   r%   r   rW   rw   r   addsubtractmultiplydivideequal	not_equalless
less_equalgreatergreater_equallogical_and
logical_orlogical_xorlogical_notrr   rs   rt   ru   copysignmaximumr   minimumfmaxfminfloor_divide	remainderdivmodsquare
reciprocal	ones_like	conjugateabsolutenegativepositivesignmodffrexpldexp)r/   r   r5   cxs        r   test_half_ufuncszTestHalf.test_half_ufuncs  s    HH_G4HH%W5HHabffWbffa0@RVVAq\#34R[[A&(9:R[[A&(89RYYq!_&NORXXa^%GHR\\!Q')HIRWWQ]$EFR]]1a(*JKRZZ1%'HIR%%a+-MNR^^Aq)+JKR]]1a(*HIR^^Aq)+MNR^^A&(JKRXXa["DERXXa["DER[[^%EFRZZ]$FGR[[A&8RZZ1%7JJq!1!Q(RZZ1%'78JJq!1!QR"&&!Q/0RWWQ]O4RWWQ]O4RWWQ]$45RWWQ]RbffWa$;<R__Q*O<R\\!Q'9RYYq!_&HIRYYq\#45R]]1%'VWR\\!_o6R\\!_a(R[[^_5R[[^%89R[[^Q'RWWQZ!12RWWQZ/1!56RXXa[#@/"RSRXXa13FGrH   c                     t        j                  dt              }t        j                  dt              }t        d      }t        d      }t        j                  |d      j
                  t        k(  sJ t        j                  |d      j
                  t        k(  sJ t        j                  ||      j
                  t        k(  sJ |rt        nt        }t        j                  ||      j
                  |k(  sJ t        j                  ||      j
                  t        k(  sJ t        j                  ||      j
                  t        k(  sJ |rt        nt        }t        j                  |d      j
                  |k(  sJ t        j                  |d      j
                  |k(  sJ t        j                  ||      j
                  sJ t               t        j                  ||      j
                  sJ t               t        j                  ||      j
                  sJ t               t        j                  ||      j
                  sJ t               t        j                  ||      j
                  t        k(  sJ t        j                  ||      j
                  t        k(  sJ |rt        nt        }t        j                  ||      j
                  |k(  sJ t        j                  ||      j
                  t        k(  sJ y)z9Test that half gets coerced properly with the other typesr    r   r    rS   r}   N)r!   r%   r   r   powerr   r   )r/   weak_promotiona16a32b16b32rE   s          r   test_half_coercionzTestHalf.test_half_coercion  sA    hht7+hht7+ajajxxQ%%000xxS!''7222xxS!''7222!/gWxxS!'';666xxS!''7222xxS!''7222!/gWxxQ%%444xxS!'';666xxS!''00'xxS!''00'xxS!''00'xxS!''00'xxS!''7222xxS!''7222!/gWxxS!'';666xxS!''7222rH   armv5telzSee gh-413.)reasonz!fp exceptions don't work in wasm.c           	      @   t        j                  d      5  t        j                  dt              }t        j                  dt              }t        d      }t        d      }t	        dd	 ||       t	        dd
 ||       t	        dd ||       t	        dd ||       t	        dd ||       t	        dd ||       t	        dd ||       t	        dd ||       t	        dd t        d      t        d             t	        dd t        d      t        d             t	        dd t        d      t        d             t	        dd t        d      t        d             t	        dd t        d      t        d             t	        dd ||       t	        dd  ||       t	        dd! ||       t	        dd" ||       t	        dd# ||       t	        dd$ ||       t	        dd% ||       t	        dd& ||       t	        dd' t        d(      t        d)             t	        dd* t        d+      t        d)             t	        dt         j
                  t        d(      t        t         j                               t	        dt         j
                  t        d+      t        t         j                                t	        dt         j                  t        d(             t	        d,t         j                  t        t         j                        t        t         j                               t	        d,t         j                  t        t         j                               t	        d,t         j                  t        t         j                               t        d-      t        d.      z    t        d/      t        d      z   t        d      t        d0      z   t        j                  t        d+             t        j
                  t        d(      t        t         j                                t        j
                  t        d+      t        t         j                               t        j
                  t        t         j                        t        d1             t        j
                  t        t         j                         t        d1             t        j
                  t        d1      t        t         j                               t        j
                  t        t         j                        t        d1             t        d      t        d0      z   t        d      t        d0      z   t        d      t        d      z   t        d2      t        d      z   d d d        y # 1 sw Y   y xY w)3Nraisero   )-C6?r   )     @r   r   	underflowc                     | |z  S N r   r5   s     r   <lambda>z(TestHalf.test_half_fpe.<locals>.<lambda>  
    qs rH   c                     | |z  S r   r   r   s     r   r   z(TestHalf.test_half_fpe.<locals>.<lambda>  r   rH   c                     | |z  S r   r   r   s     r   r   z(TestHalf.test_half_fpe.<locals>.<lambda>  r   rH   c                     | |z  S r   r   r   s     r   r   z(TestHalf.test_half_fpe.<locals>.<lambda>  r   rH   c                     | |z  S r   r   r   s     r   r   z(TestHalf.test_half_fpe.<locals>.<lambda>  r   rH   c                     | |z  S r   r   r   s     r   r   z(TestHalf.test_half_fpe.<locals>.<lambda>  r   rH   c                     | |z  S r   r   r   s     r   r   z(TestHalf.test_half_fpe.<locals>.<lambda>  r   rH   c                     | |z  S r   r   r   s     r   r   z(TestHalf.test_half_fpe.<locals>.<lambda>   r   rH   c                     | |z  S r   r   r   s     r   r   z(TestHalf.test_half_fpe.<locals>.<lambda>  r   rH   r   i   c                     | |z  S r   r   r   s     r   r   z(TestHalf.test_half_fpe.<locals>.<lambda>  r   rH   r   c                     | |z  S r   r   r   s     r   r   z(TestHalf.test_half_fpe.<locals>.<lambda>  r   rH   g     ?rS   c                     | |z  S r   r   r   s     r   r   z(TestHalf.test_half_fpe.<locals>.<lambda>  r   rH   g     c                     | |z  S r   r   r   s     r   r   z(TestHalf.test_half_fpe.<locals>.<lambda>	  r   rH   g     ?r   overflowc                     | |z  S r   r   r   s     r   r   z(TestHalf.test_half_fpe.<locals>.<lambda>  
    ac rH   c                     | |z  S r   r   r   s     r   r   z(TestHalf.test_half_fpe.<locals>.<lambda>  r  rH   c                     | |z  S r   r   r   s     r   r   z(TestHalf.test_half_fpe.<locals>.<lambda>  r  rH   c                     | |z  S r   r   r   s     r   r   z(TestHalf.test_half_fpe.<locals>.<lambda>  r  rH   c                     | |z  S r   r   r   s     r   r   z(TestHalf.test_half_fpe.<locals>.<lambda>  r  rH   c                     | |z  S r   r   r   s     r   r   z(TestHalf.test_half_fpe.<locals>.<lambda>  r  rH   c                     | |z  S r   r   r   s     r   r   z(TestHalf.test_half_fpe.<locals>.<lambda>  r  rH   c                     | |z  S r   r   r   s     r   r   z(TestHalf.test_half_fpe.<locals>.<lambda>  r  rH   c                     | |z   S r   r   r   s     r   r   z(TestHalf.test_half_fpe.<locals>.<lambda>  r  rH   rq      c                     | |z
  S r   r   r   s     r   r   z(TestHalf.test_half_fpe.<locals>.<lambda>  r  rH   r   r   i      g       ?r   r   g     )
r!   r$   r%   r   r   rV   rW   rv   r   rw   )r/   sx16bx16sy16by16s        r   test_half_fpezTestHalf.test_half_fpe  s   
 [[W% >	/88G73D88F'2D4=D3<D k?D$Gk?D$Gk?D$Gk?D$Gk?D$Gk?D$Gk?D$Gk?D$Gk?-4W-=wu~Ok?-4X->Pk?-4^-DgajRk?-4_-EwqzSk?-4^-DgajR j/4Fj/4Fj/4Fj/4Fj/4Fj/4Fj/4Fj/4Fj/-4U^WR[Jj/-4V_gbkKj",,PRPVPVXj",,RTRXRXQXIYZj"**genE iGBFFOWRVV_UiWRVV_EiWRVV_E EN72;&FOGAJ&FOGEN*JJwv'LL"&&)9:LL'"&&/:LL'!*5LL"&&)71:6LLWRVV_5LL'!*5FOGEN*GWU^+M"71:-N#GAJ.}>	/ >	/ >	/s   U4VVc                      G d d      }t        j                  dt              } |       }|j                  |_        t        j                  |      }t        |j                  t        k(         t        ||       y)z5Test that half is compatible with __array_interface__c                       e Zd Zy)1TestHalf.test_half_array_interface.<locals>.DummyN)__name__
__module____qualname__r   rH   r   Dummyr  4  s    rH   r  r   r   N)r!   rC   r   __array_interface__r%   r   r   r   )r/   r  r   r5   r   s        r   test_half_array_interfacez"TestHalf.test_half_array_interface2  s[    	 	 GGD(G ! 5 5HHQK7"#QrH   N)!r  r  r  r0   r;   pytestmarkparametrizerG   rK   r!   r   r   _no_nep50_warningr`   uint32uint64rm   ry   r   r   r   r   r   r   r   r   skipifplatformmachiner
   r  r   r   rH   r   r   r      s   /.!F [[[3*5( 6( [[[3*5O 6O [[X';<[[W&:;[[YRZZ(@AR31  B < =31j [[:!zz299b9!zz299b9;<E<E(5<*!>"3HC.&'P+9Z>H@ R3 3: [[(((*j8,  .[[B  D?/D.?/B
rH   r   )r(  r!  numpyr!   r   r   r   r   numpy.testingr   r   r	   r
   r   r   r   rH   r   <module>r,     s,       3 3 H HDi irH   