1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507
|
val arg: { v: IntInf.int, b: string, oc: string, d: string, x: string} list = [
{v = 0, b = "0", oc = "0", d = "0", x = "0"},
{v = ~0, b = "~0", oc = "~0", d = "~0", x = "~0"},
{v = 1, b = "1", oc = "1", d = "1", x = "1"},
{v = ~1, b = "~1", oc = "~1", d = "~1", x = "~1"},
{v = 2, b = "10", oc = "2", d = "2", x = "2"},
{v = ~2, b = "~10", oc = "~2", d = "~2", x = "~2"},
{v = 3, b = "11", oc = "3", d = "3", x = "3"},
{v = ~3, b = "~11", oc = "~3", d = "~3", x = "~3"},
{v = 4, b = "100", oc = "4", d = "4", x = "4"},
{v = ~4, b = "~100", oc = "~4", d = "~4", x = "~4"},
{v = 5, b = "101", oc = "5", d = "5", x = "5"},
{v = ~5, b = "~101", oc = "~5", d = "~5", x = "~5"},
{v = 6, b = "110", oc = "6", d = "6", x = "6"},
{v = ~6, b = "~110", oc = "~6", d = "~6", x = "~6"},
{v = 7, b = "111", oc = "7", d = "7", x = "7"},
{v = ~7, b = "~111", oc = "~7", d = "~7", x = "~7"},
{v = 8, b = "1000", oc = "10", d = "8", x = "8"},
{v = ~8, b = "~1000", oc = "~10", d = "~8", x = "~8"},
{v = 9, b = "1001", oc = "11", d = "9", x = "9"},
{v = ~9, b = "~1001", oc = "~11", d = "~9", x = "~9"},
{v = 10, b = "1010", oc = "12", d = "10", x = "A"},
{v = ~10, b = "~1010", oc = "~12", d = "~10", x = "~A"},
{v = 11, b = "1011", oc = "13", d = "11", x = "B"},
{v = ~11, b = "~1011", oc = "~13", d = "~11", x = "~B"},
{v = 12, b = "1100", oc = "14", d = "12", x = "C"},
{v = ~12, b = "~1100", oc = "~14", d = "~12", x = "~C"},
{v = 13, b = "1101", oc = "15", d = "13", x = "D"},
{v = ~13, b = "~1101", oc = "~15", d = "~13", x = "~D"},
{v = 14, b = "1110", oc = "16", d = "14", x = "E"},
{v = ~14, b = "~1110", oc = "~16", d = "~14", x = "~E"},
{v = 15, b = "1111", oc = "17", d = "15", x = "F"},
{v = ~15, b = "~1111", oc = "~17", d = "~15", x = "~F"},
{v = 16, b = "10000", oc = "20", d = "16", x = "10"},
{v = ~16, b = "~10000", oc = "~20", d = "~16", x = "~10"},
{v = 17, b = "10001", oc = "21", d = "17", x = "11"},
{v = ~17, b = "~10001", oc = "~21", d = "~17", x = "~11"},
{v = 18, b = "10010", oc = "22", d = "18", x = "12"},
{v = ~18, b = "~10010", oc = "~22", d = "~18", x = "~12"},
{v = 19, b = "10011", oc = "23", d = "19", x = "13"},
{v = ~19, b = "~10011", oc = "~23", d = "~19", x = "~13"},
{v = 20, b = "10100", oc = "24", d = "20", x = "14"},
{v = ~20, b = "~10100", oc = "~24", d = "~20", x = "~14"},
{v = 21, b = "10101", oc = "25", d = "21", x = "15"},
{v = ~21, b = "~10101", oc = "~25", d = "~21", x = "~15"},
{v = 22, b = "10110", oc = "26", d = "22", x = "16"},
{v = ~22, b = "~10110", oc = "~26", d = "~22", x = "~16"},
{v = 23, b = "10111", oc = "27", d = "23", x = "17"},
{v = ~23, b = "~10111", oc = "~27", d = "~23", x = "~17"},
{v = 24, b = "11000", oc = "30", d = "24", x = "18"},
{v = ~24, b = "~11000", oc = "~30", d = "~24", x = "~18"},
{v = 25, b = "11001", oc = "31", d = "25", x = "19"},
{v = ~25, b = "~11001", oc = "~31", d = "~25", x = "~19"},
{v = 26, b = "11010", oc = "32", d = "26", x = "1A"},
{v = ~26, b = "~11010", oc = "~32", d = "~26", x = "~1A"},
{v = 27, b = "11011", oc = "33", d = "27", x = "1B"},
{v = ~27, b = "~11011", oc = "~33", d = "~27", x = "~1B"},
{v = 28, b = "11100", oc = "34", d = "28", x = "1C"},
{v = ~28, b = "~11100", oc = "~34", d = "~28", x = "~1C"},
{v = 29, b = "11101", oc = "35", d = "29", x = "1D"},
{v = ~29, b = "~11101", oc = "~35", d = "~29", x = "~1D"},
{v = 30, b = "11110", oc = "36", d = "30", x = "1E"},
{v = ~30, b = "~11110", oc = "~36", d = "~30", x = "~1E"},
{v = 31, b = "11111", oc = "37", d = "31", x = "1F"},
{v = ~31, b = "~11111", oc = "~37", d = "~31", x = "~1F"},
{v = 32, b = "100000", oc = "40", d = "32", x = "20"},
{v = ~32, b = "~100000", oc = "~40", d = "~32", x = "~20"},
{v = 33, b = "100001", oc = "41", d = "33", x = "21"},
{v = ~33, b = "~100001", oc = "~41", d = "~33", x = "~21"},
{v = 34, b = "100010", oc = "42", d = "34", x = "22"},
{v = ~34, b = "~100010", oc = "~42", d = "~34", x = "~22"},
{v = 35, b = "100011", oc = "43", d = "35", x = "23"},
{v = ~35, b = "~100011", oc = "~43", d = "~35", x = "~23"},
{v = 36, b = "100100", oc = "44", d = "36", x = "24"},
{v = ~36, b = "~100100", oc = "~44", d = "~36", x = "~24"},
{v = 37, b = "100101", oc = "45", d = "37", x = "25"},
{v = ~37, b = "~100101", oc = "~45", d = "~37", x = "~25"},
{v = 38, b = "100110", oc = "46", d = "38", x = "26"},
{v = ~38, b = "~100110", oc = "~46", d = "~38", x = "~26"},
{v = 39, b = "100111", oc = "47", d = "39", x = "27"},
{v = ~39, b = "~100111", oc = "~47", d = "~39", x = "~27"},
{v = 40, b = "101000", oc = "50", d = "40", x = "28"},
{v = ~40, b = "~101000", oc = "~50", d = "~40", x = "~28"},
{v = 41, b = "101001", oc = "51", d = "41", x = "29"},
{v = ~41, b = "~101001", oc = "~51", d = "~41", x = "~29"},
{v = 42, b = "101010", oc = "52", d = "42", x = "2A"},
{v = ~42, b = "~101010", oc = "~52", d = "~42", x = "~2A"},
{v = 43, b = "101011", oc = "53", d = "43", x = "2B"},
{v = ~43, b = "~101011", oc = "~53", d = "~43", x = "~2B"},
{v = 44, b = "101100", oc = "54", d = "44", x = "2C"},
{v = ~44, b = "~101100", oc = "~54", d = "~44", x = "~2C"},
{v = 45, b = "101101", oc = "55", d = "45", x = "2D"},
{v = ~45, b = "~101101", oc = "~55", d = "~45", x = "~2D"},
{v = 46, b = "101110", oc = "56", d = "46", x = "2E"},
{v = ~46, b = "~101110", oc = "~56", d = "~46", x = "~2E"},
{v = 47, b = "101111", oc = "57", d = "47", x = "2F"},
{v = ~47, b = "~101111", oc = "~57", d = "~47", x = "~2F"},
{v = 48, b = "110000", oc = "60", d = "48", x = "30"},
{v = ~48, b = "~110000", oc = "~60", d = "~48", x = "~30"},
{v = 49, b = "110001", oc = "61", d = "49", x = "31"},
{v = ~49, b = "~110001", oc = "~61", d = "~49", x = "~31"},
{v = 50, b = "110010", oc = "62", d = "50", x = "32"},
{v = ~50, b = "~110010", oc = "~62", d = "~50", x = "~32"},
{v = 51, b = "110011", oc = "63", d = "51", x = "33"},
{v = ~51, b = "~110011", oc = "~63", d = "~51", x = "~33"},
{v = 52, b = "110100", oc = "64", d = "52", x = "34"},
{v = ~52, b = "~110100", oc = "~64", d = "~52", x = "~34"},
{v = 53, b = "110101", oc = "65", d = "53", x = "35"},
{v = ~53, b = "~110101", oc = "~65", d = "~53", x = "~35"},
{v = 54, b = "110110", oc = "66", d = "54", x = "36"},
{v = ~54, b = "~110110", oc = "~66", d = "~54", x = "~36"},
{v = 55, b = "110111", oc = "67", d = "55", x = "37"},
{v = ~55, b = "~110111", oc = "~67", d = "~55", x = "~37"},
{v = 56, b = "111000", oc = "70", d = "56", x = "38"},
{v = ~56, b = "~111000", oc = "~70", d = "~56", x = "~38"},
{v = 57, b = "111001", oc = "71", d = "57", x = "39"},
{v = ~57, b = "~111001", oc = "~71", d = "~57", x = "~39"},
{v = 58, b = "111010", oc = "72", d = "58", x = "3A"},
{v = ~58, b = "~111010", oc = "~72", d = "~58", x = "~3A"},
{v = 59, b = "111011", oc = "73", d = "59", x = "3B"},
{v = ~59, b = "~111011", oc = "~73", d = "~59", x = "~3B"},
{v = 60, b = "111100", oc = "74", d = "60", x = "3C"},
{v = ~60, b = "~111100", oc = "~74", d = "~60", x = "~3C"},
{v = 61, b = "111101", oc = "75", d = "61", x = "3D"},
{v = ~61, b = "~111101", oc = "~75", d = "~61", x = "~3D"},
{v = 62, b = "111110", oc = "76", d = "62", x = "3E"},
{v = ~62, b = "~111110", oc = "~76", d = "~62", x = "~3E"},
{v = 63, b = "111111", oc = "77", d = "63", x = "3F"},
{v = ~63, b = "~111111", oc = "~77", d = "~63", x = "~3F"},
{v = 64, b = "1000000", oc = "100", d = "64", x = "40"},
{v = ~64, b = "~1000000", oc = "~100", d = "~64", x = "~40"},
{v = 65, b = "1000001", oc = "101", d = "65", x = "41"},
{v = ~65, b = "~1000001", oc = "~101", d = "~65", x = "~41"},
{v = 66, b = "1000010", oc = "102", d = "66", x = "42"},
{v = ~66, b = "~1000010", oc = "~102", d = "~66", x = "~42"},
{v = 67, b = "1000011", oc = "103", d = "67", x = "43"},
{v = ~67, b = "~1000011", oc = "~103", d = "~67", x = "~43"},
{v = 68, b = "1000100", oc = "104", d = "68", x = "44"},
{v = ~68, b = "~1000100", oc = "~104", d = "~68", x = "~44"},
{v = 69, b = "1000101", oc = "105", d = "69", x = "45"},
{v = ~69, b = "~1000101", oc = "~105", d = "~69", x = "~45"},
{v = 70, b = "1000110", oc = "106", d = "70", x = "46"},
{v = ~70, b = "~1000110", oc = "~106", d = "~70", x = "~46"},
{v = 71, b = "1000111", oc = "107", d = "71", x = "47"},
{v = ~71, b = "~1000111", oc = "~107", d = "~71", x = "~47"},
{v = 72, b = "1001000", oc = "110", d = "72", x = "48"},
{v = ~72, b = "~1001000", oc = "~110", d = "~72", x = "~48"},
{v = 73, b = "1001001", oc = "111", d = "73", x = "49"},
{v = ~73, b = "~1001001", oc = "~111", d = "~73", x = "~49"},
{v = 74, b = "1001010", oc = "112", d = "74", x = "4A"},
{v = ~74, b = "~1001010", oc = "~112", d = "~74", x = "~4A"},
{v = 75, b = "1001011", oc = "113", d = "75", x = "4B"},
{v = ~75, b = "~1001011", oc = "~113", d = "~75", x = "~4B"},
{v = 76, b = "1001100", oc = "114", d = "76", x = "4C"},
{v = ~76, b = "~1001100", oc = "~114", d = "~76", x = "~4C"},
{v = 77, b = "1001101", oc = "115", d = "77", x = "4D"},
{v = ~77, b = "~1001101", oc = "~115", d = "~77", x = "~4D"},
{v = 78, b = "1001110", oc = "116", d = "78", x = "4E"},
{v = ~78, b = "~1001110", oc = "~116", d = "~78", x = "~4E"},
{v = 79, b = "1001111", oc = "117", d = "79", x = "4F"},
{v = ~79, b = "~1001111", oc = "~117", d = "~79", x = "~4F"},
{v = 80, b = "1010000", oc = "120", d = "80", x = "50"},
{v = ~80, b = "~1010000", oc = "~120", d = "~80", x = "~50"},
{v = 81, b = "1010001", oc = "121", d = "81", x = "51"},
{v = ~81, b = "~1010001", oc = "~121", d = "~81", x = "~51"},
{v = 82, b = "1010010", oc = "122", d = "82", x = "52"},
{v = ~82, b = "~1010010", oc = "~122", d = "~82", x = "~52"},
{v = 83, b = "1010011", oc = "123", d = "83", x = "53"},
{v = ~83, b = "~1010011", oc = "~123", d = "~83", x = "~53"},
{v = 84, b = "1010100", oc = "124", d = "84", x = "54"},
{v = ~84, b = "~1010100", oc = "~124", d = "~84", x = "~54"},
{v = 85, b = "1010101", oc = "125", d = "85", x = "55"},
{v = ~85, b = "~1010101", oc = "~125", d = "~85", x = "~55"},
{v = 86, b = "1010110", oc = "126", d = "86", x = "56"},
{v = ~86, b = "~1010110", oc = "~126", d = "~86", x = "~56"},
{v = 87, b = "1010111", oc = "127", d = "87", x = "57"},
{v = ~87, b = "~1010111", oc = "~127", d = "~87", x = "~57"},
{v = 88, b = "1011000", oc = "130", d = "88", x = "58"},
{v = ~88, b = "~1011000", oc = "~130", d = "~88", x = "~58"},
{v = 89, b = "1011001", oc = "131", d = "89", x = "59"},
{v = ~89, b = "~1011001", oc = "~131", d = "~89", x = "~59"},
{v = 90, b = "1011010", oc = "132", d = "90", x = "5A"},
{v = ~90, b = "~1011010", oc = "~132", d = "~90", x = "~5A"},
{v = 91, b = "1011011", oc = "133", d = "91", x = "5B"},
{v = ~91, b = "~1011011", oc = "~133", d = "~91", x = "~5B"},
{v = 92, b = "1011100", oc = "134", d = "92", x = "5C"},
{v = ~92, b = "~1011100", oc = "~134", d = "~92", x = "~5C"},
{v = 93, b = "1011101", oc = "135", d = "93", x = "5D"},
{v = ~93, b = "~1011101", oc = "~135", d = "~93", x = "~5D"},
{v = 94, b = "1011110", oc = "136", d = "94", x = "5E"},
{v = ~94, b = "~1011110", oc = "~136", d = "~94", x = "~5E"},
{v = 95, b = "1011111", oc = "137", d = "95", x = "5F"},
{v = ~95, b = "~1011111", oc = "~137", d = "~95", x = "~5F"},
{v = 96, b = "1100000", oc = "140", d = "96", x = "60"},
{v = ~96, b = "~1100000", oc = "~140", d = "~96", x = "~60"},
{v = 97, b = "1100001", oc = "141", d = "97", x = "61"},
{v = ~97, b = "~1100001", oc = "~141", d = "~97", x = "~61"},
{v = 98, b = "1100010", oc = "142", d = "98", x = "62"},
{v = ~98, b = "~1100010", oc = "~142", d = "~98", x = "~62"},
{v = 99, b = "1100011", oc = "143", d = "99", x = "63"},
{v = ~99, b = "~1100011", oc = "~143", d = "~99", x = "~63"},
{v = 128, b = "10000000", oc = "200", d = "128", x = "80"},
{v = ~128, b = "~10000000", oc = "~200", d = "~128", x = "~80"},
{v = 256, b = "100000000", oc = "400", d = "256", x = "100"},
{v = ~256, b = "~100000000", oc = "~400", d = "~256", x = "~100"},
{v = 512, b = "1000000000", oc = "1000", d = "512", x = "200"},
{v = ~512, b = "~1000000000", oc = "~1000", d = "~512", x = "~200"},
{v = 1024, b = "10000000000", oc = "2000", d = "1024", x = "400"},
{v = ~1024, b = "~10000000000", oc = "~2000", d = "~1024", x = "~400"},
{v = 2048, b = "100000000000", oc = "4000", d = "2048", x = "800"},
{v = ~2048, b = "~100000000000", oc = "~4000", d = "~2048", x = "~800"},
{v = 4096, b = "1000000000000", oc = "10000", d = "4096", x = "1000"},
{v = ~4096, b = "~1000000000000", oc = "~10000", d = "~4096", x = "~1000"},
{v = 8192, b = "10000000000000", oc = "20000", d = "8192", x = "2000"},
{v = ~8192, b = "~10000000000000", oc = "~20000", d = "~8192", x = "~2000"},
{v = 16384, b = "100000000000000", oc = "40000", d = "16384", x = "4000"},
{v = ~16384, b = "~100000000000000", oc = "~40000", d = "~16384", x = "~4000"},
{v = 32768, b = "1000000000000000", oc = "100000", d = "32768", x = "8000"},
{v = ~32768, b = "~1000000000000000", oc = "~100000", d = "~32768", x = "~8000"},
{v = 65536, b = "10000000000000000", oc = "200000", d = "65536", x = "10000"},
{v = ~65536, b = "~10000000000000000", oc = "~200000", d = "~65536", x = "~10000"},
{v = 131072, b = "100000000000000000", oc = "400000", d = "131072", x = "20000"},
{v = ~131072, b = "~100000000000000000", oc = "~400000", d = "~131072", x = "~20000"},
{v = 262144, b = "1000000000000000000", oc = "1000000", d = "262144", x = "40000"},
{v = ~262144, b = "~1000000000000000000", oc = "~1000000", d = "~262144", x = "~40000"},
{v = 524288, b = "10000000000000000000", oc = "2000000", d = "524288", x = "80000"},
{v = ~524288, b = "~10000000000000000000", oc = "~2000000", d = "~524288", x = "~80000"},
{v = 1048576, b = "100000000000000000000", oc = "4000000", d = "1048576", x = "100000"},
{v = ~1048576, b = "~100000000000000000000", oc = "~4000000", d = "~1048576", x = "~100000"},
{v = 2097152, b = "1000000000000000000000", oc = "10000000", d = "2097152", x = "200000"},
{v = ~2097152, b = "~1000000000000000000000", oc = "~10000000", d = "~2097152", x = "~200000"},
{v = 4194304, b = "10000000000000000000000", oc = "20000000", d = "4194304", x = "400000"},
{v = ~4194304, b = "~10000000000000000000000", oc = "~20000000", d = "~4194304", x = "~400000"},
{v = 8388608, b = "100000000000000000000000", oc = "40000000", d = "8388608", x = "800000"},
{v = ~8388608, b = "~100000000000000000000000", oc = "~40000000", d = "~8388608", x = "~800000"},
{v = 16777216, b = "1000000000000000000000000", oc = "100000000", d = "16777216", x = "1000000"},
{v = ~16777216, b = "~1000000000000000000000000", oc = "~100000000", d = "~16777216", x = "~1000000"},
{v = 33554432, b = "10000000000000000000000000", oc = "200000000", d = "33554432", x = "2000000"},
{v = ~33554432, b = "~10000000000000000000000000", oc = "~200000000", d = "~33554432", x = "~2000000"},
{v = 67108864, b = "100000000000000000000000000", oc = "400000000", d = "67108864", x = "4000000"},
{v = ~67108864, b = "~100000000000000000000000000", oc = "~400000000", d = "~67108864", x = "~4000000"},
{v = 100000000, b = "101111101011110000100000000", oc = "575360400", d = "100000000", x = "5F5E100"},
{v = ~100000000, b = "~101111101011110000100000000", oc = "~575360400", d = "~100000000", x = "~5F5E100"},
{v = 134217728, b = "1000000000000000000000000000", oc = "1000000000", d = "134217728", x = "8000000"},
{v = ~134217728, b = "~1000000000000000000000000000", oc = "~1000000000", d = "~134217728", x = "~8000000"},
{v = 268435456, b = "10000000000000000000000000000", oc = "2000000000", d = "268435456", x = "10000000"},
{v = ~268435456, b = "~10000000000000000000000000000", oc = "~2000000000", d = "~268435456", x = "~10000000"},
{v = 536870912, b = "100000000000000000000000000000", oc = "4000000000", d = "536870912", x = "20000000"},
{v = ~536870912, b = "~100000000000000000000000000000", oc = "~4000000000", d = "~536870912", x = "~20000000"},
{v = 1073741822, b = "111111111111111111111111111110", oc = "7777777776", d = "1073741822", x = "3FFFFFFE"},
{v = ~1073741822, b = "~111111111111111111111111111110", oc = "~7777777776", d = "~1073741822", x = "~3FFFFFFE"},
{v = 1073741823, b = "111111111111111111111111111111", oc = "7777777777", d = "1073741823", x = "3FFFFFFF"},
{v = ~1073741823, b = "~111111111111111111111111111111", oc = "~7777777777", d = "~1073741823", x = "~3FFFFFFF"},
{v = 1073741824, b = "1000000000000000000000000000000", oc = "10000000000", d = "1073741824", x = "40000000"},
{v = ~1073741824, b = "~1000000000000000000000000000000", oc = "~10000000000", d = "~1073741824", x = "~40000000"},
{v = 1073741825, b = "1000000000000000000000000000001", oc = "10000000001", d = "1073741825", x = "40000001"},
{v = ~1073741825, b = "~1000000000000000000000000000001", oc = "~10000000001", d = "~1073741825", x = "~40000001"},
{v = 1073741826, b = "1000000000000000000000000000010", oc = "10000000002", d = "1073741826", x = "40000002"},
{v = ~1073741826, b = "~1000000000000000000000000000010", oc = "~10000000002", d = "~1073741826", x = "~40000002"},
{v = 2147483648, b = "10000000000000000000000000000000", oc = "20000000000", d = "2147483648", x = "80000000"},
{v = ~2147483648, b = "~10000000000000000000000000000000", oc = "~20000000000", d = "~2147483648", x = "~80000000"},
{v = 4294967296, b = "100000000000000000000000000000000", oc = "40000000000", d = "4294967296", x = "100000000"},
{v = ~4294967296, b = "~100000000000000000000000000000000", oc = "~40000000000", d = "~4294967296", x = "~100000000"},
{v = 4304967296, b = "100000000100110001001011010000000", oc = "40046113200", d = "4304967296", x = "100989680"},
{v = ~4304967296, b = "~100000000100110001001011010000000", oc = "~40046113200", d = "~4304967296", x = "~100989680"},
{v = 8589934592, b = "1000000000000000000000000000000000", oc = "100000000000", d = "8589934592", x = "200000000"},
{v = ~8589934592, b = "~1000000000000000000000000000000000", oc = "~100000000000", d = "~8589934592", x = "~200000000"},
{v = 17179869184, b = "10000000000000000000000000000000000", oc = "200000000000", d = "17179869184", x = "400000000"},
{v = ~17179869184, b = "~10000000000000000000000000000000000", oc = "~200000000000", d = "~17179869184", x = "~400000000"},
{v = 34359738368, b = "100000000000000000000000000000000000", oc = "400000000000", d = "34359738368", x = "800000000"},
{v = ~34359738368, b = "~100000000000000000000000000000000000", oc = "~400000000000", d = "~34359738368", x = "~800000000"},
{v = 68719476736, b = "1000000000000000000000000000000000000", oc = "1000000000000", d = "68719476736", x = "1000000000"},
{v = ~68719476736, b = "~1000000000000000000000000000000000000", oc = "~1000000000000", d = "~68719476736", x = "~1000000000"},
{v = 137438953472, b = "10000000000000000000000000000000000000", oc = "2000000000000", d = "137438953472", x = "2000000000"},
{v = ~137438953472, b = "~10000000000000000000000000000000000000", oc = "~2000000000000", d = "~137438953472", x = "~2000000000"},
{v = 274877906944, b = "100000000000000000000000000000000000000", oc = "4000000000000", d = "274877906944", x = "4000000000"},
{v = ~274877906944, b = "~100000000000000000000000000000000000000", oc = "~4000000000000", d = "~274877906944", x = "~4000000000"},
{v = 549755813888, b = "1000000000000000000000000000000000000000", oc = "10000000000000", d = "549755813888", x = "8000000000"},
{v = ~549755813888, b = "~1000000000000000000000000000000000000000", oc = "~10000000000000", d = "~549755813888", x = "~8000000000"},
{v = 1099511627776, b = "10000000000000000000000000000000000000000", oc = "20000000000000", d = "1099511627776", x = "10000000000"},
{v = ~1099511627776, b = "~10000000000000000000000000000000000000000", oc = "~20000000000000", d = "~1099511627776", x = "~10000000000"},
{v = 2199023255552, b = "100000000000000000000000000000000000000000", oc = "40000000000000", d = "2199023255552", x = "20000000000"},
{v = ~2199023255552, b = "~100000000000000000000000000000000000000000", oc = "~40000000000000", d = "~2199023255552", x = "~20000000000"},
{v = 4398046511104, b = "1000000000000000000000000000000000000000000", oc = "100000000000000", d = "4398046511104", x = "40000000000"},
{v = ~4398046511104, b = "~1000000000000000000000000000000000000000000", oc = "~100000000000000", d = "~4398046511104", x = "~40000000000"},
{v = 8796093022208, b = "10000000000000000000000000000000000000000000", oc = "200000000000000", d = "8796093022208", x = "80000000000"},
{v = ~8796093022208, b = "~10000000000000000000000000000000000000000000", oc = "~200000000000000", d = "~8796093022208", x = "~80000000000"},
{v = 17592186044416, b = "100000000000000000000000000000000000000000000", oc = "400000000000000", d = "17592186044416", x = "100000000000"},
{v = ~17592186044416, b = "~100000000000000000000000000000000000000000000", oc = "~400000000000000", d = "~17592186044416", x = "~100000000000"},
{v = 35184372088832, b = "1000000000000000000000000000000000000000000000", oc = "1000000000000000", d = "35184372088832", x = "200000000000"},
{v = ~35184372088832, b = "~1000000000000000000000000000000000000000000000", oc = "~1000000000000000", d = "~35184372088832", x = "~200000000000"},
{v = 70368744177664, b = "10000000000000000000000000000000000000000000000", oc = "2000000000000000", d = "70368744177664", x = "400000000000"},
{v = ~70368744177664, b = "~10000000000000000000000000000000000000000000000", oc = "~2000000000000000", d = "~70368744177664", x = "~400000000000"},
{v = 140737488355328, b = "100000000000000000000000000000000000000000000000", oc = "4000000000000000", d = "140737488355328", x = "800000000000"},
{v = ~140737488355328, b = "~100000000000000000000000000000000000000000000000", oc = "~4000000000000000", d = "~140737488355328", x = "~800000000000"},
{v = 281474976710656, b = "1000000000000000000000000000000000000000000000000", oc = "10000000000000000", d = "281474976710656", x = "1000000000000"},
{v = ~281474976710656, b = "~1000000000000000000000000000000000000000000000000", oc = "~10000000000000000", d = "~281474976710656", x = "~1000000000000"},
{v = 562949953421312, b = "10000000000000000000000000000000000000000000000000", oc = "20000000000000000", d = "562949953421312", x = "2000000000000"},
{v = ~562949953421312, b = "~10000000000000000000000000000000000000000000000000", oc = "~20000000000000000", d = "~562949953421312", x = "~2000000000000"},
{v = 1125899906842624, b = "100000000000000000000000000000000000000000000000000", oc = "40000000000000000", d = "1125899906842624", x = "4000000000000"},
{v = ~1125899906842624, b = "~100000000000000000000000000000000000000000000000000", oc = "~40000000000000000", d = "~1125899906842624", x = "~4000000000000"},
{v = 2251799813685248, b = "1000000000000000000000000000000000000000000000000000", oc = "100000000000000000", d = "2251799813685248", x = "8000000000000"},
{v = ~2251799813685248, b = "~1000000000000000000000000000000000000000000000000000", oc = "~100000000000000000", d = "~2251799813685248", x = "~8000000000000"},
{v = 4503599627370496, b = "10000000000000000000000000000000000000000000000000000", oc = "200000000000000000", d = "4503599627370496", x = "10000000000000"},
{v = ~4503599627370496, b = "~10000000000000000000000000000000000000000000000000000", oc = "~200000000000000000", d = "~4503599627370496", x = "~10000000000000"},
{v = 9007199254740992, b = "100000000000000000000000000000000000000000000000000000", oc = "400000000000000000", d = "9007199254740992", x = "20000000000000"},
{v = ~9007199254740992, b = "~100000000000000000000000000000000000000000000000000000", oc = "~400000000000000000", d = "~9007199254740992", x = "~20000000000000"},
{v = 18014398509481984, b = "1000000000000000000000000000000000000000000000000000000", oc = "1000000000000000000", d = "18014398509481984", x = "40000000000000"},
{v = ~18014398509481984, b = "~1000000000000000000000000000000000000000000000000000000", oc = "~1000000000000000000", d = "~18014398509481984", x = "~40000000000000"},
{v = 36028797018963968, b = "10000000000000000000000000000000000000000000000000000000", oc = "2000000000000000000", d = "36028797018963968", x = "80000000000000"},
{v = ~36028797018963968, b = "~10000000000000000000000000000000000000000000000000000000", oc = "~2000000000000000000", d = "~36028797018963968", x = "~80000000000000"},
{v = 72057594037927936, b = "100000000000000000000000000000000000000000000000000000000", oc = "4000000000000000000", d = "72057594037927936", x = "100000000000000"},
{v = ~72057594037927936, b = "~100000000000000000000000000000000000000000000000000000000", oc = "~4000000000000000000", d = "~72057594037927936", x = "~100000000000000"},
{v = 144115188075855872, b = "1000000000000000000000000000000000000000000000000000000000", oc = "10000000000000000000", d = "144115188075855872", x = "200000000000000"},
{v = ~144115188075855872, b = "~1000000000000000000000000000000000000000000000000000000000", oc = "~10000000000000000000", d = "~144115188075855872", x = "~200000000000000"},
{v = 288230376151711744, b = "10000000000000000000000000000000000000000000000000000000000", oc = "20000000000000000000", d = "288230376151711744", x = "400000000000000"},
{v = ~288230376151711744, b = "~10000000000000000000000000000000000000000000000000000000000", oc = "~20000000000000000000", d = "~288230376151711744", x = "~400000000000000"},
{v = 576460752303423488, b = "100000000000000000000000000000000000000000000000000000000000", oc = "40000000000000000000", d = "576460752303423488", x = "800000000000000"},
{v = ~576460752303423488, b = "~100000000000000000000000000000000000000000000000000000000000", oc = "~40000000000000000000", d = "~576460752303423488", x = "~800000000000000"},
{v = 1152921504606846976, b = "1000000000000000000000000000000000000000000000000000000000000", oc = "100000000000000000000", d = "1152921504606846976", x = "1000000000000000"},
{v = ~1152921504606846976, b = "~1000000000000000000000000000000000000000000000000000000000000", oc = "~100000000000000000000", d = "~1152921504606846976", x = "~1000000000000000"},
{v = 2305843009213693952, b = "10000000000000000000000000000000000000000000000000000000000000", oc = "200000000000000000000", d = "2305843009213693952", x = "2000000000000000"},
{v = ~2305843009213693952, b = "~10000000000000000000000000000000000000000000000000000000000000", oc = "~200000000000000000000", d = "~2305843009213693952", x = "~2000000000000000"},
{v = 4611686018427387904, b = "100000000000000000000000000000000000000000000000000000000000000", oc = "400000000000000000000", d = "4611686018427387904", x = "4000000000000000"},
{v = ~4611686018427387904, b = "~100000000000000000000000000000000000000000000000000000000000000", oc = "~400000000000000000000", d = "~4611686018427387904", x = "~4000000000000000"},
{v = 9223372036854775808, b = "1000000000000000000000000000000000000000000000000000000000000000", oc = "1000000000000000000000", d = "9223372036854775808", x = "8000000000000000"},
{v = ~9223372036854775808, b = "~1000000000000000000000000000000000000000000000000000000000000000", oc = "~1000000000000000000000", d = "~9223372036854775808", x = "~8000000000000000"},
{v = 18446744073709551616, b = "10000000000000000000000000000000000000000000000000000000000000000", oc = "2000000000000000000000", d = "18446744073709551616", x = "10000000000000000"},
{v = ~18446744073709551616, b = "~10000000000000000000000000000000000000000000000000000000000000000", oc = "~2000000000000000000000", d = "~18446744073709551616", x = "~10000000000000000"},
{v = 36893488147419103232, b = "100000000000000000000000000000000000000000000000000000000000000000", oc = "4000000000000000000000", d = "36893488147419103232", x = "20000000000000000"},
{v = ~36893488147419103232, b = "~100000000000000000000000000000000000000000000000000000000000000000", oc = "~4000000000000000000000", d = "~36893488147419103232", x = "~20000000000000000"},
{v = 73786976294838206464, b = "1000000000000000000000000000000000000000000000000000000000000000000", oc = "10000000000000000000000", d = "73786976294838206464", x = "40000000000000000"},
{v = ~73786976294838206464, b = "~1000000000000000000000000000000000000000000000000000000000000000000", oc = "~10000000000000000000000", d = "~73786976294838206464", x = "~40000000000000000"},
{v = 147573952589676412928, b = "10000000000000000000000000000000000000000000000000000000000000000000", oc = "20000000000000000000000", d = "147573952589676412928", x = "80000000000000000"},
{v = ~147573952589676412928, b = "~10000000000000000000000000000000000000000000000000000000000000000000", oc = "~20000000000000000000000", d = "~147573952589676412928", x = "~80000000000000000"},
{v = 295147905179352825856, b = "100000000000000000000000000000000000000000000000000000000000000000000", oc = "40000000000000000000000", d = "295147905179352825856", x = "100000000000000000"},
{v = ~295147905179352825856, b = "~100000000000000000000000000000000000000000000000000000000000000000000", oc = "~40000000000000000000000", d = "~295147905179352825856", x = "~100000000000000000"},
{v = 590295810358705651712, b = "1000000000000000000000000000000000000000000000000000000000000000000000", oc = "100000000000000000000000", d = "590295810358705651712", x = "200000000000000000"},
{v = ~590295810358705651712, b = "~1000000000000000000000000000000000000000000000000000000000000000000000", oc = "~100000000000000000000000", d = "~590295810358705651712", x = "~200000000000000000"},
{v = 1180591620717411303424, b = "10000000000000000000000000000000000000000000000000000000000000000000000", oc = "200000000000000000000000", d = "1180591620717411303424", x = "400000000000000000"},
{v = ~1180591620717411303424, b = "~10000000000000000000000000000000000000000000000000000000000000000000000", oc = "~200000000000000000000000", d = "~1180591620717411303424", x = "~400000000000000000"},
{v = 2361183241434822606848, b = "100000000000000000000000000000000000000000000000000000000000000000000000", oc = "400000000000000000000000", d = "2361183241434822606848", x = "800000000000000000"},
{v = ~2361183241434822606848, b = "~100000000000000000000000000000000000000000000000000000000000000000000000", oc = "~400000000000000000000000", d = "~2361183241434822606848", x = "~800000000000000000"},
{v = 4722366482869645213696, b = "1000000000000000000000000000000000000000000000000000000000000000000000000", oc = "1000000000000000000000000", d = "4722366482869645213696", x = "1000000000000000000"},
{v = ~4722366482869645213696, b = "~1000000000000000000000000000000000000000000000000000000000000000000000000", oc = "~1000000000000000000000000", d = "~4722366482869645213696", x = "~1000000000000000000"},
{v = 9444732965739290427392, b = "10000000000000000000000000000000000000000000000000000000000000000000000000", oc = "2000000000000000000000000", d = "9444732965739290427392", x = "2000000000000000000"},
{v = ~9444732965739290427392, b = "~10000000000000000000000000000000000000000000000000000000000000000000000000", oc = "~2000000000000000000000000", d = "~9444732965739290427392", x = "~2000000000000000000"},
{v = 18889465931478580854784, b = "100000000000000000000000000000000000000000000000000000000000000000000000000", oc = "4000000000000000000000000", d = "18889465931478580854784", x = "4000000000000000000"},
{v = ~18889465931478580854784, b = "~100000000000000000000000000000000000000000000000000000000000000000000000000", oc = "~4000000000000000000000000", d = "~18889465931478580854784", x = "~4000000000000000000"},
{v = 37778931862957161709568, b = "1000000000000000000000000000000000000000000000000000000000000000000000000000", oc = "10000000000000000000000000", d = "37778931862957161709568", x = "8000000000000000000"},
{v = ~37778931862957161709568, b = "~1000000000000000000000000000000000000000000000000000000000000000000000000000", oc = "~10000000000000000000000000", d = "~37778931862957161709568", x = "~8000000000000000000"},
{v = 75557863725914323419136, b = "10000000000000000000000000000000000000000000000000000000000000000000000000000", oc = "20000000000000000000000000", d = "75557863725914323419136", x = "10000000000000000000"},
{v = ~75557863725914323419136, b = "~10000000000000000000000000000000000000000000000000000000000000000000000000000", oc = "~20000000000000000000000000", d = "~75557863725914323419136", x = "~10000000000000000000"},
{v = 151115727451828646838272, b = "100000000000000000000000000000000000000000000000000000000000000000000000000000", oc = "40000000000000000000000000", d = "151115727451828646838272", x = "20000000000000000000"},
{v = ~151115727451828646838272, b = "~100000000000000000000000000000000000000000000000000000000000000000000000000000", oc = "~40000000000000000000000000", d = "~151115727451828646838272", x = "~20000000000000000000"},
{v = 302231454903657293676544, b = "1000000000000000000000000000000000000000000000000000000000000000000000000000000", oc = "100000000000000000000000000", d = "302231454903657293676544", x = "40000000000000000000"},
{v = ~302231454903657293676544, b = "~1000000000000000000000000000000000000000000000000000000000000000000000000000000", oc = "~100000000000000000000000000", d = "~302231454903657293676544", x = "~40000000000000000000"},
{v = 604462909807314587353088, b = "10000000000000000000000000000000000000000000000000000000000000000000000000000000", oc = "200000000000000000000000000", d = "604462909807314587353088", x = "80000000000000000000"},
{v = ~604462909807314587353088, b = "~10000000000000000000000000000000000000000000000000000000000000000000000000000000", oc = "~200000000000000000000000000", d = "~604462909807314587353088", x = "~80000000000000000000"},
{v = 1208925819614629174706176, b = "100000000000000000000000000000000000000000000000000000000000000000000000000000000", oc = "400000000000000000000000000", d = "1208925819614629174706176", x = "100000000000000000000"},
{v = ~1208925819614629174706176, b = "~100000000000000000000000000000000000000000000000000000000000000000000000000000000", oc = "~400000000000000000000000000", d = "~1208925819614629174706176", x = "~100000000000000000000"},
{v = 2417851639229258349412352, b = "1000000000000000000000000000000000000000000000000000000000000000000000000000000000", oc = "1000000000000000000000000000", d = "2417851639229258349412352", x = "200000000000000000000"},
{v = ~2417851639229258349412352, b = "~1000000000000000000000000000000000000000000000000000000000000000000000000000000000", oc = "~1000000000000000000000000000", d = "~2417851639229258349412352", x = "~200000000000000000000"},
{v = 4835703278458516698824704, b = "10000000000000000000000000000000000000000000000000000000000000000000000000000000000", oc = "2000000000000000000000000000", d = "4835703278458516698824704", x = "400000000000000000000"},
{v = ~4835703278458516698824704, b = "~10000000000000000000000000000000000000000000000000000000000000000000000000000000000", oc = "~2000000000000000000000000000", d = "~4835703278458516698824704", x = "~400000000000000000000"},
{v = 9671406556917033397649408, b = "100000000000000000000000000000000000000000000000000000000000000000000000000000000000", oc = "4000000000000000000000000000", d = "9671406556917033397649408", x = "800000000000000000000"},
{v = ~9671406556917033397649408, b = "~100000000000000000000000000000000000000000000000000000000000000000000000000000000000", oc = "~4000000000000000000000000000", d = "~9671406556917033397649408", x = "~800000000000000000000"},
{v = 19342813113834066795298816, b = "1000000000000000000000000000000000000000000000000000000000000000000000000000000000000", oc = "10000000000000000000000000000", d = "19342813113834066795298816", x = "1000000000000000000000"},
{v = ~19342813113834066795298816, b = "~1000000000000000000000000000000000000000000000000000000000000000000000000000000000000", oc = "~10000000000000000000000000000", d = "~19342813113834066795298816", x = "~1000000000000000000000"},
{v = 38685626227668133590597632, b = "10000000000000000000000000000000000000000000000000000000000000000000000000000000000000", oc = "20000000000000000000000000000", d = "38685626227668133590597632", x = "2000000000000000000000"},
{v = ~38685626227668133590597632, b = "~10000000000000000000000000000000000000000000000000000000000000000000000000000000000000", oc = "~20000000000000000000000000000", d = "~38685626227668133590597632", x = "~2000000000000000000000"},
{v = 77371252455336267181195264, b = "100000000000000000000000000000000000000000000000000000000000000000000000000000000000000", oc = "40000000000000000000000000000", d = "77371252455336267181195264", x = "4000000000000000000000"},
{v = ~77371252455336267181195264, b = "~100000000000000000000000000000000000000000000000000000000000000000000000000000000000000", oc = "~40000000000000000000000000000", d = "~77371252455336267181195264", x = "~4000000000000000000000"},
{v = 154742504910672534362390528, b = "1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", oc = "100000000000000000000000000000", d = "154742504910672534362390528", x = "8000000000000000000000"},
{v = ~154742504910672534362390528, b = "~1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", oc = "~100000000000000000000000000000", d = "~154742504910672534362390528", x = "~8000000000000000000000"},
{v = 309485009821345068724781056, b = "10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", oc = "200000000000000000000000000000", d = "309485009821345068724781056", x = "10000000000000000000000"},
{v = ~309485009821345068724781056, b = "~10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", oc = "~200000000000000000000000000000", d = "~309485009821345068724781056", x = "~10000000000000000000000"},
{v = 618970019642690137449562112, b = "100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", oc = "400000000000000000000000000000", d = "618970019642690137449562112", x = "20000000000000000000000"},
{v = ~618970019642690137449562112, b = "~100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", oc = "~400000000000000000000000000000", d = "~618970019642690137449562112", x = "~20000000000000000000000"},
{v = 1237940039285380274899124224, b = "1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", oc = "1000000000000000000000000000000", d = "1237940039285380274899124224", x = "40000000000000000000000"},
{v = ~1237940039285380274899124224, b = "~1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", oc = "~1000000000000000000000000000000", d = "~1237940039285380274899124224", x = "~40000000000000000000000"},
{v = 2475880078570760549798248448, b = "10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", oc = "2000000000000000000000000000000", d = "2475880078570760549798248448", x = "80000000000000000000000"},
{v = ~2475880078570760549798248448, b = "~10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", oc = "~2000000000000000000000000000000", d = "~2475880078570760549798248448", x = "~80000000000000000000000"},
{v = 4951760157141521099596496896, b = "100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", oc = "4000000000000000000000000000000", d = "4951760157141521099596496896", x = "100000000000000000000000"},
{v = ~4951760157141521099596496896, b = "~100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", oc = "~4000000000000000000000000000000", d = "~4951760157141521099596496896", x = "~100000000000000000000000"},
{v = 9903520314283042199192993792, b = "1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", oc = "10000000000000000000000000000000", d = "9903520314283042199192993792", x = "200000000000000000000000"},
{v = ~9903520314283042199192993792, b = "~1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", oc = "~10000000000000000000000000000000", d = "~9903520314283042199192993792", x = "~200000000000000000000000"},
{v = 19807040628566084398385987584, b = "10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", oc = "20000000000000000000000000000000", d = "19807040628566084398385987584", x = "400000000000000000000000"},
{v = ~19807040628566084398385987584, b = "~10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", oc = "~20000000000000000000000000000000", d = "~19807040628566084398385987584", x = "~400000000000000000000000"},
{v = 39614081257132168796771975168, b = "100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", oc = "40000000000000000000000000000000", d = "39614081257132168796771975168", x = "800000000000000000000000"},
{v = ~39614081257132168796771975168, b = "~100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", oc = "~40000000000000000000000000000000", d = "~39614081257132168796771975168", x = "~800000000000000000000000"},
{v = 79228162514264337593543950336, b = "1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", oc = "100000000000000000000000000000000", d = "79228162514264337593543950336", x = "1000000000000000000000000"},
{v = ~79228162514264337593543950336, b = "~1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", oc = "~100000000000000000000000000000000", d = "~79228162514264337593543950336", x = "~1000000000000000000000000"},
{v = 158456325028528675187087900672, b = "10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", oc = "200000000000000000000000000000000", d = "158456325028528675187087900672", x = "2000000000000000000000000"},
{v = ~158456325028528675187087900672, b = "~10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", oc = "~200000000000000000000000000000000", d = "~158456325028528675187087900672", x = "~2000000000000000000000000"},
{v = 316912650057057350374175801344, b = "100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", oc = "400000000000000000000000000000000", d = "316912650057057350374175801344", x = "4000000000000000000000000"},
{v = ~316912650057057350374175801344, b = "~100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", oc = "~400000000000000000000000000000000", d = "~316912650057057350374175801344", x = "~4000000000000000000000000"},
{v = 633825300114114700748351602688, b = "1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", oc = "1000000000000000000000000000000000", d = "633825300114114700748351602688", x = "8000000000000000000000000"},
{v = ~633825300114114700748351602688, b = "~1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", oc = "~1000000000000000000000000000000000", d = "~633825300114114700748351602688", x = "~8000000000000000000000000"}
]
fun makeReader str =
let val len = String.size str
fun reader pos =
if pos = String.size str
then NONE
else SOME (String.sub (str, pos), pos + 1)
in reader
end
exception FailRead of StringCvt.radix * string
exception FailWrite of StringCvt.radix * IntInf.int
fun read2 str = case IntInf.scan StringCvt.BIN (makeReader str) 0 of
NONE => raise (FailRead (StringCvt.BIN, str))
| SOME (v, p) => if p = String.size str
then v
else raise (FailRead (StringCvt.BIN,
str))
fun read8 str = case IntInf.scan StringCvt.OCT (makeReader str) 0 of
NONE => raise (FailRead (StringCvt.OCT, str))
| SOME (v, p) => if p = String.size str
then v
else raise (FailRead (StringCvt.OCT,
str))
fun read10 str = case IntInf.scan StringCvt.DEC (makeReader str) 0 of
NONE => raise (FailRead (StringCvt.DEC, str))
| SOME (v, p) => if p = String.size str
then v
else raise (FailRead (StringCvt.DEC,
str))
fun read16 str = case IntInf.scan StringCvt.HEX (makeReader str) 0 of
NONE => raise (FailRead (StringCvt.HEX, str))
| SOME (v, p) => if p = String.size str
then v
else raise (FailRead (StringCvt.HEX,
str))
fun read str = case IntInf.fromString str of
NONE => raise (FailRead (StringCvt.DEC, str))
| SOME v => v
fun toStr2 v = IntInf.fmt StringCvt.BIN v
fun toStr8 v = IntInf.fmt StringCvt.OCT v
fun toStr10 v = IntInf.fmt StringCvt.DEC v
fun toStr16 v = IntInf.fmt StringCvt.HEX v
fun toStr v = IntInf.toString v
fun baseToStr (base: StringCvt.radix): string =
case base of
StringCvt.BIN => "BIN"
| StringCvt.OCT => "OCT"
| StringCvt.DEC => "DEC"
| StringCvt.HEX => "HEX"
fun f ({ v: IntInf.int, b: string, oc: string, d: string, x: string}): unit =
let val bv = read2 b
val ov = read8 oc
val dv = read10 d
val xv = read16 x
val vv = read d
in if bv <> v
then raise (FailRead (StringCvt.BIN, b))
else if ov <> v
then raise (FailRead (StringCvt.OCT, oc))
else if dv <> v
then raise (FailRead (StringCvt.DEC, d))
else if xv <> v
then raise (FailRead (StringCvt.HEX, x))
else if vv <> v
then raise (FailRead (StringCvt.DEC, d))
else let val vb = toStr2 v
val vo = toStr8 v
val vd = toStr10 v
val vx = toStr16 v
val vv = toStr v
val (b, oc, d, x) = if v = 0 andalso String.sub (d, 0) = #"~"
then ("0", "0", "0", "0")
else (b, oc, d, x)
in if vb <> b
then raise (FailWrite (StringCvt.BIN, v))
else if vo <> oc
then raise (FailWrite (StringCvt.OCT, v))
else if vd <> d
then raise (FailWrite (StringCvt.DEC, v))
else if vx <> x
then raise (FailWrite (StringCvt.HEX, v))
else if vv <> d
then raise (FailWrite (StringCvt.DEC, v))
else ()
end
end handle FailRead (base, str) =>
print ("FailRead, base = " ^ (baseToStr base)
^ ", str = |" ^ str ^ "|\n")
| FailWrite (base, v) =>
print ("FailWrite, base = " ^ (baseToStr base)
^ ", d = |" ^ d ^ "|\n")
val _ = List.app f arg
val _ = print "All ok\n"
|