Ë
    z¥üpÛã                   óP  — d dl Zd dlmc mZ d dlZd dlmZ d dl	m
Z
 d dlmZmZmZ d dlmZ d dlmZmZ d dlmZ d dl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#m$Z$m%Z%m&Z& d dl'm(Z(m)Z)m*Z* d dl+m,Z, d dl-m.Z.m/Z/ d dl0m1Z1m2Z2 e3e4z  e
z  ez  Z5 G d„ de/e3   «      Z6e1 e2d¬«      	 	 d&de3dz  de3dz  de/e3   fd„«       «       Z7 G d„ de/e4   «      Z8e1 e2d¬«      	 	 d&dddddddœde5dz  de5dz  de9dz  de9dz  de9dz  ded    d!e9d"e9de/e4   fd#„«       «       Z: G d$„ d%e/e4   «      Z;y)'é    N)ÚDecimal)ÚFraction)ÚAnyÚLiteralÚcast)Úreject)ÚCannotInvertÚInvalidArgument)ÚChoiceT)ÚConjectureData)Úget_float_predicate_boundsÚget_integer_predicate_bounds)ÚSMALLEST_SUBNORMALÚfloat_ofÚfloat_to_intÚint_to_floatÚis_negativeÚ	next_downÚnext_down_normalÚnext_upÚnext_up_normalÚsign_aware_lteÚwidth_smallest_normals)Ú
check_typeÚcheck_valid_boundÚcheck_valid_interval)Únothing)ÚSampledFromStrategyÚSearchStrategy)Ú	cacheableÚdefines_strategyc                   óx   ‡ — e Zd Zdedz  dedz  ddfˆ fd„Zdefd„Zdedefd„Zd	e	de
ed
f   fd„Zˆ fd„Zˆ xZS )ÚIntegersStrategyÚstartNÚendÚreturnc                 ó–  •— t         ‰| �  «        g }t        |t        «      }|}|sd }||u }|}|�sÊddt	        j
                  «       v st        j                  t        «      rt        j                  t        «      nddt	        j
                  «       v st        j                  |«      rt        j                  |«      nddt	        j
                  «       v st        j                  t        «      rt        j                  t        «      ndt        j                  |«      dœz  }|j                  |«       |sŒt        j                  dfd|f«      dt	        j
                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      dœz  }	d	d
|	iz  }
|j                  |
«       t        j                  |d«      i z  }dd|iz  }t        t        j                  |«      «      ‚d x}x}x}x}}g }t        |t        «      }|}|sd }||u }|}|�sÊddt	        j
                  «       v st        j                  t        «      rt        j                  t        «      nddt	        j
                  «       v st        j                  |«      rt        j                  |«      nddt	        j
                  «       v st        j                  t        «      rt        j                  t        «      ndt        j                  |«      dœz  }|j                  |«       |sŒt        j                  d|fd||f«      dt	        j
                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      dœz  }	d	d
