ךFnddlZddlZddlZddlmZmZmZmZddlm Z m Z m Z m Z dZ GddZdS)N)uint16float16float32float64)assert_ assert_equal_OLD_PROMOTIONIS_WASMc ||i|tdd|zdS#t$rB}tt||dkd|zYd}~dSd}~wwxYw)NFz%Did not raise floating point %s errorr)rFloatingPointErrorstrfind)strmatchcallableargskwargsexcs n/builddir/build/BUILD/cloudlinux-venv-1.0.10/venv/lib64/python3.11/site-packages/numpy/core/tests/test_half.pyassert_raises_fper sD$!&!!! 7(B D D D D D DDDC h''1,7(B D D D D D D D D DDs A+7A&&A+cbeZdZdZdZejdddgdZejdddgdZ ejdgd ejd gd ejd e j e j ge j d Zejgd e j e jdfe j e jdfgdZdZdZdZdZdZdZdZdZe j dZejejdkdejeddZdZ d S)!TestHalfc tjdt|_t|j_tj|jt|_tj|jt|_ tj tjdddttjdddtf|_ t|j _tj|j t|_ tj|j t|_|j dd|_|j dd|_|jdd|_dS) Nidtypeiri|)nparangerall_f16rrarrayrall_f32rall_f64 concatenate nonan_f16 nonan_f32 nonan_f64 finite_f16 finite_f32 finite_f64)selfs r setup_methodzTestHalf.setup_methodsy777 $ x G<<< x G<<< !#662V!L!L!L!#661F!K!K!K!MNN '$.@@@$.@@@.2..2..2.cftj|jt}t |jt|ttj|jt}t |jt|ttj|j tj }tj|t}t |j t|ttj dd}tj|t}tj|t}t ||dS)z[Checks that all 16-bit values survive conversion to/from 32-bit and 64-bit floatriiN) rr!r"rrr viewrr#r% longdoublerint)r+ba_ldi_inti_f16js rtest_half_conversionszTestHalf.test_half_conversions(sY HT\ 1 1 1T\&&V&44VV&V)) + + + HT\ 1 1 1T\&&V&44VV&V)) + + + xbm<<< HT ) ) )T^((v(66VV&V)) + + + %&&g... HU# & & &UAr- string_dtSUcHtj|d}tjtj||ksJtj|tj|ksJtjdtj|}|j|ksJdS)N32r)rr promote_typesronesastype)r+r8 expected_dtarrs rtest_half_conversion_to_stringz'TestHalf.test_half_conversion_to_stringFsh)///00  I66+EEEE 2:66+EEEEgarz***11)<<yK''''''r-ctjd|}|tjtjdtjksJdS)Nz3.1416rgH.! @)rr!r@r)r+r8strings r test_half_conversion_from_stringz)TestHalf.test_half_conversion_from_stringPsL()444}}RZ((BHV2:,N,N,NNNNNNNr-offset)Nupdownshiftfloat_tctjtjtjjtj}tjd|dztj}|tj|}|dkr!d|dd|ddzddz}n1|dkr!d|dd|ddzddz}n |dd}|dkr)tj||tj }n/|dkr)tj||tj }|tjtj}|dd }|dkr |dkrd} n|dkr |dkrd} nd} |7|dddtj d xx| z cc<n-|tj d xx| z cc<t||dS) NrrrrH?rrI.) rrfinfomaxr/rrr@ nextafterinfcopyint16r) r+rKrJrG max_pattern f16s_patterns f16s_float res_patterns cmp_patterns shift_patterns rtest_half_conversion_roundingz&TestHalf.test_half_conversion_roundingUs: j"*!5!5!9::?? JJ  ![]")DDD "'' 33::7CC  D== 3B3*QRR. @!""EEJJ f__ 3B3*QRR. @#2#FFJJ#AbD)J T>>j''"&//BBJJ v  j''26'2B2BCCJ"((4499")DD %QrT*//11 F??v~~MM d]]v//MMM > A  # #BH - -c 2 2 2m C 2 2 2 2   bh ' ' , , , = , , ,\<00000r-)rKuint_tbits4ctjdtj|}|dksJ||dz }|tjdksJt |D]`}|||d|zz}||}|tj|ksJadS)Nrp>rNr)rrr/rr@range) r+rKr\r]smallest_valuerounded_to_zeroilarger_pattern larger_values r(test_half_conversion_denormal_round_evenz1TestHalf.test_half_conversion_denormal_round_evens1**2:66==gFF'''')771::5%%bj11Q6666t E EA,11&99FF16NNJN)..w77L&&rz22nDDDDD  E Er-ctjd5ttj|jtj|jttj|jtj|jttj|jtj|jttj|jtj|jttj tdtj ttj }t|j|k t||jk t|j|kt||jkt|j|k t||jk t|j|k t||jk t|j|k t||jk t|j|k t||jk ddddS#1swxYwYdS)Nignoreall)rerrstaterisnanr r"isinfisfinitesignbitspacingrrRnanranyrl)r+rts rtest_nans_infszTestHalf.test_nans_infss [X & & & 5 5 $,//$,1G1G H H H $,//$,1G1G H H H T\22BK 4M4M N N N DL112:dl3K3K L L L GENN33RV < < <"&//C ,11333 4 4 4  ,11333 4 4 4 T\S(--// 0 0 0 SDL(--// 0 0 0 +00222 3 3 3 t|+00222 3 3 3 ,11333 4 4 4  ,11333 4 4 4 +00222 3 3 3 t|+00222 3 3 3 ,11333 4 4 4  ,11333 4 4 47 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5sM M00M47M4ctjddddddddd d d d d dtjtj g}tjgdt}t|_t ||dS)z,Confirms a small number of known half values?@gg?T?rm ?ragprg)i<ii@iif.iU5i{iirir|rrN)rr!rRrrrrr+ar2s rtest_half_valueszTestHalf.test_half_valuess Hc44%~V + +frvg' ( ( H&&&.4 5 5 5Qr-ctjgdt}dddddddtjg}tjd 5tj|t }d d d n #1swxYwYt ||tj|t}tjd 5tj|t }d d d n #1swxYwYt ||d S) z7Checks that rounding when converting to half is correct)g`>g`>gP>g?g?g?iirragg?rxrmrj)overN)rr!rrRrnrrr)r+rroundedr2s rtest_half_roundingzTestHalf.test_half_roundings H$ % % %!6[h ' ' ' + +'***A + + + + + + + + + + + + + + +Q    HQg & & & [h ' ' ' + +'***A + + + + + + + + + + + + + + +Q     s$A//A36A3:C""C&)C&c |jt}d|dzdz z}tj|dzdz tjdz }|dzdz}||d kxxd z cc<d ||d k<||zd |zz}tj|j|kd }t|d kr@|d }t|j|d|j||j|||fztj|j |kd }t|d krB|d }t|j |d|j||j |||fzdSdS)z_Take every finite float16, and check the casting functions with a manual conversion.rryrr igP?irirzrz,First non-equal is half value %x -> %g != %gN) r(r/rrr!int32nonzeror)lenrr*) r+a_bitsa_sgna_expa_mana_manuala32_fail bad_indexa64_fails rtest_half_correctnesszTestHalf.test_half_correctnesss %%F%33&6/b01&6/b0AAABF&J. eslq !esl5=3:-:do9::1= x==A    I (?!_Y7!_Y7%i022 3 3 3 :do9::1= x==A    I (?!_Y7!_Y7%i022 3 3 3 3 3  r-c|jddd}tj|t}||t ||t|dd|ddkt|dd|ddk t|dd|ddkt|dd|ddk t tj |dd|ddkdj |j dz t tj |dd|ddkdj |j dz dS)z'Make sure comparisons are working rightNrrrrrN) r%rSrr!rsortrrrlrursizers rtest_half_orderingzTestHalf.test_half_orderings N44R4 % % ' ' HQg & & &  Q 3B31QRR5%%''(((QssVae^((***+++122!CRC&%%''(((QqrrUQssV^((***+++RZ#2#122//27BBBRZ!""#2#//27BBBBBr-c (ttjdttjdttjdt}|dt|tjdttjgdt}t| dgd| }t| dgdtjdddt}tjd t}ttj ||d tjdtj d dd d ddgt}t|dtjdtj d tj d tjddgt}t|dtjdt}t!dD]%}t|||&dS)zTest the various ArrFuncsrr)r)rrrg#B ǻrragT>r)rNrrM)_g)@g333333@g@g(@rN)rrrrrzerosfillr?r!rbyteswap newbyteorderdotrRargmaxrtrbitem)r+rr2res rtest_half_funcszTestHalf.test_half_funcs2s8 RYr111Yr111 3 3 3 HT ) ) ) q QG444555 H???w O O OQYY[[^YY   JJLL % % ' 'QYY[[^YY    IaS 0 0 0 GE ) ) )RVAq\\    Ha"&"c5#sDA Q Q QQXXZZ    Ha"&"bfeRVS$Gw W W WQXXZZ    Ib ( ( (r ' 'A A & & & & ' 'r-c tjdt}tjtjft }tjtjft }|t }ttj |dd|dd|ddz ttj |dd||ddttj |d| |d ttj |dd| |ddttj |||dttj | ||d ttj |||ttj || |dttj | ||d ttj | | | ttj |||dttj |||dttj |||ttj |||ttj ||||dz}ttj |dtj |dttj |dd|dd|ddz ttj |d||d ttj |dd||ddttj |dd| |ddttj |||d ttj | ||dttj |||dttj |||ddS)z Test np.spacing and np.nextafterrrNrrrr) rrrr!rRrrtr/rrsrQ)r+rhinfhnana_f16s rtest_spacing_nextafterzTestHalf.test_spacing_nextafterYs IfF + + +x 111x 111W%%RZcrc ++U122YuSbSz-ABBBR\%*d33U122Y???R\%(TE22U1XI>>>R\%)dU33U3B3Z@@@R\$..b :::R\4%//%)<<<R\$--t444R\$..b :::R\4%..r ;;;R\4%$//$777R\%..Q888R\$..Q888R\$--t444R\$--t444R\$--t444 V RZa))2:eAh+?+?@@@RZabb **E#2#JuQRRy,@AAAR\%(D11E!H9===R\%)T22E#2#J???R\%*te44eABBi@@@R\$..r ;;;R\4%//r;;;R\%..Q888R\$..Q88888r-c tjgdt}tjgdt}tjddtj tjdgt}t tj||gdt tj||gdt tj||gd t tj ||gd t tj ||gd t tj ||gd t tj ||gd t tj ||gdt tj||gdt tj||gdt tj||gdt tj||gdt tj||gdt tj|gdt tj|gd t tj|gdt tj|gdt tj|gdt tj||gdt tj||gdtj||}t5tj|dd|d<t |gdt tj||gdtj||}t5tj|dd|d<t |ddtj ddgt tj||gdt tj||gdt tj||gdt tj||ddtj ddgt tj||gdt tj||gdt tj ||gdgdft tj!|gd t tj"|gd!t tj#|gd"t tj$||t tj%|gdt tj&|gd#t tj'||t tj(|gd$t tj)|gd%|ft tj*|gd&gd'ft tj+|gdgd(d)S)*zTest the various ufuncs)rrrNrrNr)rrrrr=rrr)rrr=r)rNrrr)rrrNr)r?rNrgT?)FFFTF)TTTFT)FTFFT)FTFTT)TFTFF)TFTTF)FTTTT)TTTTT)TFFFF)FFTFF)TTFFT)rNrrrr=)rrrNrr=r=)rrrrr)rrrrrNr)rrrrrr)rrrNrr)rrrrrN)rrr )rrg?r{)rrrrr)rNrr)rrrrr)rrrrr)rg?rMrMg?)rNr=rr=rN)rrr@ N),rr!rrRrtraddsubtractmultiplydivideequal not_equalless less_equalgreater greater_equal logical_and logical_or logical_xor logical_notrorprqrrcopysignmaximumrminimumfmaxfmin floor_divide remainderdivmodsquare reciprocal ones_like conjugateabsolutenegativepositivesignmodffrexpldexp)r+rr2cxs rtest_half_ufuncszTestHalf.test_half_ufuncss H___G 4 4 4 H%%%W 5 5 5 HabfWbfa0 @ @ @RVAq\\#3#3#3444R[A&&(9(9(9:::R[A&&(8(8(8999RYq!__&N&N&NOOORXa^^%G%G%GHHHR\!Q'')H)H)HIIIRWQ]]$E$E$EFFFR]1a((*J*J*JKKKRZ1%%'H'H'HIIIR%a++-M-M-MNNNR^Aq))+J+J+JKKKR]1a((*H*H*HIIIR^Aq))+M+M+MNNNR^A&&(J(J(JKKKRXa[["D"D"DEEERXa[["D"D"DEEER[^^%E%E%EFFFRZ]]$F$F$FGGGR[A&&888RZ1%%777 Jq!  1!Q(((RZ1%%'7'7'7888 Jq!  1!QR"&!Q/000RWQ]]OOO444RWQ]]OOO444RWQ]]$4$4$4555RWQ]]RbfWa$;<<<R_Q**OOO<<<R\!Q''999RYq!__&HIIIRYq\\#4#4#4555R]1%%'V'V'VWWWR\!__ooo666R\!__a(((R[^^___555R[^^%8%8%8999R[^^Q'''RWQZZ!1!1!1222RWQZZ///1!5666RXa[[#@#@#@///"RSSSRXa113F3F3FGGGGGr-ctjdt}tjdt}td}td}tj|djtksJtj|djtksJtj||jtksJ|rtnt}tj||j|ksJtj||jtksJtj||jtksJ|rtnt }tj|dj|ksJtj|dj|ksJtj||jsJttj||jsJttj||jsJttj||jsJttj||jtksJtj||jtksJ|rtnt}tj||j|ksJtj||jtksJdS)z9Test that half gets coerced properly with the other typesrrrrNrzN)rr!rrpowerrr)r+weak_promotiona16a32b16b32rAs rtest_half_coercionzTestHalf.test_half_coercions~ht7+++ht7+++ajjajjxQ%0000xS!!'72222xS!!'72222!/z(TestHalf.test_half_fpe.. qsr-c ||zSrrrs rrz(TestHalf.test_half_fpe..rr-c ||zSrrrs rrz(TestHalf.test_half_fpe..rr-c ||zSrrrs rrz(TestHalf.test_half_fpe..rr-c ||z Srrrs rrz(TestHalf.test_half_fpe..rr-c ||z Srrrs rrz(TestHalf.test_half_fpe..rr-c ||z Srrrs rrz(TestHalf.test_half_fpe..rr-c ||z Srrrs rrz(TestHalf.test_half_fpe..rr-c ||z Srrrs rrz(TestHalf.test_half_fpe..rr-r}ic ||z Srrrs rrz(TestHalf.test_half_fpe..rr-r~c ||z Srrrs rrz(TestHalf.test_half_fpe..rr-g?rNc ||z Srrrs rrz(TestHalf.test_half_fpe..rr-gc ||z Srrrs rrz(TestHalf.test_half_fpe..rr-g?roverflowc ||zSrrrs rrz(TestHalf.test_half_fpe.. acr-c ||zSrrrs rrz(TestHalf.test_half_fpe..rr-c ||zSrrrs rrz(TestHalf.test_half_fpe..rr-c ||zSrrrs rrz(TestHalf.test_half_fpe..rr-c ||z Srrrs rrz(TestHalf.test_half_fpe..rr-c ||z Srrrs rrz(TestHalf.test_half_fpe.. rr-c ||z Srrrs rrz(TestHalf.test_half_fpe.. rr-c ||z Srrrs rrz(TestHalf.test_half_fpe.. rr-c ||zSrrrs rrz(TestHalf.test_half_fpe.. rr-rmc ||z Srrrs rrz(TestHalf.test_half_fpe..rr-r|invalidi g ?rrg) rrnr!rrrQrRrsrrt)r+sx16bx16sy16by16s r test_half_fpezTestHalf.test_half_fpes [W % % %> /> /8G7333D8F'222D4==D3<-> P P P k??-4^-D-Dgajj R R R k??-4_-E-Ewqzz S S S k??-4^-D-Dgajj R R R j//4 F F F j//4 F F F j//4 F F F j//4 F F F j//4 F F F j//4 F F F j//4 F F F j//4 F F F j//-4U^^WR[[ J J J j//-4V__gbkk K K K j",PRPV X X X j",RTRXQXIYIY Z Z Z j"*genn E E E iGBFOOWRV__ U U U iWRV__ E E E iWRV__ E E E ENN72;; & & FOOGAJJ & & FOOGENN * * Jwv ' ' ' L"&)9)9 : : : L'"&// : : : L'!** 5 5 5 L"&))71:: 6 6 6 LWRV__ 5 5 5 L'!** 5 5 5 FOOGENN * * G  WU^^ + + M " "71:: - - N # #GAJJ . .}> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /sY)Z  ZZcGdd}tjdt}|}|j|_tj|}t |jtkt||dS)z5Test that half is compatible with __array_interface__ceZdZdS)1TestHalf.test_half_array_interface..DummyN)__name__ __module__ __qualname__rr-rDummyr+s Dr-rrrN)rr?r__array_interface__r!rrr)r+rrr2rs rtest_half_array_interfacez"TestHalf.test_half_array_interface)s         GD ( ( ( EGG ! 5 HQKK7"###Qr-N)!rrrr,r7pytestmark parametrizerCrFrrr_no_nep50_warningr[uint32uint64rhrvrrrrrrrrskipifplatformmachiner rrrr-rrrs///(< [[3*55((65( [[3*55OO65O [X';';';<< [W&:&:&:;; [YRZ(@AAR3131BA<;=<31j [:::!z29b9!z29b9;<<EE<<E(555<*!!!>"3"3"3HCCC.%'%'%'N+9+9+9Z>H>H>H@R333: [((**j8,.. [BDD?/?/DD..?/B     r-r)r&rnumpyrrrrr numpy.testingrrr r rrrr-rr*s 333333333333HHHHHHHHHHHHDDD``````````r-