HDLRuby 2.0.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (224) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +9 -0
  3. data/.travis.yml +5 -0
  4. data/.yardopts +1 -0
  5. data/Gemfile +4 -0
  6. data/HDLRuby.gemspec +36 -0
  7. data/LICENSE.txt +21 -0
  8. data/README.md +2774 -0
  9. data/README.pdf +0 -0
  10. data/Rakefile +10 -0
  11. data/bin/console +14 -0
  12. data/bin/setup +8 -0
  13. data/exe/hdrcc +3 -0
  14. data/lib/HDLRuby/alcc.rb +137 -0
  15. data/lib/HDLRuby/backend/hruby_allocator.rb +69 -0
  16. data/lib/HDLRuby/backend/hruby_c_allocator.rb +76 -0
  17. data/lib/HDLRuby/hdr_samples/adder.rb +7 -0
  18. data/lib/HDLRuby/hdr_samples/adder_assign_error.rb +11 -0
  19. data/lib/HDLRuby/hdr_samples/adder_bench.rb +27 -0
  20. data/lib/HDLRuby/hdr_samples/adder_gen.rb +7 -0
  21. data/lib/HDLRuby/hdr_samples/adder_nodef_error.rb +7 -0
  22. data/lib/HDLRuby/hdr_samples/addsub.rb +19 -0
  23. data/lib/HDLRuby/hdr_samples/addsubz.rb +22 -0
  24. data/lib/HDLRuby/hdr_samples/alu.rb +47 -0
  25. data/lib/HDLRuby/hdr_samples/calculator.rb +48 -0
  26. data/lib/HDLRuby/hdr_samples/counter_bench.rb +83 -0
  27. data/lib/HDLRuby/hdr_samples/dff.rb +9 -0
  28. data/lib/HDLRuby/hdr_samples/dff_bench.rb +66 -0
  29. data/lib/HDLRuby/hdr_samples/dff_counter.rb +20 -0
  30. data/lib/HDLRuby/hdr_samples/include.rb +14 -0
  31. data/lib/HDLRuby/hdr_samples/instance_open.rb +23 -0
  32. data/lib/HDLRuby/hdr_samples/mei8.rb +256 -0
  33. data/lib/HDLRuby/hdr_samples/mei8_bench.rb +309 -0
  34. data/lib/HDLRuby/hdr_samples/multer_gen.rb +8 -0
  35. data/lib/HDLRuby/hdr_samples/multer_seq.rb +29 -0
  36. data/lib/HDLRuby/hdr_samples/neural/a.rb +9 -0
  37. data/lib/HDLRuby/hdr_samples/neural/a_sub.rb +5 -0
  38. data/lib/HDLRuby/hdr_samples/neural/bw.rb +23 -0
  39. data/lib/HDLRuby/hdr_samples/neural/counter.rb +16 -0
  40. data/lib/HDLRuby/hdr_samples/neural/dadz.rb +9 -0
  41. data/lib/HDLRuby/hdr_samples/neural/dadz_sub.rb +4 -0
  42. data/lib/HDLRuby/hdr_samples/neural/forward.rb +153 -0
  43. data/lib/HDLRuby/hdr_samples/neural/forward_sub.rb +62 -0
  44. data/lib/HDLRuby/hdr_samples/neural/forward_sub_rand.rb +41 -0
  45. data/lib/HDLRuby/hdr_samples/neural/forward_sub_rand_typedef.rb +47 -0
  46. data/lib/HDLRuby/hdr_samples/neural/mem.rb +30 -0
  47. data/lib/HDLRuby/hdr_samples/neural/random.rb +23 -0
  48. data/lib/HDLRuby/hdr_samples/neural/selector.rb +29 -0
  49. data/lib/HDLRuby/hdr_samples/neural/sigmoid.rb +20 -0
  50. data/lib/HDLRuby/hdr_samples/neural/z.rb +33 -0
  51. data/lib/HDLRuby/hdr_samples/prog.obj +256 -0
  52. data/lib/HDLRuby/hdr_samples/ram.rb +18 -0
  53. data/lib/HDLRuby/hdr_samples/register_with_code_bench.rb +98 -0
  54. data/lib/HDLRuby/hdr_samples/rom.rb +10 -0
  55. data/lib/HDLRuby/hdr_samples/struct.rb +14 -0
  56. data/lib/HDLRuby/hdr_samples/sumprod.rb +29 -0
  57. data/lib/HDLRuby/hdr_samples/sw_encrypt_bench.rb +103 -0
  58. data/lib/HDLRuby/hdr_samples/sw_encrypt_cpu_bench.rb +261 -0
  59. data/lib/HDLRuby/hdr_samples/sw_encrypt_cpusim_bench.rb +302 -0
  60. data/lib/HDLRuby/hdr_samples/system_open.rb +11 -0
  61. data/lib/HDLRuby/hdr_samples/tuple.rb +16 -0
  62. data/lib/HDLRuby/hdr_samples/with_channel.rb +118 -0
  63. data/lib/HDLRuby/hdr_samples/with_class.rb +199 -0
  64. data/lib/HDLRuby/hdr_samples/with_decoder.rb +17 -0
  65. data/lib/HDLRuby/hdr_samples/with_fsm.rb +34 -0
  66. data/lib/HDLRuby/hdr_samples/with_reconf.rb +103 -0
  67. data/lib/HDLRuby/hdrcc.rb +623 -0
  68. data/lib/HDLRuby/high_samples/_adder_fault.rb +23 -0
  69. data/lib/HDLRuby/high_samples/_generic_transmission2.rb +146 -0
  70. data/lib/HDLRuby/high_samples/adder.rb +21 -0
  71. data/lib/HDLRuby/high_samples/adder_common_errors.rb +25 -0
  72. data/lib/HDLRuby/high_samples/addsub.rb +33 -0
  73. data/lib/HDLRuby/high_samples/addsubz.rb +37 -0
  74. data/lib/HDLRuby/high_samples/after.rb +28 -0
  75. data/lib/HDLRuby/high_samples/all_signals.rb +29 -0
  76. data/lib/HDLRuby/high_samples/alu.rb +61 -0
  77. data/lib/HDLRuby/high_samples/anonymous.rb +41 -0
  78. data/lib/HDLRuby/high_samples/before.rb +28 -0
  79. data/lib/HDLRuby/high_samples/blockblock.rb +26 -0
  80. data/lib/HDLRuby/high_samples/bugs/dadz.rb +22 -0
  81. data/lib/HDLRuby/high_samples/bugs/misample_instan.rb +20 -0
  82. data/lib/HDLRuby/high_samples/bugs/misample_updown.rb +22 -0
  83. data/lib/HDLRuby/high_samples/bugs/sample_add.rb +16 -0
  84. data/lib/HDLRuby/high_samples/bugs/sample_barrel.rb +13 -0
  85. data/lib/HDLRuby/high_samples/bugs/sample_daice.rb +57 -0
  86. data/lib/HDLRuby/high_samples/bugs/sample_kumiawase.rb +52 -0
  87. data/lib/HDLRuby/high_samples/bugs/sample_multi.rb +18 -0
  88. data/lib/HDLRuby/high_samples/bugs/sample_sub.rb +14 -0
  89. data/lib/HDLRuby/high_samples/bugs/z2.rb +32 -0
  90. data/lib/HDLRuby/high_samples/case.rb +32 -0
  91. data/lib/HDLRuby/high_samples/case2.rb +30 -0
  92. data/lib/HDLRuby/high_samples/change.rb +23 -0
  93. data/lib/HDLRuby/high_samples/clocks.rb +35 -0
  94. data/lib/HDLRuby/high_samples/comparer.rb +21 -0
  95. data/lib/HDLRuby/high_samples/conditionals.rb +29 -0
  96. data/lib/HDLRuby/high_samples/dff.rb +23 -0
  97. data/lib/HDLRuby/high_samples/each.rb +28 -0
  98. data/lib/HDLRuby/high_samples/exporter.rb +42 -0
  99. data/lib/HDLRuby/high_samples/functions.rb +60 -0
  100. data/lib/HDLRuby/high_samples/if_seq.rb +26 -0
  101. data/lib/HDLRuby/high_samples/inherit_as_dff.rb +32 -0
  102. data/lib/HDLRuby/high_samples/inherit_dff.rb +36 -0
  103. data/lib/HDLRuby/high_samples/instance.rb +37 -0
  104. data/lib/HDLRuby/high_samples/memory.rb +64 -0
  105. data/lib/HDLRuby/high_samples/multi_file.rb +27 -0
  106. data/lib/HDLRuby/high_samples/overload.rb +32 -0
  107. data/lib/HDLRuby/high_samples/paper_after.rb +49 -0
  108. data/lib/HDLRuby/high_samples/ram.rb +27 -0
  109. data/lib/HDLRuby/high_samples/registers.rb +139 -0
  110. data/lib/HDLRuby/high_samples/rom.rb +23 -0
  111. data/lib/HDLRuby/high_samples/scopeblockname.rb +37 -0
  112. data/lib/HDLRuby/high_samples/scopescope.rb +26 -0
  113. data/lib/HDLRuby/high_samples/shift.rb +31 -0
  114. data/lib/HDLRuby/high_samples/shift2.rb +40 -0
  115. data/lib/HDLRuby/high_samples/simple_instance.rb +31 -0
  116. data/lib/HDLRuby/high_samples/test_all.sh +10 -0
  117. data/lib/HDLRuby/high_samples/typedef.rb +24 -0
  118. data/lib/HDLRuby/high_samples/values.rb +70 -0
  119. data/lib/HDLRuby/high_samples/vector.rb +22 -0
  120. data/lib/HDLRuby/high_samples/with_decoder.rb +30 -0
  121. data/lib/HDLRuby/high_samples/with_fsm.rb +46 -0
  122. data/lib/HDLRuby/high_samples/with_pipe.rb +43 -0
  123. data/lib/HDLRuby/high_samples/with_seq.rb +25 -0
  124. data/lib/HDLRuby/hruby_bstr.rb +1085 -0
  125. data/lib/HDLRuby/hruby_check.rb +317 -0
  126. data/lib/HDLRuby/hruby_db.rb +432 -0
  127. data/lib/HDLRuby/hruby_error.rb +44 -0
  128. data/lib/HDLRuby/hruby_high.rb +4103 -0
  129. data/lib/HDLRuby/hruby_low.rb +4735 -0
  130. data/lib/HDLRuby/hruby_low2c.rb +1986 -0
  131. data/lib/HDLRuby/hruby_low2high.rb +738 -0
  132. data/lib/HDLRuby/hruby_low2seq.rb +248 -0
  133. data/lib/HDLRuby/hruby_low2sym.rb +126 -0
  134. data/lib/HDLRuby/hruby_low2vhd.rb +1437 -0
  135. data/lib/HDLRuby/hruby_low_bool2select.rb +295 -0
  136. data/lib/HDLRuby/hruby_low_cleanup.rb +193 -0
  137. data/lib/HDLRuby/hruby_low_fix_types.rb +437 -0
  138. data/lib/HDLRuby/hruby_low_mutable.rb +1803 -0
  139. data/lib/HDLRuby/hruby_low_resolve.rb +165 -0
  140. data/lib/HDLRuby/hruby_low_skeleton.rb +129 -0
  141. data/lib/HDLRuby/hruby_low_with_bool.rb +141 -0
  142. data/lib/HDLRuby/hruby_low_with_port.rb +167 -0
  143. data/lib/HDLRuby/hruby_low_with_var.rb +302 -0
  144. data/lib/HDLRuby/hruby_low_without_bit2vector.rb +88 -0
  145. data/lib/HDLRuby/hruby_low_without_concat.rb +162 -0
  146. data/lib/HDLRuby/hruby_low_without_connection.rb +113 -0
  147. data/lib/HDLRuby/hruby_low_without_namespace.rb +718 -0
  148. data/lib/HDLRuby/hruby_low_without_outread.rb +107 -0
  149. data/lib/HDLRuby/hruby_low_without_select.rb +206 -0
  150. data/lib/HDLRuby/hruby_serializer.rb +398 -0
  151. data/lib/HDLRuby/hruby_tools.rb +37 -0
  152. data/lib/HDLRuby/hruby_types.rb +239 -0
  153. data/lib/HDLRuby/hruby_values.rb +64 -0
  154. data/lib/HDLRuby/hruby_verilog.rb +1888 -0
  155. data/lib/HDLRuby/hruby_verilog_name.rb +52 -0
  156. data/lib/HDLRuby/low_samples/adder.yaml +97 -0
  157. data/lib/HDLRuby/low_samples/after.yaml +228 -0
  158. data/lib/HDLRuby/low_samples/before.yaml +223 -0
  159. data/lib/HDLRuby/low_samples/blockblock.yaml +48 -0
  160. data/lib/HDLRuby/low_samples/bugs/sample_add.yaml +97 -0
  161. data/lib/HDLRuby/low_samples/bugs/sample_daice.yaml +444 -0
  162. data/lib/HDLRuby/low_samples/bugs/sample_kumiawase.yaml +332 -0
  163. data/lib/HDLRuby/low_samples/bugs/sample_sub.yaml +97 -0
  164. data/lib/HDLRuby/low_samples/bugs/seqpar.yaml +184 -0
  165. data/lib/HDLRuby/low_samples/case.yaml +327 -0
  166. data/lib/HDLRuby/low_samples/change.yaml +135 -0
  167. data/lib/HDLRuby/low_samples/clocks.yaml +674 -0
  168. data/lib/HDLRuby/low_samples/cloner.rb +22 -0
  169. data/lib/HDLRuby/low_samples/comparer.yaml +85 -0
  170. data/lib/HDLRuby/low_samples/conditionals.yaml +133 -0
  171. data/lib/HDLRuby/low_samples/dff.yaml +107 -0
  172. data/lib/HDLRuby/low_samples/each.yaml +1328 -0
  173. data/lib/HDLRuby/low_samples/exporter.yaml +226 -0
  174. data/lib/HDLRuby/low_samples/functions.yaml +298 -0
  175. data/lib/HDLRuby/low_samples/generic_transmission.yaml +597 -0
  176. data/lib/HDLRuby/low_samples/inherit_as_dff.yaml +125 -0
  177. data/lib/HDLRuby/low_samples/inherit_dff.yaml +107 -0
  178. data/lib/HDLRuby/low_samples/load_yaml.rb +11 -0
  179. data/lib/HDLRuby/low_samples/memory.yaml +678 -0
  180. data/lib/HDLRuby/low_samples/namespace_extractor.rb +23 -0
  181. data/lib/HDLRuby/low_samples/overload.yaml +226 -0
  182. data/lib/HDLRuby/low_samples/paper_after.yaml +431 -0
  183. data/lib/HDLRuby/low_samples/port_maker.rb +14 -0
  184. data/lib/HDLRuby/low_samples/ram.yaml +207 -0
  185. data/lib/HDLRuby/low_samples/registers.yaml +228 -0
  186. data/lib/HDLRuby/low_samples/rom.yaml +2950 -0
  187. data/lib/HDLRuby/low_samples/shift.yaml +230 -0
  188. data/lib/HDLRuby/low_samples/shift2.yaml +2095 -0
  189. data/lib/HDLRuby/low_samples/simple_instance.yaml +102 -0
  190. data/lib/HDLRuby/low_samples/test_all.sh +43 -0
  191. data/lib/HDLRuby/low_samples/typedef.yaml +115 -0
  192. data/lib/HDLRuby/low_samples/values.yaml +577 -0
  193. data/lib/HDLRuby/low_samples/variable_maker.rb +14 -0
  194. data/lib/HDLRuby/low_samples/vector.yaml +56 -0
  195. data/lib/HDLRuby/low_samples/with_seq.yaml +188 -0
  196. data/lib/HDLRuby/low_samples/yaml2hdr.rb +10 -0
  197. data/lib/HDLRuby/low_samples/yaml2vhd.rb +19 -0
  198. data/lib/HDLRuby/sim/Makefile +19 -0
  199. data/lib/HDLRuby/sim/hruby_sim.h +590 -0
  200. data/lib/HDLRuby/sim/hruby_sim_calc.c +2362 -0
  201. data/lib/HDLRuby/sim/hruby_sim_core.c +589 -0
  202. data/lib/HDLRuby/sim/hruby_sim_list.c +93 -0
  203. data/lib/HDLRuby/sim/hruby_sim_vizualize.c +91 -0
  204. data/lib/HDLRuby/sim/hruby_value_pool.c +64 -0
  205. data/lib/HDLRuby/std/channel.rb +354 -0
  206. data/lib/HDLRuby/std/clocks.rb +165 -0
  207. data/lib/HDLRuby/std/counters.rb +82 -0
  208. data/lib/HDLRuby/std/decoder.rb +214 -0
  209. data/lib/HDLRuby/std/fsm.rb +516 -0
  210. data/lib/HDLRuby/std/pipeline.rb +220 -0
  211. data/lib/HDLRuby/std/reconf.rb +309 -0
  212. data/lib/HDLRuby/test_hruby_bstr.rb +2259 -0
  213. data/lib/HDLRuby/test_hruby_high.rb +594 -0
  214. data/lib/HDLRuby/test_hruby_high_low.rb +99 -0
  215. data/lib/HDLRuby/test_hruby_low.rb +934 -0
  216. data/lib/HDLRuby/v_samples/adder.v +10 -0
  217. data/lib/HDLRuby/v_samples/dff.v +12 -0
  218. data/lib/HDLRuby/v_samples/ram.v +20 -0
  219. data/lib/HDLRuby/v_samples/rom.v +270 -0
  220. data/lib/HDLRuby/version.rb +3 -0
  221. data/lib/HDLRuby.rb +11 -0
  222. data/makedoc +1 -0
  223. data/metadata.yaml +4 -0
  224. metadata +299 -0
