|
1 | | -type t = Js.Types.bigint_val |
| 1 | +@val external asIntN: (~width: int, bigint) => bigint = "BigInt.asIntN" |
| 2 | +@val external asUintN: (~width: int, bigint) => bigint = "BigInt.asUintN" |
2 | 3 |
|
3 | | -@val external asIntN: (~width: int, t) => t = "BigInt.asIntN" |
4 | | -@val external asUintN: (~width: int, t) => t = "BigInt.asUintN" |
| 4 | +@val external fromString: string => bigint = "BigInt" |
| 5 | +@val external fromInt: int => bigint = "BigInt" |
| 6 | +@val external fromFloat: float => bigint = "BigInt" |
5 | 7 |
|
6 | | -@val external fromString: string => t = "BigInt" |
7 | | -@val external fromInt: int => t = "BigInt" |
8 | | -@val external fromFloat: float => t = "BigInt" |
| 8 | +@send external toString: bigint => string = "toString" |
| 9 | +@send external toStringWithRadix: (bigint, ~radix: int) => string = "toString" |
| 10 | +@send external toLocaleString: bigint => string = "toLocaleString" |
9 | 11 |
|
10 | | -@send external toString: t => string = "toString" |
11 | | -@send external toStringWithRadix: (t, ~radix: int) => string = "toString" |
12 | | -@send external toLocaleString: t => string = "toLocaleString" |
13 | | - |
14 | | -@val external toFloat: t => float = "Number" |
| 12 | +@val external toFloat: bigint => float = "Number" |
15 | 13 |
|
16 | 14 | let toInt = t => t->toFloat->Core__Int.fromFloat |
17 | 15 |
|
18 | | -external \"+": (t, t) => t = "%addfloat" |
19 | | -external \"-": (t, t) => t = "%subfloat" |
20 | | -external \"*": (t, t) => t = "%mulfloat" |
21 | | -external \"/": (t, t) => t = "%divfloat" |
| 16 | +external \"+": (bigint, bigint) => bigint = "%addfloat" |
| 17 | +external \"-": (bigint, bigint) => bigint = "%subfloat" |
| 18 | +external \"*": (bigint, bigint) => bigint = "%mulfloat" |
| 19 | +external \"/": (bigint, bigint) => bigint = "%divfloat" |
22 | 20 |
|
23 | | -external add: (t, t) => t = "%addfloat" |
24 | | -external sub: (t, t) => t = "%subfloat" |
25 | | -external mul: (t, t) => t = "%mulfloat" |
26 | | -external div: (t, t) => t = "%divfloat" |
| 21 | +external add: (bigint, bigint) => bigint = "%addfloat" |
| 22 | +external sub: (bigint, bigint) => bigint = "%subfloat" |
| 23 | +external mul: (bigint, bigint) => bigint = "%mulfloat" |
| 24 | +external div: (bigint, bigint) => bigint = "%divfloat" |
27 | 25 |
|
28 | | -@noalloc external mod: (t, t) => t = "?fmod_float" |
| 26 | +@noalloc external mod: (bigint, bigint) => bigint = "?fmod_float" |
29 | 27 |
|
30 | | -external land: (t, t) => t = "%andint" |
31 | | -external lor: (t, t) => t = "%orint" |
32 | | -external lxor: (t, t) => t = "%xorint" |
| 28 | +external land: (bigint, bigint) => bigint = "%andint" |
| 29 | +external lor: (bigint, bigint) => bigint = "%orint" |
| 30 | +external lxor: (bigint, bigint) => bigint = "%xorint" |
33 | 31 |
|
34 | | -external lsl: (t, t) => t = "%lslint" |
35 | | -external asr: (t, t) => t = "%asrint" |
| 32 | +external lsl: (bigint, bigint) => bigint = "%lslint" |
| 33 | +external asr: (bigint, bigint) => bigint = "%asrint" |
36 | 34 |
|
37 | | -let exp = (x: t, y: t) => { |
| 35 | +let exp = (x: bigint, y: bigint) => { |
38 | 36 | let _ = x |
39 | 37 | let _ = y |
40 | 38 | %raw(`x ** y`) |
|
0 commit comments