forked from rescript-lang/rescript
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathjs_bigint.ml
34 lines (25 loc) · 1005 Bytes
/
js_bigint.ml
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
(** JavaScript BigInt API *)
type t
external ofString : string -> t = "BigInt" [@@bs.val]
external ofInt : int -> t = "BigInt" [@@bs.val]
external ofFloat : float -> t = "BigInt" [@@bs.val]
external toString : t -> string = "toString" [@@bs.send]
external toStringWithRadix : t -> radix:int -> string = "toString" [@@bs.send]
external (+) : t -> t -> t = "%addfloat"
external (-) : t -> t -> t = "%subfloat"
external ( * ) : t -> t -> t = "%mulfloat"
external (/) : t -> t -> t = "%divfloat"
external add : t -> t -> t = "%addfloat"
external sub : t -> t -> t = "%subfloat"
external mul : t -> t -> t = "%mulfloat"
external div : t -> t -> t = "%divfloat"
external (mod) : t -> t -> t = "caml_fmod_float" [@@noalloc]
external (land) : t -> t -> t = "%andint"
external (lor) : t -> t -> t = "%orint"
external (lxor) : t -> t -> t = "%xorint"
external (lsl) : t -> t -> t = "%lslint"
external (asr) : t -> t -> t = "%asrint"
let exp x y =
let _ = x in
let _ = y in
[%raw "x ** y"] [@@inline]