1jddlZddlmZddlmZddlZdZdZej edej dd geej d d Z dS) N)param)IS_WASMc #KtdddVtdddVtdddVttjddd Vttjddd VttjdddVtd d zd dVtdd dVttjdd d Vttjdd d Vtjtjj}tjtjtjdjd}||z tjdjkr5ttjtjjddVtdddVtdddVtdddVttjdddVtj d5tj dD]t}tj tj fD]Y}tj dD]D}tj |}||}t|||d |VEZu d!d!d!d!S#1swxYwYd!S)"a? Generate value+dtype pairs that generate floating point errors during casts. The invalid casts to integers will generate "invalid" value warnings, the float casts all generate "overflow". (The Python int/float paths don't need to get tested in all the same situations, but it does not hurt.) ipfloat16z int-to-f2)id70000z str-to-f2g@z float-to-f2zlongdouble-to-f2z double-to-f2 dfloat32z int-to-f4g}Ô%ITgu<7~f8rfloat64zlongdouble-to-f8gutjd}|d<dS)Nrr)remptyarrrr!s r$ assignmentz$check_operations..assignment=s$(1E***CCFFFc^tjd}|dS)Nr)r*)rr+fillr,s r$r1zcheck_operations..fillCs*(1E***C HHUOOOOOr/cbtjd}tj|ddSNr)r*unsafe)castingrr+copytor,s r$ copyto_scalarz'check_operations..copyto_scalarIs4hq&&& #uh//////r/ctjd}tj|tjgddSr3rr+r7arrayr,s r$r7z check_operations..copytoOsEhq&&& #rxu 566IIIIIIr/chtjd}tj|dgddSNr)r*r4TFT)r5wherer6r,s r$copyto_scalar_maskedz.check_operations..copyto_scalar_maskedUsIhq&&& #uh+++ - - - - - -r/ctjd}tj|tjgdgddSr=r:r,s r$ copyto_maskedz'check_operations..copyto_masked\sZhq&&& #rxu 566+++ - - - - - -r/c\tjgdS)N)rr;astype)rr!sr$ direct_castz%check_operations..direct_castcs. %&''..u55555r/c~tjddddddddf}|dS)N)rGrG) fill_value)rfullrDr,s r$direct_cast_nd_stridedz0check_operations..direct_cast_nd_stridedhsHgiE222111ccc1119= 5r/cjtjd}tjg|gd<dS)Nr)r*r>rr+r;r,s r$boolean_array_assignmentz2check_operations..boolean_array_assignmentns<hq&&&#%8UEN#;#;      r/cntjd}tjg}||ddg<dS)Nr)r*rrMr-valuesrr!s r$integer_array_assignmentz2check_operations..integer_array_assignmentts;hq&&&5%.))QF r/cptjd}tjg}||ddg<dS)N)rGr)r*rrIrMrQs r$&integer_array_assignment_with_subspacez@check_operations..integer_array_assignment_with_subspace|s>hvU+++5%/00QF r/cztjd}tjg}||jdd<dS)N)r)r*)rr+r;flatrQs r$flat_assignmentz)check_operations..flat_assignments@ht5)))5%/00 r/N)kind)rr!r.r1r8r7r@rBrErKrNrSrUrXs`` r$check_operationsrZ6s-  zS             000000 JJJJJJ LLL------ ------ 666666  !   <<<<<< #""" #""" 1000 r/zno wasm fp exception support)reasonr!rzignore::numpy.ComplexWarningctj|}t||D]}tj|}|jdvrdnd}t jt |5|dddn #1swxYwYtjd5t jt|5|dddn #1swxYwYdddn #1swxYwYdS)Niuinvalidoverflow)matchraise)all) rrrZrYpytestwarnsRuntimeWarningrraisesFloatingPointError)rr! operationr`s r$!test_floatingpoint_errors_castingris HUOOE%eU33   "Z4// Z \. 6 6 6   IKKK               [W % % %  1???                                   sH# A::A> A> C$6 C  C$ C C$C C$$C( +C( ) rcr numpy.testingrnumpyrr%rZmarkskipif parametrizefilterwarningsrir/r$rqs !!!!!!,N,N,N^SSSjG$BCC'7+->->-@-@AA:;;  <;BADC   r/