`sig
type calculator =
If of Pdffun.calculator list
| IfElse of Pdffun.calculator list * Pdffun.calculator list
| Bool of bool
| Float of float
| Int of int32
| Abs
| Add
| Atan
| Ceiling
| Cos
| Cvi
| Cvr
| Div
| Exp
| Floor
| Idiv
| Ln
| Log
| Mod
| Mul
| Neg
| Round
| Sin
| Sqrt
| Sub
| Truncate
| And
| Bitshift
| Eq
| Ge
| Gt
| Le
| Lt
| Ne
| Not
| Or
| Xor
| Copy
| Exch
| Pop
| Dup
| Index
| Roll
type sampled = {
size : int list;
order : int;
encode : float list;
decode : float list;
bps : int;
samples : int32 array;
}
and interpolation = { c0 : float list; c1 : float list; n : float; }
and stitching = {
functions : Pdffun.t list;
bounds : float list;
stitch_encode : float list;
}
and pdf_fun_kind =
Interpolation of Pdffun.interpolation
| Stitching of Pdffun.stitching
| Sampled of Pdffun.sampled
| Calculator of Pdffun.calculator list
and t = {
func : Pdffun.pdf_fun_kind;
domain : float list;
range : float list option;
}
val parse_function : Pdf.t -> Pdf.pdfobject -> Pdffun.t
exception BadFunctionEvaluation of string
val eval_function : Pdffun.t -> float list -> float list
val pdfobject_of_function : Pdf.t -> Pdffun.t -> Pdf.pdfobject
val print_function : Pdffun.t -> unit
end`