|	iz  }
|j                  |
«       t        j                  |d«      i z  }dd|iz  }t        t        j                  |«      «      ‚d x}x}x}x}}g }d }||u }|}|sd }||u }|}|s||k  }|}|�st        j                  d|fd||f«      dt	        j
                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      dœz  }dd|iz  }|j                  |«       |�sGt        j                  d|fd|f«      dt	        j
                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      dœz  }dd|iz  }|j                  |«       |s¹t        j                  dfd||f«      dt	        j
                  «       v st        j                  |«      rt        j                  |«      nddt	        j
                  «       v st        j                  |«      rt        j                  |«      nddœz  }dd|iz  }|j                  |«       t        j                  |d«      i z  }dd|iz  }t        t        j                  |«      «      ‚d x}x}x}x}x}x}}|| _        || _        y )Nz.%(py6)s
{%(py6)s = %(py2)s(%(py3)s, %(py4)s)
}Ú
isinstancer$   Úint)Úpy2Úpy3Úpy4Úpy6)Úis)z%(py8)s is %(py11)s)Úpy8Úpy11z%(py13)sÚpy13é   zassert %(py16)sÚpy16r%   )z%(py2)s is %(py5)s)r*   Úpy5z%(py7)sÚpy7)z%(py9)s is %(py12)s)Úpy9Úpy12z%(py14)sÚpy14)ú<=)z%(py16)s <= %(py18)s)r3   Úpy18z%(py20)sÚpy20zassert %(py23)sÚpy23)ÚsuperÚ__init__r(   r)   Ú@py_builtinsÚlocalsÚ
@pytest_arÚ_should_repr_global_nameÚ	_safereprÚappendÚ_call_reprcompareÚ_format_boolopÚAssertionErrorÚ_format_explanationr$   r%   )Úselfr$   r%   Ú@py_assert1Ú@py_assert5Ú@py_assert0Ú@py_assert10Ú@py_assert9Ú@py_format7Ú@py_format12Ú@py_format14Ú@py_format15Ú@py_format17Ú@py_assert4Ú@py_assert3Ú@py_assert11Ú@py_assert17Ú@py_format6Ú@py_format8Ú@py_format13Ú@py_format19Ú@py_format21Ú@py_format22Ú@py_format24Ú	__class__s                           €úl/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/hypothesis/strategies/_internal/numbers.pyr>   zIntegersStrategy.__init__6   s7  ø€ Ü‰ÑÔÙ6Œz˜%¤Ó%Ð6Ð%Ð6Ñ%°$Ð6¨°$¨×6×6×6×6×6Ó6Œz×6×6Ó6Œz×6×6×6×6×6Ò6˜%×6×6Ó6˜%×6×6×6×6×6Ò6¤×6×6Ó6¤×6×6Ô6Ð%×6×6×6Ñ6Ñ%×6×6Ò6¨°$×6×6×6×6×6Ñ6¨×6×6Ó6¨×6×6Ô6°$×6×6×6×6×6×6×6×6×6×6×6×6×6Ð6Ù2Œz˜#œsÓ#Ð2Ð#Ð2Ñ#¨dÐ2 s¨d {×2×2×2×2×2Ó2Œz×2×2Ó2Œz×2×2×2×2×2Ò2˜#×2×2Ó2˜#×2×2×2×2×2Ò2œs×2×2Ó2œs×2×2Ô2Ð#×2×2×2Ñ2Ñ#×2×2Ò2 s¨d×2×2×2×2×2Ñ2 s×2×2Ó2 s×2×2Ô2¨d×2×2×2×2×2×2×2×2×2×2×2×2×2Ð2Ù;˜Ð;ˆu˜ˆ}Ô; tÐ;  t Ô;¨u¸©|×;×;×;Ð;ˆu˜×;×;×;×;×;Ñ;ˆu×;×;Ó;ˆu×;×;Ô;˜×;×;×;×;×;×;Ö;  t×;×;×;×;×;Ñ; ×;×;Ó; ×;×;Ô; t×;×;×;×;×;×;Õ;¨u¸×;×;×;×;×;Ñ;¨u×;×;Ó;¨u×;×;×;×;×;Ò;¸×;×;Ó;¸×;×;×;×;×;×;×;×;×;×;×;×;×;Ö;ØˆŒ
Øˆ�ó    c                 óÞ   — | j                   €| j                  €y| j                  €d| j                   › d�S | j                   €d| j                  › d�S d| j                   › d| j                  › d�S )Nz
integers()zintegers(min_value=ú)zintegers(max_value=z	integers(ú, )r$   r%   ©rI   s    r`   Ú__repr__zIntegersStrategy.__repr__>   so   € Ø�:‰:Ð $§(¡(Ð"2ØØ�8‰8ÐØ(¨¯©¨°AÐ6Ð6Ø�:‰:ÐØ(¨¯©¨
°!Ð4Ð4Ø˜4Ÿ:™:˜, b¨¯©¨
°!Ð4Ð4ra   Údatac                 ó.  — d }| j                   �`| j                  �T| j                   | j                  z
  dkD  r8| j                  d| j                  dz   d| j                   dz
  d| j                   di}|j                  | j                  | j                   |¬«      S )Né   g      �?r2   g      €?)Ú	min_valueÚ	max_valueÚweights)r%   r$   Údraw_integer)rI   rg   rl   s      r`   Údo_drawzIntegersStrategy.do_drawG   sŽ   € àˆà�H‰HÐ Ø—
‘
Ð&Ø—‘˜4Ÿ:™:Ñ%¨Ò+ð —
‘
˜WØ—
‘
˜Q‘ Ø—‘˜1‘˜wØ—‘˜7ð	ˆGð × Ñ Ø—j‘j¨D¯H©H¸gð !ó 
ð 	
ra   Úvalue.c                 ó8  — t        |t        «      rt        |t        «      rt        |›d�«      ‚| j                  �)|| j                  k  rt        |›d| j                  ›�«      ‚| j
                  �)|| j
                  kD  rt        |›d| j
                  ›�«      ‚|fS )Nz is not an integerz is below min_value=z is above max_value=)r(   r)   Úboolr	   r$   r%   ©rI   ro   s     r`   Ú_invertzIntegersStrategy._invertZ   s�   € Ü˜%¤Ô%¬°E¼4Ô)@Ü % Ð*<Ð=Ó>Ð>Ø�:‰:Ð! e¨d¯j©jÒ&8Ü % Ð*>¸t¿z¹z¸nÐMÓNÐNØ�8‰8Ð E¨D¯H©HÒ$4Ü % Ð*>¸t¿x¹x¸lÐKÓLÐLØˆxˆra   c                 ó  •— |t         j                  u r| S |t         j                  t         j                  fv r
t	        «       S t        |«      \  }}| j                  | j                  }}d|v r"t        |d   |€t         j                   n|«      }d|v r!t        |d   |€t         j                  n|«      }|| j                  k7  s|| j                  k7  r%|�|�||kD  r
t	        «       S  t        | «      ||«      } |€| S t        ‰| �5  |«      S )Nrj   rk   )ÚmathÚisfiniteÚisinfÚisnanr   r   r$   r%   ÚmaxÚinfÚminÚtyper=   Úfilter)rI   Ú	conditionÚconstraintsÚpredr$   r%   r_   s         €r`   r}   zIntegersStrategy.filterc   só   ø€ ØœŸ™Ñ%ØˆKØœŸ™¤T§Z¡ZÐ0Ñ0Ü“9ÐÜ8¸ÓCÑˆ�Tà—Z‘Z §¡ˆsˆØ˜+Ñ%Ü˜ KÑ0¸u¸}´4·8±8±)ÐRWÓXˆEØ˜+Ñ%Ü�k +Ñ.¸C¸K´·²ÈSÓQˆCà�D—J‘JÒ #¨¯©¢/ØÐ  S _¸ÀºÜ“yÐ Ø”4˜“:˜e SÓ)ˆDØˆ<ØˆKÜ‰w‰~˜dÓ#Ð#ra   )Ú__name__Ú
__module__Ú__qualname__r)   r>   Ústrrf   r   rn   r   Útupler   rs   r}   Ú__classcell__©r_   s   @r`   r#   r#   5   sj   ø„ ð˜c D™jð ¨s°T©zð ¸dõ ð5˜#ó 5ð
˜Nð 
¨só 
ð&˜Sð  U¨7°C¨<Ñ%8ó ÷$ð $ra   r#   T)Úforce_reusable_valuesrj   rk   r&   c                 ó>  — t        | d«       t        |d«       t        | |dd«       | �4| t        | «      k7  rt        d| ›dt	        | «      ›d�«      ‚t        | «      } |�4|t        |«      k7  rt        d|›dt	        |«      ›d�«      ‚t        |«      }t        | |«      S )aM  Returns a strategy which generates integers.

    If min_value is not None then all values will be >= min_value. If
    max_value is not None then all values will be <= max_value

    Examples from this strategy will shrink towards zero, and negative values
    will also shrink towards positive (i.e. -n may be replaced by +n).
    rj   rk   ú
