home *** CD-ROM | disk | FTP | other *** search
/ The World of Computer Software / World_Of_Computer_Software-02-387-Vol-3of3.iso / p / perl4036.zip / t / lib / big.t
Text File  |  1993-02-08  |  4KB  |  281 lines

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