|
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