min_value=z	 of type z- cannot be exactly represented as an integer.ú
max_value=)r   r   r)   r
   r|   r#   )rj   rk   s     r`   ÚintegersrŒ   y   sÁ   € ô �i Ô-Ü�i Ô-Ü˜ I¨{¸KÔHàÐØœ˜I›Ò&Ü!Ø˜Y˜M¨´4¸	³?Ð2Eð F?ð ?óð ô ˜	“Nˆ	ØÐØœ˜I›Ò&Ü!Ø˜Y˜M¨´4¸	³?Ð2Eð F?ð ?óð ô ˜	“Nˆ	ä˜I yÓ1Ð1ra   c            	       óz   ‡ — e Zd ZdZedœdedededefˆ fd„Zdefd	„Z	d
e
defd„Zdedeedf   fd„Zˆ fd„Zˆ xZS )ÚFloatStrategyz&A strategy for floating point numbers.)Úsmallest_nonzero_magnituderj   rk   Ú	allow_nanr�   c                ó2  •— t         ‰| �  «        t        |t        «      }|�sddt	        j
                  «       v st        j                  t        «      rt        j                  t        «      nddt	        j
                  «       v st        j                  |«      rt        j                  |«      nddt	        j
                  «       v st        j                  t        «      rt        j                  t        «      ndt        j                  |«      dœz  }t        t        j                  |«      «      ‚d }d}||k\  }|s¯t        j                  d|fd||f«      d	t	        j
                  «       v st        j                  |«      rt        j                  |«      nd	t        j                  |«      d
œz  }	t        j                  d«      dz   d|	iz  }
t        t        j                  |
«      «      ‚d x}}|dk(  rt        d«      ‚|| _        || _        || _        || _        y )Nú5assert %(py4)s
{%(py4)s = %(py0)s(%(py1)s, %(py2)s)
}r(   r�   rq   ©Úpy0Úpy1r*   r,   ç        )ú>=)z%(py0)s >= %(py3)sr�   )r”   r+   z$programmer error if this is negativez
>assert %(py5)sr4   a_  Got allow_subnormal=True, but we can't represent subnormal floats right now, in violation of the IEEE-754 floating-point specification.  This is usually because something was compiled with -ffast-math or a similar option, which sets global processor state.  See https://simonbyrne.github.io/notes/fastmath/ for a more detailed writeup - and good luck!)r=   r>   r(   rq   r?   r@   rA   rB   rC   rG   rH   rE   Ú_format_assertmsgÚFloatingPointErrorrj   rk   r�   r�   )rI   rj   rk   r�   r�   rU   Ú@py_format5Ú@py_assert2rJ   Ú@py_format4rX   r_   s              €r`   r>   zFloatStrategy.__init__    s7  ø€ ô 	‰ÑÔÜ˜)¤TÓ*Ð*Ò*×*×*×*×*Õ*Œz×*×*Ó*Œz×*×*×*×*×*Ò*˜)×*×*Ó*˜)×*×*×*×*×*Ò*¤T×*×*Ó*¤T×*×*Ô*Ð*×*×*×*×*×*Ð*Ø-0ÐXÐ)¨SÑ0×X×XÕXÐ)¨S×X×X×X×X×XÑXÐ)×X×XÓXÐ)×X×XÔX¨S×X×X×XÐ2X×X×X×X×X×XÖXØ%¨Ò,Ü$ð+óð ð #ˆŒØ"ˆŒØ"ˆŒØ*DˆÕ'ra   r&   c           
      ó¼   — | j                   j                  › d| j                  ›d| j                  ›d| j                  ›d| j
                  ›d�
j                  dd«      S )Nz(self.min_value=z, self.max_value=z, self.allow_nan=z", self.smallest_nonzero_magnitude=rc   zself.Ú )r_   r�   rj   rk   r�   r�   Úreplacere   s    r`   rf   zFloatStrategy.__repr__½   sa   € à�~‰~×&Ñ&Ð'Ð'8¨¯©Ð(9Ð9K¸D¿N¹NÐ;Lð MØ�~‰~ÐÐB $×"AÑ"AÐ!CÀ1ðFç
‰'�'˜2Ó
ð	ra   rg   c                 ó|   — |j                  | j                  | j                  | j                  | j                  ¬«      S )N©rj   rk   r�   r�   )Ú
draw_floatrj   rk   r�   r�   )rI   rg   s     r`   rn   zFloatStrategy.do_drawÃ   s6   € Ø�‰Ø—n‘nØ—n‘nØ—n‘nØ'+×'FÑ'Fð	 ó 
ð 	
ra   ro   .c                 óÈ  — t        |«      t        urt        |›d�«      ‚t        j                  |«      r| j
                  st        d| ›�«      ‚|fS dt        |«      cxk  r| j                  k  rn nt        |›d| j                  ›�«      ‚t        | j                  |«      rt        || j                  «      s(t        |›d| j                  ›d| j                  ›d�«      ‚|fS )Nz is not a floatzNaN not permitted by r   z" below smallest_nonzero_magnitude=z
 outside [rd   ú])r|   Úfloatr	   ru   rx   r�   Úabsr�   r   rj   rk   rr   s     r`   rs   zFloatStrategy._invertË   sâ   € Ü�‹;œeÑ#Ü % ¨/Ð:Ó;Ð;Ü�:‰:�eÔØ—>’>Ü"Ð%:¸4¸(Ð#CÓDÐDØ�8ˆOØŒs�5‹zÔ;˜D×;Ñ;Õ;ÜØ�)Ð=Ø×2Ñ2Ð5ð7óð ô ˜dŸn™n¨eÔ4¼NØ�4—>‘>ô=
ô Ø�)˜: d§n¡nÐ%7°r¸$¿.¹.Ð9KÈ1ÐMóð ð ˆxˆra   c                 óŠ  •— |t         j                  u ret        t        | j                  t        t        d«      «      «      t        | j                  t        t        d«      «      «      d| j                  ¬«      S |t         j                  u rht         j                   t         j                  fD �cg c]&  }| j                  |cxk  r| j                  k  rn n|‘Œ( c}x}rt        |«      S t        «       S |t         j                  u r | j                   s
t        «       S t#        «       S t%        |«      \  }}|st&        ‰| �Q  |«      S t        |j+                  dt         j                   «      | j                  «      }t        |j+                  dt         j                  «      | j                  «      }| j                   |cxk  rdk  rn nd}n$d|cxk  r| j                  k  rn n| j                  }| j                   |cxk  rdk  rn n| j                   }nd|cxk  r| j                  k  rn nd	}||kD  r
t        «       S || j                  kD  sB| j                  |kD  s3| j                   rFt         j                   |k  s|t         j                  k  r t-        | «      ||d| j                  ¬«      } |€| S t&        ‰| �Q  |«      S c c}w )
Nú-infrz   Fr¡   rj   rk   r   ç       €r–   )ru   rv   rŽ   ry   rj   r   r¥   r{   rk   r   r�   rw   rz   r   r   rx   r�   ÚNanStrategyr   r=   r}   Úgetr|   )	rI   r~   ÚxÚpermitted_infsr   r€   Ú	min_boundÚ	max_boundr_   s	           €r`   r}   zFloatStrategy.filterß   sF  ø€ àœŸ™Ñ%Ü Ü˜dŸn™n¬g´e¸F³mÓ.DÓEÜ˜dŸn™n¬i¼¸e»Ó.EÓFØØ+/×+JÑ+Jô	ð ð œŸ
™
Ñ"ô  Ÿ8™8˜)¤T§X¡XÐ.ö"àØ—>‘> QÔ8¨$¯.©.Õ8ò ò"ð ˆ~ð ô
 +¨>Ó:Ð:Ü“9ÐØœŸ
™
Ñ"Ø—>’>Ü“yÐ Ü“=Ð ä6°yÓAÑˆ�TÙÜ‘7‘> $Ó'Ð'Ü˜Ÿ™¨´d·h±h°YÓ?ÀÇÁÓPˆ	Ü˜Ÿ™¨´T·X±XÓ>ÀÇÁÓOˆ	ð ×+Ñ+Ð+¨iÔ;¸!Õ;Ø‰IØ�Ô<˜T×<Ñ<Õ<Ø×7Ñ7ˆIØ×+Ñ+Ð+¨iÔ;¸!Õ;Ø×8Ñ8Ð8‰IØ�Ô<˜T×<Ñ<Õ<ØˆIà�yÒ Ü“9Ðà˜Ÿ™Ò&Ø�~‰~ 	Ò)Ø—’¤T§X¡X I°	Ò$9¸YÌÏÉÒ=Qà”4˜“:Ø#Ø#ØØ+/×+JÑ+Jô	ˆDð ˆ<ØˆKÜ‰w‰~˜dÓ#Ð#ùòW"s   Â.+K )r�   r‚   rƒ   Ú__doc__r   r¥   rq   r>   r„   rf   r   rn   r   r…   r   rs   r}   r†   r‡   s   @r`   rŽ   rŽ   �   s‚   ø„ Ù0ð -?òEð ðEð ð	Eð
 ðEð %*õEð:˜#ó ð