@@ -0,0 +1,2259 @@
1
+ ########################################################################
2
+ ## Program for testing the HDLRuby bit strings. ##
3
+ ########################################################################
4
+
5
+ require "HDLRuby.rb"
6
+ require "HDLRuby/hruby_bstr.rb"
7
+
8
+ include HDLRuby
9
+
10
+ $success = true
11
+
12
+ print "\nCreating specificed bit strings... "
13
+ begin
14
+ $n0 = BitString.new("00000001",0) # 1
15
+ # $n0l = [ 0, 0, 0, 0, 0, 0, 0, 0, 1 ].reverse
16
+ $n0n = 1
17
+ $n1 = BitString.new("11111111",1) # -1
18
+ # $n1l = [ 1, 1, 1, 1, 1, 1, 1, 1, 1 ].reverse
19
+ $n1n = -1
20
+ $n2 = BitString.new("00000010","0") # 2
21
+ # $n2l = [ 0, 0, 0, 0, 0, 0, 0, 1, 0 ].reverse
22
+ $n2n = 2
23
+ $n3 = BitString.new("11111110","1") # -2
24
+ # $n3l = [ 1, 1, 1, 1, 1, 1, 1, 1, 0 ].reverse
25
+ $n3n = -2
26
+ $n4 = BitString.new("11111111",0) # 255
27
+ # $n4l = [ 0, 1, 1, 1, 1, 1, 1, 1, 1 ].reverse
28
+ $n4n = 255
29
+ $n5 = BitString.new("11111110",0) # 254
30
+ # $n5l = [ 0, 1, 1, 1, 1, 1, 1, 1, 0 ].reverse
31
+ $n5n = 254
32
+ puts "Ok."
33
+ rescue Exception => e
34
+ puts "Error: unexpected exception raised ", e, e.backtrace
35
+ $success = false
36
+ end
37
+
38
+ print "\nCreating bit strings with z states... "
39
+ begin
40
+ $z0 = BitString.new("0000000z", 0) # positive partial z
41
+ # $z0l = [ 0, 0, 0, 0, 0, 0, 0, 0, 2 ].reverse
42
+ $z1 = BitString.new("zzzZZzzz","0") # positive full z
43
+ # $z1l = [ 0, 2, 2, 2, 2, 2, 2, 2, 2 ].reverse
44
+ $z2 = BitString.new("000000z0", 1) # negative partial z
45
+ # $z2l = [ 1, 0, 0, 0, 0, 0, 0, 2, 0 ].reverse
46
+ $z3 = BitString.new("zzzzzzzz","1") # negative full z
47
+ # $z3l = [ 1, 2, 2, 2, 2, 2, 2, 2, 2 ].reverse
48
+ $z4 = BitString.new("00000001","z") # z sign 1
49
+ # $z4l = [ 2, 0, 0, 0, 0, 0, 0, 0, 1 ].reverse
50
+ $z5 = BitString.new("000000z0","Z") # z sign partial z
51
+ # $z5l = [ 2, 0, 0, 0, 0, 0, 0, 2, 0 ].reverse
52
+ $z6 = BitString.new("zzzzzzzz", 2) # z sign full z
53
+ # $z6l = [ 2, 2, 2, 2, 2, 2, 2, 2, 2 ].reverse
54
+ puts "Ok."
55
+ rescue Exception => e
56
+ puts "Error: unexpected exception raised ", e, e.backtrace
57
+ $success = false
58
+ end
59
+
60
+ print "\nCreating bit strings with x states... "
61
+ begin
62
+ $x0 = BitString.new("0000000x", 0) # positive partial x
63
+ # $x0l = [ 0, 0, 0, 0, 0, 0, 0, 0, 3 ].reverse
64
+ $x1 = BitString.new("xxxXXxxx","0") # positive full x
65
+ # $x1l = [ 0, 3, 3, 3, 3, 3, 3, 3, 3 ].reverse
66
+ $x2 = BitString.new("000000x0", 1) # negative partial x
67
+ # $x2l = [ 1, 0, 0, 0, 0, 0, 0, 3, 0 ].reverse
68
+ $x3 = BitString.new("xxxxxxxx","1") # negative full x
69
+ # $x3l = [ 1, 3, 3, 3, 3, 3, 3, 3, 3 ].reverse
70
+ $x4 = BitString.new("00000001","x") # x sign 1
71
+ # $x4l = [ 3, 0, 0, 0, 0, 0, 0, 0, 1 ].reverse
72
+ $x5 = BitString.new("000000x0","X") # x sign partial x
73
+ # $x5l = [ 3, 0, 0, 0, 0, 0, 0, 3, 0 ].reverse
74
+ $x6 = BitString.new("xxxxxxxx", 3) # x sign full x
75
+ # $x6l = [ 3, 3, 3, 3, 3, 3, 3, 3, 3 ].reverse
76
+ puts "Ok."
77
+ rescue Exception => e
78
+ puts "Error: unexpected exception raised ", e, e.backtrace
79
+ $success = false
80
+ end
81
+
82
+ print "\nCreating bit strings with x and z states... "
83
+ begin
84
+ $m0 = BitString.new("00000z0x", 0) # positive partial x and z
85
+ # $m0l = [ 0, 0, 0, 0, 0, 0, 2, 0, 3 ].reverse
86
+ $m1 = BitString.new("xZxXXxZx","0") # positive full x and z
87
+ # $m1l = [ 0, 3, 2, 3, 3, 3, 3, 2, 3 ].reverse
88
+ $m2 = BitString.new("0000X0z0", 1) # negative partial x and z
89
+ # $m2l = [ 1, 0, 0, 0, 0, 3, 0, 2, 0 ].reverse
90
+ $m3 = BitString.new("xxzzzxzx","1") # negative full x and z
91
+ # $m3l = [ 1, 3, 3, 2, 2, 2, 3, 2, 3 ].reverse
92
+ $m4 = BitString.new("000z00x0","z") # z sign partial x and z
93
+ # $m4l = [ 2, 0, 0, 0, 2, 0, 0, 3, 0 ].reverse
94
+ $m5 = BitString.new("000z00x0","X") # x sign partial x and z
95
+ # $m5l = [ 3, 0, 0, 0, 2, 0, 0, 3, 0 ].reverse
96
+ $m6 = BitString.new("xxxzzzxx", 2) # z sign full x and z
97
+ # $m6l = [ 2, 3, 3, 3, 2, 2, 2, 3, 3 ].reverse
98
+ $m7 = BitString.new("xxxzzzxx", 3) # x sign full x and z
99
+ # $m7l = [ 3, 3, 3, 3, 2, 2, 2, 3, 3 ].reverse
100
+ puts "Ok."
101
+ rescue Exception => e
102
+ puts "Error: unexpected exception raised ", e, e.backtrace
103
+ $success = false
104
+ end
105
+
106
+ # The various combinations of bit strings to test.
107
+ Ns = [ $n0, $n1, $n2, $n3, $n4, $n5 ]
108
+ # NLs = [ $n0l, $n1l, $n2l, $n3l, $n4l, $n5l ]
109
+ NNs = [ $n0n, $n1n, $n2n, $n3n, $n4n, $n5n ]
110
+ Zs = [ $z0, $z1, $z2, $z3, $z4, $z5, $z6 ]
111
+ # ZLs = [ $z0l, $z1l, $z2l, $z3l, $z4l, $z5l, $z6l ]
112
+ Xs = [ $x0, $x1, $x2, $x3, $x4, $x5, $x6 ]
113
+ # XLs = [ $x0l, $x1l, $x2l, $x3l, $x4l, $x5l, $x6l ]
114
+ Ms = [ $m0, $m1, $m2, $m3, $m4, $m5, $m6, $m7 ]
115
+ # MLs = [ $m0l, $m1l, $m2l, $m3l, $m4l, $m5l, $m6l, $m7l ]
116
+
117
+ STRs = Ns + Zs + Xs + Ms
118
+
119
+
120
+ # print "\nTesting conversion to list of bits... \n"
121
+ # begin
122
+ # STRs.zip(NLs + ZLs + XLs + MLs) do |str,list|
123
+ # print(" #{str} list of bits = #{str.to_list} ... ")
124
+ # if str.to_list == list then
125
+ # puts "Ok."
126
+ # else
127
+ # puts "Error: invalid list of bits, expecting #{list}."
128
+ # $success = false
129
+ # end
130
+ # end
131
+ # rescue Exception => e
132
+ # puts "Error: unexpected exception raised ", e, e.backtrace
133
+ # $success = false
134
+ # end
135
+
136
+
137
+ print "\nTesting conversion to numeric value... \n"
138
+ begin
139
+ Ns.zip(NNs) do |str,num|
140
+ print(" #{str} numeric value = #{str.to_numeric} ... ")
141
+ if str.to_numeric == num then
142
+ puts "Ok."
143
+ else
144
+ puts "Error: invalid numeric value, expecting #{num}."
145
+ $success = false
146
+ end
147
+ end
148
+ rescue Exception => e
149
+ puts "Error: unexpected exception raised ", e, e.backtrace
150
+ $success = false
151
+ end
152
+
153
+
154
+ print "\nTesting not... \n "
155
+ begin
156
+ STRs.zip( [ "-2", "0", "-3", "1", "-256", "-255",
157
+ "11111111x", "1xxxxxxxx", "0111111x1", "0xxxxxxxx", "x11111110", "x111111x1",
158
+ "xxxxxxxxx", "11111111x", "1xxxxxxxx", "0111111x1", "0xxxxxxxx", "x11111110",
159
+ "x111111x1", "xxxxxxxxx", "111111x1x", "1xxxxxxxx", "01111x1x1", "0xxxxxxxx",
160
+ "x111x11x1", "x111x11x1", "xxxxxxxxx", "xxxxxxxxx"
161
+ ]) do |str,res|
162
+ # puts("~#{str} = #{~str} ... ");
163
+ print "#"
164
+ if (~str).to_s != res then
165
+ print(" \n ~#{str} = #{~str} ... ");
166
+ print "Error: invalid numeric value, expecting #{res}.\n "
167
+ $success = false
168
+ end
169
+ end
170
+ rescue Exception => e
171
+ puts "Error: unexpected exception raised ", e, e.backtrace
172
+ $success = false
173
+ end
174
+ if $success then
175
+ puts " Ok."
176
+ end
177
+
178
+
179
+ print "\nTesting and... \n "
180
+ begin
181
+ STRs.product(STRs).zip( [ "1", "1", "0", "0", "1", "0",
182
+ "00000000x", "00000000x", "000000000", "00000000x", "000000001", "000000000",
183
+ "00000000x", "00000000x", "00000000x", "000000000", "00000000x", "000000001",
184
+ "000000000", "00000000x", "00000000x", "00000000x", "000000000", "00000000x",
185
+ "000000000", "000000000", "00000000x", "00000000x", "1" , "-1" ,
186
+ "2" , "-2" , "255" , "254" , "00000000x", "0xxxxxxxx",
187
+ "1000000x0", "1xxxxxxxx", "x00000001", "x000000x0", "xxxxxxxxx", "00000000x",
188
+ "0xxxxxxxx", "1000000x0", "1xxxxxxxx", "x00000001", "x000000x0", "xxxxxxxxx",
189
+ "000000x0x", "0xxxxxxxx", "10000x0x0", "1xxxxxxxx", "x000x00x0", "x000x00x0",
190
+ "xxxxxxxxx", "xxxxxxxxx", "0" , "2" , "2" , "2" ,
191
+ "2" , "2" , "000000000", "0000000x0", "0000000x0", "0000000x0",
192
+ "000000000", "0000000x0", "0000000x0", "000000000", "0000000x0", "0000000x0",
193
+ "0000000x0", "000000000", "0000000x0", "0000000x0", "000000000", "0000000x0",
194
+ "0000000x0", "0000000x0", "0000000x0", "0000000x0", "0000000x0", "0000000x0",
195
+ "0" , "-2" , "2" , "-2" , "254" , "254" ,
196
+ "000000000", "0xxxxxxx0", "1000000x0", "1xxxxxxx0", "x00000000", "x000000x0",
197
+ "xxxxxxxx0", "000000000", "0xxxxxxx0", "1000000x0", "1xxxxxxx0", "x00000000",
198
+ "x000000x0", "xxxxxxxx0", "000000x00", "0xxxxxxx0", "10000x0x0", "1xxxxxxx0",
199
+ "x000x00x0", "x000x00x0", "xxxxxxxx0", "xxxxxxxx0", "1" , "255" ,
200
+ "2" , "254" , "255" , "254" , "00000000x", "0xxxxxxxx",
201
+ "0000000x0", "0xxxxxxxx", "000000001", "0000000x0", "0xxxxxxxx", "00000000x",
202
+ "0xxxxxxxx", "0000000x0", "0xxxxxxxx", "000000001", "0000000x0", "0xxxxxxxx",
203
+ "000000x0x", "0xxxxxxxx", "00000x0x0", "0xxxxxxxx", "0000x00x0", "0000x00x0",
204
+ "0xxxxxxxx", "0xxxxxxxx", "0" , "254" , "2" , "254" ,
205
+ "254" , "254" , "000000000", "0xxxxxxx0", "0000000x0", "0xxxxxxx0",
206
+ "000000000", "0000000x0", "0xxxxxxx0", "000000000", "0xxxxxxx0", "0000000x0",
207
+ "0xxxxxxx0", "000000000", "0000000x0", "0xxxxxxx0", "000000x00", "0xxxxxxx0",
208
+ "00000x0x0", "0xxxxxxx0", "0000x00x0", "0000x00x0", "0xxxxxxx0", "0xxxxxxx0",
209
+ "00000000x", "00000000x", "000000000", "000000000", "00000000x", "000000000",
210
+ "00000000x", "00000000x", "000000000", "00000000x", "00000000x", "000000000",
211
+ "00000000x", "00000000x", "00000000x", "000000000", "00000000x", "00000000x",
212
+ "000000000", "00000000x", "00000000x", "00000000x", "000000000", "00000000x",
213
+ "000000000", "000000000", "00000000x", "00000000x", "00000000x", "0xxxxxxxx",
214
+ "0000000x0", "0xxxxxxx0", "0xxxxxxxx", "0xxxxxxx0", "00000000x", "0xxxxxxxx",
215
+ "0000000x0", "0xxxxxxxx", "00000000x", "0000000x0", "0xxxxxxxx", "00000000x",
216
+ "0xxxxxxxx", "0000000x0", "0xxxxxxxx", "00000000x", "0000000x0", "0xxxxxxxx",
217
+ "000000x0x", "0xxxxxxxx", "00000x0x0", "0xxxxxxxx", "0000x00x0", "0000x00x0",
218
+ "0xxxxxxxx", "0xxxxxxxx", "000000000", "1000000x0", "0000000x0", "1000000x0",
219
+ "0000000x0", "0000000x0", "000000000", "0000000x0", "1000000x0", "1000000x0",
220
+ "x00000000", "x000000x0", "x000000x0", "000000000", "0000000x0", "1000000x0",
221
+ "1000000x0", "x00000000", "x000000x0", "x000000x0", "000000000", "0000000x0",
222
+ "1000000x0", "1000000x0", "x000000x0", "x000000x0", "x000000x0", "x000000x0",
223
+ "00000000x", "1xxxxxxxx", "0000000x0", "1xxxxxxx0", "0xxxxxxxx", "0xxxxxxx0",
224
+ "00000000x", "0xxxxxxxx", "1000000x0", "1xxxxxxxx", "x0000000x", "x000000x0",
225
+ "xxxxxxxxx", "00000000x", "0xxxxxxxx", "1000000x0", "1xxxxxxxx", "x0000000x",
226
+ "x000000x0", "xxxxxxxxx", "000000x0x", "0xxxxxxxx", "10000x0x0", "1xxxxxxxx",
227
+ "x000x00x0", "x000x00x0", "xxxxxxxxx", "xxxxxxxxx", "000000001", "x00000001",
228
+ "000000000", "x00000000", "000000001", "000000000", "00000000x", "00000000x",
229
+ "x00000000", "x0000000x", "x00000001", "x00000000", "x0000000x", "00000000x",
230
+ "00000000x", "x00000000", "x0000000x", "x00000001", "x00000000", "x0000000x",
231
+ "00000000x", "00000000x", "x00000000", "x0000000x", "x00000000", "x00000000",
232
+ "x0000000x", "x0000000x", "000000000", "x000000x0", "0000000x0", "x000000x0",
233
+ "0000000x0", "0000000x0", "000000000", "0000000x0", "x000000x0", "x000000x0",
234
+ "x00000000", "x000000x0", "x000000x0", "000000000", "0000000x0", "x000000x0",
235
+ "x000000x0", "x00000000", "x000000x0", "x000000x0", "000000000", "0000000x0",
236
+ "x000000x0", "x000000x0", "x000000x0", "x000000x0", "x000000x0", "x000000x0",
237
+ "00000000x", "xxxxxxxxx", "0000000x0", "xxxxxxxx0", "0xxxxxxxx", "0xxxxxxx0",
238
+ "00000000x", "0xxxxxxxx", "x000000x0", "xxxxxxxxx", "x0000000x", "x000000x0",
239
+ "xxxxxxxxx", "00000000x", "0xxxxxxxx", "x000000x0", "xxxxxxxxx", "x0000000x",
240
+ "x000000x0", "xxxxxxxxx", "000000x0x", "0xxxxxxxx", "x0000x0x0", "xxxxxxxxx",
241
+ "x000x00x0", "x000x00x0", "xxxxxxxxx", "xxxxxxxxx", "00000000x", "00000000x",
242
+ "000000000", "000000000", "00000000x", "000000000", "00000000x", "00000000x",
243
+ "000000000", "00000000x", "00000000x", "000000000", "00000000x", "00000000x",
244
+ "00000000x", "000000000", "00000000x", "00000000x", "000000000", "00000000x",
245
+ "00000000x", "00000000x", "000000000", "00000000x", "000000000", "000000000",
246
+ "00000000x", "00000000x", "00000000x", "0xxxxxxxx", "0000000x0", "0xxxxxxx0",
247
+ "0xxxxxxxx", "0xxxxxxx0", "00000000x", "0xxxxxxxx", "0000000x0", "0xxxxxxxx",
248
+ "00000000x", "0000000x0", "0xxxxxxxx", "00000000x", "0xxxxxxxx", "0000000x0",
249
+ "0xxxxxxxx", "00000000x", "0000000x0", "0xxxxxxxx", "000000x0x", "0xxxxxxxx",
250
+ "00000x0x0", "0xxxxxxxx", "0000x00x0", "0000x00x0", "0xxxxxxxx", "0xxxxxxxx",
251
+ "000000000", "1000000x0", "0000000x0", "1000000x0", "0000000x0", "0000000x0",
252
+ "000000000", "0000000x0", "1000000x0", "1000000x0", "x00000000", "x000000x0",
253
+ "x000000x0", "000000000", "0000000x0", "1000000x0", "1000000x0", "x00000000",
254
+ "x000000x0", "x000000x0", "000000000", "0000000x0", "1000000x0", "1000000x0",
255
+ "x000000x0", "x000000x0", "x000000x0", "x000000x0", "00000000x", "1xxxxxxxx",
256
+ "0000000x0", "1xxxxxxx0", "0xxxxxxxx", "0xxxxxxx0", "00000000x", "0xxxxxxxx",
257
+ "1000000x0", "1xxxxxxxx", "x0000000x", "x000000x0", "xxxxxxxxx", "00000000x",
258
+ "0xxxxxxxx", "1000000x0", "1xxxxxxxx", "x0000000x", "x000000x0", "xxxxxxxxx",
259
+ "000000x0x", "0xxxxxxxx", "10000x0x0", "1xxxxxxxx", "x000x00x0", "x000x00x0",
260
+ "xxxxxxxxx", "xxxxxxxxx", "000000001", "x00000001", "000000000", "x00000000",
261
+ "000000001", "000000000", "00000000x", "00000000x", "x00000000", "x0000000x",
262
+ "x00000001", "x00000000", "x0000000x", "00000000x", "00000000x", "x00000000",
263
+ "x0000000x", "x00000001", "x00000000", "x0000000x", "00000000x", "00000000x",
264
+ "x00000000", "x0000000x", "x00000000", "x00000000", "x0000000x", "x0000000x",
265
+ "000000000", "x000000x0", "0000000x0", "x000000x0", "0000000x0", "0000000x0",
266
+ "000000000", "0000000x0", "x000000x0", "x000000x0", "x00000000", "x000000x0",
267
+ "x000000x0", "000000000", "0000000x0", "x000000x0", "x000000x0", "x00000000",
268
+ "x000000x0", "x000000x0", "000000000", "0000000x0", "x000000x0", "x000000x0",
269
+ "x000000x0", "x000000x0", "x000000x0", "x000000x0", "00000000x", "xxxxxxxxx",
270
+ "0000000x0", "xxxxxxxx0", "0xxxxxxxx", "0xxxxxxx0", "00000000x", "0xxxxxxxx",
271
+ "x000000x0", "xxxxxxxxx", "x0000000x", "x000000x0", "xxxxxxxxx", "00000000x",
272
+ "0xxxxxxxx", "x000000x0", "xxxxxxxxx", "x0000000x", "x000000x0", "xxxxxxxxx",
273
+ "000000x0x", "0xxxxxxxx", "x0000x0x0", "xxxxxxxxx", "x000x00x0", "x000x00x0",
274
+ "xxxxxxxxx", "xxxxxxxxx", "00000000x", "000000x0x", "000000000", "000000x00",
275
+ "000000x0x", "000000x00", "00000000x", "000000x0x", "000000000", "000000x0x",
276
+ "00000000x", "000000000", "000000x0x", "00000000x", "000000x0x", "000000000",
277
+ "000000x0x", "00000000x", "000000000", "000000x0x", "000000x0x", "000000x0x",
278
+ "000000000", "000000x0x", "000000000", "000000000", "000000x0x", "000000x0x",
279
+ "00000000x", "0xxxxxxxx", "0000000x0", "0xxxxxxx0", "0xxxxxxxx", "0xxxxxxx0",
280
+ "00000000x", "0xxxxxxxx", "0000000x0", "0xxxxxxxx", "00000000x", "0000000x0",
281
+ "0xxxxxxxx", "00000000x", "0xxxxxxxx", "0000000x0", "0xxxxxxxx", "00000000x",
282
+ "0000000x0", "0xxxxxxxx", "000000x0x", "0xxxxxxxx", "00000x0x0", "0xxxxxxxx",
283
+ "0000x00x0", "0000x00x0", "0xxxxxxxx", "0xxxxxxxx", "000000000", "10000x0x0",
284
+ "0000000x0", "10000x0x0", "00000x0x0", "00000x0x0", "000000000", "00000x0x0",
285
+ "1000000x0", "10000x0x0", "x00000000", "x000000x0", "x0000x0x0", "000000000",
286
+ "00000x0x0", "1000000x0", "10000x0x0", "x00000000", "x000000x0", "x0000x0x0",
287
+ "000000000", "00000x0x0", "10000x0x0", "10000x0x0", "x000000x0", "x000000x0",
288
+ "x0000x0x0", "x0000x0x0", "00000000x", "1xxxxxxxx", "0000000x0", "1xxxxxxx0",
289
+ "0xxxxxxxx", "0xxxxxxx0", "00000000x", "0xxxxxxxx", "1000000x0", "1xxxxxxxx",
290
+ "x0000000x", "x000000x0", "xxxxxxxxx", "00000000x", "0xxxxxxxx", "1000000x0",
291
+ "1xxxxxxxx", "x0000000x", "x000000x0", "xxxxxxxxx", "000000x0x", "0xxxxxxxx",
292
+ "10000x0x0", "1xxxxxxxx", "x000x00x0", "x000x00x0", "xxxxxxxxx", "xxxxxxxxx",
293
+ "000000000", "x000x00x0", "0000000x0", "x000x00x0", "0000x00x0", "0000x00x0",
294
+ "000000000", "0000x00x0", "x000000x0", "x000x00x0", "x00000000", "x000000x0",
295
+ "x000x00x0", "000000000", "0000x00x0", "x000000x0", "x000x00x0", "x00000000",
296
+ "x000000x0", "x000x00x0", "000000000", "0000x00x0", "x000000x0", "x000x00x0",
297
+ "x000x00x0", "x000x00x0", "x000x00x0", "x000x00x0", "000000000", "x000x00x0",
298
+ "0000000x0", "x000x00x0", "0000x00x0", "0000x00x0", "000000000", "0000x00x0",
299
+ "x000000x0", "x000x00x0", "x00000000", "x000000x0", "x000x00x0", "000000000",
300
+ "0000x00x0", "x000000x0", "x000x00x0", "x00000000", "x000000x0", "x000x00x0",
301
+ "000000000", "0000x00x0", "x000000x0", "x000x00x0", "x000x00x0", "x000x00x0",
302
+ "x000x00x0", "x000x00x0", "00000000x", "xxxxxxxxx", "0000000x0", "xxxxxxxx0",
303
+ "0xxxxxxxx", "0xxxxxxx0", "00000000x", "0xxxxxxxx", "x000000x0", "xxxxxxxxx",
304
+ "x0000000x", "x000000x0", "xxxxxxxxx", "00000000x", "0xxxxxxxx", "x000000x0",
305
+ "xxxxxxxxx", "x0000000x", "x000000x0", "xxxxxxxxx", "000000x0x", "0xxxxxxxx",
306
+ "x0000x0x0", "xxxxxxxxx", "x000x00x0", "x000x00x0", "xxxxxxxxx", "xxxxxxxxx",
307
+ "00000000x", "xxxxxxxxx", "0000000x0", "xxxxxxxx0", "0xxxxxxxx", "0xxxxxxx0",
308
+ "00000000x", "0xxxxxxxx", "x000000x0", "xxxxxxxxx", "x0000000x", "x000000x0",
309
+ "xxxxxxxxx", "00000000x", "0xxxxxxxx", "x000000x0", "xxxxxxxxx", "x0000000x",
310
+ "x000000x0", "xxxxxxxxx", "000000x0x", "0xxxxxxxx", "x0000x0x0", "xxxxxxxxx",
311
+ "x000x00x0", "x000x00x0", "xxxxxxxxx", "xxxxxxxxx"
312
+ ]) do |strs,res|
313
+ # puts("#{strs[0]} & #{strs[1]} = #{strs[0] & strs[1]} ... ");
314
+ print "#"
315
+ if (strs[0] & strs[1]).to_s != res then
316
+ print(" \n #{strs[0]} & #{strs[1]} = #{strs[0] & strs[1]} ... ");
317
+ print "Error: invalid numeric value, expecting #{res}.\n "
318
+ $success = false
319
+ end
320
+ end
321
+ rescue Exception => e
322
+ puts "Error: unexpected exception raised ", e, e.backtrace
323
+ $success = false
324
+ end
325
+ if $success then
326
+ puts " Ok."
327
+ end
328
+
329
+
330
+ print "\nTesting or... \n "
331
+ begin
332
+ STRs.product(STRs).zip( [ "1", "-1", "3", "-1", "255", "255",
333
+ "000000001", "0xxxxxxx1", "1000000x1", "1xxxxxxx1", "x00000001", "x000000x1",
334
+ "xxxxxxxx1", "000000001", "0xxxxxxx1", "1000000x1", "1xxxxxxx1", "x00000001",
335
+ "x000000x1", "xxxxxxxx1", "000000x01", "0xxxxxxx1", "10000x0x1", "1xxxxxxx1",
336
+ "x000x00x1", "x000x00x1", "xxxxxxxx1", "xxxxxxxx1", "-1", "-1", "-1",
337
+ "-1", "-1", "-1", "111111111", "111111111", "111111111", "111111111",
338
+ "111111111", "111111111", "111111111", "111111111", "111111111", "111111111",
339
+ "111111111", "111111111", "111111111", "111111111", "111111111", "111111111",
340
+ "111111111", "111111111", "111111111", "111111111", "111111111", "111111111",
341
+ "3", "-1", "2", "-2", "255", "254", "00000001x", "0xxxxxx1x",
342
+ "100000010", "1xxxxxx1x", "x00000011", "x00000010", "xxxxxxx1x", "00000001x",
343
+ "0xxxxxx1x", "100000010", "1xxxxxx1x", "x00000011", "x00000010", "xxxxxxx1x",
344
+ "000000x1x", "0xxxxxx1x", "10000x010", "1xxxxxx1x", "x000x0010", "x000x0010",
345
+ "xxxxxxx1x", "xxxxxxx1x", "-1", "-1", "-2", "-2", "-1", "-2",
346
+ "11111111x", "11111111x", "111111110", "11111111x", "111111111", "111111110",
347
+ "11111111x", "11111111x", "11111111x", "111111110", "11111111x", "111111111",
348
+ "111111110", "11111111x", "11111111x", "11111111x", "111111110", "11111111x",
349
+ "111111110", "111111110", "11111111x", "11111111x", "255", "-1", "255",
350
+ "-1", "255", "255", "011111111", "011111111", "111111111",
351
+ "111111111", "x11111111", "x11111111", "x11111111", "011111111", "011111111",
352
+ "111111111", "111111111", "x11111111", "x11111111", "x11111111", "011111111",
353
+ "011111111", "111111111", "111111111", "x11111111", "x11111111", "x11111111",
354
+ "x11111111", "255", "-1", "254", "-2", "255", "254",
355
+ "01111111x", "01111111x", "111111110", "11111111x", "x11111111", "x11111110",
356
+ "x1111111x", "01111111x", "01111111x", "111111110", "11111111x", "x11111111",
357
+ "x11111110", "x1111111x", "01111111x", "01111111x", "111111110", "11111111x",
358
+ "x11111110", "x11111110", "x1111111x", "x1111111x", "000000001", "111111111",
359
+ "00000001x", "11111111x", "011111111", "01111111x", "00000000x", "0xxxxxxxx",
360
+ "1000000xx", "1xxxxxxxx", "x00000001", "x000000xx", "xxxxxxxxx", "00000000x",
361
+ "0xxxxxxxx", "1000000xx", "1xxxxxxxx", "x00000001", "x000000xx", "xxxxxxxxx",
362
+ "000000x0x", "0xxxxxxxx", "10000x0xx", "1xxxxxxxx", "x000x00xx", "x000x00xx",
363
+ "xxxxxxxxx", "xxxxxxxxx", "0xxxxxxx1", "111111111", "0xxxxxx1x", "11111111x",
364
+ "011111111", "01111111x", "0xxxxxxxx", "0xxxxxxxx", "1xxxxxxxx", "1xxxxxxxx",
365
+ "xxxxxxxx1", "xxxxxxxxx", "xxxxxxxxx", "0xxxxxxxx", "0xxxxxxxx", "1xxxxxxxx",
366
+ "1xxxxxxxx", "xxxxxxxx1", "xxxxxxxxx", "xxxxxxxxx", "0xxxxxxxx", "0xxxxxxxx",
367
+ "1xxxxxxxx", "1xxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
368
+ "1000000x1", "111111111", "100000010", "111111110", "111111111", "111111110",
369
+ "1000000xx", "1xxxxxxxx", "1000000x0", "1xxxxxxxx", "1000000x1", "1000000x0",
370
+ "1xxxxxxxx", "1000000xx", "1xxxxxxxx", "1000000x0", "1xxxxxxxx", "1000000x1",
371
+ "1000000x0", "1xxxxxxxx", "100000xxx", "1xxxxxxxx", "10000x0x0", "1xxxxxxxx",
372
+ "1000x00x0", "1000x00x0", "1xxxxxxxx", "1xxxxxxxx", "1xxxxxxx1", "111111111",
373
+ "1xxxxxx1x", "11111111x", "111111111", "11111111x", "1xxxxxxxx", "1xxxxxxxx",
374
+ "1xxxxxxxx", "1xxxxxxxx", "1xxxxxxx1", "1xxxxxxxx", "1xxxxxxxx", "1xxxxxxxx",
375
+ "1xxxxxxxx", "1xxxxxxxx", "1xxxxxxxx", "1xxxxxxx1", "1xxxxxxxx", "1xxxxxxxx",
376
+ "1xxxxxxxx", "1xxxxxxxx", "1xxxxxxxx", "1xxxxxxxx", "1xxxxxxxx", "1xxxxxxxx",
377
+ "1xxxxxxxx", "1xxxxxxxx", "x00000001", "111111111", "x00000011", "111111111",
378
+ "x11111111", "x11111111", "x00000001", "xxxxxxxx1", "1000000x1", "1xxxxxxx1",
379
+ "x00000001", "x000000x1", "xxxxxxxx1", "x00000001", "xxxxxxxx1", "1000000x1",
380
+ "1xxxxxxx1", "x00000001", "x000000x1", "xxxxxxxx1", "x00000x01", "xxxxxxxx1",
381
+ "10000x0x1", "1xxxxxxx1", "x000x00x1", "x000x00x1", "xxxxxxxx1", "xxxxxxxx1",
382
+ "x000000x1", "111111111", "x00000010", "111111110", "x11111111", "x11111110",
383
+ "x000000xx", "xxxxxxxxx", "1000000x0", "1xxxxxxxx", "x000000x1", "x000000x0",
384
+ "xxxxxxxxx", "x000000xx", "xxxxxxxxx", "1000000x0", "1xxxxxxxx", "x000000x1",
385
+ "x000000x0", "xxxxxxxxx", "x00000xxx", "xxxxxxxxx", "10000x0x0", "1xxxxxxxx",
386
+ "x000x00x0", "x000x00x0", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxx1", "111111111",
387
+ "xxxxxxx1x", "11111111x", "x11111111", "x1111111x", "xxxxxxxxx", "xxxxxxxxx",
388
+ "1xxxxxxxx", "1xxxxxxxx", "xxxxxxxx1", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
389
+ "xxxxxxxxx", "1xxxxxxxx", "1xxxxxxxx", "xxxxxxxx1", "xxxxxxxxx", "xxxxxxxxx",
390
+ "xxxxxxxxx", "xxxxxxxxx", "1xxxxxxxx", "1xxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
391
+ "xxxxxxxxx", "xxxxxxxxx", "000000001", "111111111", "00000001x", "11111111x",
392
+ "011111111", "01111111x", "00000000x", "0xxxxxxxx", "1000000xx", "1xxxxxxxx",
393
+ "x00000001", "x000000xx", "xxxxxxxxx", "00000000x", "0xxxxxxxx", "1000000xx",
394
+ "1xxxxxxxx", "x00000001", "x000000xx", "xxxxxxxxx", "000000x0x", "0xxxxxxxx",
395
+ "10000x0xx", "1xxxxxxxx", "x000x00xx", "x000x00xx", "xxxxxxxxx", "xxxxxxxxx",
396
+ "0xxxxxxx1", "111111111", "0xxxxxx1x", "11111111x", "011111111", "01111111x",
397
+ "0xxxxxxxx", "0xxxxxxxx", "1xxxxxxxx", "1xxxxxxxx", "xxxxxxxx1", "xxxxxxxxx",
398
+ "xxxxxxxxx", "0xxxxxxxx", "0xxxxxxxx", "1xxxxxxxx", "1xxxxxxxx", "xxxxxxxx1",
399
+ "xxxxxxxxx", "xxxxxxxxx", "0xxxxxxxx", "0xxxxxxxx", "1xxxxxxxx", "1xxxxxxxx",
400
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "1000000x1", "111111111",
401
+ "100000010", "111111110", "111111111", "111111110", "1000000xx", "1xxxxxxxx",
402
+ "1000000x0", "1xxxxxxxx", "1000000x1", "1000000x0", "1xxxxxxxx", "1000000xx",
403
+ "1xxxxxxxx", "1000000x0", "1xxxxxxxx", "1000000x1", "1000000x0", "1xxxxxxxx",
404
+ "100000xxx", "1xxxxxxxx", "10000x0x0", "1xxxxxxxx", "1000x00x0", "1000x00x0",
405
+ "1xxxxxxxx", "1xxxxxxxx", "1xxxxxxx1", "111111111", "1xxxxxx1x", "11111111x",
406
+ "111111111", "11111111x", "1xxxxxxxx", "1xxxxxxxx", "1xxxxxxxx", "1xxxxxxxx",
407
+ "1xxxxxxx1", "1xxxxxxxx", "1xxxxxxxx", "1xxxxxxxx", "1xxxxxxxx", "1xxxxxxxx",
408
+ "1xxxxxxxx", "1xxxxxxx1", "1xxxxxxxx", "1xxxxxxxx", "1xxxxxxxx", "1xxxxxxxx",
409
+ "1xxxxxxxx", "1xxxxxxxx", "1xxxxxxxx", "1xxxxxxxx", "1xxxxxxxx", "1xxxxxxxx",
410
+ "x00000001", "111111111", "x00000011", "111111111", "x11111111", "x11111111",
411
+ "x00000001", "xxxxxxxx1", "1000000x1", "1xxxxxxx1", "x00000001", "x000000x1",
412
+ "xxxxxxxx1", "x00000001", "xxxxxxxx1", "1000000x1", "1xxxxxxx1", "x00000001",
413
+ "x000000x1", "xxxxxxxx1", "x00000x01", "xxxxxxxx1", "10000x0x1", "1xxxxxxx1",
414
+ "x000x00x1", "x000x00x1", "xxxxxxxx1", "xxxxxxxx1", "x000000x1", "111111111",
415
+ "x00000010", "111111110", "x11111111", "x11111110", "x000000xx", "xxxxxxxxx",
416
+ "1000000x0", "1xxxxxxxx", "x000000x1", "x000000x0", "xxxxxxxxx", "x000000xx",
417
+ "xxxxxxxxx", "1000000x0", "1xxxxxxxx", "x000000x1", "x000000x0", "xxxxxxxxx",
418
+ "x00000xxx", "xxxxxxxxx", "10000x0x0", "1xxxxxxxx", "x000x00x0", "x000x00x0",
419
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxx1", "111111111", "xxxxxxx1x", "11111111x",
420
+ "x11111111", "x1111111x", "xxxxxxxxx", "xxxxxxxxx", "1xxxxxxxx", "1xxxxxxxx",
421
+ "xxxxxxxx1", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "1xxxxxxxx",
422
+ "1xxxxxxxx", "xxxxxxxx1", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
423
+ "1xxxxxxxx", "1xxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
424
+ "000000x01", "111111111", "000000x1x", "11111111x", "011111111", "01111111x",
425
+ "000000x0x", "0xxxxxxxx", "100000xxx", "1xxxxxxxx", "x00000x01", "x00000xxx",
426
+ "xxxxxxxxx", "000000x0x", "0xxxxxxxx", "100000xxx", "1xxxxxxxx", "x00000x01",
427
+ "x00000xxx", "xxxxxxxxx", "000000x0x", "0xxxxxxxx", "10000xxxx", "1xxxxxxxx",
428
+ "x000x0xxx", "x000x0xxx", "xxxxxxxxx", "xxxxxxxxx", "0xxxxxxx1", "111111111",
429
+ "0xxxxxx1x", "11111111x", "011111111", "01111111x", "0xxxxxxxx", "0xxxxxxxx",
430
+ "1xxxxxxxx", "1xxxxxxxx", "xxxxxxxx1", "xxxxxxxxx", "xxxxxxxxx", "0xxxxxxxx",
431
+ "0xxxxxxxx", "1xxxxxxxx", "1xxxxxxxx", "xxxxxxxx1", "xxxxxxxxx", "xxxxxxxxx",
432
+ "0xxxxxxxx", "0xxxxxxxx", "1xxxxxxxx", "1xxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
433
+ "xxxxxxxxx", "xxxxxxxxx", "10000x0x1", "111111111", "10000x010", "111111110",
434
+ "111111111", "111111110", "10000x0xx", "1xxxxxxxx", "10000x0x0", "1xxxxxxxx",
435
+ "10000x0x1", "10000x0x0", "1xxxxxxxx", "10000x0xx", "1xxxxxxxx", "10000x0x0",
436
+ "1xxxxxxxx", "10000x0x1", "10000x0x0", "1xxxxxxxx", "10000xxxx", "1xxxxxxxx",
437
+ "10000x0x0", "1xxxxxxxx", "1000xx0x0", "1000xx0x0", "1xxxxxxxx", "1xxxxxxxx",
438
+ "1xxxxxxx1", "111111111", "1xxxxxx1x", "11111111x", "111111111", "11111111x",
439
+ "1xxxxxxxx", "1xxxxxxxx", "1xxxxxxxx", "1xxxxxxxx", "1xxxxxxx1", "1xxxxxxxx",
440
+ "1xxxxxxxx", "1xxxxxxxx", "1xxxxxxxx", "1xxxxxxxx", "1xxxxxxxx", "1xxxxxxx1",
441
+ "1xxxxxxxx", "1xxxxxxxx", "1xxxxxxxx", "1xxxxxxxx", "1xxxxxxxx", "1xxxxxxxx",
442
+ "1xxxxxxxx", "1xxxxxxxx", "1xxxxxxxx", "1xxxxxxxx", "x000x00x1", "111111111",
443
+ "x000x0010", "111111110", "x11111111", "x11111110", "x000x00xx", "xxxxxxxxx",
444
+ "1000x00x0", "1xxxxxxxx", "x000x00x1", "x000x00x0", "xxxxxxxxx", "x000x00xx",
445
+ "xxxxxxxxx", "1000x00x0", "1xxxxxxxx", "x000x00x1", "x000x00x0", "xxxxxxxxx",
446
+ "x000x0xxx", "xxxxxxxxx", "1000xx0x0", "1xxxxxxxx", "x000x00x0", "x000x00x0",
447
+ "xxxxxxxxx", "xxxxxxxxx", "x000x00x1", "111111111", "x000x0010", "111111110",
448
+ "x11111111", "x11111110", "x000x00xx", "xxxxxxxxx", "1000x00x0", "1xxxxxxxx",
449
+ "x000x00x1", "x000x00x0", "xxxxxxxxx", "x000x00xx", "xxxxxxxxx", "1000x00x0",
450
+ "1xxxxxxxx", "x000x00x1", "x000x00x0", "xxxxxxxxx", "x000x0xxx", "xxxxxxxxx",
451
+ "1000xx0x0", "1xxxxxxxx", "x000x00x0", "x000x00x0", "xxxxxxxxx", "xxxxxxxxx",
452
+ "xxxxxxxx1", "111111111", "xxxxxxx1x", "11111111x", "x11111111", "x1111111x",
453
+ "xxxxxxxxx", "xxxxxxxxx", "1xxxxxxxx", "1xxxxxxxx", "xxxxxxxx1", "xxxxxxxxx",
454
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "1xxxxxxxx", "1xxxxxxxx", "xxxxxxxx1",
455
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "1xxxxxxxx", "1xxxxxxxx",
456
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxx1", "111111111",
457
+ "xxxxxxx1x", "11111111x", "x11111111", "x1111111x", "xxxxxxxxx", "xxxxxxxxx",
458
+ "1xxxxxxxx", "1xxxxxxxx", "xxxxxxxx1", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
459
+ "xxxxxxxxx", "1xxxxxxxx", "1xxxxxxxx", "xxxxxxxx1", "xxxxxxxxx", "xxxxxxxxx",
460
+ "xxxxxxxxx", "xxxxxxxxx", "1xxxxxxxx", "1xxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
461
+ "xxxxxxxxx", "xxxxxxxxx"
462
+ ]) do |strs,res|
463
+ # puts("#{strs[0]} | #{strs[1]} = #{strs[0] | strs[1]} ... ");
464
+ print "#"
465
+ if (strs[0] | strs[1]).to_s != res then
466
+ print(" \n #{strs[0]} | #{strs[1]} = #{strs[0] | strs[1]} ... ");
467
+ print "Error: invalid numeric value, expecting #{res}.\n "
468
+ $success = false
469
+ end
470
+ end
471
+ rescue Exception => e
472
+ puts "Error: unexpected exception raised ", e, e.backtrace
473
+ $success = false
474
+ end
475
+ if $success then
476
+ puts " Ok."
477
+ end
478
+
479
+
480
+ print "\nTesting xor... \n "
481
+ begin
482
+ STRs.product(STRs).zip( [ "0", "-2", "3", "-1", "254", "255",
483
+ "00000000x", "0xxxxxxxx", "1000000x1", "1xxxxxxxx", "x00000000", "x000000x1",
484
+ "xxxxxxxxx", "00000000x", "0xxxxxxxx", "1000000x1", "1xxxxxxxx", "x00000000",
485
+ "x000000x1", "xxxxxxxxx", "000000x0x", "0xxxxxxxx", "10000x0x1", "1xxxxxxxx",
486
+ "x000x00x1", "x000x00x1", "xxxxxxxxx", "xxxxxxxxx", "-2", "0", "-3", "1",
487
+ "-256", "-255", "11111111x", "1xxxxxxxx", "0111111x1", "0xxxxxxxx",
488
+ "x11111110", "x111111x1", "xxxxxxxxx", "11111111x", "1xxxxxxxx", "0111111x1",
489
+ "0xxxxxxxx", "x11111110", "x111111x1", "xxxxxxxxx", "111111x1x", "1xxxxxxxx",
490
+ "01111x1x1", "0xxxxxxxx", "x111x11x1", "x111x11x1", "xxxxxxxxx", "xxxxxxxxx",
491
+ "3", "-3", "0", "-4", "253", "252", "00000001x", "0xxxxxxxx", "1000000x0",
492
+ "1xxxxxxxx", "x00000011", "x000000x0", "xxxxxxxxx", "00000001x", "0xxxxxxxx",
493
+ "1000000x0", "1xxxxxxxx", "x00000011", "x000000x0", "xxxxxxxxx", "000000x1x",
494
+ "0xxxxxxxx", "10000x0x0", "1xxxxxxxx", "x000x00x0", "x000x00x0", "xxxxxxxxx",
495
+ "xxxxxxxxx", "-1", "1", "-4", "0", "-255", "-256", "11111111x", "1xxxxxxxx",
496
+ "0111111x0", "0xxxxxxxx", "x11111111", "x111111x0", "xxxxxxxxx", "11111111x",
497
+ "1xxxxxxxx", "0111111x0", "0xxxxxxxx", "x11111111", "x111111x0", "xxxxxxxxx",
498
+ "111111x1x", "1xxxxxxxx", "01111x1x0", "0xxxxxxxx", "x111x11x0", "x111x11x0",
499
+ "xxxxxxxxx", "xxxxxxxxx", "254", "-256", "253", "-255", "0", "1", "01111111x",
500
+ "0xxxxxxxx", "1111111x1", "1xxxxxxxx", "x11111110", "x111111x1", "xxxxxxxxx",
501
+ "01111111x", "0xxxxxxxx", "1111111x1", "1xxxxxxxx", "x11111110", "x111111x1",
502
+ "xxxxxxxxx", "011111x1x", "0xxxxxxxx", "11111x1x1", "1xxxxxxxx", "x111x11x1",
503
+ "x111x11x1", "xxxxxxxxx", "xxxxxxxxx", "255", "-255", "252", "-256", "1", "0",
504
+ "01111111x", "0xxxxxxxx", "1111111x0", "1xxxxxxxx", "x11111111", "x111111x0",
505
+ "xxxxxxxxx", "01111111x", "0xxxxxxxx", "1111111x0", "1xxxxxxxx", "x11111111",
506
+ "x111111x0", "xxxxxxxxx", "011111x1x", "0xxxxxxxx", "11111x1x0", "1xxxxxxxx",
507
+ "x111x11x0", "x111x11x0", "xxxxxxxxx", "xxxxxxxxx", "00000000x", "11111111x",
508
+ "00000001x", "11111111x", "01111111x", "01111111x", "00000000x", "0xxxxxxxx",
509
+ "1000000xx", "1xxxxxxxx", "x0000000x", "x000000xx", "xxxxxxxxx", "00000000x",
510
+ "0xxxxxxxx", "1000000xx", "1xxxxxxxx", "x0000000x", "x000000xx", "xxxxxxxxx",
511
+ "000000x0x", "0xxxxxxxx", "10000x0xx", "1xxxxxxxx", "x000x00xx", "x000x00xx",
512
+ "xxxxxxxxx", "xxxxxxxxx", "0xxxxxxxx", "1xxxxxxxx", "0xxxxxxxx", "1xxxxxxxx",
513
+ "0xxxxxxxx", "0xxxxxxxx", "0xxxxxxxx", "0xxxxxxxx", "1xxxxxxxx", "1xxxxxxxx",
514
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "0xxxxxxxx", "0xxxxxxxx", "1xxxxxxxx",
515
+ "1xxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "0xxxxxxxx", "0xxxxxxxx",
516
+ "1xxxxxxxx", "1xxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
517
+ "1000000x1", "0111111x1", "1000000x0", "0111111x0", "1111111x1", "1111111x0",
518
+ "1000000xx", "1xxxxxxxx", "0000000x0", "0xxxxxxxx", "x000000x1", "x000000x0",
519
+ "xxxxxxxxx", "1000000xx", "1xxxxxxxx", "0000000x0", "0xxxxxxxx", "x000000x1",
520
+ "x000000x0", "xxxxxxxxx", "100000xxx", "1xxxxxxxx", "00000x0x0", "0xxxxxxxx",
521
+ "x000x00x0", "x000x00x0", "xxxxxxxxx", "xxxxxxxxx", "1xxxxxxxx", "0xxxxxxxx",
522
+ "1xxxxxxxx", "0xxxxxxxx", "1xxxxxxxx", "1xxxxxxxx", "1xxxxxxxx", "1xxxxxxxx",
523
+ "0xxxxxxxx", "0xxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "1xxxxxxxx",
524
+ "1xxxxxxxx", "0xxxxxxxx", "0xxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
525
+ "1xxxxxxxx", "1xxxxxxxx", "0xxxxxxxx", "0xxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
526
+ "xxxxxxxxx", "xxxxxxxxx", "x00000000", "x11111110", "x00000011", "x11111111",
527
+ "x11111110", "x11111111", "x0000000x", "xxxxxxxxx", "x000000x1", "xxxxxxxxx",
528
+ "x00000000", "x000000x1", "xxxxxxxxx", "x0000000x", "xxxxxxxxx", "x000000x1",
529
+ "xxxxxxxxx", "x00000000", "x000000x1", "xxxxxxxxx", "x00000x0x", "xxxxxxxxx",
530
+ "x0000x0x1", "xxxxxxxxx", "x000x00x1", "x000x00x1", "xxxxxxxxx", "xxxxxxxxx",
531
+ "x000000x1", "x111111x1", "x000000x0", "x111111x0", "x111111x1", "x111111x0",
532
+ "x000000xx", "xxxxxxxxx", "x000000x0", "xxxxxxxxx", "x000000x1", "x000000x0",
533
+ "xxxxxxxxx", "x000000xx", "xxxxxxxxx", "x000000x0", "xxxxxxxxx", "x000000x1",
534
+ "x000000x0", "xxxxxxxxx", "x00000xxx", "xxxxxxxxx", "x0000x0x0", "xxxxxxxxx",
535
+ "x000x00x0", "x000x00x0", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
536
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
537
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
538
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
539
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
540
+ "xxxxxxxxx", "xxxxxxxxx", "00000000x", "11111111x", "00000001x", "11111111x",
541
+ "01111111x", "01111111x", "00000000x", "0xxxxxxxx", "1000000xx", "1xxxxxxxx",
542
+ "x0000000x", "x000000xx", "xxxxxxxxx", "00000000x", "0xxxxxxxx", "1000000xx",
543
+ "1xxxxxxxx", "x0000000x", "x000000xx", "xxxxxxxxx", "000000x0x", "0xxxxxxxx",
544
+ "10000x0xx", "1xxxxxxxx", "x000x00xx", "x000x00xx", "xxxxxxxxx", "xxxxxxxxx",
545
+ "0xxxxxxxx", "1xxxxxxxx", "0xxxxxxxx", "1xxxxxxxx", "0xxxxxxxx", "0xxxxxxxx",
546
+ "0xxxxxxxx", "0xxxxxxxx", "1xxxxxxxx", "1xxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
547
+ "xxxxxxxxx", "0xxxxxxxx", "0xxxxxxxx", "1xxxxxxxx", "1xxxxxxxx", "xxxxxxxxx",
548
+ "xxxxxxxxx", "xxxxxxxxx", "0xxxxxxxx", "0xxxxxxxx", "1xxxxxxxx", "1xxxxxxxx",
549
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "1000000x1", "0111111x1",
550
+ "1000000x0", "0111111x0", "1111111x1", "1111111x0", "1000000xx", "1xxxxxxxx",
551
+ "0000000x0", "0xxxxxxxx", "x000000x1", "x000000x0", "xxxxxxxxx", "1000000xx",
552
+ "1xxxxxxxx", "0000000x0", "0xxxxxxxx", "x000000x1", "x000000x0", "xxxxxxxxx",
553
+ "100000xxx", "1xxxxxxxx", "00000x0x0", "0xxxxxxxx", "x000x00x0", "x000x00x0",
554
+ "xxxxxxxxx", "xxxxxxxxx", "1xxxxxxxx", "0xxxxxxxx", "1xxxxxxxx", "0xxxxxxxx",
555
+ "1xxxxxxxx", "1xxxxxxxx", "1xxxxxxxx", "1xxxxxxxx", "0xxxxxxxx", "0xxxxxxxx",
556
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "1xxxxxxxx", "1xxxxxxxx", "0xxxxxxxx",
557
+ "0xxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "1xxxxxxxx", "1xxxxxxxx",
558
+ "0xxxxxxxx", "0xxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
559
+ "x00000000", "x11111110", "x00000011", "x11111111", "x11111110", "x11111111",
560
+ "x0000000x", "xxxxxxxxx", "x000000x1", "xxxxxxxxx", "x00000000", "x000000x1",
561
+ "xxxxxxxxx", "x0000000x", "xxxxxxxxx", "x000000x1", "xxxxxxxxx", "x00000000",
562
+ "x000000x1", "xxxxxxxxx", "x00000x0x", "xxxxxxxxx", "x0000x0x1", "xxxxxxxxx",
563
+ "x000x00x1", "x000x00x1", "xxxxxxxxx", "xxxxxxxxx", "x000000x1", "x111111x1",
564
+ "x000000x0", "x111111x0", "x111111x1", "x111111x0", "x000000xx", "xxxxxxxxx",
565
+ "x000000x0", "xxxxxxxxx", "x000000x1", "x000000x0", "xxxxxxxxx", "x000000xx",
566
+ "xxxxxxxxx", "x000000x0", "xxxxxxxxx", "x000000x1", "x000000x0", "xxxxxxxxx",
567
+ "x00000xxx", "xxxxxxxxx", "x0000x0x0", "xxxxxxxxx", "x000x00x0", "x000x00x0",
568
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
569
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
570
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
571
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
572
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
573
+ "000000x0x", "111111x1x", "000000x1x", "111111x1x", "011111x1x", "011111x1x",
574
+ "000000x0x", "0xxxxxxxx", "100000xxx", "1xxxxxxxx", "x00000x0x", "x00000xxx",
575
+ "xxxxxxxxx", "000000x0x", "0xxxxxxxx", "100000xxx", "1xxxxxxxx", "x00000x0x",
576
+ "x00000xxx", "xxxxxxxxx", "000000x0x", "0xxxxxxxx", "10000xxxx", "1xxxxxxxx",
577
+ "x000x0xxx", "x000x0xxx", "xxxxxxxxx", "xxxxxxxxx", "0xxxxxxxx", "1xxxxxxxx",
578
+ "0xxxxxxxx", "1xxxxxxxx", "0xxxxxxxx", "0xxxxxxxx", "0xxxxxxxx", "0xxxxxxxx",
579
+ "1xxxxxxxx", "1xxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "0xxxxxxxx",
580
+ "0xxxxxxxx", "1xxxxxxxx", "1xxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
581
+ "0xxxxxxxx", "0xxxxxxxx", "1xxxxxxxx", "1xxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
582
+ "xxxxxxxxx", "xxxxxxxxx", "10000x0x1", "01111x1x1", "10000x0x0", "01111x1x0",
583
+ "11111x1x1", "11111x1x0", "10000x0xx", "1xxxxxxxx", "00000x0x0", "0xxxxxxxx",
584
+ "x0000x0x1", "x0000x0x0", "xxxxxxxxx", "10000x0xx", "1xxxxxxxx", "00000x0x0",
585
+ "0xxxxxxxx", "x0000x0x1", "x0000x0x0", "xxxxxxxxx", "10000xxxx", "1xxxxxxxx",
586
+ "00000x0x0", "0xxxxxxxx", "x000xx0x0", "x000xx0x0", "xxxxxxxxx", "xxxxxxxxx",
587
+ "1xxxxxxxx", "0xxxxxxxx", "1xxxxxxxx", "0xxxxxxxx", "1xxxxxxxx", "1xxxxxxxx",
588
+ "1xxxxxxxx", "1xxxxxxxx", "0xxxxxxxx", "0xxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
589
+ "xxxxxxxxx", "1xxxxxxxx", "1xxxxxxxx", "0xxxxxxxx", "0xxxxxxxx", "xxxxxxxxx",
590
+ "xxxxxxxxx", "xxxxxxxxx", "1xxxxxxxx", "1xxxxxxxx", "0xxxxxxxx", "0xxxxxxxx",
591
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "x000x00x1", "x111x11x1",
592
+ "x000x00x0", "x111x11x0", "x111x11x1", "x111x11x0", "x000x00xx", "xxxxxxxxx",
593
+ "x000x00x0", "xxxxxxxxx", "x000x00x1", "x000x00x0", "xxxxxxxxx", "x000x00xx",
594
+ "xxxxxxxxx", "x000x00x0", "xxxxxxxxx", "x000x00x1", "x000x00x0", "xxxxxxxxx",
595
+ "x000x0xxx", "xxxxxxxxx", "x000xx0x0", "xxxxxxxxx", "x000x00x0", "x000x00x0",
596
+ "xxxxxxxxx", "xxxxxxxxx", "x000x00x1", "x111x11x1", "x000x00x0", "x111x11x0",
597
+ "x111x11x1", "x111x11x0", "x000x00xx", "xxxxxxxxx", "x000x00x0", "xxxxxxxxx",
598
+ "x000x00x1", "x000x00x0", "xxxxxxxxx", "x000x00xx", "xxxxxxxxx", "x000x00x0",
599
+ "xxxxxxxxx", "x000x00x1", "x000x00x0", "xxxxxxxxx", "x000x0xxx", "xxxxxxxxx",
600
+ "x000xx0x0", "xxxxxxxxx", "x000x00x0", "x000x00x0", "xxxxxxxxx", "xxxxxxxxx",
601
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
602
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
603
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
604
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
605
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
606
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
607
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
608
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
609
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
610
+ "xxxxxxxxx", "xxxxxxxxx"
611
+ ]) do |strs,res|
612
+ # puts("#{strs[0]} ^ #{strs[1]} = #{strs[0] ^ strs[1]} ... ");
613
+ print "#"
614
+ if (strs[0] ^ strs[1]).to_s != res then
615
+ print(" \n #{strs[0]} ^ #{strs[1]} = #{strs[0] ^ strs[1]} ... ");
616
+ print "Error: invalid numeric value, expecting #{res}.\n "
617
+ $success = false
618
+ end
619
+ end
620
+ rescue Exception => e
621
+ puts "Error: unexpected exception raised ", e, e.backtrace
622
+ $success = false
623
+ end
624
+ if $success then
625
+ puts " Ok."
626
+ end
627
+
628
+
629
+
630
+ print "\nTesting neg... \n "
631
+ begin
632
+ STRs.zip( [ "-1", "1", "-2", "2", "-255", "-254",
633
+ "xxxxxxxxxx", "xxxxxxxxxx", "0xxxxxxxx0", "0xxxxxxxxx", "xx11111111",
634
+ "xxxxxxxxx0", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "0xxxxxxxx0",
635
+ "0xxxxxxxxx", "xx11111111", "xxxxxxxxx0", "xxxxxxxxxx", "xxxxxxxxxx",
636
+ "xxxxxxxxxx", "0xxxxxxxx0", "0xxxxxxxxx", "xxxxxxxxx0", "xxxxxxxxx0",
637
+ "xxxxxxxxxx", "xxxxxxxxxx"
638
+ ]) do |str,res|
639
+ # puts("-#{str} = #{-str} ... ");
640
+ print "#"
641
+ if (-str).to_s != res then
642
+ print(" \n #{-str} = #{-str} ... ");
643
+ print "Error: invalid numeric value, expecting #{res}.\n "
644
+ $success = false
645
+ end
646
+ end
647
+ rescue Exception => e
648
+ puts "Error: unexpected exception raised ", e, e.backtrace
649
+ $success = false
650
+ end
651
+ if $success then
652
+ puts " Ok."
653
+ end
654
+
655
+
656
+ print "\nTesting add... \n "
657
+ begin
658
+ STRs.product(STRs).zip([ "2", "0", "3", "-1", "256", "255",
659
+ "00000000xx", "0xxxxxxxxx", "11000000x1", "xxxxxxxxxx", "xx00000010",
660
+ "xx000000x1", "xxxxxxxxxx", "00000000xx", "0xxxxxxxxx", "11000000x1",
661
+ "xxxxxxxxxx", "xx00000010", "xx000000x1", "xxxxxxxxxx", "0000000xxx",
662
+ "0xxxxxxxxx", "110000x0x1", "xxxxxxxxxx", "xx000x00x1", "xx000x00x1",
663
+ "xxxxxxxxxx", "xxxxxxxxxx", "0", "-2", "1", "-3", "254", "253", "xxxxxxxxxx",
664
+ "xxxxxxxxxx", "1xxxxxxxx1", "1xxxxxxxxx", "xx00000000", "xxxxxxxxx1",
665
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "1xxxxxxxx1", "1xxxxxxxxx",
666
+ "xx00000000", "xxxxxxxxx1", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
667
+ "1xxxxxxxx1", "1xxxxxxxxx", "xxxxxxxxx1", "xxxxxxxxx1", "xxxxxxxxxx",
668
+ "xxxxxxxxxx", "3", "1", "4", "0", "257", "256", "000000001x", "0xxxxxxxxx",
669
+ "1100000xx0", "xxxxxxxxxx", "xx00000011", "xx00000xx0", "xxxxxxxxxx",
670
+ "000000001x", "0xxxxxxxxx", "1100000xx0", "xxxxxxxxxx", "xx00000011",
671
+ "xx00000xx0", "xxxxxxxxxx", "0000000x1x", "0xxxxxxxxx", "110000xxx0",
672
+ "xxxxxxxxxx", "xx000x0xx0", "xx000x0xx0", "xxxxxxxxxx", "xxxxxxxxxx", "-1",
673
+ "-3", "0", "-4", "253", "252", "111111111x", "xxxxxxxxxx", "1xxxxxxxx0",
674
+ "1xxxxxxxxx", "xx11111111", "xxxxxxxxx0", "xxxxxxxxxx", "111111111x",
675
+ "xxxxxxxxxx", "1xxxxxxxx0", "1xxxxxxxxx", "xx11111111", "xxxxxxxxx0",
676
+ "xxxxxxxxxx", "xxxxxxxx1x", "xxxxxxxxxx", "1xxxxxxxx0", "1xxxxxxxxx",
677
+ "xxxxxxxxx0", "xxxxxxxxx0", "xxxxxxxxxx", "xxxxxxxxxx", "256", "254", "257",
678
+ "253", "510", "509", "0xxxxxxxxx", "0xxxxxxxxx", "xxxxxxxxx1", "xxxxxxxxxx",
679
+ "xx00000000", "xxxxxxxxx1", "xxxxxxxxxx", "0xxxxxxxxx", "0xxxxxxxxx",
680
+ "xxxxxxxxx1", "xxxxxxxxxx", "xx00000000", "xxxxxxxxx1", "xxxxxxxxxx",
681
+ "0xxxxxxxxx", "0xxxxxxxxx", "xxxxxxxxx1", "xxxxxxxxxx", "xxxxxxxxx1",
682
+ "xxxxxxxxx1", "xxxxxxxxxx", "xxxxxxxxxx", "255", "253", "256", "252", "509",
683
+ "508", "001111111x", "0xxxxxxxxx", "xxxxxxxxx0", "xxxxxxxxxx", "xx11111111",
684
+ "xxxxxxxxx0", "xxxxxxxxxx", "001111111x", "0xxxxxxxxx", "xxxxxxxxx0",
685
+ "xxxxxxxxxx", "xx11111111", "xxxxxxxxx0", "xxxxxxxxxx", "0xxxxxxx1x",
686
+ "0xxxxxxxxx", "xxxxxxxxx0", "xxxxxxxxxx", "xxxxxxxxx0", "xxxxxxxxx0",
687
+ "xxxxxxxxxx", "xxxxxxxxxx", "00000000xx", "xxxxxxxxxx", "000000001x",
688
+ "111111111x", "0xxxxxxxxx", "001111111x", "00000000xx", "0xxxxxxxxx",
689
+ "11000000xx", "xxxxxxxxxx", "xx000000xx", "xx000000xx", "xxxxxxxxxx",
690
+ "00000000xx", "0xxxxxxxxx", "11000000xx", "xxxxxxxxxx", "xx000000xx",
691
+ "xx000000xx", "xxxxxxxxxx", "0000000xxx", "0xxxxxxxxx", "110000x0xx",
692
+ "xxxxxxxxxx", "xx000x00xx", "xx000x00xx", "xxxxxxxxxx", "xxxxxxxxxx",
693
+ "0xxxxxxxxx", "xxxxxxxxxx", "0xxxxxxxxx", "xxxxxxxxxx", "0xxxxxxxxx",
694
+ "0xxxxxxxxx", "0xxxxxxxxx", "0xxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
695
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "0xxxxxxxxx", "0xxxxxxxxx",
696
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
697
+ "0xxxxxxxxx", "0xxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
698
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "11000000x1", "1xxxxxxxx1",
699
+ "1100000xx0", "1xxxxxxxx0", "xxxxxxxxx1", "xxxxxxxxx0", "11000000xx",
700
+ "xxxxxxxxxx", "1000000xx0", "1xxxxxxxxx", "xx000000x1", "xx00000xx0",
701
+ "xxxxxxxxxx", "11000000xx", "xxxxxxxxxx", "1000000xx0", "1xxxxxxxxx",
702
+ "xx000000x1", "xx00000xx0", "xxxxxxxxxx", "1100000xxx", "xxxxxxxxxx",
703
+ "100000xxx0", "1xxxxxxxxx", "xx000x0xx0", "xx000x0xx0", "xxxxxxxxxx",
704
+ "xxxxxxxxxx", "xxxxxxxxxx", "1xxxxxxxxx", "xxxxxxxxxx", "1xxxxxxxxx",
705
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "1xxxxxxxxx",
706
+ "1xxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
707
+ "xxxxxxxxxx", "1xxxxxxxxx", "1xxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
708
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "1xxxxxxxxx", "1xxxxxxxxx",
709
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xx00000010",
710
+ "xx00000000", "xx00000011", "xx11111111", "xx00000000", "xx11111111",
711
+ "xx000000xx", "xxxxxxxxxx", "xx000000x1", "xxxxxxxxxx", "xx00000010",
712
+ "xx000000x1", "xxxxxxxxxx", "xx000000xx", "xxxxxxxxxx", "xx000000x1",
713
+ "xxxxxxxxxx", "xx00000010", "xx000000x1", "xxxxxxxxxx", "xx00000xxx",
714
+ "xxxxxxxxxx", "xx0000x0x1", "xxxxxxxxxx", "xx000x00x1", "xx000x00x1",
715
+ "xxxxxxxxxx", "xxxxxxxxxx", "xx000000x1", "xxxxxxxxx1", "xx00000xx0",
716
+ "xxxxxxxxx0", "xxxxxxxxx1", "xxxxxxxxx0", "xx000000xx", "xxxxxxxxxx",
717
+ "xx00000xx0", "xxxxxxxxxx", "xx000000x1", "xx00000xx0", "xxxxxxxxxx",
718
+ "xx000000xx", "xxxxxxxxxx", "xx00000xx0", "xxxxxxxxxx", "xx000000x1",
719
+ "xx00000xx0", "xxxxxxxxxx", "xx00000xxx", "xxxxxxxxxx", "xx0000xxx0",
720
+ "xxxxxxxxxx", "xx000x0xx0", "xx000x0xx0", "xxxxxxxxxx", "xxxxxxxxxx",
721
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
722
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
723
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
724
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
725
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
726
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "00000000xx", "xxxxxxxxxx",
727
+ "000000001x", "111111111x", "0xxxxxxxxx", "001111111x", "00000000xx",
728
+ "0xxxxxxxxx", "11000000xx", "xxxxxxxxxx", "xx000000xx", "xx000000xx",
729
+ "xxxxxxxxxx", "00000000xx", "0xxxxxxxxx", "11000000xx", "xxxxxxxxxx",
730
+ "xx000000xx", "xx000000xx", "xxxxxxxxxx", "0000000xxx", "0xxxxxxxxx",
731
+ "110000x0xx", "xxxxxxxxxx", "xx000x00xx", "xx000x00xx", "xxxxxxxxxx",
732
+ "xxxxxxxxxx", "0xxxxxxxxx", "xxxxxxxxxx", "0xxxxxxxxx", "xxxxxxxxxx",
733
+ "0xxxxxxxxx", "0xxxxxxxxx", "0xxxxxxxxx", "0xxxxxxxxx", "xxxxxxxxxx",
734
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "0xxxxxxxxx",
735
+ "0xxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
736
+ "xxxxxxxxxx", "0xxxxxxxxx", "0xxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
737
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "11000000x1",
738
+ "1xxxxxxxx1", "1100000xx0", "1xxxxxxxx0", "xxxxxxxxx1", "xxxxxxxxx0",
739
+ "11000000xx", "xxxxxxxxxx", "1000000xx0", "1xxxxxxxxx", "xx000000x1",
740
+ "xx00000xx0", "xxxxxxxxxx", "11000000xx", "xxxxxxxxxx", "1000000xx0",
741
+ "1xxxxxxxxx", "xx000000x1", "xx00000xx0", "xxxxxxxxxx", "1100000xxx",
742
+ "xxxxxxxxxx", "100000xxx0", "1xxxxxxxxx", "xx000x0xx0", "xx000x0xx0",
743
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "1xxxxxxxxx", "xxxxxxxxxx",
744
+ "1xxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
745
+ "1xxxxxxxxx", "1xxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
746
+ "xxxxxxxxxx", "xxxxxxxxxx", "1xxxxxxxxx", "1xxxxxxxxx", "xxxxxxxxxx",
747
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "1xxxxxxxxx",
748
+ "1xxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
749
+ "xx00000010", "xx00000000", "xx00000011", "xx11111111", "xx00000000",
750
+ "xx11111111", "xx000000xx", "xxxxxxxxxx", "xx000000x1", "xxxxxxxxxx",
751
+ "xx00000010", "xx000000x1", "xxxxxxxxxx", "xx000000xx", "xxxxxxxxxx",
752
+ "xx000000x1", "xxxxxxxxxx", "xx00000010", "xx000000x1", "xxxxxxxxxx",
753
+ "xx00000xxx", "xxxxxxxxxx", "xx0000x0x1", "xxxxxxxxxx", "xx000x00x1",
754
+ "xx000x00x1", "xxxxxxxxxx", "xxxxxxxxxx", "xx000000x1", "xxxxxxxxx1",
755
+ "xx00000xx0", "xxxxxxxxx0", "xxxxxxxxx1", "xxxxxxxxx0", "xx000000xx",
756
+ "xxxxxxxxxx", "xx00000xx0", "xxxxxxxxxx", "xx000000x1", "xx00000xx0",
757
+ "xxxxxxxxxx", "xx000000xx", "xxxxxxxxxx", "xx00000xx0", "xxxxxxxxxx",
758
+ "xx000000x1", "xx00000xx0", "xxxxxxxxxx", "xx00000xxx", "xxxxxxxxxx",
759
+ "xx0000xxx0", "xxxxxxxxxx", "xx000x0xx0", "xx000x0xx0", "xxxxxxxxxx",
760
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
761
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
762
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
763
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
764
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
765
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "0000000xxx",
766
+ "xxxxxxxxxx", "0000000x1x", "xxxxxxxx1x", "0xxxxxxxxx", "0xxxxxxx1x",
767
+ "0000000xxx", "0xxxxxxxxx", "1100000xxx", "xxxxxxxxxx", "xx00000xxx",
768
+ "xx00000xxx", "xxxxxxxxxx", "0000000xxx", "0xxxxxxxxx", "1100000xxx",
769
+ "xxxxxxxxxx", "xx00000xxx", "xx00000xxx", "xxxxxxxxxx", "000000xxxx",
770
+ "0xxxxxxxxx", "110000xxxx", "xxxxxxxxxx", "xx000x0xxx", "xx000x0xxx",
771
+ "xxxxxxxxxx", "xxxxxxxxxx", "0xxxxxxxxx", "xxxxxxxxxx", "0xxxxxxxxx",
772
+ "xxxxxxxxxx", "0xxxxxxxxx", "0xxxxxxxxx", "0xxxxxxxxx", "0xxxxxxxxx",
773
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
774
+ "0xxxxxxxxx", "0xxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
775
+ "xxxxxxxxxx", "xxxxxxxxxx", "0xxxxxxxxx", "0xxxxxxxxx", "xxxxxxxxxx",
776
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
777
+ "110000x0x1", "1xxxxxxxx1", "110000xxx0", "1xxxxxxxx0", "xxxxxxxxx1",
778
+ "xxxxxxxxx0", "110000x0xx", "xxxxxxxxxx", "100000xxx0", "1xxxxxxxxx",
779
+ "xx0000x0x1", "xx0000xxx0", "xxxxxxxxxx", "110000x0xx", "xxxxxxxxxx",
780
+ "100000xxx0", "1xxxxxxxxx", "xx0000x0x1", "xx0000xxx0", "xxxxxxxxxx",
781
+ "110000xxxx", "xxxxxxxxxx", "10000xxxx0", "1xxxxxxxxx", "xx000xxxx0",
782
+ "xx000xxxx0", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "1xxxxxxxxx",
783
+ "xxxxxxxxxx", "1xxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
784
+ "xxxxxxxxxx", "1xxxxxxxxx", "1xxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
785
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "1xxxxxxxxx", "1xxxxxxxxx",
786
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
787
+ "1xxxxxxxxx", "1xxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
788
+ "xxxxxxxxxx", "xx000x00x1", "xxxxxxxxx1", "xx000x0xx0", "xxxxxxxxx0",
789
+ "xxxxxxxxx1", "xxxxxxxxx0", "xx000x00xx", "xxxxxxxxxx", "xx000x0xx0",
790
+ "xxxxxxxxxx", "xx000x00x1", "xx000x0xx0", "xxxxxxxxxx", "xx000x00xx",
791
+ "xxxxxxxxxx", "xx000x0xx0", "xxxxxxxxxx", "xx000x00x1", "xx000x0xx0",
792
+ "xxxxxxxxxx", "xx000x0xxx", "xxxxxxxxxx", "xx000xxxx0", "xxxxxxxxxx",
793
+ "xx00xx0xx0", "xx00xx0xx0", "xxxxxxxxxx", "xxxxxxxxxx", "xx000x00x1",
794
+ "xxxxxxxxx1", "xx000x0xx0", "xxxxxxxxx0", "xxxxxxxxx1", "xxxxxxxxx0",
795
+ "xx000x00xx", "xxxxxxxxxx", "xx000x0xx0", "xxxxxxxxxx", "xx000x00x1",
796
+ "xx000x0xx0", "xxxxxxxxxx", "xx000x00xx", "xxxxxxxxxx", "xx000x0xx0",
797
+ "xxxxxxxxxx", "xx000x00x1", "xx000x0xx0", "xxxxxxxxxx", "xx000x0xxx",
798
+ "xxxxxxxxxx", "xx000xxxx0", "xxxxxxxxxx", "xx00xx0xx0", "xx00xx0xx0",
799
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
800
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
801
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
802
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
803
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
804
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
805
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
806
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
807
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
808
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
809
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
810
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx"
811
+ ]) do |strs,res|
812
+ # puts("#{strs[0]} + #{strs[1]} = #{strs[0] + strs[1]} ... ");
813
+ print "#"
814
+ if (strs[0] + strs[1]).to_s != res then
815
+ print(" \n #{strs[0]} + #{strs[1]} = #{strs[0] + strs[1]} ... ");
816
+ print "Error: invalid numeric value, expecting #{res}.\n "
817
+ $success = false
818
+ end
819
+ end
820
+ rescue Exception => e
821
+ puts "Error: unexpected exception raised ", e, e.backtrace
822
+ $success = false
823
+ end
824
+ if $success then
825
+ puts " Ok."
826
+ end
827
+
828
+ print "\nTesting sub... \n "
829
+ begin
830
+ STRs.product(STRs).zip([ "0", "2", "-1", "3", "-254", "-253",
831
+ "000000000x", "xxxxxxxxxx", "0xxxxxxxx1", "0xxxxxxxxx", "xx00000000",
832
+ "xxxxxxxxx1", "xxxxxxxxxx", "000000000x", "xxxxxxxxxx", "0xxxxxxxx1",
833
+ "0xxxxxxxxx", "xx00000000", "xxxxxxxxx1", "xxxxxxxxxx", "xxxxxxxx0x",
834
+ "xxxxxxxxxx", "0xxxxxxxx1", "0xxxxxxxxx", "xxxxxxxxx1", "xxxxxxxxx1",
835
+ "xxxxxxxxxx", "xxxxxxxxxx", "-2", "0", "-3", "1", "-256", "-255", "111111111x",
836
+ "11xxxxxxxx", "00111111x1", "00xxxxxxxx", "xx11111110", "xx111111x1",
837
+ "xxxxxxxxxx", "111111111x", "11xxxxxxxx", "00111111x1", "00xxxxxxxx",
838
+ "xx11111110", "xx111111x1", "xxxxxxxxxx", "1111111x1x", "11xxxxxxxx",
839
+ "001111x1x1", "00xxxxxxxx", "xx111x11x1", "xx111x11x1", "xxxxxxxxxx",
840
+ "xxxxxxxxxx", "1", "3", "0", "4", "-253", "-252", "00000000xx", "xxxxxxxxxx",
841
+ "01000000x0", "0xxxxxxxxx", "xx00000001", "xx000000x0", "xxxxxxxxxx",
842
+ "00000000xx", "xxxxxxxxxx", "01000000x0", "0xxxxxxxxx", "xx00000001",
843
+ "xx000000x0", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "0xxxxxx0x0",
844
+ "0xxxxxxxxx", "xxxxxx00x0", "xxxxxx00x0", "xxxxxxxxxx", "xxxxxxxxxx", "-3",
845
+ "-1", "-4", "0", "-257", "-256", "11111111xx", "1xxxxxxxxx", "00111111x0",
846
+ "xxxxxxxxxx", "xx11111101", "xx111111x0", "xxxxxxxxxx", "11111111xx",
847
+ "1xxxxxxxxx", "00111111x0", "xxxxxxxxxx", "xx11111101", "xx111111x0",
848
+ "xxxxxxxxxx", "1111111xxx", "1xxxxxxxxx", "001111x1x0", "xxxxxxxxxx",
849
+ "xx111x11x0", "xx111x11x0", "xxxxxxxxxx", "xxxxxxxxxx", "254", "256", "253",
850
+ "257", "0", "1", "001111111x", "00xxxxxxxx", "01111111x1", "01xxxxxxxx",
851
+ "xx11111110", "xx111111x1", "xxxxxxxxxx", "001111111x", "00xxxxxxxx",
852
+ "01111111x1", "01xxxxxxxx", "xx11111110", "xx111111x1", "xxxxxxxxxx",
853
+ "0011111x1x", "00xxxxxxxx", "011111x1x1", "01xxxxxxxx", "xx111x11x1",
854
+ "xx111x11x1", "xxxxxxxxxx", "xxxxxxxxxx", "253", "255", "252", "256", "-1",
855
+ "0", "00111111xx", "xxxxxxxxxx", "01111111x0", "0xxxxxxxxx", "xx11111101",
856
+ "xx111111x0", "xxxxxxxxxx", "00111111xx", "xxxxxxxxxx", "01111111x0",
857
+ "0xxxxxxxxx", "xx11111101", "xx111111x0", "xxxxxxxxxx", "0011111xxx",
858
+ "xxxxxxxxxx", "011111x1x0", "0xxxxxxxxx", "xx111x11x0", "xx111x11x0",
859
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "00000000xx", "111111111x",
860
+ "000000001x", "xxxxxxxxxx", "111111111x", "xxxxxxxxxx", "xxxxxxxxxx",
861
+ "0xxxxxxxxx", "0xxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
862
+ "xxxxxxxxxx", "xxxxxxxxxx", "0xxxxxxxxx", "0xxxxxxxxx", "xxxxxxxxxx",
863
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "0xxxxxxxxx",
864
+ "0xxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
865
+ "xxxxxxxxxx", "0xxxxxxxxx", "xxxxxxxxxx", "0xxxxxxxxx", "xxxxxxxxxx",
866
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
867
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
868
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
869
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
870
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "1xxxxxxxx1", "11000000x1",
871
+ "1xxxxxxxx0", "1100000xx0", "1xxxxxxxx1", "1xxxxxxxx0", "1xxxxxxxxx",
872
+ "1xxxxxxxxx", "xxxxxxxxx0", "xxxxxxxxxx", "xxxxxxxxx1", "xxxxxxxxx0",
873
+ "xxxxxxxxxx", "1xxxxxxxxx", "1xxxxxxxxx", "xxxxxxxxx0", "xxxxxxxxxx",
874
+ "xxxxxxxxx1", "xxxxxxxxx0", "xxxxxxxxxx", "1xxxxxxxxx", "1xxxxxxxxx",
875
+ "xxxxxxxxx0", "xxxxxxxxxx", "xxxxxxxxx0", "xxxxxxxxx0", "xxxxxxxxxx",
876
+ "xxxxxxxxxx", "1xxxxxxxxx", "xxxxxxxxxx", "1xxxxxxxxx", "xxxxxxxxxx",
877
+ "1xxxxxxxxx", "1xxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
878
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
879
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
880
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
881
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xx00000000",
882
+ "xx00000010", "xx11111111", "xx00000011", "xx00000000", "xx11111111",
883
+ "xx0000000x", "xxxxxxxxxx", "xxxxxxxxx1", "xxxxxxxxxx", "xx00000000",
884
+ "xxxxxxxxx1", "xxxxxxxxxx", "xx0000000x", "xxxxxxxxxx", "xxxxxxxxx1",
885
+ "xxxxxxxxxx", "xx00000000", "xxxxxxxxx1", "xxxxxxxxxx", "xxxxxxxx0x",
886
+ "xxxxxxxxxx", "xxxxxxxxx1", "xxxxxxxxxx", "xxxxxxxxx1", "xxxxxxxxx1",
887
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxx1", "xx000000x1", "xxxxxxxxx0",
888
+ "xx00000xx0", "xxxxxxxxx1", "xxxxxxxxx0", "xxxxxxxxxx", "xxxxxxxxxx",
889
+ "xxxxxxxxx0", "xxxxxxxxxx", "xxxxxxxxx1", "xxxxxxxxx0", "xxxxxxxxxx",
890
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxx0", "xxxxxxxxxx", "xxxxxxxxx1",
891
+ "xxxxxxxxx0", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxx0",
892
+ "xxxxxxxxxx", "xxxxxxxxx0", "xxxxxxxxx0", "xxxxxxxxxx", "xxxxxxxxxx",
893
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
894
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
895
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
896
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
897
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
898
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "00000000xx",
899
+ "111111111x", "000000001x", "xxxxxxxxxx", "111111111x", "xxxxxxxxxx",
900
+ "xxxxxxxxxx", "0xxxxxxxxx", "0xxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
901
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "0xxxxxxxxx", "0xxxxxxxxx",
902
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
903
+ "0xxxxxxxxx", "0xxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
904
+ "xxxxxxxxxx", "xxxxxxxxxx", "0xxxxxxxxx", "xxxxxxxxxx", "0xxxxxxxxx",
905
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
906
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
907
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
908
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
909
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "1xxxxxxxx1",
910
+ "11000000x1", "1xxxxxxxx0", "1100000xx0", "1xxxxxxxx1", "1xxxxxxxx0",
911
+ "1xxxxxxxxx", "1xxxxxxxxx", "xxxxxxxxx0", "xxxxxxxxxx", "xxxxxxxxx1",
912
+ "xxxxxxxxx0", "xxxxxxxxxx", "1xxxxxxxxx", "1xxxxxxxxx", "xxxxxxxxx0",
913
+ "xxxxxxxxxx", "xxxxxxxxx1", "xxxxxxxxx0", "xxxxxxxxxx", "1xxxxxxxxx",
914
+ "1xxxxxxxxx", "xxxxxxxxx0", "xxxxxxxxxx", "xxxxxxxxx0", "xxxxxxxxx0",
915
+ "xxxxxxxxxx", "xxxxxxxxxx", "1xxxxxxxxx", "xxxxxxxxxx", "1xxxxxxxxx",
916
+ "xxxxxxxxxx", "1xxxxxxxxx", "1xxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
917
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
918
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
919
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
920
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
921
+ "xx00000000", "xx00000010", "xx11111111", "xx00000011", "xx00000000",
922
+ "xx11111111", "xx0000000x", "xxxxxxxxxx", "xxxxxxxxx1", "xxxxxxxxxx",
923
+ "xx00000000", "xxxxxxxxx1", "xxxxxxxxxx", "xx0000000x", "xxxxxxxxxx",
924
+ "xxxxxxxxx1", "xxxxxxxxxx", "xx00000000", "xxxxxxxxx1", "xxxxxxxxxx",
925
+ "xxxxxxxx0x", "xxxxxxxxxx", "xxxxxxxxx1", "xxxxxxxxxx", "xxxxxxxxx1",
926
+ "xxxxxxxxx1", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxx1", "xx000000x1",
927
+ "xxxxxxxxx0", "xx00000xx0", "xxxxxxxxx1", "xxxxxxxxx0", "xxxxxxxxxx",
928
+ "xxxxxxxxxx", "xxxxxxxxx0", "xxxxxxxxxx", "xxxxxxxxx1", "xxxxxxxxx0",
929
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxx0", "xxxxxxxxxx",
930
+ "xxxxxxxxx1", "xxxxxxxxx0", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
931
+ "xxxxxxxxx0", "xxxxxxxxxx", "xxxxxxxxx0", "xxxxxxxxx0", "xxxxxxxxxx",
932
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
933
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
934
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
935
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
936
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
937
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
938
+ "0000000xxx", "xxxxxxxx1x", "0000000x1x", "xxxxxxxxxx", "xxxxxxxx1x",
939
+ "xxxxxxxxxx", "xxxxxxxxxx", "0xxxxxxxxx", "0xxxxxxxxx", "xxxxxxxxxx",
940
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "0xxxxxxxxx",
941
+ "0xxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
942
+ "xxxxxxxxxx", "0xxxxxxxxx", "0xxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
943
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "0xxxxxxxxx", "xxxxxxxxxx",
944
+ "0xxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
945
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
946
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
947
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
948
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
949
+ "1xxxxxxxx1", "110000x0x1", "1xxxxxxxx0", "110000xxx0", "1xxxxxxxx1",
950
+ "1xxxxxxxx0", "1xxxxxxxxx", "1xxxxxxxxx", "xxxxxxxxx0", "xxxxxxxxxx",
951
+ "xxxxxxxxx1", "xxxxxxxxx0", "xxxxxxxxxx", "1xxxxxxxxx", "1xxxxxxxxx",
952
+ "xxxxxxxxx0", "xxxxxxxxxx", "xxxxxxxxx1", "xxxxxxxxx0", "xxxxxxxxxx",
953
+ "1xxxxxxxxx", "1xxxxxxxxx", "xxxxxxxxx0", "xxxxxxxxxx", "xxxxxxxxx0",
954
+ "xxxxxxxxx0", "xxxxxxxxxx", "xxxxxxxxxx", "1xxxxxxxxx", "xxxxxxxxxx",
955
+ "1xxxxxxxxx", "xxxxxxxxxx", "1xxxxxxxxx", "1xxxxxxxxx", "xxxxxxxxxx",
956
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
957
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
958
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
959
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
960
+ "xxxxxxxxxx", "xxxxxxxxx1", "xx000x00x1", "xxxxxxxxx0", "xx000x0xx0",
961
+ "xxxxxxxxx1", "xxxxxxxxx0", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxx0",
962
+ "xxxxxxxxxx", "xxxxxxxxx1", "xxxxxxxxx0", "xxxxxxxxxx", "xxxxxxxxxx",
963
+ "xxxxxxxxxx", "xxxxxxxxx0", "xxxxxxxxxx", "xxxxxxxxx1", "xxxxxxxxx0",
964
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxx0", "xxxxxxxxxx",
965
+ "xxxxxxxxx0", "xxxxxxxxx0", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxx1",
966
+ "xx000x00x1", "xxxxxxxxx0", "xx000x0xx0", "xxxxxxxxx1", "xxxxxxxxx0",
967
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxx0", "xxxxxxxxxx", "xxxxxxxxx1",
968
+ "xxxxxxxxx0", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxx0",
969
+ "xxxxxxxxxx", "xxxxxxxxx1", "xxxxxxxxx0", "xxxxxxxxxx", "xxxxxxxxxx",
970
+ "xxxxxxxxxx", "xxxxxxxxx0", "xxxxxxxxxx", "xxxxxxxxx0", "xxxxxxxxx0",
971
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
972
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
973
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
974
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
975
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
976
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
977
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
978
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
979
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
980
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
981
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx",
982
+ "xxxxxxxxxx", "xxxxxxxxxx", "xxxxxxxxxx"
983
+ ]) do |strs,res|
984
+ # puts("#{strs[0]} - #{strs[1]} = #{strs[0] - strs[1]} ... ");
985
+ print "#"
986
+ if (strs[0] - strs[1]).to_s != res then
987
+ print(" \n #{strs[0]} - #{strs[1]} = #{strs[0] - strs[1]} ... ");
988
+ print "Error: invalid numeric value, expecting #{res}.\n "
989
+ $success = false
990
+ end
991
+ end
992
+ rescue Exception => e
993
+ puts "Error: unexpected exception raised ", e, e.backtrace
994
+ $success = false
995
+ end
996
+ if $success then
997
+ puts " Ok."
998
+ end
999
+
1000
+ print "\nTesting shl... \n "
1001
+ begin
1002
+ STRs.product(STRs).zip([ "2", "0", "4", "0",
1003
+ "57896044618658097711785492504343953926634992332820282019728792003956564819968",
1004
+ "28948022309329048855892746252171976963317496166410141009864396001978282409984",
1005
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1006
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1007
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1008
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "-2", "-1", "-4", "-1",
1009
+ "-57896044618658097711785492504343953926634992332820282019728792003956564819968",
1010
+ "-28948022309329048855892746252171976963317496166410141009864396001978282409984",
1011
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1012
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1013
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1014
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "4", "1", "8", "0",
1015
+ "115792089237316195423570985008687907853269984665640564039457584007913129639936",
1016
+ "57896044618658097711785492504343953926634992332820282019728792003956564819968",
1017
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1018
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1019
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1020
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "-4", "-1", "-8", "-1",
1021
+ "-115792089237316195423570985008687907853269984665640564039457584007913129639936",
1022
+ "-57896044618658097711785492504343953926634992332820282019728792003956564819968",
1023
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1024
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1025
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1026
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "510", "127", "1020", "63",
1027
+ "14763491377757814916505300588607708251291923044869171915030841961008924029091840",
1028
+ "7381745688878907458252650294303854125645961522434585957515420980504462014545920",
1029
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1030
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1031
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1032
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "508", "127", "1016", "63",
1033
+ "14705595333139156818793515096103364297365288052536351633011113169004967464271872",
1034
+ "7352797666569578409396757548051682148682644026268175816505556584502483732135936",
1035
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1036
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1037
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1038
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "00000000z0", "00000000",
1039
+ "00000000z00", "0000000",
1040
+ "00000000z000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
1041
+ "00000000z00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
1042
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1043
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1044
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1045
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "0zzzzzzzz0", "0zzzzzzz",
1046
+ "0zzzzzzzz00", "0zzzzzz",
1047
+ "0zzzzzzzz000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
1048
+ "0zzzzzzzz00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
1049
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1050
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1051
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1052
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "1000000z00", "1000000z",
1053
+ "1000000z000", "1000000",
1054
+ "1000000z0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
1055
+ "1000000z000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
1056
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1057
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1058
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1059
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "1zzzzzzzz0", "1zzzzzzz",
1060
+ "1zzzzzzzz00", "1zzzzzz",
1061
+ "1zzzzzzzz000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
1062
+ "1zzzzzzzz00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
1063
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1064
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1065
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1066
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "z000000010", "z0000000",
1067
+ "z0000000100", "z000000",
1068
+ "z00000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
1069
+ "z0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
1070
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1071
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1072
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1073
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "z000000z00", "z000000z",
1074
+ "z000000z000", "z000000",
1075
+ "z000000z0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
1076
+ "z000000z000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
1077
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1078
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1079
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1080
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "zzzzzzzzz0", "zzzzzzzz",
1081
+ "zzzzzzzzz00", "zzzzzzz",
1082
+ "zzzzzzzzz000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
1083
+ "zzzzzzzzz00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
1084
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1085
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1086
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1087
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "00000000x0", "00000000",
1088
+ "00000000x00", "0000000",
1089
+ "00000000x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
1090
+ "00000000x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
1091
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1092
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1093
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1094
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "0xxxxxxxx0", "0xxxxxxx",
1095
+ "0xxxxxxxx00", "0xxxxxx",
1096
+ "0xxxxxxxx000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
1097
+ "0xxxxxxxx00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
1098
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1099
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1100
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1101
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "1000000x00", "1000000x",
1102
+ "1000000x000", "1000000",
1103
+ "1000000x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
1104
+ "1000000x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
1105
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1106
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1107
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1108
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "1xxxxxxxx0", "1xxxxxxx",
1109
+ "1xxxxxxxx00", "1xxxxxx",
1110
+ "1xxxxxxxx000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
1111
+ "1xxxxxxxx00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
1112
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1113
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1114
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1115
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "x000000010", "x0000000",
1116
+ "x0000000100", "x000000",
1117
+ "x00000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
1118
+ "x0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
1119
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1120
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1121
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1122
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "x000000x00", "x000000x",
1123
+ "x000000x000", "x000000",
1124
+ "x000000x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
1125
+ "x000000x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
1126
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1127
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1128
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1129
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxxx0", "xxxxxxxx",
1130
+ "xxxxxxxxx00", "xxxxxxx",
1131
+ "xxxxxxxxx000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
1132
+ "xxxxxxxxx00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
1133
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1134
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1135
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1136
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "000000z0x0", "000000z0",
1137
+ "000000z0x00", "000000z",
1138
+ "000000z0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
1139
+ "000000z0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
1140
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1141
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1142
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1143
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "0xzxxxxzx0", "0xzxxxxz",
1144
+ "0xzxxxxzx00", "0xzxxxx",
1145
+ "0xzxxxxzx000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
1146
+ "0xzxxxxzx00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
1147
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1148
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1149
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1150
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "10000x0z00", "10000x0z",
1151
+ "10000x0z000", "10000x0",
1152
+ "10000x0z0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
1153
+ "10000x0z000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
1154
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1155
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1156
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1157
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "1xxzzzxzx0", "1xxzzzxz",
1158
+ "1xxzzzxzx00", "1xxzzzx",
1159
+ "1xxzzzxzx000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
1160
+ "1xxzzzxzx00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
1161
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1162
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1163
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1164
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "z000z00x00", "z000z00x",
1165
+ "z000z00x000", "z000z00",
1166
+ "z000z00x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
1167
+ "z000z00x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
1168
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1169
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1170
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1171
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "x000z00x00", "x000z00x",
1172
+ "x000z00x000", "x000z00",
1173
+ "x000z00x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
1174
+ "x000z00x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
1175
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1176
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1177
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1178
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "zxxxzzzxx0", "zxxxzzzx",
1179
+ "zxxxzzzxx00", "zxxxzzz",
1180
+ "zxxxzzzxx000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
1181
+ "zxxxzzzxx00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
1182
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1183
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1184
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1185
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxzzzxx0", "xxxxzzzx",
1186
+ "xxxxzzzxx00", "xxxxzzz",
1187
+ "xxxxzzzxx000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
1188
+ "xxxxzzzxx00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
1189
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1190
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1191
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1192
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx"
1193
+ ]) do |strs,res|
1194
+ # puts("#{strs[0]} << #{strs[1]} = #{strs[0] << strs[1]} ... ");
1195
+ print "#"
1196
+ if (strs[0] << strs[1]).to_s != res then
1197
+ print(" \n #{strs[0]} << #{strs[1]} = #{strs[0] << strs[1]} ... ");
1198
+ print "Error: invalid numeric value, expecting #{res}.\n "
1199
+ $success = false
1200
+ end
1201
+ end
1202
+ rescue Exception => e
1203
+ puts "Error: unexpected exception raised ", e, e.backtrace
1204
+ $success = false
1205
+ end
1206
+ if $success then
1207
+ puts " Ok."
1208
+ end
1209
+
1210
+ print "\nTesting shr... \n "
1211
+ begin
1212
+ STRs.product(STRs).zip([ "0", "2", "0", "4", "0", "0",
1213
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1214
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1215
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1216
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "-1", "-2", "-1", "-4", "-1",
1217
+ "-1", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1218
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1219
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1220
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "1", "4", "0", "8", "0", "0",
1221
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1222
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1223
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1224
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "-1", "-4", "-1", "-8", "-1",
1225
+ "-1", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1226
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1227
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1228
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "127", "510", "63", "1020",
1229
+ "0", "0", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1230
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1231
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1232
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "127", "508", "63",
1233
+ "1016", "0", "0", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1234
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1235
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1236
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "00000000",
1237
+ "00000000z0", "0000000", "00000000z00", "00", "00", "xxxxxxxx", "xxxxxxxx",
1238
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1239
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1240
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1241
+ "xxxxxxxx", "xxxxxxxx", "0zzzzzzz", "0zzzzzzzz0", "0zzzzzz", "0zzzzzzzz00",
1242
+ "00", "00", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1243
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1244
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1245
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "1000000z",
1246
+ "1000000z00", "1000000", "1000000z000", "00", "00", "xxxxxxxx", "xxxxxxxx",
1247
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1248
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1249
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1250
+ "xxxxxxxx", "xxxxxxxx", "1zzzzzzz", "1zzzzzzzz0", "1zzzzzz", "1zzzzzzzz00",
1251
+ "00", "00", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1252
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1253
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1254
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "z0000000",
1255
+ "z000000010", "z000000", "z0000000100", "00", "00", "xxxxxxxx", "xxxxxxxx",
1256
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1257
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1258
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1259
+ "xxxxxxxx", "xxxxxxxx", "z000000z", "z000000z00", "z000000", "z000000z000",
1260
+ "00", "00", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1261
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1262
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1263
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "zzzzzzzz",
1264
+ "zzzzzzzzz0", "zzzzzzz", "zzzzzzzzz00", "00", "00", "xxxxxxxx", "xxxxxxxx",
1265
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1266
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1267
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1268
+ "xxxxxxxx", "xxxxxxxx", "00000000", "00000000x0", "0000000", "00000000x00",
1269
+ "00", "00", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1270
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1271
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1272
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "0xxxxxxx",
1273
+ "0xxxxxxxx0", "0xxxxxx", "0xxxxxxxx00", "00", "00", "xxxxxxxx", "xxxxxxxx",
1274
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1275
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1276
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1277
+ "xxxxxxxx", "xxxxxxxx", "1000000x", "1000000x00", "1000000", "1000000x000",
1278
+ "00", "00", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1279
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1280
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1281
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "1xxxxxxx",
1282
+ "1xxxxxxxx0", "1xxxxxx", "1xxxxxxxx00", "00", "00", "xxxxxxxx", "xxxxxxxx",
1283
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1284
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1285
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1286
+ "xxxxxxxx", "xxxxxxxx", "x0000000", "x000000010", "x000000", "x0000000100",
1287
+ "00", "00", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1288
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1289
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1290
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "x000000x",
1291
+ "x000000x00", "x000000", "x000000x000", "00", "00", "xxxxxxxx", "xxxxxxxx",
1292
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1293
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1294
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1295
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxxx0", "xxxxxxx", "xxxxxxxxx00",
1296
+ "00", "00", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1297
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1298
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1299
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "000000z0",
1300
+ "000000z0x0", "000000z", "000000z0x00", "00", "00", "xxxxxxxx", "xxxxxxxx",
1301
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1302
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1303
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1304
+ "xxxxxxxx", "xxxxxxxx", "0xzxxxxz", "0xzxxxxzx0", "0xzxxxx", "0xzxxxxzx00",
1305
+ "00", "00", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1306
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1307
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1308
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "10000x0z",
1309
+ "10000x0z00", "10000x0", "10000x0z000", "00", "00", "xxxxxxxx", "xxxxxxxx",
1310
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1311
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1312
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1313
+ "xxxxxxxx", "xxxxxxxx", "1xxzzzxz", "1xxzzzxzx0", "1xxzzzx", "1xxzzzxzx00",
1314
+ "00", "00", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1315
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1316
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1317
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "z000z00x",
1318
+ "z000z00x00", "z000z00", "z000z00x000", "00", "00", "xxxxxxxx", "xxxxxxxx",
1319
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1320
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1321
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1322
+ "xxxxxxxx", "xxxxxxxx", "x000z00x", "x000z00x00", "x000z00", "x000z00x000",
1323
+ "00", "00", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1324
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1325
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1326
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "zxxxzzzx",
1327
+ "zxxxzzzxx0", "zxxxzzz", "zxxxzzzxx00", "00", "00", "xxxxxxxx", "xxxxxxxx",
1328
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1329
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1330
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1331
+ "xxxxxxxx", "xxxxxxxx", "xxxxzzzx", "xxxxzzzxx0", "xxxxzzz", "xxxxzzzxx00",
1332
+ "00", "00", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1333
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1334
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx",
1335
+ "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx"
1336
+ ]) do |strs,res|
1337
+ # puts("#{strs[0]} >> #{strs[1]} = #{strs[0] >> strs[1]} ... ");
1338
+ print "#"
1339
+ if (strs[0] >> strs[1]).to_s != res then
1340
+ print(" \n #{strs[0]} >> #{strs[1]} = #{strs[0] >> strs[1]} ... ");
1341
+ print "Error: invalid numeric value, expecting #{res}.\n "
1342
+ $success = false
1343
+ end
1344
+ end
1345
+ rescue Exception => e
1346
+ puts "Error: unexpected exception raised ", e, e.backtrace
1347
+ $success = false
1348
+ end
1349
+ if $success then
1350
+ puts " Ok."
1351
+ end
1352
+
1353
+ print "\nTesting eq... \n "
1354
+ begin
1355
+ STRs.product(STRs).zip([ "1", "0", "0", "0", "0", "0",
1356
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1357
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "0", "1", "0", "0", "0",
1358
+ "0", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1359
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "0", "0", "1", "0",
1360
+ "0", "0", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1361
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "0", "0",
1362
+ "0", "1", "0", "0", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1363
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "0",
1364
+ "0", "0", "0", "1", "0", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1365
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1366
+ "0", "0", "0", "0", "0", "1", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1367
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1368
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1369
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1370
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1371
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1372
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1373
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1374
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1375
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1376
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1377
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1378
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1379
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1380
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1381
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1382
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1383
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1384
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1385
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1386
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1387
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1388
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1389
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1390
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1391
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1392
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1393
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1394
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1395
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1396
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1397
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1398
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1399
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1400
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1401
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1402
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1403
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1404
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1405
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1406
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1407
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1408
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1409
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1410
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1411
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1412
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1413
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1414
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1415
+ "xx", "xx", "xx", "xx", "xx", "xx"
1416
+ ]) do |strs,res|
1417
+ # puts("#{strs[0]} == #{strs[1]} = #{strs[0] == strs[1]} ... ");
1418
+ print "#"
1419
+ if (strs[0] == strs[1]).to_s != res then
1420
+ print(" \n #{strs[0]} == #{strs[1]} = #{strs[0] == strs[1]} ... ");
1421
+ print "Error: invalid numeric value, expecting #{res}.\n "
1422
+ $success = false
1423
+ end
1424
+ end
1425
+ rescue Exception => e
1426
+ puts "Error: unexpected exception raised ", e, e.backtrace
1427
+ $success = false
1428
+ end
1429
+ if $success then
1430
+ puts " Ok."
1431
+ end
1432
+
1433
+ print "\nTesting lt... \n "
1434
+ begin
1435
+ STRs.product(STRs).zip([ "0", "0", "1", "0", "1", "1",
1436
+ "00", "xx", "00", "00", "xx", "xx", "xx", "00", "xx", "00", "00", "xx", "xx",
1437
+ "xx", "xx", "xx", "00", "00", "xx", "xx", "xx", "xx", "1", "0", "1", "0", "1",
1438
+ "1", "01", "01", "00", "00", "xx", "xx", "xx", "01", "01", "00", "00", "xx",
1439
+ "xx", "xx", "01", "01", "00", "00", "xx", "xx", "xx", "xx", "0", "0", "0", "0",
1440
+ "1", "1", "00", "xx", "00", "00", "xx", "xx", "xx", "00", "xx", "00", "00",
1441
+ "xx", "xx", "xx", "xx", "xx", "00", "00", "xx", "xx", "xx", "xx", "1", "1",
1442
+ "1", "0", "1", "1", "01", "01", "00", "xx", "xx", "xx", "xx", "01", "01", "00",
1443
+ "xx", "xx", "xx", "xx", "01", "01", "00", "xx", "xx", "xx", "xx", "xx", "0",
1444
+ "0", "0", "0", "0", "0", "00", "00", "00", "00", "xx", "xx", "xx", "00", "00",
1445
+ "00", "00", "xx", "xx", "xx", "00", "00", "00", "00", "xx", "xx", "xx", "xx",
1446
+ "0", "0", "0", "0", "1", "0", "00", "xx", "00", "00", "xx", "xx", "xx", "00",
1447
+ "xx", "00", "00", "xx", "xx", "xx", "00", "xx", "00", "00", "xx", "xx", "xx",
1448
+ "xx", "xx", "00", "01", "00", "xx", "01", "xx", "xx", "00", "00", "xx", "xx",
1449
+ "xx", "xx", "xx", "00", "00", "xx", "xx", "xx", "xx", "xx", "00", "00", "xx",
1450
+ "xx", "xx", "xx", "xx", "00", "xx", "00", "xx", "xx", "xx", "xx", "xx", "xx",
1451
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1452
+ "xx", "xx", "xx", "xx", "xx", "01", "01", "01", "01", "01", "01", "01", "01",
1453
+ "xx", "xx", "xx", "xx", "xx", "01", "01", "xx", "xx", "xx", "xx", "xx", "01",
1454
+ "01", "xx", "xx", "xx", "xx", "xx", "xx", "01", "xx", "01", "xx", "01", "01",
1455
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1456
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1457
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1458
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1459
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1460
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1461
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1462
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1463
+ "xx", "xx", "xx", "00", "01", "00", "xx", "01", "xx", "xx", "00", "00", "xx",
1464
+ "xx", "xx", "xx", "xx", "00", "00", "xx", "xx", "xx", "xx", "xx", "00", "00",
1465
+ "xx", "xx", "xx", "xx", "xx", "00", "xx", "00", "xx", "xx", "xx", "xx", "xx",
1466
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1467
+ "xx", "xx", "xx", "xx", "xx", "xx", "01", "01", "01", "01", "01", "01", "01",
1468
+ "01", "xx", "xx", "xx", "xx", "xx", "01", "01", "xx", "xx", "xx", "xx", "xx",
1469
+ "01", "01", "xx", "xx", "xx", "xx", "xx", "xx", "01", "xx", "01", "xx", "01",
1470
+ "01", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1471
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1472
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1473
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1474
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1475
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1476
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1477
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1478
+ "xx", "xx", "xx", "xx", "00", "xx", "00", "xx", "xx", "xx", "xx", "00", "00",
1479
+ "xx", "xx", "xx", "xx", "xx", "00", "00", "xx", "xx", "xx", "xx", "xx", "00",
1480
+ "00", "xx", "xx", "xx", "xx", "xx", "00", "xx", "00", "xx", "xx", "xx", "xx",
1481
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1482
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "01", "01", "01", "01", "01", "01",
1483
+ "01", "01", "xx", "xx", "xx", "xx", "xx", "01", "01", "xx", "xx", "xx", "xx",
1484
+ "xx", "01", "01", "xx", "xx", "xx", "xx", "xx", "xx", "01", "xx", "01", "xx",
1485
+ "01", "01", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1486
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1487
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1488
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1489
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1490
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1491
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1492
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1493
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1494
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1495
+ "xx", "xx", "xx", "xx", "xx", "xx"
1496
+ ]) do |strs,res|
1497
+ # puts("#{strs[0]} < #{strs[1]} = #{strs[0] < strs[1]} ... ");
1498
+ print "#"
1499
+ if (strs[0] < strs[1]).to_s != res then
1500
+ print(" \n #{strs[0]} < #{strs[1]} = #{strs[0] < strs[1]} ... ");
1501
+ print "Error: invalid numeric value, expecting #{res}.\n "
1502
+ $success = false
1503
+ end
1504
+ end
1505
+ rescue Exception => e
1506
+ puts "Error: unexpected exception raised ", e, e.backtrace
1507
+ $success = false
1508
+ end
1509
+ if $success then
1510
+ puts " Ok."
1511
+ end
1512
+
1513
+ print "\nTesting gt... \n "
1514
+ begin
1515
+ STRs.product(STRs).zip([ "0", "1", "0", "1", "0", "0",
1516
+ "xx", "xx", "01", "01", "xx", "xx", "xx", "xx", "xx", "01", "01", "xx", "xx",
1517
+ "xx", "xx", "xx", "01", "01", "xx", "xx", "xx", "xx", "0", "0", "0", "1", "0",
1518
+ "0", "00", "00", "01", "xx", "xx", "xx", "xx", "00", "00", "01", "xx", "xx",
1519
+ "xx", "xx", "00", "00", "01", "xx", "xx", "xx", "xx", "xx", "1", "1", "0", "1",
1520
+ "0", "0", "01", "xx", "01", "01", "xx", "xx", "xx", "01", "xx", "01", "01",
1521
+ "xx", "xx", "xx", "xx", "xx", "01", "01", "xx", "xx", "xx", "xx", "0", "0",
1522
+ "0", "0", "0", "0", "00", "00", "01", "xx", "xx", "xx", "xx", "00", "00", "01",
1523
+ "xx", "xx", "xx", "xx", "00", "00", "01", "xx", "xx", "xx", "xx", "xx", "1",
1524
+ "1", "1", "1", "0", "1", "xx", "xx", "01", "01", "xx", "xx", "xx", "xx", "xx",
1525
+ "01", "01", "xx", "xx", "xx", "xx", "xx", "01", "01", "xx", "xx", "xx", "xx",
1526
+ "1", "1", "1", "1", "0", "0", "01", "xx", "01", "01", "xx", "xx", "xx", "01",
1527
+ "xx", "01", "01", "xx", "xx", "xx", "xx", "xx", "01", "01", "xx", "xx", "xx",
1528
+ "xx", "00", "01", "00", "01", "00", "00", "xx", "xx", "01", "xx", "xx", "xx",
1529
+ "xx", "xx", "xx", "01", "xx", "xx", "xx", "xx", "xx", "xx", "01", "xx", "xx",
1530
+ "xx", "xx", "xx", "xx", "01", "xx", "01", "00", "xx", "xx", "xx", "01", "xx",
1531
+ "xx", "xx", "xx", "xx", "xx", "01", "xx", "xx", "xx", "xx", "xx", "xx", "01",
1532
+ "xx", "xx", "xx", "xx", "xx", "00", "00", "00", "00", "00", "00", "00", "xx",
1533
+ "xx", "xx", "xx", "xx", "xx", "00", "xx", "xx", "xx", "xx", "xx", "xx", "00",
1534
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "00", "00", "00", "xx", "00", "00",
1535
+ "00", "xx", "xx", "xx", "xx", "xx", "xx", "00", "xx", "xx", "xx", "xx", "xx",
1536
+ "xx", "00", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1537
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1538
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1539
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1540
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1541
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1542
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1543
+ "xx", "xx", "00", "01", "00", "01", "00", "00", "xx", "xx", "01", "xx", "xx",
1544
+ "xx", "xx", "xx", "xx", "01", "xx", "xx", "xx", "xx", "xx", "xx", "01", "xx",
1545
+ "xx", "xx", "xx", "xx", "xx", "01", "xx", "01", "00", "xx", "xx", "xx", "01",
1546
+ "xx", "xx", "xx", "xx", "xx", "xx", "01", "xx", "xx", "xx", "xx", "xx", "xx",
1547
+ "01", "xx", "xx", "xx", "xx", "xx", "00", "00", "00", "00", "00", "00", "00",
1548
+ "xx", "xx", "xx", "xx", "xx", "xx", "00", "xx", "xx", "xx", "xx", "xx", "xx",
1549
+ "00", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "00", "00", "00", "xx", "00",
1550
+ "00", "00", "xx", "xx", "xx", "xx", "xx", "xx", "00", "xx", "xx", "xx", "xx",
1551
+ "xx", "xx", "00", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1552
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1553
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1554
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1555
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1556
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1557
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1558
+ "xx", "xx", "xx", "xx", "01", "xx", "01", "00", "00", "xx", "xx", "01", "xx",
1559
+ "xx", "xx", "xx", "xx", "xx", "01", "xx", "xx", "xx", "xx", "xx", "xx", "01",
1560
+ "xx", "xx", "xx", "xx", "xx", "xx", "01", "xx", "01", "00", "xx", "xx", "xx",
1561
+ "01", "xx", "xx", "xx", "xx", "xx", "xx", "01", "xx", "xx", "xx", "xx", "xx",
1562
+ "xx", "01", "xx", "xx", "xx", "xx", "xx", "00", "00", "00", "00", "00", "00",
1563
+ "00", "xx", "xx", "xx", "xx", "xx", "xx", "00", "xx", "xx", "xx", "xx", "xx",
1564
+ "xx", "00", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "00", "00", "00", "xx",
1565
+ "00", "00", "00", "xx", "xx", "xx", "xx", "xx", "xx", "00", "xx", "xx", "xx",
1566
+ "xx", "xx", "xx", "00", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1567
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1568
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1569
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1570
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1571
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1572
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1573
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1574
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1575
+ "xx", "xx", "xx", "xx", "xx", "xx"
1576
+ ]) do |strs,res|
1577
+ # puts("#{strs[0]} > #{strs[1]} = #{strs[0] > strs[1]} ... ");
1578
+ print "#"
1579
+ if (strs[0] > strs[1]).to_s != res then
1580
+ print(" \n #{strs[0]} > #{strs[1]} = #{strs[0] > strs[1]} ... ");
1581
+ print "Error: invalid numeric value, expecting #{res}.\n "
1582
+ $success = false
1583
+ end
1584
+ end
1585
+ rescue Exception => e
1586
+ puts "Error: unexpected exception raised ", e, e.backtrace
1587
+ $success = false
1588
+ end
1589
+ if $success then
1590
+ puts " Ok."
1591
+ end
1592
+
1593
+ print "\nTesting le... \n "
1594
+ begin
1595
+ STRs.product(STRs).zip([ "1", "0", "1", "0", "1", "1",
1596
+ "xx", "xx", "00", "00", "xx", "xx", "xx", "xx", "xx", "00", "00", "xx", "xx",
1597
+ "xx", "xx", "xx", "00", "00", "xx", "xx", "xx", "xx", "1", "1", "1", "0", "1",
1598
+ "1", "01", "01", "00", "xx", "xx", "xx", "xx", "01", "01", "00", "xx", "xx",
1599
+ "xx", "xx", "01", "01", "00", "xx", "xx", "xx", "xx", "xx", "0", "0", "1", "0",
1600
+ "1", "1", "00", "xx", "00", "00", "xx", "xx", "xx", "00", "xx", "00", "00",
1601
+ "xx", "xx", "xx", "xx", "xx", "00", "00", "xx", "xx", "xx", "xx", "1", "1",
1602
+ "1", "1", "1", "1", "01", "01", "00", "xx", "xx", "xx", "xx", "01", "01", "00",
1603
+ "xx", "xx", "xx", "xx", "01", "01", "00", "xx", "xx", "xx", "xx", "xx", "0",
1604
+ "0", "0", "0", "1", "0", "xx", "xx", "00", "00", "xx", "xx", "xx", "xx", "xx",
1605
+ "00", "00", "xx", "xx", "xx", "xx", "xx", "00", "00", "xx", "xx", "xx", "xx",
1606
+ "0", "0", "0", "0", "1", "1", "00", "xx", "00", "00", "xx", "xx", "xx", "00",
1607
+ "xx", "00", "00", "xx", "xx", "xx", "xx", "xx", "00", "00", "xx", "xx", "xx",
1608
+ "xx", "01", "00", "01", "00", "01", "01", "xx", "xx", "00", "xx", "xx", "xx",
1609
+ "xx", "xx", "xx", "00", "xx", "xx", "xx", "xx", "xx", "xx", "00", "xx", "xx",
1610
+ "xx", "xx", "xx", "xx", "00", "xx", "00", "01", "xx", "xx", "xx", "00", "xx",
1611
+ "xx", "xx", "xx", "xx", "xx", "00", "xx", "xx", "xx", "xx", "xx", "xx", "00",
1612
+ "xx", "xx", "xx", "xx", "xx", "01", "01", "01", "01", "01", "01", "01", "xx",
1613
+ "xx", "xx", "xx", "xx", "xx", "01", "xx", "xx", "xx", "xx", "xx", "xx", "01",
1614
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "01", "01", "01", "xx", "01", "01",
1615
+ "01", "xx", "xx", "xx", "xx", "xx", "xx", "01", "xx", "xx", "xx", "xx", "xx",
1616
+ "xx", "01", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1617
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1618
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1619
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1620
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1621
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1622
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1623
+ "xx", "xx", "01", "00", "01", "00", "01", "01", "xx", "xx", "00", "xx", "xx",
1624
+ "xx", "xx", "xx", "xx", "00", "xx", "xx", "xx", "xx", "xx", "xx", "00", "xx",
1625
+ "xx", "xx", "xx", "xx", "xx", "00", "xx", "00", "01", "xx", "xx", "xx", "00",
1626
+ "xx", "xx", "xx", "xx", "xx", "xx", "00", "xx", "xx", "xx", "xx", "xx", "xx",
1627
+ "00", "xx", "xx", "xx", "xx", "xx", "01", "01", "01", "01", "01", "01", "01",
1628
+ "xx", "xx", "xx", "xx", "xx", "xx", "01", "xx", "xx", "xx", "xx", "xx", "xx",
1629
+ "01", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "01", "01", "01", "xx", "01",
1630
+ "01", "01", "xx", "xx", "xx", "xx", "xx", "xx", "01", "xx", "xx", "xx", "xx",
1631
+ "xx", "xx", "01", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1632
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1633
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1634
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1635
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1636
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1637
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1638
+ "xx", "xx", "xx", "xx", "00", "xx", "00", "01", "01", "xx", "xx", "00", "xx",
1639
+ "xx", "xx", "xx", "xx", "xx", "00", "xx", "xx", "xx", "xx", "xx", "xx", "00",
1640
+ "xx", "xx", "xx", "xx", "xx", "xx", "00", "xx", "00", "01", "xx", "xx", "xx",
1641
+ "00", "xx", "xx", "xx", "xx", "xx", "xx", "00", "xx", "xx", "xx", "xx", "xx",
1642
+ "xx", "00", "xx", "xx", "xx", "xx", "xx", "01", "01", "01", "01", "01", "01",
1643
+ "01", "xx", "xx", "xx", "xx", "xx", "xx", "01", "xx", "xx", "xx", "xx", "xx",
1644
+ "xx", "01", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "01", "01", "01", "xx",
1645
+ "01", "01", "01", "xx", "xx", "xx", "xx", "xx", "xx", "01", "xx", "xx", "xx",
1646
+ "xx", "xx", "xx", "01", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1647
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1648
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1649
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1650
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1651
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1652
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1653
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1654
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1655
+ "xx", "xx", "xx", "xx", "xx", "xx"
1656
+ ]) do |strs,res|
1657
+ # puts("#{strs[0]} <= #{strs[1]} = #{strs[0] <= strs[1]} ... ");
1658
+ print "#"
1659
+ if (strs[0] <= strs[1]).to_s != res then
1660
+ print(" \n #{strs[0]} <= #{strs[1]} = #{strs[0] <= strs[1]} ... ");
1661
+ print "Error: invalid numeric value, expecting #{res}.\n "
1662
+ $success = false
1663
+ end
1664
+ end
1665
+ rescue Exception => e
1666
+ puts "Error: unexpected exception raised ", e, e.backtrace
1667
+ $success = false
1668
+ end
1669
+ if $success then
1670
+ puts " Ok."
1671
+ end
1672
+
1673
+ print "\nTesting ge... \n "
1674
+ begin
1675
+ STRs.product(STRs).zip([ "1", "1", "0", "1", "0", "0",
1676
+ "01", "xx", "01", "01", "xx", "xx", "xx", "01", "xx", "01", "01", "xx", "xx",
1677
+ "xx", "xx", "xx", "01", "01", "xx", "xx", "xx", "xx", "0", "1", "0", "1", "0",
1678
+ "0", "00", "00", "01", "01", "xx", "xx", "xx", "00", "00", "01", "01", "xx",
1679
+ "xx", "xx", "00", "00", "01", "01", "xx", "xx", "xx", "xx", "1", "1", "1", "1",
1680
+ "0", "0", "01", "xx", "01", "01", "xx", "xx", "xx", "01", "xx", "01", "01",
1681
+ "xx", "xx", "xx", "xx", "xx", "01", "01", "xx", "xx", "xx", "xx", "0", "0",
1682
+ "0", "1", "0", "0", "00", "00", "01", "xx", "xx", "xx", "xx", "00", "00", "01",
1683
+ "xx", "xx", "xx", "xx", "00", "00", "01", "xx", "xx", "xx", "xx", "xx", "1",
1684
+ "1", "1", "1", "1", "1", "01", "01", "01", "01", "xx", "xx", "xx", "01", "01",
1685
+ "01", "01", "xx", "xx", "xx", "01", "01", "01", "01", "xx", "xx", "xx", "xx",
1686
+ "1", "1", "1", "1", "0", "1", "01", "xx", "01", "01", "xx", "xx", "xx", "01",
1687
+ "xx", "01", "01", "xx", "xx", "xx", "01", "xx", "01", "01", "xx", "xx", "xx",
1688
+ "xx", "xx", "01", "00", "01", "xx", "00", "xx", "xx", "01", "01", "xx", "xx",
1689
+ "xx", "xx", "xx", "01", "01", "xx", "xx", "xx", "xx", "xx", "01", "01", "xx",
1690
+ "xx", "xx", "xx", "xx", "01", "xx", "01", "xx", "xx", "xx", "xx", "xx", "xx",
1691
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1692
+ "xx", "xx", "xx", "xx", "xx", "00", "00", "00", "00", "00", "00", "00", "00",
1693
+ "xx", "xx", "xx", "xx", "xx", "00", "00", "xx", "xx", "xx", "xx", "xx", "00",
1694
+ "00", "xx", "xx", "xx", "xx", "xx", "xx", "00", "xx", "00", "xx", "00", "00",
1695
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1696
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1697
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1698
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1699
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1700
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1701
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1702
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1703
+ "xx", "xx", "xx", "01", "00", "01", "xx", "00", "xx", "xx", "01", "01", "xx",
1704
+ "xx", "xx", "xx", "xx", "01", "01", "xx", "xx", "xx", "xx", "xx", "01", "01",
1705
+ "xx", "xx", "xx", "xx", "xx", "01", "xx", "01", "xx", "xx", "xx", "xx", "xx",
1706
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1707
+ "xx", "xx", "xx", "xx", "xx", "xx", "00", "00", "00", "00", "00", "00", "00",
1708
+ "00", "xx", "xx", "xx", "xx", "xx", "00", "00", "xx", "xx", "xx", "xx", "xx",
1709
+ "00", "00", "xx", "xx", "xx", "xx", "xx", "xx", "00", "xx", "00", "xx", "00",
1710
+ "00", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1711
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1712
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1713
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1714
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1715
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1716
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1717
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1718
+ "xx", "xx", "xx", "xx", "01", "xx", "01", "xx", "xx", "xx", "xx", "01", "01",
1719
+ "xx", "xx", "xx", "xx", "xx", "01", "01", "xx", "xx", "xx", "xx", "xx", "01",
1720
+ "01", "xx", "xx", "xx", "xx", "xx", "01", "xx", "01", "xx", "xx", "xx", "xx",
1721
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1722
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "00", "00", "00", "00", "00", "00",
1723
+ "00", "00", "xx", "xx", "xx", "xx", "xx", "00", "00", "xx", "xx", "xx", "xx",
1724
+ "xx", "00", "00", "xx", "xx", "xx", "xx", "xx", "xx", "00", "xx", "00", "xx",
1725
+ "00", "00", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1726
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1727
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1728
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1729
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1730
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1731
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1732
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1733
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1734
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1735
+ "xx", "xx", "xx", "xx", "xx", "xx"
1736
+ ]) do |strs,res|
1737
+ # puts("#{strs[0]} >= #{strs[1]} = #{strs[0] >= strs[1]} ... ");
1738
+ print "#"
1739
+ if (strs[0] >= strs[1]).to_s != res then
1740
+ print(" \n #{strs[0]} >= #{strs[1]} = #{strs[0] >= strs[1]} ... ");
1741
+ print "Error: invalid numeric value, expecting #{res}.\n "
1742
+ $success = false
1743
+ end
1744
+ end
1745
+ rescue Exception => e
1746
+ puts "Error: unexpected exception raised ", e, e.backtrace
1747
+ $success = false
1748
+ end
1749
+ if $success then
1750
+ puts " Ok."
1751
+ end
1752
+
1753
+ print "\nTesting cp... \n "
1754
+ begin
1755
+ STRs.product(STRs).zip([ "0", "1", "-1", "1", "-1", "-1",
1756
+ "xx", "xx", "01", "01", "xx", "xx", "xx", "xx", "xx", "01", "01", "xx", "xx",
1757
+ "xx", "xx", "xx", "01", "01", "xx", "xx", "xx", "xx", "-1", "0", "-1", "1",
1758
+ "-1", "-1", "11", "11", "01", "xx", "xx", "xx", "xx", "11", "11", "01", "xx",
1759
+ "xx", "xx", "xx", "11", "11", "01", "xx", "xx", "xx", "xx", "xx", "1", "1",
1760
+ "0", "1", "-1", "-1", "xx", "xx", "01", "01", "xx", "xx", "xx", "xx", "xx",
1761
+ "01", "01", "xx", "xx", "xx", "xx", "xx", "01", "01", "xx", "xx", "xx", "xx",
1762
+ "-1", "-1", "-1", "0", "-1", "-1", "11", "11", "01", "xx", "xx", "xx", "xx",
1763
+ "11", "11", "01", "xx", "xx", "xx", "xx", "11", "11", "01", "xx", "xx", "xx",
1764
+ "xx", "xx", "1", "1", "1", "1", "0", "1", "01", "xx", "01", "01", "xx", "xx",
1765
+ "xx", "01", "xx", "01", "01", "xx", "xx", "xx", "01", "xx", "01", "01", "xx",
1766
+ "xx", "xx", "xx", "1", "1", "1", "1", "-1", "0", "01", "xx", "01", "01", "xx",
1767
+ "xx", "xx", "01", "xx", "01", "01", "xx", "xx", "xx", "01", "xx", "01", "01",
1768
+ "xx", "xx", "xx", "xx", "xx", "01", "11", "01", "xx", "11", "xx", "xx", "01",
1769
+ "01", "xx", "xx", "xx", "xx", "xx", "01", "01", "xx", "xx", "xx", "xx", "xx",
1770
+ "01", "01", "xx", "xx", "xx", "xx", "xx", "01", "xx", "01", "xx", "xx", "xx",
1771
+ "xx", "01", "01", "xx", "xx", "xx", "xx", "xx", "01", "01", "xx", "xx", "xx",
1772
+ "xx", "xx", "01", "01", "xx", "xx", "xx", "xx", "11", "11", "11", "11", "11",
1773
+ "11", "11", "11", "xx", "xx", "xx", "xx", "xx", "11", "11", "xx", "xx", "xx",
1774
+ "xx", "xx", "11", "11", "xx", "xx", "xx", "xx", "xx", "xx", "11", "xx", "11",
1775
+ "xx", "11", "11", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1776
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1777
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1778
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1779
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1780
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1781
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1782
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1783
+ "xx", "xx", "xx", "xx", "xx", "xx", "01", "11", "01", "xx", "11", "xx", "xx",
1784
+ "01", "01", "xx", "xx", "xx", "xx", "xx", "01", "01", "xx", "xx", "xx", "xx",
1785
+ "xx", "01", "01", "xx", "xx", "xx", "xx", "xx", "01", "xx", "01", "xx", "xx",
1786
+ "xx", "xx", "01", "01", "xx", "xx", "xx", "xx", "xx", "01", "01", "xx", "xx",
1787
+ "xx", "xx", "xx", "01", "01", "xx", "xx", "xx", "xx", "11", "11", "11", "11",
1788
+ "11", "11", "11", "11", "xx", "xx", "xx", "xx", "xx", "11", "11", "xx", "xx",
1789
+ "xx", "xx", "xx", "11", "11", "xx", "xx", "xx", "xx", "xx", "xx", "11", "xx",
1790
+ "11", "xx", "11", "11", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1791
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1792
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1793
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1794
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1795
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1796
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1797
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1798
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "01", "xx", "01", "xx", "xx", "xx",
1799
+ "xx", "01", "01", "xx", "xx", "xx", "xx", "xx", "01", "01", "xx", "xx", "xx",
1800
+ "xx", "xx", "01", "01", "xx", "xx", "xx", "xx", "xx", "01", "xx", "01", "xx",
1801
+ "xx", "xx", "xx", "01", "01", "xx", "xx", "xx", "xx", "xx", "01", "01", "xx",
1802
+ "xx", "xx", "xx", "xx", "01", "01", "xx", "xx", "xx", "xx", "11", "11", "11",
1803
+ "11", "11", "11", "11", "11", "xx", "xx", "xx", "xx", "xx", "11", "11", "xx",
1804
+ "xx", "xx", "xx", "xx", "11", "11", "xx", "xx", "xx", "xx", "xx", "xx", "11",
1805
+ "xx", "11", "xx", "11", "11", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1806
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1807
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1808
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1809
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1810
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1811
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1812
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1813
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1814
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx",
1815
+ "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx", "xx"
1816
+ ]) do |strs,res|
1817
+ # puts("#{strs[0]} <=> #{strs[1]} = #{strs[0] <=> strs[1]} ... ");
1818
+ print "#"
1819
+ if (strs[0] <=> strs[1]).to_s != res then
1820
+ print(" \n #{strs[0]} <=> #{strs[1]} = #{strs[0] <=> strs[1]} ... ");
1821
+ print "Error: invalid numeric value, expecting #{res}.\n "
1822
+ $success = false
1823
+ end
1824
+ end
1825
+ rescue Exception => e
1826
+ puts "Error: unexpected exception raised ", e, e.backtrace
1827
+ $success = false
1828
+ end
1829
+ if $success then
1830
+ puts " Ok."
1831
+ end
1832
+
1833
+ print "\nTesting mul... \n "
1834
+ begin
1835
+ STRs.product(STRs).zip( [ "1", "-1", "2", "-2", "255", "254",
1836
+ "0000000000000000x", "000000000xxxxxxxx", "111111111000000x0",
1837
+ "111111111xxxxxxxx", "xxxxxxxxx00000001", "xxxxxxxxx000000x0",
1838
+ "xxxxxxxxxxxxxxxxx", "0000000000000000x", "000000000xxxxxxxx",
1839
+ "111111111000000x0", "111111111xxxxxxxx", "xxxxxxxxx00000001",
1840
+ "xxxxxxxxx000000x0", "xxxxxxxxxxxxxxxxx", "00000000000000x0x",
1841
+ "000000000xxxxxxxx", "1111111110000x0x0", "111111111xxxxxxxx",
1842
+ "xxxxxxxxx000x00x0", "xxxxxxxxx000x00x0", "xxxxxxxxxxxxxxxxx",
1843
+ "xxxxxxxxxxxxxxxxx", "-1", "1", "-2", "2", "-255", "-254", "xxxxxxxxxxxxxxxxx",
1844
+ "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxx0", "xxxxxxxxxxxxxxxxx",
1845
+ "xxxxxxxxx11111111", "xxxxxxxxxxxxxxxx0", "xxxxxxxxxxxxxxxxx",
1846
+ "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxx0",
1847
+ "xxxxxxxxxxxxxxxxx", "xxxxxxxxx11111111", "xxxxxxxxxxxxxxxx0",
1848
+ "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxx",
1849
+ "xxxxxxxxxxxxxxxx0", "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxx0",
1850
+ "xxxxxxxxxxxxxxxx0", "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxx", "2", "-2", "4",
1851
+ "-4", "510", "508", "000000000000000x0", "00000000xxxxxxxx0",
1852
+ "11111111000000x00", "11111111xxxxxxxx0", "xxxxxxxx000000010",
1853
+ "xxxxxxxx000000x00", "xxxxxxxxxxxxxxxx0", "000000000000000x0",
1854
+ "00000000xxxxxxxx0", "11111111000000x00", "11111111xxxxxxxx0",
1855
+ "xxxxxxxx000000010", "xxxxxxxx000000x00", "xxxxxxxxxxxxxxxx0",
1856
+ "0000000000000x0x0", "00000000xxxxxxxx0", "111111110000x0x00",
1857
+ "11111111xxxxxxxx0", "xxxxxxxx000x00x00", "xxxxxxxx000x00x00",
1858
+ "xxxxxxxxxxxxxxxx0", "xxxxxxxxxxxxxxxx0", "-2", "2", "-4", "4", "-510", "-508",
1859
+ "xxxxxxxxxxxxxxxx0", "xxxxxxxxxxxxxxxx0", "0000000xxxxxxxx00",
1860
+ "xxxxxxxxxxxxxxxx0", "xxxxxxxx111111110", "xxxxxxxxxxxxxxx00",
1861
+ "xxxxxxxxxxxxxxxx0", "xxxxxxxxxxxxxxxx0", "xxxxxxxxxxxxxxxx0",
1862
+ "0000000xxxxxxxx00", "xxxxxxxxxxxxxxxx0", "xxxxxxxx111111110",
1863
+ "xxxxxxxxxxxxxxx00", "xxxxxxxxxxxxxxxx0", "xxxxxxxxxxxxxxxx0",
1864
+ "xxxxxxxxxxxxxxxx0", "xxxxxxxxxxxxxxx00", "xxxxxxxxxxxxxxxx0",
1865
+ "xxxxxxxxxxxxxxx00", "xxxxxxxxxxxxxxx00", "xxxxxxxxxxxxxxxx0",
1866
+ "xxxxxxxxxxxxxxxx0", "255", "-255", "510", "-510", "65025", "64770",
1867
+ "000000000xxxxxxxx", "0xxxxxxxxxxxxxxxx", "1000000xxxxxxxxx0",
1868
+ "1xxxxxxxxxxxxxxxx", "xxxxxxxxx11111111", "xxxxxxxxxxxxxxxx0",
1869
+ "xxxxxxxxxxxxxxxxx", "000000000xxxxxxxx", "0xxxxxxxxxxxxxxxx",
1870
+ "1000000xxxxxxxxx0", "1xxxxxxxxxxxxxxxx", "xxxxxxxxx11111111",
1871
+ "xxxxxxxxxxxxxxxx0", "xxxxxxxxxxxxxxxxx", "000000xxxxxxxxxxx",
1872
+ "0xxxxxxxxxxxxxxxx", "1000xxxxxxxxxxxx0", "1xxxxxxxxxxxxxxxx",
1873
+ "xxxxxxxxxxxxxxxx0", "xxxxxxxxxxxxxxxx0", "xxxxxxxxxxxxxxxxx",
1874
+ "xxxxxxxxxxxxxxxxx", "254", "-254", "508", "-508", "64770", "64516",
1875
+ "000000000xxxxxxx0", "0xxxxxxxxxxxxxxx0", "10000001xxxxxxx00",
1876
+ "1xxxxxxxxxxxxxxx0", "xxxxxxxx011111110", "xxxxxxxxxxxxxxx00",
1877
+ "xxxxxxxxxxxxxxxx0", "000000000xxxxxxx0", "0xxxxxxxxxxxxxxx0",
1878
+ "10000001xxxxxxx00", "1xxxxxxxxxxxxxxx0", "xxxxxxxx011111110",
1879
+ "xxxxxxxxxxxxxxx00", "xxxxxxxxxxxxxxxx0", "000000xxxxxxxxxx0",
1880
+ "0xxxxxxxxxxxxxxx0", "1000xxxxxxxxxxx00", "1xxxxxxxxxxxxxxx0",
1881
+ "xxxxxxxxxxxxxxx00", "xxxxxxxxxxxxxxx00", "xxxxxxxxxxxxxxxx0",
1882
+ "xxxxxxxxxxxxxxxx0", "0000000000000000x", "xxxxxxxxxxxxxxxxx",
1883
+ "000000000000000x0", "xxxxxxxxxxxxxxxx0", "000000000xxxxxxxx",
1884
+ "000000000xxxxxxx0", "0000000000000000x", "000000000xxxxxxxx",
1885
+ "xxxxxxxxx000000x0", "xxxxxxxxxxxxxxxxx", "xxxxxxxxx0000000x",
1886
+ "xxxxxxxxx000000x0", "xxxxxxxxxxxxxxxxx", "0000000000000000x",
1887
+ "000000000xxxxxxxx", "xxxxxxxxx000000x0", "xxxxxxxxxxxxxxxxx",
1888
+ "xxxxxxxxx0000000x", "xxxxxxxxx000000x0", "xxxxxxxxxxxxxxxxx",
1889
+ "00000000000000x0x", "000000000xxxxxxxx", "xxxxxxxxx0000x0x0",
1890
+ "xxxxxxxxxxxxxxxxx", "xxxxxxxxx000x00x0", "xxxxxxxxx000x00x0",
1891
+ "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxx", "000000000xxxxxxxx",
1892
+ "xxxxxxxxxxxxxxxxx", "00000000xxxxxxxx0", "xxxxxxxxxxxxxxxx0",
1893
+ "0xxxxxxxxxxxxxxxx", "0xxxxxxxxxxxxxxx0", "000000000xxxxxxxx",
1894
+ "0xxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxx0", "xxxxxxxxxxxxxxxxx",
1895
+ "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxx0", "xxxxxxxxxxxxxxxxx",
1896
+ "000000000xxxxxxxx", "0xxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxx0",
1897
+ "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxx0",
1898
+ "xxxxxxxxxxxxxxxxx", "000000xxxxxxxxxxx", "0xxxxxxxxxxxxxxxx",
1899
+ "xxxxxxxxxxxxxxxx0", "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxx0",
1900
+ "xxxxxxxxxxxxxxxx0", "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxx",
1901
+ "111111111000000x0", "xxxxxxxxxxxxxxxx0", "11111111000000x00",
1902
+ "xxxxxxxxxxxxxxx00", "1000000xxxxxxxxx0", "10000001xxxxxxx00",
1903
+ "xxxxxxxxx000000x0", "xxxxxxxxxxxxxxxx0", "xxxxxxxx000000x00",
1904
+ "xxxxxxxxxxxxxxxx0", "xxxxxxxx1000000x0", "xxxxxxxx000000x00",
1905
+ "xxxxxxxxxxxxxxxx0", "xxxxxxxxx000000x0", "xxxxxxxxxxxxxxxx0",
1906
+ "xxxxxxxx000000x00", "xxxxxxxxxxxxxxxx0", "xxxxxxxx1000000x0",
1907
+ "xxxxxxxx000000x00", "xxxxxxxxxxxxxxxx0", "xxxxxxxxx0000x0x0",
1908
+ "xxxxxxxxxxxxxxxx0", "xxxxxxxx0000x0x00", "xxxxxxxxxxxxxxxx0",
1909
+ "xxxxxxxx000x00x00", "xxxxxxxx000x00x00", "xxxxxxxxxxxxxxxx0",
1910
+ "xxxxxxxxxxxxxxxx0", "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxx",
1911
+ "11111111xxxxxxxx0", "xxxxxxxxxxxxxxxx0", "xxxxxxxxxxxxxxxxx",
1912
+ "xxxxxxxxxxxxxxxx0", "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxx",
1913
+ "xxxxxxxxxxxxxxxx0", "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxx",
1914
+ "xxxxxxxxxxxxxxxx0", "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxx",
1915
+ "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxx0", "xxxxxxxxxxxxxxxxx",
1916
+ "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxx0", "xxxxxxxxxxxxxxxxx",
1917
+ "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxx0",
1918
+ "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxx0", "xxxxxxxxxxxxxxxx0",
1919
+ "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxx", "xxxxxxxxx00000001",
1920
+ "xxxxxxxxx11111111", "xxxxxxxx000000010", "xxxxxxxx111111110",
1921
+ "xxxxxxxxx11111111", "xxxxxxxx011111110", "xxxxxxxxxxxxxxxxx",
1922
+ "xxxxxxxxxxxxxxxxx", "x111111x1000000x0", "xxxxxxxxxxxxxxxxx",
1923
+ "xxxxxxxxx00000001", "xxxxxxxxx000000x0", "xxxxxxxxxxxxxxxxx",
1924
+ "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxx", "x111111x1000000x0",
1925
+ "xxxxxxxxxxxxxxxxx", "xxxxxxxxx00000001", "xxxxxxxxx000000x0",
1926
+ "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxx",
1927
+ "x1111x1x10000x0x0", "xxxxxxxxxxxxxxxxx", "xxxxxxxxx000x00x0",
1928
+ "xxxxxxxxx000x00x0", "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxx",
1929
+ "xxxxxxxxx000000x0", "xxxxxxxxxxxxxxxx0", "xxxxxxxx000000x00",
1930
+ "xxxxxxxxxxxxxxx00", "xxxxxxxxxxxxxxxx0", "xxxxxxxxxxxxxxx00",
1931
+ "xxxxxxxxx000000x0", "xxxxxxxxxxxxxxxx0", "xxxxxxxx000000x00",
1932
+ "xxxxxxxxxxxxxxxx0", "xxxxxxxxx000000x0", "xxxxxxxx000000x00",
1933
+ "xxxxxxxxxxxxxxxx0", "xxxxxxxxx000000x0", "xxxxxxxxxxxxxxxx0",
1934
+ "xxxxxxxx000000x00", "xxxxxxxxxxxxxxxx0", "xxxxxxxxx000000x0",
1935
+ "xxxxxxxx000000x00", "xxxxxxxxxxxxxxxx0", "xxxxxxxxx0000x0x0",
1936
+ "xxxxxxxxxxxxxxxx0", "xxxxxxxx0000x0x00", "xxxxxxxxxxxxxxxx0",
1937
+ "xxxxxxxx000x00x00", "xxxxxxxx000x00x00", "xxxxxxxxxxxxxxxx0",
1938
+ "xxxxxxxxxxxxxxxx0", "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxx",
1939
+ "xxxxxxxxxxxxxxxx0", "xxxxxxxxxxxxxxxx0", "xxxxxxxxxxxxxxxxx",
1940
+ "xxxxxxxxxxxxxxxx0", "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxx",
1941
+ "xxxxxxxxxxxxxxxx0", "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxx",
1942
+ "xxxxxxxxxxxxxxxx0", "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxx",
1943
+ "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxx0", "xxxxxxxxxxxxxxxxx",
1944
+ "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxx0", "xxxxxxxxxxxxxxxxx",
1945
+ "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxx0",
1946
+ "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxx0", "xxxxxxxxxxxxxxxx0",
1947
+ "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxx", "0000000000000000x",
1948
+ "xxxxxxxxxxxxxxxxx", "000000000000000x0", "xxxxxxxxxxxxxxxx0",
1949
+ "000000000xxxxxxxx", "000000000xxxxxxx0", "0000000000000000x",
1950
+ "000000000xxxxxxxx", "xxxxxxxxx000000x0", "xxxxxxxxxxxxxxxxx",
1951
+ "xxxxxxxxx0000000x", "xxxxxxxxx000000x0", "xxxxxxxxxxxxxxxxx",
1952
+ "0000000000000000x", "000000000xxxxxxxx", "xxxxxxxxx000000x0",
1953
+ "xxxxxxxxxxxxxxxxx", "xxxxxxxxx0000000x", "xxxxxxxxx000000x0",
1954
+ "xxxxxxxxxxxxxxxxx", "00000000000000x0x", "000000000xxxxxxxx",
1955
+ "xxxxxxxxx0000x0x0", "xxxxxxxxxxxxxxxxx", "xxxxxxxxx000x00x0",
1956
+ "xxxxxxxxx000x00x0", "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxx",
1957
+ "000000000xxxxxxxx", "xxxxxxxxxxxxxxxxx", "00000000xxxxxxxx0",
1958
+ "xxxxxxxxxxxxxxxx0", "0xxxxxxxxxxxxxxxx", "0xxxxxxxxxxxxxxx0",
1959
+ "000000000xxxxxxxx", "0xxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxx0",
1960
+ "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxx0",
1961
+ "xxxxxxxxxxxxxxxxx", "000000000xxxxxxxx", "0xxxxxxxxxxxxxxxx",
1962
+ "xxxxxxxxxxxxxxxx0", "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxx",
1963
+ "xxxxxxxxxxxxxxxx0", "xxxxxxxxxxxxxxxxx", "000000xxxxxxxxxxx",
1964
+ "0xxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxx0", "xxxxxxxxxxxxxxxxx",
1965
+ "xxxxxxxxxxxxxxxx0", "xxxxxxxxxxxxxxxx0", "xxxxxxxxxxxxxxxxx",
1966
+ "xxxxxxxxxxxxxxxxx", "111111111000000x0", "xxxxxxxxxxxxxxxx0",
1967
+ "11111111000000x00", "xxxxxxxxxxxxxxx00", "1000000xxxxxxxxx0",
1968
+ "10000001xxxxxxx00", "xxxxxxxxx000000x0", "xxxxxxxxxxxxxxxx0",
1969
+ "xxxxxxxx000000x00", "xxxxxxxxxxxxxxxx0", "xxxxxxxx1000000x0",
1970
+ "xxxxxxxx000000x00", "xxxxxxxxxxxxxxxx0", "xxxxxxxxx000000x0",
1971
+ "xxxxxxxxxxxxxxxx0", "xxxxxxxx000000x00", "xxxxxxxxxxxxxxxx0",
1972
+ "xxxxxxxx1000000x0", "xxxxxxxx000000x00", "xxxxxxxxxxxxxxxx0",
1973
+ "xxxxxxxxx0000x0x0", "xxxxxxxxxxxxxxxx0", "xxxxxxxx0000x0x00",
1974
+ "xxxxxxxxxxxxxxxx0", "xxxxxxxx000x00x00", "xxxxxxxx000x00x00",
1975
+ "xxxxxxxxxxxxxxxx0", "xxxxxxxxxxxxxxxx0", "xxxxxxxxxxxxxxxxx",
1976
+ "xxxxxxxxxxxxxxxxx", "11111111xxxxxxxx0", "xxxxxxxxxxxxxxxx0",
1977
+ "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxx0", "xxxxxxxxxxxxxxxxx",
1978
+ "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxx0", "xxxxxxxxxxxxxxxxx",
1979
+ "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxx0", "xxxxxxxxxxxxxxxxx",
1980
+ "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxx0",
1981
+ "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxx0",
1982
+ "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxx",
1983
+ "xxxxxxxxxxxxxxxx0", "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxx0",
1984
+ "xxxxxxxxxxxxxxxx0", "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxx",
1985
+ "xxxxxxxxx00000001", "xxxxxxxxx11111111", "xxxxxxxx000000010",
1986
+ "xxxxxxxx111111110", "xxxxxxxxx11111111", "xxxxxxxx011111110",
1987
+ "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxx", "x111111x1000000x0",
1988
+ "xxxxxxxxxxxxxxxxx", "xxxxxxxxx00000001", "xxxxxxxxx000000x0",
1989
+ "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxx",
1990
+ "x111111x1000000x0", "xxxxxxxxxxxxxxxxx", "xxxxxxxxx00000001",
1991
+ "xxxxxxxxx000000x0", "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxx",
1992
+ "xxxxxxxxxxxxxxxxx", "x1111x1x10000x0x0", "xxxxxxxxxxxxxxxxx",
1993
+ "xxxxxxxxx000x00x0", "xxxxxxxxx000x00x0", "xxxxxxxxxxxxxxxxx",
1994
+ "xxxxxxxxxxxxxxxxx", "xxxxxxxxx000000x0", "xxxxxxxxxxxxxxxx0",
1995
+ "xxxxxxxx000000x00", "xxxxxxxxxxxxxxx00", "xxxxxxxxxxxxxxxx0",
1996
+ "xxxxxxxxxxxxxxx00", "xxxxxxxxx000000x0", "xxxxxxxxxxxxxxxx0",
1997
+ "xxxxxxxx000000x00", "xxxxxxxxxxxxxxxx0", "xxxxxxxxx000000x0",
1998
+ "xxxxxxxx000000x00", "xxxxxxxxxxxxxxxx0", "xxxxxxxxx000000x0",
1999
+ "xxxxxxxxxxxxxxxx0", "xxxxxxxx000000x00", "xxxxxxxxxxxxxxxx0",
2000
+ "xxxxxxxxx000000x0", "xxxxxxxx000000x00", "xxxxxxxxxxxxxxxx0",
2001
+ "xxxxxxxxx0000x0x0", "xxxxxxxxxxxxxxxx0", "xxxxxxxx0000x0x00",
2002
+ "xxxxxxxxxxxxxxxx0", "xxxxxxxx000x00x00", "xxxxxxxx000x00x00",
2003
+ "xxxxxxxxxxxxxxxx0", "xxxxxxxxxxxxxxxx0", "xxxxxxxxxxxxxxxxx",
2004
+ "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxx0", "xxxxxxxxxxxxxxxx0",
2005
+ "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxx0", "xxxxxxxxxxxxxxxxx",
2006
+ "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxx0", "xxxxxxxxxxxxxxxxx",
2007
+ "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxx0", "xxxxxxxxxxxxxxxxx",
2008
+ "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxx0",
2009
+ "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxx0",
2010
+ "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxx",
2011
+ "xxxxxxxxxxxxxxxx0", "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxx0",
2012
+ "xxxxxxxxxxxxxxxx0", "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxx",
2013
+ "00000000000000x0x", "xxxxxxxxxxxxxxxxx", "0000000000000x0x0",
2014
+ "xxxxxxxxxxxxxxxx0", "000000xxxxxxxxxxx", "000000xxxxxxxxxx0",
2015
+ "00000000000000x0x", "000000xxxxxxxxxxx", "xxxxxxxxx0000x0x0",
2016
+ "xxxxxxxxxxxxxxxxx", "xxxxxxxxx00000x0x", "xxxxxxxxx0000x0x0",
2017
+ "xxxxxxxxxxxxxxxxx", "00000000000000x0x", "000000xxxxxxxxxxx",
2018
+ "xxxxxxxxx0000x0x0", "xxxxxxxxxxxxxxxxx", "xxxxxxxxx00000x0x",
2019
+ "xxxxxxxxx0000x0x0", "xxxxxxxxxxxxxxxxx", "000000000000xxx0x",
2020
+ "000000xxxxxxxxxxx", "xxxxxxxxx00xxx0x0", "xxxxxxxxxxxxxxxxx",
2021
+ "xxxxxxxxx0x0xx0x0", "xxxxxxxxx0x0xx0x0", "xxxxxxxxxxxxxxxxx",
2022
+ "xxxxxxxxxxxxxxxxx", "000000000xxxxxxxx", "xxxxxxxxxxxxxxxxx",
2023
+ "00000000xxxxxxxx0", "xxxxxxxxxxxxxxxx0", "0xxxxxxxxxxxxxxxx",
2024
+ "0xxxxxxxxxxxxxxx0", "000000000xxxxxxxx", "0xxxxxxxxxxxxxxxx",
2025
+ "xxxxxxxxxxxxxxxx0", "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxx",
2026
+ "xxxxxxxxxxxxxxxx0", "xxxxxxxxxxxxxxxxx", "000000000xxxxxxxx",
2027
+ "0xxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxx0", "xxxxxxxxxxxxxxxxx",
2028
+ "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxx0", "xxxxxxxxxxxxxxxxx",
2029
+ "000000xxxxxxxxxxx", "0xxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxx0",
2030
+ "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxx0", "xxxxxxxxxxxxxxxx0",
2031
+ "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxx", "1111111110000x0x0",
2032
+ "xxxxxxxxxxxxxxxx0", "111111110000x0x00", "xxxxxxxxxxxxxxx00",
2033
+ "1000xxxxxxxxxxxx0", "1000xxxxxxxxxxx00", "xxxxxxxxx0000x0x0",
2034
+ "xxxxxxxxxxxxxxxx0", "xxxxxxxx0000x0x00", "xxxxxxxxxxxxxxxx0",
2035
+ "xxxxxxxx10000x0x0", "xxxxxxxx0000x0x00", "xxxxxxxxxxxxxxxx0",
2036
+ "xxxxxxxxx0000x0x0", "xxxxxxxxxxxxxxxx0", "xxxxxxxx0000x0x00",
2037
+ "xxxxxxxxxxxxxxxx0", "xxxxxxxx10000x0x0", "xxxxxxxx0000x0x00",
2038
+ "xxxxxxxxxxxxxxxx0", "xxxxxxxxx00xxx0x0", "xxxxxxxxxxxxxxxx0",
2039
+ "xxxxxxxx00xxx0x00", "xxxxxxxxxxxxxxxx0", "xxxxxxxx0x0xx0x00",
2040
+ "xxxxxxxx0x0xx0x00", "xxxxxxxxxxxxxxxx0", "xxxxxxxxxxxxxxxx0",
2041
+ "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxx", "11111111xxxxxxxx0",
2042
+ "xxxxxxxxxxxxxxxx0", "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxx0",
2043
+ "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxx0",
2044
+ "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxx0",
2045
+ "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxx",
2046
+ "xxxxxxxxxxxxxxxx0", "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxx",
2047
+ "xxxxxxxxxxxxxxxx0", "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxx",
2048
+ "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxx0", "xxxxxxxxxxxxxxxxx",
2049
+ "xxxxxxxxxxxxxxxx0", "xxxxxxxxxxxxxxxx0", "xxxxxxxxxxxxxxxxx",
2050
+ "xxxxxxxxxxxxxxxxx", "xxxxxxxxx000x00x0", "xxxxxxxxxxxxxxxx0",
2051
+ "xxxxxxxx000x00x00", "xxxxxxxxxxxxxxx00", "xxxxxxxxxxxxxxxx0",
2052
+ "xxxxxxxxxxxxxxx00", "xxxxxxxxx000x00x0", "xxxxxxxxxxxxxxxx0",
2053
+ "xxxxxxxx000x00x00", "xxxxxxxxxxxxxxxx0", "xxxxxxxxx000x00x0",
2054
+ "xxxxxxxx000x00x00", "xxxxxxxxxxxxxxxx0", "xxxxxxxxx000x00x0",
2055
+ "xxxxxxxxxxxxxxxx0", "xxxxxxxx000x00x00", "xxxxxxxxxxxxxxxx0",
2056
+ "xxxxxxxxx000x00x0", "xxxxxxxx000x00x00", "xxxxxxxxxxxxxxxx0",
2057
+ "xxxxxxxxx0x0xx0x0", "xxxxxxxxxxxxxxxx0", "xxxxxxxx0x0xx0x00",
2058
+ "xxxxxxxxxxxxxxxx0", "xxxxxxxxx0xx00x00", "xxxxxxxxx0xx00x00",
2059
+ "xxxxxxxxxxxxxxxx0", "xxxxxxxxxxxxxxxx0", "xxxxxxxxx000x00x0",
2060
+ "xxxxxxxxxxxxxxxx0", "xxxxxxxx000x00x00", "xxxxxxxxxxxxxxx00",
2061
+ "xxxxxxxxxxxxxxxx0", "xxxxxxxxxxxxxxx00", "xxxxxxxxx000x00x0",
2062
+ "xxxxxxxxxxxxxxxx0", "xxxxxxxx000x00x00", "xxxxxxxxxxxxxxxx0",
2063
+ "xxxxxxxxx000x00x0", "xxxxxxxx000x00x00", "xxxxxxxxxxxxxxxx0",
2064
+ "xxxxxxxxx000x00x0", "xxxxxxxxxxxxxxxx0", "xxxxxxxx000x00x00",
2065
+ "xxxxxxxxxxxxxxxx0", "xxxxxxxxx000x00x0", "xxxxxxxx000x00x00",
2066
+ "xxxxxxxxxxxxxxxx0", "xxxxxxxxx0x0xx0x0", "xxxxxxxxxxxxxxxx0",
2067
+ "xxxxxxxx0x0xx0x00", "xxxxxxxxxxxxxxxx0", "xxxxxxxxx0xx00x00",
2068
+ "xxxxxxxxx0xx00x00", "xxxxxxxxxxxxxxxx0", "xxxxxxxxxxxxxxxx0",
2069
+ "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxx0",
2070
+ "xxxxxxxxxxxxxxxx0", "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxx0",
2071
+ "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxx0",
2072
+ "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxx0",
2073
+ "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxx",
2074
+ "xxxxxxxxxxxxxxxx0", "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxx",
2075
+ "xxxxxxxxxxxxxxxx0", "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxx",
2076
+ "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxx0", "xxxxxxxxxxxxxxxxx",
2077
+ "xxxxxxxxxxxxxxxx0", "xxxxxxxxxxxxxxxx0", "xxxxxxxxxxxxxxxxx",
2078
+ "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxx",
2079
+ "xxxxxxxxxxxxxxxx0", "xxxxxxxxxxxxxxxx0", "xxxxxxxxxxxxxxxxx",
2080
+ "xxxxxxxxxxxxxxxx0", "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxx",
2081
+ "xxxxxxxxxxxxxxxx0", "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxx",
2082
+ "xxxxxxxxxxxxxxxx0", "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxx",
2083
+ "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxx0", "xxxxxxxxxxxxxxxxx",
2084
+ "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxx0", "xxxxxxxxxxxxxxxxx",
2085
+ "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxx0",
2086
+ "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxx0", "xxxxxxxxxxxxxxxx0",
2087
+ "xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxx"
2088
+ ]) do |strs,res|
2089
+ # puts("#{strs[0]} * #{strs[1]} = #{strs[0] * strs[1]} ... ");
2090
+ print "#"
2091
+ if (strs[0] * strs[1]).to_s != res then
2092
+ print(" \n #{strs[0]} * #{strs[1]} = #{strs[0] * strs[1]} ... ");
2093
+ print "Error: invalid numeric value, expecting #{res}.\n "
2094
+ $success = false
2095
+ end
2096
+ end
2097
+ rescue Exception => e
2098
+ puts "Error: unexpected exception raised ", e, e.backtrace
2099
+ $success = false
2100
+ end
2101
+ if $success then
2102
+ puts " Ok."
2103
+ end
2104
+
2105
+ print "\nTesting div... \n "
2106
+ begin
2107
+ STRs.product(STRs).zip( [ "1", "-1", "0", "-1", "0", "0",
2108
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2109
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2110
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2111
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "-1", "1", "-1", "0", "-1",
2112
+ "-1", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2113
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2114
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2115
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "2", "-2",
2116
+ "1", "-1", "0", "0", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2117
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2118
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2119
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2120
+ "-2", "2", "-1", "1", "-1", "-1", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2121
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2122
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2123
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2124
+ "xxxxxxxxx", "255", "-255", "127", "-128", "1", "1", "xxxxxxxxx", "xxxxxxxxx",
2125
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2126
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2127
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2128
+ "xxxxxxxxx", "xxxxxxxxx", "254", "-254", "127", "-127", "0", "1", "xxxxxxxxx",
2129
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2130
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2131
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2132
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2133
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2134
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2135
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2136
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2137
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2138
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2139
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2140
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2141
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2142
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2143
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2144
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2145
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2146
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2147
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2148
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2149
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2150
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2151
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2152
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2153
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2154
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2155
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2156
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2157
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2158
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2159
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2160
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2161
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2162
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2163
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2164
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2165
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2166
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2167
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2168
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2169
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2170
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2171
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2172
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2173
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2174
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2175
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2176
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2177
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2178
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2179
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2180
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2181
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2182
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2183
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2184
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2185
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2186
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2187
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2188
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2189
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2190
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2191
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2192
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2193
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2194
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2195
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2196
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2197
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2198
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2199
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2200
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2201
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2202
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2203
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2204
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2205
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2206
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2207
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2208
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2209
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2210
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2211
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2212
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2213
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2214
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2215
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2216
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2217
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2218
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2219
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2220
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2221
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2222
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2223
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2224
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2225
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2226
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2227
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2228
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2229
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2230
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2231
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2232
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2233
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2234
+ "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx",
2235
+ "xxxxxxxxx"
2236
+ ]) do |strs,res|
2237
+ puts("#{strs[0]} / #{strs[1]} = #{strs[0] / strs[1]} ... ");
2238
+ # print "#"
2239
+ # if (strs[0] / strs[1]).to_s != res then
2240
+ # print(" \n #{strs[0]} / #{strs[1]} = #{strs[0] / strs[1]} ... ");
2241
+ # print "Error: invalid numeric value, expecting #{res}.\n "
2242
+ # $success = false
2243
+ # end
2244
+ end
2245
+ rescue Exception => e
2246
+ puts "Error: unexpected exception raised ", e, e.backtrace
2247
+ $success = false
2248
+ end
2249
+ if $success then
2250
+ puts " Ok."
2251
+ end
2252
+ exit
2253
+
2254
+
2255
+ if $success then
2256
+ puts "\nSuccess."
2257
+ else
2258
+ puts "\nFailure."
2259
+ end