home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / perl560.zip / t / lib / bigint.t < prev    next >
Text File  |  1999-07-20  |  4KB  |  283 lines

  1. #!./perl
  2.  
  3. BEGIN { unshift @INC, '../lib' }
  4. require "bigint.pl";
  5.  
  6. $test = 0;
  7. $| = 1;
  8. print "1..246\n";
  9. while (<DATA>) {
  10.     chop;
  11.     if (/^&/) {
  12.         $f = $_;
  13.     } else {
  14.         ++$test;
  15.         @args = split(/:/,$_,99);
  16.         $ans = pop(@args);
  17.         $try = "$f('" . join("','", @args) . "');";
  18.         if (($ans1 = eval($try)) eq $ans) {
  19.             print "ok $test\n";
  20.         } else {
  21.             print "not ok $test\n";
  22.             print "# '$try' expected: '$ans' got: '$ans1'\n";
  23.         }
  24.     }
  25. __END__
  26. &bnorm
  27. abc:NaN
  28.    1 a:NaN
  29. 1bcd2:NaN
  30. 11111b:NaN
  31. +1z:NaN
  32. -1z:NaN
  33. 0:+0
  34. +0:+0
  35. +00:+0
  36. +0 0 0:+0
  37. 000000  0000000   00000:+0
  38. -0:+0
  39. -0000:+0
  40. +1:+1
  41. +01:+1
  42. +001:+1
  43. +00000100000:+100000
  44. 123456789:+123456789
  45. -1:-1
  46. -01:-1
  47. -001:-1
  48. -123456789:-123456789
  49. -00000100000:-100000
  50. &bneg
  51. abd:NaN
  52. +0:+0
  53. +1:-1
  54. -1:+1
  55. +123456789:-123456789
  56. -123456789:+123456789
  57. &babs
  58. abc:NaN
  59. +0:+0
  60. +1:+1
  61. -1:+1
  62. +123456789:+123456789
  63. -123456789:+123456789
  64. &bcmp
  65. abc:abc:
  66. abc:+0:
  67. +0:abc:
  68. +0:+0:0
  69. -1:+0:-1
  70. +0:-1:1
  71. +1:+0:1
  72. +0:+1:-1
  73. -1:+1:-1
  74. +1:-1:1
  75. -1:-1:0
  76. +1:+1:0
  77. +123:+123:0
  78. +123:+12:1
  79. +12:+123:-1
  80. -123:-123:0
  81. -123:-12:-1
  82. -12:-123:1
  83. +123:+124:-1
  84. +124:+123:1
  85. -123:-124:1
  86. -124:-123:-1
  87. &badd
  88. abc:abc:NaN
  89. abc:+0:NaN
  90. +0:abc:NaN
  91. +0:+0:+0
  92. +1:+0:+1
  93. +0:+1:+1
  94. +1:+1:+2
  95. -1:+0:-1
  96. +0:-1:-1
  97. -1:-1:-2
  98. -1:+1:+0
  99. +1:-1:+0
  100. +9:+1:+10
  101. +99:+1:+100
  102. +999:+1:+1000
  103. +9999:+1:+10000
  104. +99999:+1:+100000
  105. +999999:+1:+1000000
  106. +9999999:+1:+10000000
  107. +99999999:+1:+100000000
  108. +999999999:+1:+1000000000
  109. +9999999999:+1:+10000000000
  110. +99999999999:+1:+100000000000
  111. +10:-1:+9
  112. +100:-1:+99
  113. +1000:-1:+999
  114. +10000:-1:+9999
  115. +100000:-1:+99999
  116. +1000000:-1:+999999
  117. +10000000:-1:+9999999
  118. +100000000:-1:+99999999
  119. +1000000000:-1:+999999999
  120. +10000000000:-1:+9999999999
  121. +123456789:+987654321:+1111111110
  122. -123456789:+987654321:+864197532
  123. -123456789:-987654321:-1111111110
  124. +123456789:-987654321:-864197532
  125. &bsub
  126. abc:abc:NaN
  127. abc:+0:NaN
  128. +0:abc:NaN
  129. +0:+0:+0
  130. +1:+0:+1
  131. +0:+1:-1
  132. +1:+1:+0
  133. -1:+0:-1
  134. +0:-1:+1
  135. -1:-1:+0
  136. -1:+1:-2
  137. +1:-1:+2
  138. +9:+1:+8
  139. +99:+1:+98
  140. +999:+1:+998
  141. +9999:+1:+9998
  142. +99999:+1:+99998
  143. +999999:+1:+999998
  144. +9999999:+1:+9999998
  145. +99999999:+1:+99999998
  146. +999999999:+1:+999999998
  147. +9999999999:+1:+9999999998
  148. +99999999999:+1:+99999999998
  149. +10:-1:+11
  150. +100:-1:+101
  151. +1000:-1:+1001
  152. +10000:-1:+10001
  153. +100000:-1:+100001
  154. +1000000:-1:+1000001
  155. +10000000:-1:+10000001
  156. +100000000:-1:+100000001
  157. +1000000000:-1:+1000000001
  158. +10000000000:-1:+10000000001
  159. +123456789:+987654321:-864197532
  160. -123456789:+987654321:-1111111110
  161. -123456789:-987654321:+864197532
  162. +123456789:-987654321:+1111111110
  163. &bmul
  164. abc:abc:NaN
  165. abc:+0:NaN
  166. +0:abc:NaN
  167. +0:+0:+0
  168. +0:+1:+0
  169. +1:+0:+0
  170. +0:-1:+0
  171. -1:+0:+0
  172. +123456789123456789:+0:+0
  173. +0:+123456789123456789:+0
  174. -1:-1:+1
  175. -1:+1:-1
  176. +1:-1:-1
  177. +1:+1:+1
  178. +2:+3:+6
  179. -2:+3:-6
  180. +2:-3:-6
  181. -2:-3:+6
  182. +111:+111:+12321
  183. +10101:+10101:+102030201
  184. +1001001:+1001001:+1002003002001
  185. +100010001:+100010001:+10002000300020001
  186. +10000100001:+10000100001:+100002000030000200001
  187. +11111111111:+9:+99999999999
  188. +22222222222:+9:+199999999998
  189. +33333333333:+9:+299999999997
  190. +44444444444:+9:+399999999996
  191. +55555555555:+9:+499999999995
  192. +66666666666:+9:+599999999994
  193. +77777777777:+9:+699999999993
  194. +88888888888:+9:+799999999992
  195. +99999999999:+9:+899999999991
  196. &bdiv
  197. abc:abc:NaN
  198. abc:+1:abc:NaN
  199. +1:abc:NaN
  200. +0:+0:NaN
  201. +0:+1:+0
  202. +1:+0:NaN
  203. +0:-1:+0
  204. -1:+0:NaN
  205. +1:+1:+1
  206. -1:-1:+1
  207. +1:-1:-1
  208. -1:+1:-1
  209. +1:+2:+0
  210. +2:+1:+2
  211. +1000000000:+9:+111111111
  212. +2000000000:+9:+222222222
  213. +3000000000:+9:+333333333
  214. +4000000000:+9:+444444444
  215. +5000000000:+9:+555555555
  216. +6000000000:+9:+666666666
  217. +7000000000:+9:+777777777
  218. +8000000000:+9:+888888888
  219. +9000000000:+9:+1000000000
  220. +35500000:+113:+314159
  221. +71000000:+226:+314159
  222. +106500000:+339:+314159
  223. +1000000000:+3:+333333333
  224. +10:+5:+2
  225. +100:+4:+25
  226. +1000:+8:+125
  227. +10000:+16:+625
  228. +999999999999:+9:+111111111111
  229. +999999999999:+99:+10101010101
  230. +999999999999:+999:+1001001001
  231. +999999999999:+9999:+100010001
  232. +999999999999999:+99999:+10000100001
  233. &bmod
  234. abc:abc:NaN
  235. abc:+1:abc:NaN
  236. +1:abc:NaN
  237. +0:+0:NaN
  238. +0:+1:+0
  239. +1:+0:NaN
  240. +0:-1:+0
  241. -1:+0:NaN
  242. +1:+1:+0
  243. -1:-1:+0
  244. +1:-1:+0
  245. -1:+1:+0
  246. +1:+2:+1
  247. +2:+1:+0
  248. +1000000000:+9:+1
  249. +2000000000:+9:+2
  250. +3000000000:+9:+3
  251. +4000000000:+9:+4
  252. +5000000000:+9:+5
  253. +6000000000:+9:+6
  254. +7000000000:+9:+7
  255. +8000000000:+9:+8
  256. +9000000000:+9:+0
  257. +35500000:+113:+33
  258. +71000000:+226:+66
  259. +106500000:+339:+99
  260. +1000000000:+3:+1
  261. +10:+5:+0
  262. +100:+4:+0
  263. +1000:+8:+0
  264. +10000:+16:+0
  265. +999999999999:+9:+0
  266. +999999999999:+99:+0
  267. +999999999999:+999:+0
  268. +999999999999:+9999:+0
  269. +999999999999999:+99999:+0
  270. &bgcd
  271. abc:abc:NaN
  272. abc:+0:NaN
  273. +0:abc:NaN
  274. +0:+0:+0
  275. +0:+1:+1
  276. +1:+0:+1
  277. +1:+1:+1
  278. +2:+3:+1
  279. +3:+2:+1
  280. +100:+625:+25
  281. +4096:+81:+1
  282.