Make `Pervasives.ldexp` unboxed and noalloc
parent
c0f19965f4
commit
203c444fd4
|
@ -225,6 +225,13 @@ CAMLprim value caml_frexp_float(value f)
|
|||
CAMLreturn (res);
|
||||
}
|
||||
|
||||
// Seems dumb but intnat could not correspond to int type.
|
||||
double caml_ldexp_float_unboxed(double f, intnat i)
|
||||
{
|
||||
return ldexp(f, i);
|
||||
}
|
||||
|
||||
|
||||
CAMLprim value caml_ldexp_float(value f, value i)
|
||||
{
|
||||
return caml_copy_double(ldexp(Double_val(f), Int_val(i)));
|
||||
|
|
|
@ -154,7 +154,8 @@ external copysign : float -> float -> float
|
|||
external mod_float : float -> float -> float = "caml_fmod_float" "fmod"
|
||||
[@@unboxed] [@@noalloc]
|
||||
external frexp : float -> float * int = "caml_frexp_float"
|
||||
external ldexp : float -> int -> float = "caml_ldexp_float"
|
||||
external ldexp : (float [@unboxed]) -> (int [@untagged]) -> (float [@unboxed]) =
|
||||
"caml_ldexp_float" "caml_ldexp_float_unboxed" [@@noalloc]
|
||||
external modf : float -> float * float = "caml_modf_float"
|
||||
external float : int -> float = "%floatofint"
|
||||
external float_of_int : int -> float = "%floatofint"
|
||||
|
|
|
@ -150,7 +150,8 @@ external copysign : float -> float -> float
|
|||
external mod_float : float -> float -> float = "caml_fmod_float" "fmod"
|
||||
[@@unboxed] [@@noalloc]
|
||||
external frexp : float -> float * int = "caml_frexp_float"
|
||||
external ldexp : float -> int -> float = "caml_ldexp_float"
|
||||
external ldexp : (float [@unboxed]) -> (int [@untagged]) -> (float [@unboxed]) =
|
||||
"caml_ldexp_float" "caml_ldexp_float_unboxed" [@@noalloc]
|
||||
external modf : float -> float * float = "caml_modf_float"
|
||||
external float : int -> float = "%floatofint"
|
||||
external float_of_int : int -> float = "%floatofint"
|
||||
|
|
|
@ -454,7 +454,9 @@ external frexp : float -> float * int = "caml_frexp_float"
|
|||
zero. When [f] is non-zero, they are defined by
|
||||
[f = x *. 2 ** n] and [0.5 <= x < 1.0]. *)
|
||||
|
||||
external ldexp : float -> int -> float = "caml_ldexp_float"
|
||||
|
||||
external ldexp : (float [@unboxed]) -> (int [@untagged]) -> (float [@unboxed]) =
|
||||
"caml_ldexp_float" "caml_ldexp_float_unboxed" [@@noalloc]
|
||||
(** [ldexp x n] returns [x *. 2 ** n]. *)
|
||||
|
||||
external modf : float -> float * float = "caml_modf_float"
|
||||
|
|
Loading…
Reference in New Issue