@@ -202,19 +202,77 @@ def approxEqual(a, b):
202
202
approxEqual ((8320894759108355333 / 688889843982879461528409053334 ), 1.2078701452470752e-11 )
203
203
approxEqual ((647075625851211057828684328038 / - 326063662711018305247049652642 ), - 1.9845070145847477 )
204
204
205
- # FIXME
206
- # doc='binop //'
207
- # assert (5744409969029584448//-1220411214895984398) == -5
208
- # assert (801848568806426077475668423535//-8085312908136062722) == -99173473918
209
- # assert (-5721542802125298347//-987715757830780227623113033880) == 0
210
- # assert (457897615381227167341108005859//-353379489795893751557547859364) == -2
211
-
212
- # FIXME
213
- #doc='binop %'
214
- # assert (7341566843809298600%3978427562660778191) == 3363139281148520409
215
- # assert (294375077667396199949508874162%7786366607165572976) == 345835433804354002
216
- # assert (6316821303028268687%-707212250464589439185037502466) == -707212250458272617882009233779
217
- # assert (-119459441634706255601601571546%17130399946665545258117887219) == 453357991952561205223638987
205
+ doc = 'Int divide signs'
206
+ assert (123 // 20 ) == 6
207
+ assert (123 // - 20 ) == - 7
208
+ assert (- 123 // 20 ) == - 7
209
+ assert (- 123 // - 20 ) == 6
210
+ assert (123 % 20 ) == 3
211
+ assert (123 % - 20 ) == - 17
212
+ assert (- 123 % 20 ) == 17
213
+ assert (- 123 % - 20 ) == - 3
214
+
215
+ doc = 'Int divide signs exact'
216
+ assert (200 // 20 ) == 10
217
+ assert (200 // - 20 ) == - 10
218
+ assert (- 200 // 20 ) == - 10
219
+ assert (- 200 // - 20 ) == 10
220
+ assert (200 % 20 ) == 0
221
+ assert (200 % - 20 ) == 0
222
+ assert (- 200 % 20 ) == 0
223
+ assert (- 200 % - 20 ) == 0
224
+
225
+ doc = 'Int divide zero'
226
+ assert (200 // 201 ) == 0
227
+ assert (200 // - 201 ) == - 1
228
+ assert (- 200 // 201 ) == - 1
229
+ assert (- 200 // - 201 ) == 0
230
+ assert (200 % 201 ) == 200
231
+ assert (200 % - 201 ) == - 1
232
+ assert (- 200 % 201 ) == 1
233
+ assert (- 200 % - 201 ) == - 200
234
+
235
+ doc = 'BigInt divide zero'
236
+ assert (2000000000000000000000 // 2000000000000000000001 ) == 0
237
+ assert (2000000000000000000000 // - 2000000000000000000001 ) == - 1
238
+ assert (- 2000000000000000000000 // 2000000000000000000001 ) == - 1
239
+ assert (- 2000000000000000000000 // - 2000000000000000000001 ) == 0
240
+ assert (2000000000000000000000 % 2000000000000000000001 ) == 2000000000000000000000
241
+ assert (2000000000000000000000 % - 2000000000000000000001 ) == - 1
242
+ assert (- 2000000000000000000000 % 2000000000000000000001 ) == 1
243
+ assert (- 2000000000000000000000 % - 2000000000000000000001 ) == - 2000000000000000000000
244
+
245
+ doc = 'BigInt divide signs'
246
+ assert (1000000000000000000000000000001 // 100000000000000000001 ) == 9999999999
247
+ assert (1000000000000000000000000000001 // - 100000000000000000001 ) == - 10000000000
248
+ assert (- 1000000000000000000000000000001 // 100000000000000000001 ) == - 10000000000
249
+ assert (- 1000000000000000000000000000001 // - 100000000000000000001 ) == 9999999999
250
+ assert (1000000000000000000000000000001 % 100000000000000000001 ) == 99999999990000000002
251
+ assert (1000000000000000000000000000001 % - 100000000000000000001 ) == - 9999999999
252
+ assert (- 1000000000000000000000000000001 % 100000000000000000001 ) == 9999999999
253
+ assert (- 1000000000000000000000000000001 % - 100000000000000000001 ) == - 99999999990000000002
254
+
255
+ doc = 'BigInt divide signs equal'
256
+ assert (1000000000000000000000000000000 // 100000000000000000000 ) == 10000000000
257
+ assert (1000000000000000000000000000000 // - 100000000000000000000 ) == - 10000000000
258
+ assert (- 1000000000000000000000000000000 // 100000000000000000000 ) == - 10000000000
259
+ assert (- 1000000000000000000000000000000 // - 100000000000000000000 ) == 10000000000
260
+ assert (1000000000000000000000000000000 % 100000000000000000000 ) == 0
261
+ assert (1000000000000000000000000000000 % - 100000000000000000000 ) == 0
262
+ assert (- 1000000000000000000000000000000 % 100000000000000000000 ) == 0
263
+ assert (- 1000000000000000000000000000000 % - 100000000000000000000 ) == 0
264
+
265
+ doc = 'binop //'
266
+ assert (5744409969029584448 // - 1220411214895984398 ) == - 5
267
+ assert (801848568806426077475668423535 // - 8085312908136062722 ) == - 99173473918
268
+ assert (- 5721542802125298347 // - 987715757830780227623113033880 ) == 0
269
+ assert (457897615381227167341108005859 // - 353379489795893751557547859364 ) == - 2
270
+
271
+ doc = 'binop %'
272
+ assert (7341566843809298600 % 3978427562660778191 ) == 3363139281148520409
273
+ assert (294375077667396199949508874162 % 7786366607165572976 ) == 345835433804354002
274
+ assert (6316821303028268687 % - 707212250464589439185037502466 ) == - 707212250458272617882009233779
275
+ assert (- 119459441634706255601601571546 % 17130399946665545258117887219 ) == 453357991952561205223638987
218
276
219
277
doc = 'binop &'
220
278
assert (- 6956530093671002017 & - 1100238534807351779 ) == - 8056622384673947619
@@ -326,35 +384,33 @@ def approxEqual(a, b):
326
384
a /= - 705476577911651649854533260835
327
385
approxEqual (a , 0.9120485356446241 )
328
386
329
- # FIXME
330
- #doc='augop //'
331
- # a = -2955145545873784447
332
- # a //= -8398154603067315189
333
- # assert a == 0
334
- # a = 764874707978666366468709717939
335
- # a //= -637453031923767022
336
- # assert a == -1199891866026
337
- # a = -3225133016360684087
338
- # a //= -106830573980181067612866984034
339
- # assert a == 0
340
- # a = -1017486275496211203702167393
341
- # a //= 707873786594465355113033731247
342
- # assert a == -1
343
-
344
- # FIXME
345
- # doc='augop %'
346
- # a = -4898359889955701722
347
- # a %= 2586537256564406544
348
- # assert a == 274714623173111366
349
- # a = 165600857868102801319021818388
350
- # a %= -5550996453372617970
351
- # assert a == -525692049140908922
352
- # a = -1667139790609035866
353
- # a %= 132512297800301099457101240885
354
- # assert a == 132512297798633959666492205019
355
- # a = 1223018728310354788098388057
356
- # a %= 756727576419043673398940776835
357
- # assert a == 1223018728310354788098388057
387
+ doc = 'augop //'
388
+ a = - 2955145545873784447
389
+ a //= - 8398154603067315189
390
+ assert a == 0
391
+ a = 764874707978666366468709717939
392
+ a //= - 637453031923767022
393
+ assert a == - 1199891866026
394
+ a = - 3225133016360684087
395
+ a //= - 106830573980181067612866984034
396
+ assert a == 0
397
+ a = - 1017486275496211203702167393
398
+ a //= 707873786594465355113033731247
399
+ assert a == - 1
400
+
401
+ doc = 'augop %'
402
+ a = - 4898359889955701722
403
+ a %= 2586537256564406544
404
+ assert a == 274714623173111366
405
+ a = 165600857868102801319021818388
406
+ a %= - 5550996453372617970
407
+ assert a == - 525692049140908922
408
+ a = - 1667139790609035866
409
+ a %= 132512297800301099457101240885
410
+ assert a == 132512297798633959666492205019
411
+ a = 1223018728310354788098388057
412
+ a %= 756727576419043673398940776835
413
+ assert a == 1223018728310354788098388057
358
414
359
415
doc = 'augop &'
360
416
a = - 926347478023783305
@@ -401,8 +457,8 @@ def approxEqual(a, b):
401
457
# FIXME
402
458
# powmod
403
459
# divmod
404
- # lsl
405
- # lsr
460
+ # <<
461
+ # >>
406
462
# round
407
463
# **
408
464
# **=
0 commit comments