-
Notifications
You must be signed in to change notification settings - Fork 57
/
test-more-ops.txt
755 lines (670 loc) · 68.8 KB
/
test-more-ops.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
; the format for these test cases are:
; expression => expected result | expected-cost
lognot ( 1 2 3 ) => FAIL
lognot 0xff => 0 | 334
lognot 0xffffff => 0 | 340
lognot 0x0000ff => 0xff00 | 360
lognot 0x0000000001 => 0xfe | 356
lognot 0xff00 => 0x00ff | 357
lognot 0x0c => 0xf3 | 344
lognot 0 => 0xff | 341
lognot 0xcccccc => 0x333333 | 370
lognot 0x333333 => 0xcccccc | 370
; requires exactly one argument
lognot 0x00 0x00 => FAIL
lognot => FAIL
; tests ported from clvm
lognot 12 => -13 | 344
lognot -1 => ( ) | 334
lognot 0 => -1 | 341
lognot 734671943749191 => 0xfd63d1dbc431b8 | 422
lognot => FAIL
lognot ( "foo" ) => FAIL
lognot 1 2 => FAIL
lognot 0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 => -2 | 14873
logior ( 1 2 3 ) => FAIL
logior => 0 | 100
logior 0xbaadf00d => 0xbaadf00d | 416
logior 0xf0 0x0f => 0xff | 644
logior 0xcc 0x33 => 0xff | 644
logior 0x800000 0x01 => 0x800001 | 670
logior 0x400000 0x01 => 0x400001 | 670
logior 0x000040 0x01 => 0x41 | 650
logior 0x000080 0x01 => 0x0081 | 660
logior 0x000080 0xff => 0xff | 650
logior 0x000070 0xff => 0xff | 650
logior 0x000080 0x7f => 0x00ff | 660
logior 0xffff80 0x01 => 0x81 | 650
logior 0x01 0x02 0x04 0x08 0x10 0x20 0x40 0x80 => 0xff | 2246
logior 0x01 0x01 => 0x01 | 644
logior 0x01 0x01 0x01 => 0x01 | 911
; tests ported from clvm
logior 12 5 => 13 | 644
logior 12 5 7 => 15 | 911
logior 0x00000000000000000000000000000000000000000000000000000000000000000000000000000c 0x000005 0x000000000000000000000000000000000000000000000000000000000000000007 => 15 | 1127
logior -128 0x07ffff => -1 | 650
logxor ( 1 2 3 ) => FAIL
logxor => 0 | 100
logxor 0xbaadf00d => 0xbaadf00d | 416
logxor 0xf0 0x0f => 0xff | 644
logxor 0xcc 0x33 => 0xff | 644
logxor 0x800000 0x01 => 0x800001 | 670
logxor 0x400000 0x01 => 0x400001 | 670
logxor 0x000040 0x01 => 0x41 | 650
logxor 0x000080 0x01 => 0x0081 | 660
logxor 0x000080 0xff => 0xff7f | 660
logxor 0x000080 0x7f => 0x00ff | 660
logxor 0x000070 0xff => 0x8f | 650
logxor 0xffff80 0x01 => 0x81 | 650
logxor 0x01 0x02 0x04 0x08 0x10 0x20 0x40 0x80 => 0xff | 2246
logxor 0x01 0x01 => 0 | 634
logxor 0x01 0x01 0x01 => 0x01 | 911
logxor 777 777 => 0 | 640
; this is the cost of flipping the most significan bit in a 48 byte buffer
logxor 0x123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456 0x200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 => 0x323456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456 | 1396
; this is the cost of flipping the most significan bit in a 96 byte buffer
logxor 0x123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456 0x200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 => 0x323456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456 | 2164
; tests ported from clvm
logxor 12 5 => 9 | 644
logxor 12 5 7 => 14 | 911
logxor 0x0000000000000000000000000000000000000000000000000000000000000000000000000c 0x000005 0x00000000000000000000000000000000000000000000000000000000000000000007 => 14 | 1124
logxor -128 0x07ffff => 0xf8007f | 670
logand ( 1 2 3 ) => FAIL
logand => 0xff | 110
logand 0xbaadf00d => 0xbaadf00d | 416
logand 0xf0 0x0f => 0 | 634
logand 0xcc 0x33 => 0 | 634
logand 0x800000 0x01 => 0 | 640
logand 0x400000 0x01 => 0 | 640
logand 0x000040 0x01 => 0 | 640
logand 0x000080 0x01 => 0 | 640
; 0x000080 -> 0x0080, 0xff -> 0xffff
logand 0x000080 0xff => 0x0080 | 660
logand 0x000040 0xff => 0x40 | 650
logand 0x000080 0x7f => 0 | 640
logand 0x000070 0xff => 0x70 | 650
logand 0xffff80 0x01 => 0 | 640
logand 0x01 0x02 0x04 0x08 0x10 0x20 0x40 0x80 => 0 | 2236
logand 0x01 0x01 => 0x01 | 644
logand 0x01 0x01 0x01 => 0x01 | 911
; tests ported from clvm
logand 13 12 => 12 | 644
logand 13 12 4 => 4 | 911
logand => -1 | 110
logand 0x000000000000000000000000000000000000000000000000000000000000fffe 0x000000000000000000000000000000000000000000000000000000000000005D => 92 | 830
logand -128 0x07ffff => 0x07ff80 | 670
logand 1 2 => 0 | 634
ash => FAIL
ash ( 1 2 3 ) 1 => FAIL
ash ( "foo" ) 1 => FAIL
ash 0xffff ( 1 2 3 ) => FAIL
ash 1 => FAIL
ash 0xff => FAIL
ash 0xff 1 => 0xfe | 612
ash 0xff 1 1 => FAIL
ash 0xff -1 => 0xff | 612
ash 0x80 -1 => 0xc0 | 612
ash 0x80 -2 => 0xe0 | 612
ash 0x80 -3 => 0xf0 | 612
ash 0x80 -4 => 0xf8 | 612
ash 0x80 -5 => 0xfc | 612
ash 0x80 -6 => 0xfe | 612
ash 0x80 -7 => 0xff | 612
ash 0x80 -8 => 0xff | 612
ash 0x7f -1 => 0x3f | 612
ash 0x7f -2 => 0x1f | 612
ash 0x7f -3 => 0x0f | 612
ash 0x7f -4 => 0x07 | 612
ash 0x7f -5 => 0x03 | 612
ash 0x7f -6 => 0x01 | 612
ash 0x7f -7 => 0 | 599
ash 0x7f -8 => 0 | 599
ash 0x80 1 => 0xff00 | 625
ash 0x80 2 => 0xfe00 | 625
ash 0x80 3 => 0xfc00 | 625
ash 0x80 4 => 0xf800 | 625
ash 0x80 5 => 0xf000 | 625
ash 0x80 6 => 0xe000 | 625
ash 0x80 7 => 0xc000 | 625
ash 0x80 8 => 0x8000 | 625
ash 0x7f 1 => 0x00fe | 622
ash 0x7f 2 => 0x01fc | 625
ash 0x7f 3 => 0x03f8 | 625
ash 0x7f 4 => 0x07f0 | 625
ash 0x7f 5 => 0x0fe0 | 625
ash 0x7f 6 => 0x1fc0 | 625
ash 0x7f 7 => 0x3f80 | 625
ash 0x7f 8 => 0x7f00 | 625
ash 0x90000000000000000000000000 -100 => -7 | 648
ash 7 100 => 0x70000000000000000000000000 | 768
ash -7 100 => 0x90000000000000000000000000 | 768
ash 7 1 => 14 | 612
ash 0xcc 1 => 0x98 | 612
ash 0xcc 2 => 0xff30 | 622
ash 0xcc 3 => 0xfe60 | 625
ash 0xcc 4 => 0xfcc0 | 625
ash 0xcc 5 => 0xf980 | 625
ash 0xcc 6 => 0xf300 | 625
ash 0xcc -1 => 0xe6 | 612
ash 0xcc -2 => 0xf3 | 612
ash 0xcc -3 => 0xf9 | 612
ash 0xcc -4 => 0xfc | 612
ash 0xcc -5 => 0xfe | 612
ash 0xcc -6 => 0xff | 612
; shift count is limited to 65535 bits
ash 0xcc -214783648 => FAIL
ash 0xcc -214783647 => FAIL
ash 0xcc 214783648 => FAIL
ash 0xcc 214783647 => FAIL
ash 0xcc 65536 => FAIL
ash 0xcc -65536 => FAIL
ash 0xcc 256 => 0xcc0000000000000000000000000000000000000000000000000000000000000000 | 1028
ash 0xcc 255 => 0xe60000000000000000000000000000000000000000000000000000000000000000 | 1028
ash 0xcc -256 => 0xff | 612
ash 500 65535 => 0x00fa0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | 107121
ash 500 -65535 => 0 | 602
ash 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007 0x0000000000000000000000000000000000000000000000000000000000000001 => FAIL
; parameter isn't allowed to be wider than 32 bits
ash 0xcc 0x0000000001 => FAIL
ash 0xcc "foo" => FAIL
lsh ( 1 2 3 ) 1 => FAIL
lsh 0xffff ( 1 2 3 ) => FAIL
lsh => FAIL
lsh 0xff => FAIL
lsh 0xff 1 => 0x01fe | 306
lsh 0xff 1 1 => FAIL
lsh 0xff -1 => 0x7f | 293
lsh 0x80 -1 => 0x40 | 293
lsh 0x80 -2 => 0x20 | 293
lsh 0x80 -3 => 0x10 | 293
lsh 0x80 -4 => 0x08 | 293
lsh 0x80 -5 => 0x04 | 293
lsh 0x80 -6 => 0x02 | 293
lsh 0x80 -7 => 0x01 | 293
lsh 0x80 -8 => 0 | 280
lsh 0x7f -1 => 0x3f | 293
lsh 0x7f -2 => 0x1f | 293
lsh 0x7f -3 => 0x0f | 293
lsh 0x7f -4 => 0x07 | 293
lsh 0x7f -5 => 0x03 | 293
lsh 0x7f -6 => 0x01 | 293
lsh 0x7f -7 => 0 | 280
lsh 0x7f -8 => 0 | 280
lsh 0x80 1 => 0x0100 | 306
lsh 0x80 2 => 0x0200 | 306
lsh 0x80 3 => 0x0400 | 306
lsh 0x80 4 => 0x0800 | 306
lsh 0x80 5 => 0x1000 | 306
lsh 0x80 6 => 0x2000 | 306
lsh 0x80 7 => 0x4000 | 306
lsh 0x80 8 => 0x008000 | 316
lsh 0x7f 1 => 0x00fe | 303
lsh 0x7f 2 => 0x01fc | 306
lsh 0x7f 3 => 0x03f8 | 306
lsh 0x7f 4 => 0x07f0 | 306
lsh 0x7f 5 => 0x0fe0 | 306
lsh 0x7f 6 => 0x1fc0 | 306
lsh 0x7f 7 => 0x3f80 | 306
lsh 0x7f 8 => 0x7f00 | 306
lsh 0x90000000000000000000000000 -100 => 0x09 | 329
lsh 0xf9 100 => 0x0f90000000000000000000000000 | 462
lsh 0xcc 1 => 0x0198 | 306
lsh 0xcc 2 => 0x0330 | 306
lsh 0xcc 3 => 0x0660 | 306
lsh 0xcc 4 => 0x0cc0 | 306
lsh 0xcc 5 => 0x1980 | 306
lsh 0xcc 6 => 0x3300 | 306
lsh 0xcc -1 => 0x66 | 293
lsh 0xcc -2 => 0x33 | 293
lsh 0xcc -3 => 0x19 | 293
lsh 0xcc -4 => 0x0c | 293
lsh 0xcc -5 => 0x06 | 293
lsh 0xcc -6 => 0x03 | 293
; shift count is limited to 65535 bits
lsh 0xcc -214783648 => FAIL
lsh 0xcc -214783647 => FAIL
lsh 0xcc 214783648 => FAIL
lsh 0xcc 214783647 => FAIL
lsh 0xcc 65536 => FAIL
lsh 0xcc -65536 => FAIL
lsh 0xcc 256 => 0x00cc0000000000000000000000000000000000000000000000000000000000000000 | 719
lsh 0xcc 255 => 0x660000000000000000000000000000000000000000000000000000000000000000 | 709
lsh 0xcc -256 => 0 | 280
; parameter isn't allowed to be wider than 32 bits
lsh 0xcc 0x0000000001 => FAIL
lsh 0xcc "foo" => FAIL
; tests ported from clvm
lsh 7 1 => 14 | 293
lsh 7 100 => 0x70000000000000000000000000 | 449
lsh -7 100 => 0x0f90000000000000000000000000 | 462
lsh 0x90000000000000000000000000 -100 => 9 | 329
lsh 1 => FAIL
lsh 1 1 1 => FAIL
lsh ( "foo" ) 1 => FAIL
lsh 500 65535 => 0x00fa0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | 106802
lsh 500 -65535 => ( ) | 283
lsh 500 65536 => FAIL
lsh 500 -65536 => FAIL
lsh 0x00000000000000000000000000000000000000000000000000000000000000000007 0x0000000000000000000000000000000000000000000000000000000000000000000001 => FAIL
lsh 0xffffff 0 => 0x00ffffff | 335
lsh 0xffffff 1 => 0x01fffffe | 338
lsh 0x00ffffff -1 => 0x7fffff | 328
lsh 0xffffff 8 => 0x00ffffff00 | 348
not => FAIL
not 1 2 => FAIL
not 0 => 1 | 200
not 1 => 0 | 200
not 0xffff => 0 | 200
; a sigle zero-byte counts as true
not 0x00 => 0 | 200
not ( "foo" "bar" ) => ( ) | 200
; a non-empty list counts as "true"
not ( 1 2 3 ) => 0 | 200
not ( ) => 1 | 200
any => 0 | 200
any 0 => 0 | 500
any 0 0 => 0 | 800
any 1 0 => 1 | 800
any 0 1 => 1 | 800
any 1 ( "foo" ) => 1 | 800
; a sigle zero-byte counts as true
any 0x00 => 1 | 500
; a non-empty list counts as "true"
any 0 ( 1 2 ) => 1 | 800
any ( ) ( 1 2 ) => 1 | 800
any ( ) 0 => 0 | 800
all => 1 | 200
all 1 => 1 | 500
all 0 => 0 | 500
all 1 0 => 0 | 800
all 0 1 => 0 | 800
all 1 2 3 => 1 | 1100
all 1 1 0 => 0 | 1100
all 1 ( "foo" ) => 1 | 800
all 0x00 => 1 | 500
all 0x00 0 => 0 | 800
; a non-empty list counts as "true"
all ( 1 ) 2 3 => 1 | 1100
all ( 1 ) 2 ( ) => 0 | 1100
> => FAIL
> 0 => FAIL
> 0 0 => 0 | 498
> ( 1 0 ) => FAIL
> ( 1 ) 0 => FAIL
> 0 ( 1 ) => FAIL
> 1 0 => 1 | 500
> 0 1 => 0 | 500
> 0 -1 => 1 | 500
> -1 0 => 0 | 500
> 0x0000000000000000000000000000000000000000000000000000000000000000000493e0 0x000000000000000000000000000000000000000000000000000000000000005a => 1 | 634
> 3 300 => 0 | 504
> 300 3 => 1 | 504
> "foobar" "foo" => 1 | 516
> "foo" "boo" => 1 | 510
> "bar" "foo" => 0 | 510
; tests ported from clvm
> 10 => FAIL
> 11 10 => 1 | 502
> 9 10 => ( ) | 502
> ( 0 ) 0 => FAIL
> 3 300 => ( ) | 504
> 0x5a 0x0493e0 => ( ) | 506
> 0x0493e0 0x5a => 1 | 506
>s => FAIL
>s 0x00 => FAIL
>s 0x00 0x00 => 0 | 119
>s 0x00 0x00 0x00 => FAIL
>s ( 1 ) ( 2 ) => FAIL
>s "foo" ( 2 ) => FAIL
>s ( 2 ) "foo" => FAIL
; -1 is 0xff which compares greater than 0, an empty atom
>s -1 0 => 1 | 118
>s 0 -1 => 0 | 118
>s 0x01 0x00 => 1 | 119
>s 0x1001 0x1000 => 1 | 121
>s 0x1000 0x1001 => 0 | 121
>s "foo" "bar" => 1 | 123
>s "bar" "foo" => 0 | 123
>s "foo" "foo" => 0 | 123
; tests ported from clvm
>s 0x001004 ( 100 200 ) => FAIL
>s 0x00 "" => 1 | 118
>s 0x01 0x00 => 1 | 119
>s 0x00 0x01 => ( ) | 119
>s 0x1000 0x1001 => ( ) | 121
>s 0x1000 0x01 => 1 | 120
>s 0x1000 0x1000 => ( ) | 121
>s 0x001004 0x1005 => ( ) | 122
>s 0x1005 0x001004 => 1 | 122
>s ( 100 200 ) 0x001004 => FAIL
; invalid arguments
+ ( 1 ) => FAIL
+ 1 ( 2 ) => FAIL
+ ( 2 ) 1 => FAIL
+ => 0 | 99
+ 0 => 0 | 419
+ 0 0 => 0 | 739
+ 0 0 0 => 0 | 1059
+ 7 1 => 8 | 755
+ 1 => 1 | 432
+ -1 1 => 0 | 745
+ 1 2 3 4 => 10 | 1401
+ 10 20 => 30 | 755
+ -100 100 => 0 | 745
+ 100 -100 => 0 | 745
+ 32768 32768 => 65536 | 787
+ -32768 -32768 => -65536 | 781
+ 65536 65536 => 131072 | 787
+ -65536 -65536 => -131072 | 787
+ -32768 -32768 => -65536 | 781
+ 2147483648 2147483648 => 4294967296 | 819
+ -2147483648 -2147483648 => -4294967296 | 813
+ 0x010000000000000000 0x010000000000000000 => 0x020000000000000000 | 883
+ 18446744073709551616 18446744073709551616 => 36893488147419103232 | 883
+ -18446744073709551616 -18446744073709551616 => -36893488147419103232 | 883
+ 18446744073709551616 -18446744073709551616 => 0 | 793
+ -18446744073709551616 18446744073709551616 => 0 | 793
+ 0x00cccccccc 0x33333333 => 0x00ffffffff | 816
; -3355444 + 3355443 = -1
+ 0xcccccccc 0x33333333 => 0xff | 773
+ 0x00000000000000000000000000000003 0x00000000000000000000000000000002 => 5 | 845
; invalid arguments
- ( 1 ) => FAIL
- 1 ( 1 ) => FAIL
- ( 2 ) 2 => FAIL
- => 0 | 99
- 0 => 0 | 419
- 0 0 => 0 | 739
- 0 0 0 => 0 | 1059
- -1 1 => -2 | 755
- 1 -1 => 2 | 755
- 1 2 3 4 => -8 | 1401
- -100 100 => -200 | 765
- 100 -100 => 200 | 765
- 32768 32768 => 0 | 757
- -32768 -32768 => 0 | 751
- 32768 -32768 => 65536 | 784
- 65536 65536 => 0 | 757
- 65536 -65536 => 131072 | 787
- -65536 -65536 => 0 | 757
- -32768 -32768 => 0 | 751
- 2147483648 2147483648 => 0 | 769
- 2147483648 -2147483648 => 4294967296 | 816
- -2147483648 -2147483648 => 0 | 763
- 0x010000000000000000 0x010000000000000000 => 0 | 793
- 18446744073709551616 -18446744073709551616 => 36893488147419103232 | 883
- 0 18446744073709551616 18446744073709551616 => -36893488147419103232 | 1203
- -18446744073709551616 -18446744073709551616 => 0 | 793
- 18446744073709551616 18446744073709551616 => 0 | 793
- 0x00cccccccc 0x33333333 => 0x0099999999 | 816
; -3355444 - 3355443 = -6710887
- 0xcccccccc 0x33333333 => 0x99999999 | 803
- 0x00000000000000000000000000000003 0x00000000000000000000000000000002 => 1 | 845
- 0 35768 => -35768 | 778
- 0 65536 => -65536 | 778
- 0 2147483648 => -2147483648 | 794
- 0 4294967296 => -4294967296 | 804
- 0 18446744073709551616 => -18446744073709551616 | 856
; tests ported from clvm
- 7 1 => 6 | 755
- 1 => 1 | 432
- ( ) => ( ) | 419
- => ( ) | 99
- 0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007 0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 => 6 | 1088
; invalid arguments
* ( 2 ) => FAIL
* 1 ( 2 ) => FAIL
* ( 2 ) 1 => FAIL
* => 1 | 102
* 0 => 0 | 92
* "foobar" => "foobar" | 152
* 1337 => 1337 | 112
* 7 2 => 14 | 999
* 1 2 3 4 => 24 | 2793
* 2 2 2 2 2 2 2 2 => 256 | 6391
* 10 10 10 10 => 10000 | 2809
* 7 -1 => -7 | 999
* -1 7 => -7 | 999
* 1337 -1 => -1337 | 1015
* -1 1337 => -1337 | 1015
* -1 -1 => 1 | 999
* -1 1 => -1 | 999
* 1 -1 => -1 | 999
* 1 1 => 1 | 999
* -1 -1 -1 -1 -1 -1 -1 -1 => 1 | 6381
* -1 -1 -1 -1 -1 -1 -1 -1 -1 => -1 | 7278
* 0x000000000000000007 0x000000000000000002 => 14 | 1095
* 0x000000000000000007 0xffffffffffffffffff => -7 | 1095
* 0x000000000000000007 0xffffffffffffffffff 0 => 0 | 1976
* 0x010000 0x010000 => 0x0100000000 | 1063
* 0x0100000000 0x0100000000 => 0x010000000000000000 | 1127
* 4294967296 4294967296 4294967296 => 79228162514264337593543950336 | 2136
* 4294967296 4294967296 -4294967296 => -79228162514264337593543950336 | 2136
* 4294967296 -4294967296 -4294967296 => 79228162514264337593543950336 | 2136
* 65536 65536 65536 => 281474976710656 | 2016
* 65536 65536 -65536 => -281474976710656 | 2016
* 65536 -65536 -65536 => 281474976710656 | 2016
* 10000000000000000000000000000000000 10000000000000000000000000000000000 10000000000000000000000000000000000 10000000000000000000000000000000000 10000000000000000000000000000000000 10000000000000000000000000000000000 10000000000000000000000000000000000 10000000000000000000000000000000000 10000000000000000000000000000000000 10000000000000000000000000000000000 => 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | 14198
; tests ported from clvm
* 7 2 => 14 | 999
* 1 => 1 | 102
* ( ) => ( ) | 92
* => 1 | 102
* 0x00000000000000000000000000000000000000000000000000000000000000000000000007 0x0000000000000000000000000000000000000000000000000000000000000000000000000000000002 => 14 | 1466
* 7 -1 => -7 | 999
; wrong number of arguments
/ => FAIL
/ 1 => FAIL
/ 1 2 3 => FAIL
; division by zero
/ 0 0 => FAIL
/ 10 0 => FAIL
/ -10 0 => FAIL
; division round towards negative infinity
/ 10 3 => 3 | 1006
/ -10 3 => -4 | 1006
/ -10 -3 => 3 | 1006
/ 10 -3 => -4 | 1006
/ 80001 73 => 1095 | 1024
/ -80001 73 => -1096 | 1024
/ 0x00000000000000000a 0x000000000000000005 => 2 | 1070
/ 1 10 => 0 | 996
/ -1 -10 => 0 | 996
/ 1 1 => 1 | 1006
/ 1 -1 => -1 | 1006
/ -1 -1 => 1 | 1006
/ -1 1 => -1 | 1006
/ 0 -1 => 0 | 992
/ 0 1 => 0 | 992
; division with negative numbers are allowed now
/ -1 10 => -1 | 1006
/ 1 -10 => -1 | 1006
; wrong number of arguments
divmod => FAIL
divmod ( 2 ) => FAIL
divmod 1 => FAIL
divmod 1 ( 2 ) => FAIL
divmod ( 2 ) 1 => FAIL
divmod 1 2 3 => FAIL
divmod ( 200 80001 ) 73 => FAIL
divmod 80001 ( 200 73 ) => FAIL
; division by zero
divmod 0 0 => FAIL
divmod 10 0 => FAIL
divmod -10 0 => FAIL
divmod 80001 0 => FAIL
; division round towards negative infinity
divmod 10 3 => ( 3 . 1 ) | 1148
divmod -10 3 => ( -4 . 2 ) | 1148
divmod -10 -3 => ( 3 . -1 ) | 1148
divmod 10 -3 => ( -4 . -2 ) | 1148
divmod 1 3 => ( 0 . 1 ) | 1138
divmod -1 3 => ( -1 . 2 ) | 1148
divmod -1 -3 => ( 0 . -1 ) | 1138
divmod 1 -3 => ( -1 . -2 ) | 1148
divmod 1 1 => ( 1 . 0 ) | 1138
divmod -1 1 => ( -1 . 0 ) | 1138
divmod -1 -1 => ( 1 . 0 ) | 1138
divmod 1 -1 => ( -1 . 0 ) | 1138
divmod 1 10 => ( 0 . 1 ) | 1138
divmod 1 -10 => ( -1 . -9 ) | 1148
divmod -1 -10 => ( 0 . -1 ) | 1138
divmod -1 10 => ( -1 . 9 ) | 1148
divmod 1 -1000000000000 => ( -1 . -999999999999 ) | 1228
divmod -1 1000000000000 => ( -1 . 999999999999 ) | 1228
divmod 80001 73 => ( 1095 . 66 ) | 1170
divmod -80001 73 => ( -1096 . 7 ) | 1170
divmod -80001 -73 => ( 1095 . -66 ) | 1170
divmod 80001 -73 => ( -1096 . -7 ) | 1170
divmod 80000 -10 => ( -8000 . 0 ) | 1160
divmod 80000 10 => ( 8000 . 0 ) | 1160
divmod -80000 10 => ( -8000 . 0 ) | 1160
divmod 0x00000000000000000a 0x000000000000000005 => ( 2 . 0 ) | 1234
divmod 0x000000000000000000000000000000000000000000000000000000000000013881 0x000000000000000000000000000000000000000000000000000049 => ( 1095 . 66 ) | 1506
divmod -10 -7 => ( 1 . -3 ) | 1148
divmod -10 7 => ( -2 . 4 ) | 1148
divmod 10 -7 => ( -2 . -4 ) | 1148
divmod 10 7 => ( 1 . 3 ) | 1148
divmod -10 -70 => ( ( ) . -10 ) | 1138
divmod -10 70 => ( -1 . 60 ) | 1148
divmod 10 -70 => ( -1 . -60 ) | 1148
divmod 10 70 => ( ( ) . 10 ) | 1138
divmod -100 -7 => ( 14 . -2 ) | 1148
divmod -100 7 => ( -15 . 5 ) | 1148
divmod 100 -7 => ( -15 . -5 ) | 1148
divmod 100 7 => ( 14 . 2 ) | 1148
divmod -100 -70 => ( 1 . -30 ) | 1148
divmod -100 70 => ( -2 . 40 ) | 1148
divmod 100 -70 => ( -2 . -40 ) | 1148
divmod 100 70 => ( 1 . 30 ) | 1148
strlen => FAIL
strlen ( "list" ) => FAIL
strlen "" => 0 | 173
strlen "a" => 1 | 184
strlen "foobar" => 6 | 189
; this is just 0xff
strlen -1 => 1 | 184
; tests ported from clvm
strlen "foo-bar" => 7 | 190
strlen ( "foo-bar" ) => FAIL
strlen ( ) => 0 | 173
strlen "the quick brown fox jumps over the lazy dogs" => 44 | 227
concat ( "ab" ) => FAIL
concat ( "ab" ) "1" => FAIL
concat "" => "" | 277
concat "abc" => "abc" | 316
concat "a" => "a" | 290
concat "a" "b" => "ab" | 438
concat "a" "b" "c" => "abc" | 586
concat "abc" "" => "abc" | 451
concat "" "ab" "c" => "abc" | 586
concat 0xff 0x00 => 0xff00 | 438
concat 0x00 0x00 => 0x0000 | 438
concat 0x00 0xff => 0x00ff | 438
concat 0xbaad 0xf00d => 0xbaadf00d | 464
concat "foo" "bar" => "foobar" | 490
substr => FAIL
substr "abc" => FAIL
substr "foo" ( "bar" ) => FAIL
substr ( "abc" ) 1 => FAIL
substr "abc" 1 => "bc" | 1
substr "foobar" 1 => "oobar" | 1
substr "foobar" 1 1 => "" | 1
substr "foobar" 1 2 => "o" | 1
substr "foobar" 3 => "bar" | 1
substr "foobar" 3 4 => "b" | 1
substr "foobar" 1 1 => "" | 1
substr 0x112233445566778899aabbccddeeff 1 2 => 0x22 | 1
substr 0x112233445566778899aabbccddeeff 5 7 => 0x6677 | 1
; one-past-end is a valid index
substr "foobar" 6 6 => "" | 1
; begin must be >= end
substr "foobar" 1 0 => FAIL
substr "foobar" 3 1 => FAIL
substr "foobar" 6 0 => FAIL
; begin must be a valid index
substr "foobar" -1 0 => FAIL
substr "foobar" -1 1 => FAIL
substr "foobar" 7 0 => FAIL
substr "foobar" ( 0 ) 1 => FAIL
; end must be a valid index
substr "foobar" 2 10 => FAIL
substr "foobar" 2 -10 => FAIL
substr "foobar" 5 7 => FAIL
substr "foobar" 0 ( 1 ) => FAIL
; indices must not be narrower than 32 bits
substr "foobar" 0x0000000001 2 => FAIL
substr "foobar" 2 0x0000000003 => FAIL
substr "foobar" 2 0x00000003 => "o" | 1
substr "foobar" 0x00000002 3 => "o" | 1
substr "foobar" 0xffffffff 0xffffffff => FAIL
substr "foobar" 0x00ffffffff 0x00ffffffff => FAIL
substr "foobar" 0x7fffffff 0x7fffffff => FAIL
substr "foobar" 0xffffffff => FAIL
substr "foobar" 0x00ffffffff => FAIL
substr "foobar" 0x7fffffff => FAIL
; test cases ported from clvm
substr "abcdefghijkl" 14 => FAIL
substr "abcdefghijkl" 0 => "abcdefghijkl" | 1
substr "abcdefghijkl" -1 => FAIL
substr "abcdefghijkl" 12 => ( ) | 1
substr "abcdefghijkl" 11 => 108 | 1
substr "abcdefghijkl" 0 4 => "abcd" | 1
substr "abcdefghijkl" 0 12 => "abcdefghijkl" | 1
substr "abcdefghijkl" -1 12 => FAIL
substr "abcdefghijkl" 0 13 => FAIL
substr "abcdefghijkl" 10 10 => ( ) | 1
substr "abcdefghijkl" 10 9 => FAIL
substr "abcdefghijkl" 1 4 => "bcd" | 1
substr "abcdefghijkl" 8 12 => "ijkl" | 1
substr ( "abcdefghijkl" ) 0 4 => FAIL
substr "abcdefghijkl" ( 0 ) 4 => FAIL
substr "abcdefghijkl" 0 ( 4 ) => FAIL
substr "abcdefghijkl" 0x000000000000000000000000000000000000000000000000000000000000000002 0x0000000000000000000000000000000000000000000000000000000000000005 => FAIL
substr "abcdefghijkl" 0 -1 => FAIL
substr "abcdefghijkl" 4294967297 3 => FAIL
sha256 ( "hello" ) => FAIL
sha256 ( "foo" "bar" ) => FAIL
sha256 "hello.there.my.dear.friend" => 0x5272821c151fdd49f19cc58cf8833da5781c7478a36d500e8dc2364be39f8216 | 593
sha256 "hell" "o.there.my.dear.friend" => 0x5272821c151fdd49f19cc58cf8833da5781c7478a36d500e8dc2364be39f8216 | 727
; test vectors from https://www.di-mgt.com.au/sha_testvectors.html
sha256 0x616263 => 0xba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad | 547
sha256 0x61 0x62 0x63 => 0xba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad | 815
sha256 => 0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 | 407
sha256 "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" => 0x248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1 | 653
sha256 0x0000000000000000000000000000000000000000000000000000000000000000 0x0000000000000000000000000000000000000000000000000000000000000000 => 0xf5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb4b | 803
sha256 0x1234500000000000000000000000000000000000000000000000000000000000 0x6789abcdef000000000000000000000000000000000000000000000000000000 123456789 => 0x69bfe81b052bfc6bd7f3fb9167fec61793175b897c16a35827f947d5cc98e4bc | 945
sha256 0x1234500000000000000000000000000000000000000000000000000000000000 0x6789abcdef000000000000000000000000000000000000000000000000000000 0x00ffffffffffffffff => 0x609d2d5e3081fbc1106950950f3ea3dbb4eaec96a57a544ba83b8a762b457168 | 955
point_add 0x97f1d3a73197d7942695638c4fa9ac0fc3688c4f9774b905a14e3a3f171bac586c55e83ff97a1aeffb3af00adb22c6bb 0xa572cbea904d67468808c8eb50a9450c9721db309128012543902d0ac358a62ae28f75bb8f1c7c42c39a8c5529bf0f4e => 0x89ece308f9d1f0131765212deca99697b112d61f9be9a5f1f3780a51335b3ff981747a0b2ca2179b96d2c0c9024e5224 | 2789534
point_add => 0xc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | 101574
; the point must be 40 bytes
point_add 0x97f1d3a73197d7942695638c4fa9ac0fc3688c4f9774b905a14e3a3f171bac586c55e83ff97a1aeffb3af00adb22c6 => FAIL
point_add 0x97f1d3a73197d7942695638c4fa9ac0fc3688c4f9774b905a14e3a3f171bac586c55e83ff97a1aeffb3af00adb22c6bb00 => FAIL
point_add 0 => FAIL
point_add 0x97f1d3a73197d7942695638c4fa9ac0fc3688c4f9774b905a14e3a3f171bac586c55e83ff97a1aeffb3af00adb22c6bb => 0x97f1d3a73197d7942695638c4fa9ac0fc3688c4f9774b905a14e3a3f171bac586c55e83ff97a1aeffb3af00adb22c6bb | 1445554
point_add 0xa572cbea904d67468808c8eb50a9450c9721db309128012543902d0ac358a62ae28f75bb8f1c7c42c39a8c5529bf0f4e => 0xa572cbea904d67468808c8eb50a9450c9721db309128012543902d0ac358a62ae28f75bb8f1c7c42c39a8c5529bf0f4e | 1445554
point_add 0x89ece308f9d1f0131765212deca99697b112d61f9be9a5f1f3780a51335b3ff981747a0b2ca2179b96d2c0c9024e5224 => 0x89ece308f9d1f0131765212deca99697b112d61f9be9a5f1f3780a51335b3ff981747a0b2ca2179b96d2c0c9024e5224 | 1445554
point_add 0xac9b60d5afcbd5663a8a44b7c5a02f19e9a77ab0a35bd65809bb5c67ec582c897feb04decc694b13e08587f3ff9b5b60 => 0xac9b60d5afcbd5663a8a44b7c5a02f19e9a77ab0a35bd65809bb5c67ec582c897feb04decc694b13e08587f3ff9b5b60 | 1445554
point_add 0xb0e7791fb972fe014159aa33a98622da3cdc98ff707965e536d8636b5fcc5ac7a91a8c46e59a00dca575af0f18fb13dc => 0xb0e7791fb972fe014159aa33a98622da3cdc98ff707965e536d8636b5fcc5ac7a91a8c46e59a00dca575af0f18fb13dc | 1445554
point_add 0x86e82f6da4520f85c5d27d8f329eccfa05944fd1096b20734c894966d12a9e2a9a9744529d7212d33883113a0cadb909 => 0x86e82f6da4520f85c5d27d8f329eccfa05944fd1096b20734c894966d12a9e2a9a9744529d7212d33883113a0cadb909 | 1445554
; the point must be an atom
point_add ( 1 2 3 ) => FAIL
pubkey_for_exp 1 => 0x97f1d3a73197d7942695638c4fa9ac0fc3688c4f9774b905a14e3a3f171bac586c55e83ff97a1aeffb3af00adb22c6bb | 1326248
pubkey_for_exp 2 => 0xa572cbea904d67468808c8eb50a9450c9721db309128012543902d0ac358a62ae28f75bb8f1c7c42c39a8c5529bf0f4e | 1326248
pubkey_for_exp 3 => 0x89ece308f9d1f0131765212deca99697b112d61f9be9a5f1f3780a51335b3ff981747a0b2ca2179b96d2c0c9024e5224 | 1326248
pubkey_for_exp 5 => 0xb0e7791fb972fe014159aa33a98622da3cdc98ff707965e536d8636b5fcc5ac7a91a8c46e59a00dca575af0f18fb13dc | 1326248
pubkey_for_exp -1 => 0xb7f1d3a73197d7942695638c4fa9ac0fc3688c4f9774b905a14e3a3f171bac586c55e83ff97a1aeffb3af00adb22c6bb | 1326248
pubkey_for_exp -2 => 0x8572cbea904d67468808c8eb50a9450c9721db309128012543902d0ac358a62ae28f75bb8f1c7c42c39a8c5529bf0f4e | 1326248
pubkey_for_exp -3 => 0xa9ece308f9d1f0131765212deca99697b112d61f9be9a5f1f3780a51335b3ff981747a0b2ca2179b96d2c0c9024e5224 | 1326248
pubkey_for_exp -5 => 0x90e7791fb972fe014159aa33a98622da3cdc98ff707965e536d8636b5fcc5ac7a91a8c46e59a00dca575af0f18fb13dc | 1326248
; This is GROUP_ORDER (and surroundings)
pubkey_for_exp 0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000002 => 0x97f1d3a73197d7942695638c4fa9ac0fc3688c4f9774b905a14e3a3f171bac586c55e83ff97a1aeffb3af00adb22c6bb | 1327426
pubkey_for_exp 0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000001 => 0xc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | 1327426
pubkey_for_exp 0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000000 => 0xb7f1d3a73197d7942695638c4fa9ac0fc3688c4f9774b905a14e3a3f171bac586c55e83ff97a1aeffb3af00adb22c6bb | 1327426
pubkey_for_exp 0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00f00000 => 0xb88845f6b070026e15fa44490ad925348ce445eaf4e8bc907cbfab30c5474d20f10f56a18fd0f25f2e18c33fba11d6ce | 1327426
; This is -GROUP_ORDER (and surroundings)
pubkey_for_exp 0x8c1258acd66282b7ccc627f7f65e27faac425bfd0001a40100000000fffffffe => 0xb7f1d3a73197d7942695638c4fa9ac0fc3688c4f9774b905a14e3a3f171bac586c55e83ff97a1aeffb3af00adb22c6bb | 1327426
pubkey_for_exp 0x8c1258acd66282b7ccc627f7f65e27faac425bfd0001a40100000000ffffffff => 0xc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | 1327426
pubkey_for_exp 0x8c1258acd66282b7ccc627f7f65e27faac425bfd0001a4010000000000000000 => 0x847f5fcce0b9aa0f2bb3de6847337c9ed1bc2184a125c232721e1c81b0f0fee78506790a78c98abff2dd4b01a0756352 | 1327426
; invalid arguments
pubkey_for_exp ( 1 2 3 ) => FAIL