+
    :iE                        ^ RI t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIHtH	t	 ^ RI
Ht ^ RIHt ^ RIHt R tR tR tR	 tR
 tR tR tR tR tR tR tR tR tR tR tR tR t R t!R t"R t#R t$R t%R t&R t'R t(R t)R  t*R! t+R" t,R# t-R$ t.R% t/R& t0R' t1R( t2R) t3R* t4R+ t5R, t6R- t7R. t8R/ t9 ! R0 R1]4      t:];R28X  d   ]Px                  ! 4        R# R# )3    N)njittypes)TestCase)numpy_support)	PYVERSIONc                 .    \         P                  ! V 4      # N)mathsinxs   &V/var/www/html/photoedit/myenv/lib/python3.14/site-packages/numba/tests/test_mathlib.pyr   r          88A;    c                 .    \         P                  ! V 4      # r	   )r
   cosr   s   &r   r   r      r   r   c                 .    \         P                  ! V 4      # r	   )r
   tanr   s   &r   r   r      r   r   c                 .    \         P                  ! V 4      # r	   )r
   sinhr   s   &r   r   r          99Q<r   c                 .    \         P                  ! V 4      # r	   )r
   coshr   s   &r   r   r      r   r   c                 .    \         P                  ! V 4      # r	   )r
   tanhr   s   &r   r   r   #   r   r   c                 .    \         P                  ! V 4      # r	   )r
   asinr   s   &r   r   r   '   r   r   c                 .    \         P                  ! V 4      # r	   )r
   acosr   s   &r   r   r   +   r   r   c                 .    \         P                  ! V 4      # r	   )r
   atanr   s   &r   r!   r!   /   r   r   c                 .    \         P                  ! W4      # r	   )r
   atan2)yr   s   &&r   r#   r#   3       ::ar   c                 .    \         P                  ! V 4      # r	   )r
   asinhr   s   &r   r'   r'   7       ::a=r   c                 .    \         P                  ! V 4      # r	   )r
   acoshr   s   &r   r*   r*   ;   r(   r   c                 .    \         P                  ! V 4      # r	   )r
   atanhr   s   &r   r,   r,   ?   r(   r   c                 .    \         P                  ! V 4      # r	   r
   sqrtr   s   &r   r/   r/   C   r   r   c                 .    \         P                  ! V 4      # r	   )npr/   r   s   &r   npy_sqrtr2   G   s    771:r   c                 .    \         P                  ! V 4      # r	   )r
   expr   s   &r   r4   r4   K   r   r   c                 .    \         P                  ! V 4      # r	   )r
   exp2r   s   &r   r6   r6   N   r   r   c                 .    \         P                  ! V 4      # r	   )r
   expm1r   s   &r   r8   r8   Q   r(   r   c                 .    \         P                  ! V 4      # r	   )r
   logr   s   &r   r:   r:   U   r   r   c                 .    \         P                  ! V 4      # r	   )r
   log1pr   s   &r   r<   r<   Y   r(   r   c                 .    \         P                  ! V 4      # r	   )r
   log10r   s   &r   r>   r>   ]   r(   r   c                 .    \         P                  ! V 4      # r	   )r
   log2r   s   &r   r@   r@   a   r   r   c                 .    \         P                  ! V 4      # r	   )r
   floorr   s   &r   rB   rB   e   r(   r   c                 .    \         P                  ! V 4      # r	   )r
   ceilr   s   &r   rD   rD   i   r   r   c                 .    \         P                  ! V 4      # r	   )r
   truncr   s   &r   rF   rF   m   r(   r   c                 .    \         P                  ! V 4      # r	   )r
   isnanr   s   &r   rH   rH   q   r(   r   c                 .    \         P                  ! V 4      # r	   )r
   isinfr   s   &r   rJ   rJ   u   r(   r   c                 .    \         P                  ! V 4      # r	   )r
   isfiniter   s   &r   rL   rL   y   s    ==r   c                 .    \         P                  ! W4      # r	   )r
   hypotr   r$   s   &&r   rN   rN   }   r%   r   c                 .    \         P                  ! W4      # r	   )r
   	nextafterrO   s   &&r   rQ   rQ      s    >>!r   c                 .    \         P                  ! V 4      # r	   )r
   degreesr   s   &r   rS   rS          <<?r   c                 .    \         P                  ! V 4      # r	   )r
   radiansr   s   &r   rV   rV      rT   r   c                 .    \         P                  ! V 4      # r	   )r
   erfr   s   &r   rX   rX      r   r   c                 .    \         P                  ! V 4      # r	   )r
   erfcr   s   &r   rZ   rZ      r   r   c                 .    \         P                  ! V 4      # r	   )r
   gammar   s   &r   r\   r\      r(   r   c                 .    \         P                  ! V 4      # r	   )r
   lgammar   s   &r   r^   r^      s    ;;q>r   c                 .    \         P                  ! W4      # r	   )r
   powrO   s   &&r   r`   r`          88A>r   c                 .    \         P                  ! W4      # r	   )r
   gcdrO   s   &&r   rc   rc      ra   r   c                 .    \         P                  ! W4      # r	   )r
   copysignrO   s   &&r   re   re      s    ==r   c                 .    \         P                  ! V 4      # r	   )r
   frexpr   s   &r   rg   rg      r(   r   c                 .    \         P                  ! W4      # r	   )r
   ldexp)r   es   &&r   ri   ri      r%   r   c                  B    \         P                  \         P                  3# r	   )r
   pirj    r   r   get_constantsrn      s    77DFF?r   c                     a  ] tR t^t o R tR3R ltR3R ltR tR t]	P                  ! ]P                  R8H  R4      R 4       tR	 tR
 tR tR t]	P$                  ! ]R48  R4      R 4       tR tR tR tR tR tR tR tR tR tR tR tR t R t!R t"R t#R t$R t%R  t&R! t'R" t(R# t)R$ t*R% t+R& t,R' t-R( t.R) t/R* t0R+ t1R, t2R- t3R. t4R/ t5R0 t6R1t7V t8R2# )5TestMathLibc                n    \        \        4      pV P                  V! 4       VP                  4       4       R # r	   )r   rn   assertPreciseEqualpy_func)selfcfuncs   & r   test_constantsTestMathLib.test_constants   s$    ]#9r   c                    \        V4      p\        W#4       FJ  w  rxV! V4      p	V! V4      p
V\        P                  J d   R MTpRV: 2pV P                  ! W3RVRV/VB  KL  	  R# )single
for input precmsgNr   zipr   float32rr   )rt   pyfuncx_typesx_valuesr{   kwargsru   txvxgotexpectedactual_precr|   s   &&&&&,       r   	run_unaryTestMathLib.run_unary   sn    V',FB)CbzH&(EMM&9(tK$&(C##C . . .&,. -r   c                    \        V4      p\        W#V4       FL  w  rxp	V! W4      p
V! W4      pV\        P                  J d   R MTpRV: RV	: R2pV P	                  WWR7       KN  	  R# )ry   zfor inputs (z, ))r{   r|   Nr}   )rt   r   r   r   y_valuesr{   ru   tyr   r$   r   r   r   r|   s   &&&&&&        r   
run_binaryTestMathLib.run_binary   sa    VGx8HB1+Ca|H&(EMM&9(tK+,a0C##C#M 9r   c                   \         P                  \         P                  \         P                  \         P                  \         P
                  \         P                  \         P                  \         P                  \         P                  \         P                  \         P                  \         P                  .p^ ^ ^ ^ ^ ^ \        R4      R\        R4      \        R4      R\        R4      .pV P                  WV4       R# )r   inf        nanN)r   int16int32int64uint16uint32uint64r   float64floatr   rt   r   r   r   s   &&  r   check_predicate_func TestMathLib.check_predicate_func   s    ;;U[[<<u||==%--==%--@ q!Q1%L#uU|%L#uU|5 	v1r   c                2   \         p\        P                  \        P                  \        P                  \        P
                  \        P                  \        P                  \        P                  \        P                  .p. ROpV P                  WV4       R#    N)r   r      r   皙?皙?)r   r   r   r   r   r   r   r   r   r   r   r   s   &   r   test_sinTestMathLib.test_sin   V    ;;U[[<<u||==%--1 1v1r   win32z'not exactly equal on win32 (issue #597)c                2   \         p\        P                  \        P                  \        P                  \        P
                  \        P                  \        P                  \        P                  \        P                  .p. ROpV P                  WV4       R# r   )r   r   r   r   r   r   r   r   r   r   r   r   s   &   r   test_cosTestMathLib.test_cos   sX     ;;U[[<<u||==%--1 1v1r   c                2   \         p\        P                  \        P                  \        P                  \        P
                  \        P                  \        P                  \        P                  \        P                  .p. ROpV P                  WV4       R# r   )r   r   r   r   r   r   r   r   r   r   r   r   s   &   r   test_tanTestMathLib.test_tan   r   r   c                2   \         p\        P                  \        P                  \        P                  \        P
                  \        P                  \        P                  \        P                  \        P                  .p. ROpV P                  WV4       R# )r   Nr   r   r   r   r   r   r   r   )r/   r   r   r   r   r   r   r   r   r   r   r   s   &   r   	test_sqrtTestMathLib.test_sqrt   V    ;;U[[<<u||==%--1 .v1r   c                ^   \         p. ROp\        P                  \        P                  .pV P	                  WVRR7       \        P
                  \        P                  \        P                  \        P                  \        P                  \        P                  .pV P	                  WV4       R# )r   ry   r{   Nr   )r2   r   r   r   r   r   r   r   r   r   r   rt   r   r   r   s   &   r   test_npy_sqrtTestMathLib.test_npy_sqrt   sn    -;;-vx@;;<<==%--1 	v1r   c                2   \         p\        P                  \        P                  \        P                  \        P
                  \        P                  \        P                  \        P                  \        P                  .p. ROpV P                  WV4       R# r   )r4   r   r   r   r   r   r   r   r   r   r   r   s   &   r   test_expTestMathLib.test_exp  r   r   zneeds Python 3.11+c                2   \         p\        P                  \        P                  \        P                  \        P
                  \        P                  \        P                  \        P                  \        P                  .p. ROpV P                  WV4       R# r   )r6   r   r   r   r   r   r   r   r   r   r   r   s   &   r   	test_exp2TestMathLib.test_exp2  sV    ;;U[[<<u||==%--1 1v1r   c                2   \         p\        P                  \        P                  \        P                  \        P
                  \        P                  \        P                  \        P                  \        P                  .p. ROpV P                  WV4       R# r   )r8   r   r   r   r   r   r   r   r   r   r   r   s   &   r   
test_expm1TestMathLib.test_expm1  sV    ;;U[[<<u||==%--1 1v1r   c                2   \         p\        P                  \        P                  \        P                  \        P
                  \        P                  \        P                  \        P                  \        P                  .p. ROpV P                  WV4       R# r   N)r   
   d   i  i i@B r   g?)r:   r   r   r   r   r   r   r   r   r   r   r   s   &   r   test_logTestMathLib.test_log  sW    ;;U[[<<u||==%--1 Av1r   c                2   \         p\        P                  \        P                  \        P                  \        P
                  \        P                  \        P                  \        P                  \        P                  .p. ROpV P                  WV4       R# r   )r<   r   r   r   r   r   r   r   r   r   r   r   s   &   r   
test_log1pTestMathLib.test_log1p$  W    ;;U[[<<u||==%--1 Av1r   c                2   \         p\        P                  \        P                  \        P                  \        P
                  \        P                  \        P                  \        P                  \        P                  .p. ROpV P                  WV4       R# r   )r>   r   r   r   r   r   r   r   r   r   r   r   s   &   r   
test_log10TestMathLib.test_log10,  r   r   c                2   \         p\        P                  \        P                  \        P                  \        P
                  \        P                  \        P                  \        P                  \        P                  .p. ROpV P                  WV4       R# r   )r@   r   r   r   r   r   r   r   r   r   r   r   s   &   r   	test_log2TestMathLib.test_log24  sW    ;;U[[<<u||==%--1 Av1r   c                2   \         p\        P                  \        P                  \        P                  \        P
                  \        P                  \        P                  \        P                  \        P                  .p. ROpV P                  WV4       R# r   Nr   r   r   r   r   r         ?r   )r   r   r   r   r   r   r   r   r   r   r   r   s   &   r   	test_asinTestMathLib.test_asin<  r   r   c                2   \         p\        P                  \        P                  \        P                  \        P
                  \        P                  \        P                  \        P                  \        P                  .p. ROpV P                  WV4       R# r   )r   r   r   r   r   r   r   r   r   r   r   r   s   &   r   	test_acosTestMathLib.test_acosD  r   r   c                2   \         p\        P                  \        P                  \        P                  \        P
                  \        P                  \        P                  \        P                  \        P                  .p. ROpV P                  WV4       R# r   )r!   r   r   r   r   r   r   r   r   r   r   r   s   &   r   	test_atanTestMathLib.test_atanL  sV    ;;U[[<<u||==%--1 1v1r   c                j   \         p\        P                  \        P                  \        P                  \        P
                  \        P                  \        P                  \        P                  \        P                  .p. ROpV Uu. uF  qD^,          NK  	  ppV P                  WW54       R# u upi r   )r#   r   r   r   r   r   r   r   r   r   r   rt   r   r   r   r   r   s   &     r   
test_atan2TestMathLib.test_atan2T  ss    ;;U[[<<u||==%--1 1#+,8aEE8,< -   	B0c                6   \         p\        P                  \        P                  \        P                  \        P
                  \        P                  \        P                  \        P                  \        P                  .p. ROpV P                  WVRR7       R# )r   doubler   Nr   )r'   r   r   r   r   r   r   r   r   r   r   r   s   &   r   
test_asinhTestMathLib.test_asinh]  sZ    ;;U[[<<u||==%--1 .vx@r   c                2   \         p\        P                  \        P                  \        P                  \        P
                  \        P                  \        P                  \        P                  \        P                  .p. ROpV P                  WV4       R# r   )r*   r   r   r   r   r   r   r   r   r   r   r   s   &   r   
test_acoshTestMathLib.test_acoshe  sV    ;;U[[<<u||==%--1 .v1r   c                6   \         p\        P                  \        P                  \        P                  \        P
                  \        P                  \        P                  \        P                  \        P                  .p. ROpV P                  WVRR7       R# )r   r   r   Nr   r   r   r   r   r   r   r   )r,   r   r   r   r   r   r   r   r   r   r   r   s   &   r   
test_atanhTestMathLib.test_atanhm  sZ    ;;U[[<<u||==%--1 0vx@r   c                2   \         p\        P                  \        P                  \        P                  \        P
                  \        P                  \        P                  \        P                  \        P                  .p. ROpV P                  WV4       R# r   )r   r   r   r   r   r   r   r   r   r   r   r   s   &   r   	test_sinhTestMathLib.test_sinhu  r   r   c                2   \         p\        P                  \        P                  \        P                  \        P
                  \        P                  \        P                  \        P                  \        P                  .p. ROpV P                  WV4       R# r   )r   r   r   r   r   r   r   r   r   r   r   r   s   &   r   	test_coshTestMathLib.test_cosh}  r   r   c                2   \         p\        P                  \        P                  \        P                  \        P
                  \        P                  \        P                  \        P                  \        P                  .p. ROpV P                  WV4       R# )r   Nr   )r   r   r   r   r   r   r   r   r   r   r   r   s   &   r   	test_tanhTestMathLib.test_tanh  V    ;;U[[<<u||==%--1 0v1r   c                2   \         p\        P                  \        P                  \        P                  \        P
                  \        P                  \        P                  \        P                  \        P                  .p. ROpV P                  WV4       R# r   N)r   r   r   r   r   r   r   gffffff?)rB   r   r   r   r   r   r   r   r   r   r   r   s   &   r   
test_floorTestMathLib.test_floor  V    ;;U[[<<u||==%--1 0v1r   c                2   \         p\        P                  \        P                  \        P                  \        P
                  \        P                  \        P                  \        P                  \        P                  .p. ROpV P                  WV4       R# r   )rD   r   r   r   r   r   r   r   r   r   r   r   s   &   r   	test_ceilTestMathLib.test_ceil  r   r   c                2   \         p\        P                  \        P                  \        P                  \        P
                  \        P                  \        P                  \        P                  \        P                  .p. ROpV P                  WV4       R# r   )rF   r   r   r   r   r   r   r   r   r   r   r   s   &   r   
test_truncTestMathLib.test_trunc  r   r   c                0    V P                  \        4       R # r	   )r   rH   rt   s   &r   
test_isnanTestMathLib.test_isnan      !!%(r   c                0    V P                  \        4       R # r	   )r   rJ   r  s   &r   
test_isinfTestMathLib.test_isinf  r
  r   c                0    V P                  \        4       R # r	   )r   rL   r  s   &r   test_isfiniteTestMathLib.test_isfinite  s    !!(+r   c           
     d   \         p\        P                  \        P                  \        P                  \        P
                  .p. ROpV Uu. uF  qD^,           NK  	  ppRpV P                  WW5V4       R p\        V4      p\        P                  \        P
                  3 F  p	\        P                  ! V	4      P                  p
V
! \        P                  ! V
4      P                  R,          4      pV! W4      pV P                  W! W4      RR7       V P                  \        P                   ! V4      4       \"        P$                  ! 4       ;_uu_ 4        \"        P&                  ! R\(        4       V P+                  \(        RW{V4       RRR4       K  	  R# u upi   + '       g   i     EK  ; i)	r   ry   c                 T    \         P                  ! W ,          W,          ,           4      # r	   r.   rO   s   &&r   naive_hypot+TestMathLib.test_hypot.<locals>.naive_hypot  s    99QUQU]++r   g      >@r   errorz overflow encountered in .*scalarN)r   r               zG?(\?)rN   r   r   r   r   r   r   r   r   as_dtypetyper1   finfomaxrr   
assertTruerL   warningscatch_warningssimplefilterRuntimeWarningassertRaisesRegex)rt   r   r   r   r   r   r{   r  ru   flttydtvalnb_anss   &            r   
test_hypotTestMathLib.test_hypot  s<   ;;==%--1/#+,8aEE8,TB	, VmmU]]3E''.33BRXXb\%%+,C3_F##FF3,<8#LOOBKK/0((**%%g~>&&~(J(3#? +* 4 -$ +**s   F4FF/c                \   \         p\        P                  \        P                  \        P                  \        P
                  \        P                  \        P                  .p. ROpV Uu. uF  qD^,           NK  	  ppV Uu. uF  qD^,
          NK  	  ppV P                  WW54       V P                  WW64       V P                  W. RO\        P                  .^,          4       V P                  W. RO\        P                  ) .^,          4       V P                  WW34       R# u upi u upi )r   N)r   r  r  g%.AgS9)r               ?)rQ   r   r   r   r   r   r   r   r   r
   r   )rt   r   r   r   r   	y1_values	y2_valuess   &      r   test_nextafterTestMathLib.test_nextafter  s    ==%--;;<</ 9$,-HqUUH	-$,-HqUUH	-== 	$((AF488)QG 	< .-s   +D$D)c                2   \         p\        P                  \        P                  \        P                  \        P
                  \        P                  \        P                  \        P                  \        P                  .p. ROpV P                  WV4       R# r   )rS   r   r   r   r   r   r   r   r   r   r   r   s   &   r   test_degreesTestMathLib.test_degrees  V    ;;U[[<<u||==%--1 .v1r   c                2   \         p\        P                  \        P                  \        P                  \        P
                  \        P                  \        P                  \        P                  \        P                  .p. ROpV P                  WV4       R# r   )rV   r   r   r   r   r   r   r   r   r   r   r   s   &   r   test_radiansTestMathLib.test_radians  r6  r   c           
         \         pR R RRRR^\        R4      .p\        P                  \        P                  .\        V4      ^,          ,          pV P                  WVR^R7       R# 	r   r   r.  r   r   r{   ulpsNg             )rX   r   r   r   r   lenr   r   s   &   r   test_erfTestMathLib.test_erf  sU    CsCE%LA==%--0CMQ4FGvxaHr   c           
         \         pR R RRRR^\        R4      .p\        P                  \        P                  .\        V4      ^,          ,          pV P                  WVR^R7       R# r;  )rZ   r   r   r   r   r?  r   r   s   &   r   	test_erfcTestMathLib.test_erfc  sU    CsCE%LA==%--0CMQ4FGvxaHr   c                @   \         p. R	Op\        P                  \        P                  .\	        V4      ^,          ,          pV P                  WVR^R7       R
RRRR\        R4      .p\        P                  .\	        V4      ,          pV P                  WVR^R7       R# )r   r   r<  r         @g333333$@g      I@r   N)r   r-  r.  皙)r\   r   r   r   r?  r   r   r   s   &   r   
test_gammaTestMathLib.test_gamma  s~    (==%--0CMQ4FGvxaH#sD#uU|<==/CM1vxaHr   c           
         \         pR R	R
RRRR\        R4      .p\        P                  \        P                  .\        V4      ^,          ,          pV P                  WVRR7       R# )r   r   g      i@g    _Bgꌠ9Y>)Fr   r   r   NrG  rH  )r^   r   r   r   r   r?  r   r   s   &   r   test_lgammaTestMathLib.test_lgamma  sS    dCtT5<H==%--0CMQ4FGvx@r   c                j   \         p\        P                  \        P                  \        P                  \        P
                  \        P                  \        P                  \        P                  \        P                  .p. ROpV Uu. uF  qD^,          NK  	  ppV P                  WW54       R# u upi r   )r`   r   r   r   r   r   r   r   r   r   r   r   s   &     r   test_powTestMathLib.test_pow	  ss    ;;U[[<<u||==%--1 1#+,8aEE8,< -r   c                   ^ RI HpHpHp \        pV! \        \        P                  4      .V! R^4      O5!  pV! \        \        P                  4      .V! R^4      O5!  p\        V! WV4      !  w  rxp	V P                  WGW4       R# )r   )productrepeatchainN)r   r   r   r   r      r   )r   r   r   rU  	      )	itertoolsrR  rS  rT  rc   sortedr   signed_domainunsigned_domainr~   r   )
rt   rR  rS  rT  r   signed_argsunsigned_argsr   r   r   s
   &         r   test_gcdTestMathLib.test_gcd  s    445&&'
*01I1*M
  5(()
,23F,J
 '*5+L&M#8<r   c                   \         p\        P                  \        P                  .pRRRR^^\	        R4      \	        R4      \	        R4      .	p\        \        \        P                  ! W#V4      !  4      w  rEpV P                  WWV4       R# )	r   r   -infr   r   Nr   r   r>  )
re   r   r   r   r   listr~   rX  rR  r   )rt   r   value_typesvaluesr   r   r   s   &      r   test_copysignTestMathLib.test_copysign  st    }}emm4b$Q5=%,, &*3{F;,= '>#8<r   c           	         \         p\        P                  \        P                  .pR	R
RR\	        R4      \	        R4      \	        R4      .pV P                  WVRR7       R# )rF  r   g      @ra  r   r   exactr   Ng      r>  )rg   r   r   r   r   r   r   s   &   r   
test_frexpTestMathLib.test_frexp'  sN    ==%--0$S&M5<u?vw?r   c                   \         p\        V4      p\        P                  \        P                  3 FV  pRRRR	R
R\        R4      ^ 3\        R4      ^ 3\        R4      ^ 33	 F#  pRV: 2pV P                  V! V!  V! V!  4       K%  	  KX  	  R# )rF  r   ra  r   rz   N)rF  r   )rF  r   )r   r   )r   r   )r>  r   )r>  r   )ri   r   r   r   r   r   rr   )rt   r   ru   r&  argsr|   s   &     r   
test_ldexpTestMathLib.test_ldexp.  s    VmmU]]3E"Hh"I,*U6]A,>,*, )-.''tfdmD, 4r   rm   N)rh  )r     )9__name__
__module____qualname____firstlineno__rv   r   r   r   r   unittestskipIfsysplatformr   r   r   r   r   
skipUnlessr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r*  r1  r4  r8  r@  rC  rI  rL  rO  r^  re  ri  rm  __static_attributes____classdictcell__)__classdict__s   @r   rp   rp      s@    :.N22 __S\\W,>@2@222	22 g-/CD2 E222222222=A2A222222)),?:=&22IIIA=
==@	E 	Er   rp   __main__)=rX  r
   rv  rt  r!  numpyr1   numbar   r   numba.tests.supportr   numba.npr   numba.core.utilsr   r   r   r   r   r   r   r   r   r!   r#   r'   r*   r,   r/   r2   r4   r6   r8   r:   r<   r>   r@   rB   rD   rF   rH   rJ   rL   rN   rQ   rS   rV   rX   rZ   r\   r^   r`   rc   re   rg   ri   rn   rp   rp  mainrm   r   r   <module>r     s     
     ( " & DE( DEN zMMO r   