˜Nð 
¨uó 
ð˜Sð  U¨7°C¨<Ñ%8ó ÷(5$ð 5$ra   rŽ   é@   F)r�   Úallow_infinityÚallow_subnormalÚwidthÚexclude_minÚexclude_maxr�   r²   r³   r´   ©é   é    r±   rµ   r¶   c          	      óp  ‡— t        t        |d«       t        t        |d«       |€t        | du xr |du «      }n|r| €|�t        d|›d�«      ‚‰dvrt        d‰›d�«      ‚t        t        d   t        ‰«      «      Št        | d	«       t        |d
«       t        j                  dd«      dk(  rt        d«      ‚|r@t        d‰¬«      dk(  r0ddlm} 	  |«       }	|	rd|	› d|	› d|	› d�}
nd}
t        d|›d|
› �«      ‚| |}}| ��,t        | ‰«      } t        | t         «      }|�sddt#        j$                  «       v st'        j(                  t        «      rt'        j*                  t        «      ndd	t#        j$                  «       v st'        j(                  | «      rt'        j*                  | «      nd	dt#        j$                  «       v st'        j(                  t         «      rt'        j*                  t         «      ndt'        j*                  |«      dœz  }t-        t'        j.                  |«      «      ‚d}|��,t        |‰«      }t        |t         «      }|�sddt#        j$                  «       v st'        j(                  t        «      rt'        j*                  t        «      ndd
t#        j$                  «       v st'        j(                  |«      rt'        j*                  |«      nd
dt#        j$                  «       v st'        j(                  t         «      rt'        j*                  t         «      ndt'        j*                  |«      dœz  }t-        t'        j.                  |«      «      ‚d}| |k7  rt        d|›d‰› d| ›d �«      ‚||k7  rt        d!|›d‰› d"|›d �«      ‚|r#| �| t        j0                  k(  rt        d#| ›�«      ‚|r$|�|t        j0                   k(  rt        d$|›�«      ‚|du xs |}| ��•|s	|���| |k  �rŠt3        | ‰|¬%«      } | |k(  �r§| |k(  }d}||k(  }|r|sÜt'        j4                  d&||fd'| ||f«      d	t#        j$                  «       v st'        j(                  | «      rt'        j*                  | «      nd	d(t#        j$                  «       v st'        j(                  |«      rt'        j*                  |«      nd(t'        j*                  |«      d)œz  }d*d+|iz  }t-        t'        j.                  |«      «      ‚dx}x}}t7        |«      }|sÂd,d-t#        j$                  «       v st'        j(                  t6        «      rt'        j*                  t6        «      nd-d(t#        j$                  «       v st'        j(                  |«      rt'        j*                  |«      nd(t'        j*                  |«      d.œz  }t-        t'        j.                  |«      «      ‚d}t7        | «      }| }|sÂd/d-t#        j$                  «       v st'        j(                  t6        «      rt'        j*                  t6        «      nd-d	t#        j$                  «       v st'        j(                  | «      rt'        j*                  | «      nd	t'        j*                  |«      d.œz  }t-        t'        j.                  |«      «      ‚dx}}t3        | ‰|¬%«      } | |kD  }|sÆt'        j4                  d0|fd1| |f«      d	t#        j$                  «       v st'        j(                  | «      rt'        j*                  | «      nd	d(t#        j$                  «       v st'        j(                  |«      rt'        j*                  |«      nd(d2œz  }d3d4|iz  }t-        t'        j.                  |«      «      ‚d}|��•|s	|���||kD  �rŠt9        |‰|¬%«      }||k(  �r§||k(  }d}||k(  }|r|sÜt'        j4                  d&||fd'|||f«      d
t#        j$                  «       v st'        j(                  |«      rt'        j*                  |«      nd
d5t#        j$                  «       v st'        j(                  |«      rt'        j*                  |«      nd5t'        j*                  |«      d)œz  }d*d+|iz  }t-        t'        j.                  |«      «      ‚dx}x}}t7        |«      }|sÂd,d-t#        j$                  «       v st'        j(                  t6        «      rt'        j*                  t6        «      nd-d
t#        j$                  «       v st'        j(                  |«      rt'        j*                  |«      nd
t'        j*                  |«      d.œz  }t-        t'        j.                  |«      «      ‚d}t7        |«      }| }|sÂd/d-t#        j$                  «       v st'        j(                  t6        «      rt'        j*                  t6        «      nd-d5t#        j$                  «       v st'        j(                  |«      rt'        j*                  |«      nd5t'        j*                  |«      d.œz  }t-        t'        j.                  |«      «      ‚dx}}t9        |‰|¬%«      }||k  }|sÆt'        j4                  d6|fd7||f«      d
t#        j$                  «       v st'        j(                  |«      rt'        j*                  |«      nd
d5t#        j$                  «       v st'        j(                  |«      rt'        j*                  |«      nd5d2œz  }d3d4|iz  }t-        t'        j.                  |«      «      ‚d}| t        j0                   k(  rd} |t        j0                  k(  rd}| |cxk(  xr dk(  nc xr t7        |«      xr t7        | «       }| �.|�,| |kD  s|r%d8‰› d9|›d:|›�}|s|r|d;|›d<|›�z  }t        |«      ‚|€t        | du xs |du «      }n—|r| �“|�‘t        d=|›d>�«      ‚| t        j0                  k(  r-|t        j0                  k(  rt        d?«      ‚t        d@|›dA�«      ‚|t        j0                   k(  r.|t        j0                   k(  rt        dB«      ‚t        dC|›dD�«      ‚t;        ‰«      }|€<| �'|�%| |k(  r| | cxk  xr |k  nc }n!| |k  xr || kD  }n| �| |k  }n|�|| kD  }ndE}|r8| �| |k\  rt        dF| › dG‰› dH|› �«      ‚|�|| k  rt        dI|› dJ‰› dK| › �«      ‚| €t!        dL«      } |€t!        dM«      }|s<t=        | t        t!        dL«      «      «      } t?        |tA        t!        dM«      «      «      }t        | t         «      }|�sddt#        j$                  «       v st'        j(                  t        «      rt'        j*                  t        «      ndd	t#        j$                  «       v st'        j(                  | «      rt'        j*                  | «      nd	dt#        j$                  «       v st'        j(                  t         «      rt'        j*                  t         «      ndt'        j*                  |«      dœz  }t-        t'        j.                  |«      «      ‚d}t        |t         «      }|�sddt#        j$                  «       v st'        j(                  t        «      rt'        j*                  t        «      ndd
t#        j$                  «       v st'        j(                  |«      rt'        j*                  |«      nd
dt#        j$                  «       v st'        j(                  t         «      rt'        j*                  t         «      ndt'        j*                  |«      dœz  }t-        t'        j.                  |«      «      ‚d}|rtB        n|}tE        | |||¬N«      }‰dOk  r#dPt         dQt         fˆfdR„}|jG                  |«      }|S # t        $ r d}	Y �ŒÚw xY w)Saé  Returns a strategy which generates floats.

    - If min_value is not None, all values will be ``>= min_value``
      (or ``> min_value`` if ``exclude_min``).
    - If max_value is not None, all values will be ``<= max_value``
      (or ``< max_value`` if ``exclude_max``).
    - If min_value or max_value is not None, it is an error to enable
      allow_nan.
    - If both min_value and max_value are not None, it is an error to enable
      allow_infinity.
    - If inferred values range does not include subnormal values, it is an error
      to enable allow_subnormal.

    Where not explicitly ruled out by the bounds,
    :wikipedia:`subnormals <Subnormal_number>`, infinities, and NaNs are possible
    values generated by this strategy.

    The width argument specifies the maximum number of bits of precision
    required to represent the generated float. Valid values are 16, 32, or 64.
    Passing ``width=32`` will still use the builtin 64-bit :class:`~python:float` class,
    but always for values which can be exactly represented as a 32-bit float.

    The exclude_min and exclude_max argument can be used to generate numbers
    from open or half-open intervals, by excluding the respective endpoints.
    Excluding either signed zero will also exclude the other.
    Attempting to exclude an endpoint which is None will raise an error;
    use ``allow_infinity=False`` to generate finite floats.  You can however
    use e.g. ``min_value=-math.inf, exclude_min=True`` to exclude only
    one infinite endpoint.

    Examples from this strategy have a complicated and hard to explain
    shrinking behaviour, but it tries to improve "human readability". Finite
    numbers will be preferred to infinity and infinity will be preferred to
    NaN.
    rµ   r¶   NzCannot have allow_nan=z, with min_value or max_valuer·   z
