This file is indexed.

/usr/lib/ocaml/num.mli is in ocaml-nox 4.05.0-10ubuntu1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  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
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
(**************************************************************************)
(*                                                                        *)
(*                                 OCaml                                  *)
(*                                                                        *)
(*     Valerie Menissier-Morain, projet Cristal, INRIA Rocquencourt       *)
(*                                                                        *)
(*   Copyright 1996 Institut National de Recherche en Informatique et     *)
(*     en Automatique.                                                    *)
(*                                                                        *)
(*   All rights reserved.  This file is distributed under the terms of    *)
(*   the GNU Lesser General Public License version 2.1, with the          *)
(*   special exception on linking described in the file LICENSE.          *)
(*                                                                        *)
(**************************************************************************)

(** Operation on arbitrary-precision numbers.

   Numbers (type [num]) are arbitrary-precision rational numbers,
   plus the special elements [1/0] (infinity) and [0/0] (undefined).
*)

open Nat
open Big_int
open Ratio

(** The type of numbers. *)
type num =
    Int of int
  | Big_int of big_int
  | Ratio of ratio


(** {6 Arithmetic operations} *)


val ( +/ ) : num -> num -> num
(** Same as {!Num.add_num}.*)

val add_num : num -> num -> num
(** Addition *)

val minus_num : num -> num
(** Unary negation. *)

val ( -/ ) : num -> num -> num
(** Same as {!Num.sub_num}.*)

val sub_num : num -> num -> num
(** Subtraction *)

val ( */ ) : num -> num -> num
(** Same as {!Num.mult_num}.*)

val mult_num : num -> num -> num
(** Multiplication *)

val square_num : num -> num
(** Squaring *)

val ( // ) : num -> num -> num
(** Same as {!Num.div_num}.*)

val div_num : num -> num -> num
(** Division *)

val quo_num : num -> num -> num
(** Euclidean division: quotient. *)

val mod_num : num -> num -> num
(** Euclidean division: remainder. *)

val ( **/ ) : num -> num -> num
(** Same as {!Num.power_num}. *)

val power_num : num -> num -> num
(** Exponentiation *)

val abs_num : num -> num
(** Absolute value. *)

val succ_num : num -> num
(** [succ n] is [n+1] *)

val pred_num : num -> num
(** [pred n] is [n-1] *)

val incr_num : num ref -> unit
(** [incr r] is [r:=!r+1], where [r] is a reference to a number. *)

val decr_num : num ref -> unit
(** [decr r] is [r:=!r-1], where [r] is a reference to a number. *)

val is_integer_num : num -> bool
(** Test if a number is an integer *)

(** The four following functions approximate a number by an integer : *)

val integer_num : num -> num
(** [integer_num n] returns the integer closest to [n]. In case of ties,
   rounds towards zero. *)

val floor_num : num -> num
(** [floor_num n] returns the largest integer smaller or equal to [n]. *)

val round_num : num -> num
(** [round_num n] returns the integer closest to [n]. In case of ties,
   rounds off zero. *)

val ceiling_num : num -> num
(** [ceiling_num n] returns the smallest integer bigger or equal to [n]. *)


val sign_num : num -> int
(** Return [-1], [0] or [1] according to the sign of the argument. *)

(** {7 Comparisons between numbers} *)

val ( =/ ) : num -> num -> bool
val ( </ ) : num -> num -> bool
val ( >/ ) : num -> num -> bool
val ( <=/ ) : num -> num -> bool
val ( >=/ ) : num -> num -> bool
val ( <>/ ) : num -> num -> bool
val eq_num : num -> num -> bool
val lt_num : num -> num -> bool
val le_num : num -> num -> bool
val gt_num : num -> num -> bool
val ge_num : num -> num -> bool

val compare_num : num -> num -> int
(** Return [-1], [0] or [1] if the first argument is less than,
   equal to, or greater than the second argument. *)

val max_num : num -> num -> num
(** Return the greater of the two arguments. *)

val min_num : num -> num -> num
(** Return the smaller of the two arguments. *)


(** {6 Coercions with strings} *)

val string_of_num : num -> string
(** Convert a number to a string, using fractional notation. *)

val approx_num_fix : int -> num -> string
(** See {!Num.approx_num_exp}.*)

val approx_num_exp : int -> num -> string
(** Approximate a number by a decimal. The first argument is the
   required precision. The second argument is the number to
   approximate. {!Num.approx_num_fix} uses decimal notation; the first
   argument is the number of digits after the decimal point.
   [approx_num_exp] uses scientific (exponential) notation; the
   first argument is the number of digits in the mantissa. *)

val num_of_string : string -> num
(** Convert a string to a number.
   Raise [Failure "num_of_string"] if the given string is not
   a valid representation of an integer *)

val num_of_string_opt: string -> num option
(** Convert a string to a number.
    Return [None] if the given string is not
    a valid representation of an integer.

    @since 4.05
*)

(** {6 Coercions between numerical types} *)

(* TODO: document the functions below (truncating behavior and error conditions). *)

val int_of_num : num -> int
val int_of_num_opt: num -> int option
(** @since 4.05.0 *)

val num_of_int : int -> num
val nat_of_num : num -> nat
val nat_of_num_opt: num -> nat option
(** @since 4.05.0 *)

val num_of_nat : nat -> num
val num_of_big_int : big_int -> num
val big_int_of_num : num -> big_int
val big_int_of_num_opt: num -> big_int option
(** @since 4.05.0 *)

val ratio_of_num : num -> ratio
val num_of_ratio : ratio -> num
val float_of_num : num -> float