1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
open Ast
(*
--# Sign of number
--#
--# Return -1, 0, or 1 depending on sign.
--#
--# @name sign
--# @param x :: Number | Vector | NDArray Numeric input.
--# @return :: Number | Vector Computed result (scalar or vectorized).
--# @family math
--# @export
*)
let register env =
Env.add "sign" (make_builtin_named ~name:"sign" ~variadic:true 1 (fun named_args _env ->
let sf x = if x > 0.0 then 1.0 else if x < 0.0 then -1.0 else 0.0 in
Math_common.map_numeric_unary_named ~fname:"sign" sf named_args)) env