Got width=z<, but the only valid values are the integers 16, 32, and 64.rj   rk   g      ð?r©   a  Your Python install can't represent -0.0, which is required by the IEEE-754 floating-point specification.  This is probably because it was compiled with an unsafe option like -ffast-math; for a more detailed explanation see https://simonbyrne.github.io/notes/fastmath/r–   )r´   r   )Úidentify_ftz_culpritszThis seems to be because the `z¶` package was compiled with -ffast-math or a similar option, which sets global processor state - see https://simonbyrne.github.io/notes/fastmath/ for details.  If you don't know why z is installed, `pipdeptree -rp z(` will show which packages depend on it.zÖThis is usually because something was compiled with -ffast-math or a similar option, which sets global processor state.  See https://simonbyrne.github.io/notes/fastmath/ for a more detailed writeup - and good luck!zGot allow_subnormal=zq, but we can't represent subnormal floats right now, in violation of the IEEE-754 floating-point specification.  r’   r(   r¥   r“   rŠ   z3 cannot be exactly represented as a float of width z - use min_value=z	 instead.r‹   z - use max_value=zCannot exclude min_value=zCannot exclude max_value=)r³   )ú==r¼   )z%(py0)s == %(py3)sz%(py3)s == %(py5)sÚmin_arg)r”   r+   r4   zassert %(py7)sr5   z,assert %(py3)s
{%(py3)s = %(py0)s(%(py1)s)
}r   )r”   r•   r+   z0assert not %(py3)s
{%(py3)s = %(py0)s(%(py1)s)
})ú>)z%(py0)s > %(py2)s)r”   r*   zassert %(py4)sr,   Úmax_arg)ú<)z%(py0)s < %(py2)szThere are no z--bit floating-point values between min_value=z and max_value=z, exclude_min=z and exclude_max=zCannot have allow_infinity=z#, with both min_value and max_valuez+allow_infinity=False excludes min_value=infz!exclude_min=True turns min_value=z# into inf, but allow_infinity=Falsez,allow_infinity=False excludes max_value=-infz!exclude_max=True turns max_value=z$ into -inf, but allow_infinity=FalseTz(allow_subnormal=True, but minimum value z excludes values below floatz's smallest positive normal z(allow_subnormal=True, but maximum value z excludes values above floatz's smallest negative normal r¨   rz   r¡   r±   r¬   r&   c                 óP   •— 	 t        | ‰«      S # t        $ r t        «        Y y w xY w)N)r   ÚOverflowErrorr   )r¬   r´   s    €r`   Údowncastzfloats.<locals>.downcast  s)   ø€ ðÜ  5Ó)Ð)øÜ ò Ü–ðús   ƒ �%¤%)$r   rq   r
   r   r   r)   r   ru   Úcopysignr™   r   Ú_hypothesis_ftz_detectorr»   Ú	Exceptionr   r(   r¥   r?   r@   rA   rB   rC   rG   rH   rz   r   rE   r   r   r   ry   r{   r   r   rŽ   Úmap)rj   rk   r�   r²   r³   r´   rµ   r¶   r»   Úftz_pkgÚftz_msgr½   r¿   rU   rš   Úassumed_allow_subnormalrJ   rT   r›   rX   rY   rœ   Ú@py_format3Úbad_zero_boundsÚmsgÚsmallest_normalr�   ÚresultrÃ   s        `                       r`   ÚfloatsrÐ     sÒ  ø€ ô` Œt�[ -Ô0ÜŒt�[ -Ô0àÐÜ˜ dÐ*Ò@¨y¸DÐ/@ÓA‰	Ù	˜	Ð-°Ð1FÜÐ 7¨Y¨LÐ8UÐVÓWÐWà�LÑ ÜØ�5�(ð /ð /ó
ð 	
ô ”˜Ñ$¤c¨%£jÓ1€Eä�i Ô-Ü�i Ô-ä‡}�}�S˜$Ó 3Ò&Ü ðKó
ð 	
ñ œ7 3¨eÔ4¸Ò9õ 	Cð	Ù+Ó-ˆGñ à0°°	ð :)ð *1¨	Ð1PØ�)ÐCð	Eñ ð+ð ô !Ø#�?Ð$ð %à&˜ið)ó
ð 	
ð ! )ˆW€GØÑÜ˜Y¨Ó.ˆ	Ü˜)¤UÓ+Ð+Ò+×+×+×+×+Õ+Œz×+×+Ó+Œz×+×+×+×+×+Ò+˜)×+×+Ó+˜)×+×+×+×+×+Ò+¤U×+×+Ó+¤U×+×+Ô+Ð+×+×+×+×+×+Ð+ØÑÜ˜Y¨Ó.ˆ	Ü˜)¤UÓ+Ð+Ò+×+×+×+×+Õ+Œz×+×+Ó+Œz×+×+×+×+×+Ò+˜)×+×+Ó+˜)×+×+×+×+×+Ò+¤U×+×+Ó+¤U×+×+Ô+Ð+×+×+×+×+×+Ð+à�GÒÜØ˜˜ð $Ø�wÐ0 i \°ð<ó
ð 	
ð �GÒÜØ˜˜ð $Ø�wÐ0 i \°ð<ó
ð 	
ñ
 ˜	Ð)¨Y¼$¿(¹(Ò-BÜÐ :°	¨|Ð<Ó=Ð=Ù˜	Ð)¨Y¼4¿8¹8¸)Ò-CÜÐ :°	¨|Ð<Ó=Ð=à-°Ð5ÒH¸ÐØÑÙ˜Ñ+°	¸GÓ0Cä"Ø�uÐ.Eô
ˆ	ð ˜ÓØ Ñ,Ð,¨1Ð, ¨1Ñ,×,×,×,Ð,�9 ¨1×,×,×,×,×,Ñ,�9×,×,Ó,�9×,×,×,×,×,Ò, ×,×,Ó, ×,×,Ô,¨1×,×,×,×,×,×,Ó,Ü˜wÓ'Ð'Ñ'×'×'×'×'Õ'”;×'×'Ó'”;×'×'×'×'×'Ò'˜w×'×'Ó'˜w×'×'Ô'Ð'×'×'×'×'×'Ð'Ü" 9Ó-Ð-Ð-Ð-Ð-Ñ-×-×-×-×-Õ-”{×-×-Ó-”{×-×-×-×-×-Ò- 9×-×-Ó- 9×-×-Ô-Ð-×-×-×-×-×-Ò-Ü&Ø˜5Ð2IôˆIð ˜7Ñ"×"×"Õ"ˆy˜7×"×"×"×"×"Ñ"ˆy×"×"Ó"ˆy×"×"×"×"×"Ò"˜7×"×"Ó"˜7×"×"×"×"×"×"Ñ"ØÑÙ˜Ñ+°	¸GÓ0Cä$Ø�uÐ.Eô
ˆ	ð ˜ÓØ Ñ,Ð,¨1Ð, ¨1Ñ,×,×,×,Ð,�9 ¨1×,×,×,×,×,Ñ,�9×,×,Ó,�9×,×,×,×,×,Ò, ×,×,Ó, ×,×,Ô,¨1×,×,×,×,×,×,Ó,Ü˜yÓ)Ð)Ñ)×)×)×)×)Õ)”;×)×)Ó)”;×)×)×)×)×)Ò)˜y×)×)Ó)˜y×)×)Ô)Ð)×)×)×)×)×)Ð)Ü" 7Ó+Ð+Ð+Ð+Ð+Ñ+×+×+×+×+Õ+”{×+×+Ó+”{×+×+×+×+×+Ò+ 7×+×+Ó+ 7×+×+Ô+Ð+×+×+×+×+×+Ò+Ü(Ø˜5Ð2IôˆIð ˜7Ñ"×"×"Õ"ˆy˜7×"×"×"×"×"Ñ"ˆy×"×"Ó"ˆy×"×"×"×"×"Ò"˜7×"×"Ó"˜7×"×"×"×"×"×"Ñ"à”T—X‘X�IÒØˆ	Ø”D—H‘HÒØˆ	ð 	�YÖ# !Ô#ò 	'Ü˜	Ó"ò	'ä˜IÓ&Ð&ð ð 	ÐØÐ!Ø˜Ò"¡oð
 ˜E˜7ð #Ø ˜ ?°7°+ð?ð 	ñ ™+Ø�_˜�~Ð%7¨;¨.Ð9Ñ9ˆCÜ˜cÓ"Ð"àÐÜ˜i¨4Ð/ÒD°9ÀÐ3DÓE‰Ù	ØÐ  YÐ%:Ü!Ø.˜~Ð/Ð/RÐSóð ð 
”d—h‘hÒ	Ø”d—h‘hÒÜ!Ð"OÓPÐPÜØ/°¨{ð ;'ð 'ó
ð 	
ð 
”t—x‘x�iÒ	Ø”t—x‘x�iÒÜ!Ð"PÓQÐQÜØ/°¨{ð ;'ð 'ó
ð 	
ô
 -¨UÓ3€OØÐØÐ  YÐ%:Ø˜IÒ%Ø#2Ð"2°YÖ"PÀÔ"P‘ð  Ñ/ÒP°IÀÐ@PÑ4Pñ  ð Ð"Ø'¨/Ñ9‰OØÐ"Ø'¨?Ð*:Ñ:‰Oà"ˆOÙØÐ  Y°/Ò%AÜ!Ø:¸9¸+ð F.Ø.3¨Wð 5,Ø,;Ð+<ð>óð ð
 Ð  Y°?Ð2BÒ%BÜ!Ø:¸9¸+ð F.Ø.3¨Wð 5,Ø-<Ð,<Ð+=ð?óð ð ÐÜ˜&“Mˆ	ØÐÜ˜%“Lˆ	ÙÜ˜	¤7¬5°«=Ó#9Ó:ˆ	Ü˜	¤9¬U°5«\Ó#:Ó;ˆ	Ü�i¤Ó'Ð'Ò'×'×'×'×'Õ'Œ:×'×'Ó'Œ:×'×'×'×'×'Ò'�i×'×'Ó'�i×'×'×'×'×'Ò'¤×'×'Ó'¤×'×'Ô'Ð'×'×'×'×'×'Ð'Ü�i¤Ó'Ð'Ò'×'×'×'×'Õ'Œ:×'×'Ó'Œ:×'×'×'×'×'Ò'�i×'×'Ó'�i×'×'×'×'×'Ò'¤×'×'Ó'¤×'×'Ô'Ð'×'×'×'×'×'Ð'á-Õ°?ð ô +ØØØØ#=ô	€Fð ˆr‚zð	œð 	¤%õ 	ð —‘˜HÓ%ˆØ€Møôk ò 	Ø‹Gð	ús   Ã~& þ&~5þ4~5c                   ó:   — e Zd ZdZdedefd„Zdedee	df   fd„Z
y)	rª   z4Strategy for sampling the space of nan float values.rg   r&   c                 ó²   — t        |j                  «       «      dz  }t        t        j                  «      }|j                  dd«      }t        ||z  |z  «      S )Né?   r   ì   ÿÿÿ )r)   Údraw_booleanr   ru   Únanrm   r   )rI   rg   Úsign_bitÚnan_bitsÚmantissa_bitss        r`   rn   zNanStrategy.do_draw)  sQ   € ô �t×(Ñ(Ó*Ó+¨rÑ1ˆÜ¤§¡Ó)ˆØ×)Ñ)¨!¨YÓ7ˆÜ˜H xÑ/°-Ñ?Ó@Ð@ra   ro   .c                 ó¤   — t        |t        «      rt        j                  |«      st	        |›d�«      ‚t        |«      }t        |dz	  «      |dz  fS )Nz is not NaNrÓ   rÔ   )r(   r¥   ru   rx   r	   r   rq   )rI   ro   Úbitss      r`   rs   zNanStrategy._invert1  sL   € Ü˜%¤Ô'¬t¯z©z¸%Ô/@Ü % ¨+Ð6Ó7Ð7Ü˜EÓ"ˆÜ�T˜R‘ZÓ  $¨-Ñ"8Ð9Ð9ra   N)r�   r‚   rƒ   r°   r   r¥   rn   r   r…   r   rs   © ra   r`   rª   rª   &  s7   „ Ù>ðA˜Nð A¨uó Að:˜Sð : U¨7°C¨<Ñ%8ô :ra   rª   )NN)<Úbuiltinsr?   Ú_pytest.assertion.rewriteÚ	assertionÚrewriterA   ru   Údecimalr   Ú	fractionsr   Útypingr   r   r   Úhypothesis.controlr   Úhypothesis.errorsr	   r
   Ú%hypothesis.internal.conjecture.choicer   Ú#hypothesis.internal.conjecture.datar   Úhypothesis.internal.filteringr   r   Úhypothesis.internal.floatsr   r   r   r   r   r   r   r   r   r   r   Úhypothesis.internal.validationr   r   r   Ú$hypothesis.strategies._internal.miscr   Ú*hypothesis.strategies._internal.strategiesr   r   Ú%hypothesis.strategies._internal.utilsr    r!   r)   r¥   ÚRealr#   rŒ   rŽ   rq   rÐ   rª   rÜ   ra   r`   ú<module>rï      s·  ð÷ „ ƒÝ Ý ß %Ñ %å %ß ;Ý 9Ý >÷÷÷ ÷ ñ ÷ñ õ
 9÷÷ Nð ˆU�{�XÑ Ñ'€ôA$�~ cÑ*ô A$ðH Ù¨Ô-à Ø ñ2Ø�T‰zð2à�T‰zð2ð �CÑò2ó .ó ð2ôDw$�N 5Ñ)ô w$ðt Ù¨Ô-à!Ø!ðJð "Ø"&Ø#'Ø!#ØØòJØ�d‰{ðJà�d‰{ðJð �d‰{ð	Jð
 ˜4‘KðJð ˜D‘[ðJð �:ÑðJð ðJð ðJð �EÑòJó .ó ðJôZ:�. Ñ'õ :ra   