{
    "schema": {
        "module": "string",
        "name": "string",
        "type": "string",
        "signature": "string",
        "doc": "string",
        "pattern": "string"
    },
    "data": [
        {
            "module": "Real",
            "name": "t",
            "type": "type",
            "signature": "type t = real",
            "doc": "The real number type representing arbitrary precision real numbers",
            "pattern": "Representing exact decimal numbers without floating point imprecision"
        },
        {
            "module": "Real",
            "name": "of_int",
            "type": "function",
            "signature": "val of_int : int -> real",
            "doc": "Converts an integer [i] to a real number",
            "pattern": "Converting integer values to real numbers for exact decimal arithmetic"
        },
        {
            "module": "Real",
            "name": "_to_int_round_down",
            "type": "function",
            "signature": "val _to_int_round_down : real -> int",
            "doc": "Converts a real number [r] to an integer by rounding down. Internal helper function.",
            "pattern": "Internal function for floor rounding in integer conversion"
        },
        {
            "module": "Real",
            "name": "to_int",
            "type": "function",
            "signature": "val to_int : real -> int",
            "doc": "Converts a real number [r] to an integer by rounding towards zero",
            "pattern": "Converting real numbers to integers when decimal precision is no longer needed"
        },
        {
            "module": "Real",
            "name": "+",
            "type": "function",
            "signature": "val (+) : real -> real -> real",
            "doc": "Adds two real numbers",
            "pattern": "Performing exact decimal addition without floating point errors"
        },
        {
            "module": "Real",
            "name": "-",
            "type": "function",
            "signature": "val (-) : real -> real -> real",
            "doc": "Subtracts two real numbers",
            "pattern": "Performing exact decimal subtraction without floating point errors"
        },
        {
            "module": "Real",
            "name": "~-",
            "type": "function",
            "signature": "val (~-) : real -> real",
            "doc": "Negates a real number",
            "pattern": "Changing the sign of a real number while preserving its magnitude"
        },
        {
            "module": "Real",
            "name": "*",
            "type": "function",
            "signature": "val (*) : real -> real -> real",
            "doc": "Multiplies two real numbers",
            "pattern": "Performing exact decimal multiplication without floating point errors"
        },
        {
            "module": "Real",
            "name": "/",
            "type": "function",
            "signature": "val (/) : real -> real -> real",
            "doc": "Divides two real numbers",
            "pattern": "Performing exact decimal division without floating point errors"
        },
        {
            "module": "Real",
            "name": "<",
            "type": "function",
            "signature": "val (<) : real -> real -> bool",
            "doc": "Tests if one real number is less than another",
            "pattern": "Comparing real numbers for strict ordering relationships"
        },
        {
            "module": "Real",
            "name": "<=",
            "type": "function",
            "signature": "val (<=) : real -> real -> bool",
            "doc": "Tests if one real number is less than or equal to another",
            "pattern": "Comparing real numbers for non-strict ordering relationships"
        },
        {
            "module": "Real",
            "name": ">",
            "type": "function",
            "signature": "val (>) : real -> real -> bool",
            "doc": "Tests if one real number is greater than another",
            "pattern": "Comparing real numbers for strict ordering relationships"
        },
        {
            "module": "Real",
            "name": ">=",
            "type": "function",
            "signature": "val (>=) : real -> real -> bool",
            "doc": "Tests if one real number is greater than or equal to another",
            "pattern": "Comparing real numbers for non-strict ordering relationships"
        },
        {
            "module": "Real",
            "name": "abs",
            "type": "function",
            "signature": "val abs : real -> real",
            "doc": "Returns the absolute value of real number [r]",
            "pattern": "Getting the magnitude of a real number regardless of sign"
        },
        {
            "module": "Real",
            "name": "min",
            "type": "function",
            "signature": "val min : real -> real -> real",
            "doc": "Returns the minimum of two real numbers",
            "pattern": "Finding the smaller of two real numbers in comparisons"
        },
        {
            "module": "Real",
            "name": "max",
            "type": "function",
            "signature": "val max : real -> real -> real",
            "doc": "Returns the maximum of two real numbers",
            "pattern": "Finding the larger of two real numbers in comparisons"
        },
        {
            "module": "Real",
            "name": "of_float",
            "type": "function",
            "signature": "val of_float : float -> real",
            "doc": "Converts a float [f] to a real number",
            "pattern": "Converting approximate floating point numbers to exact real numbers"
        },
        {
            "module": "Real",
            "name": "pow",
            "type": "function",
            "signature": "val pow : real -> int -> real",
            "doc": "Raises real number [base] to integer power [exp]",
            "pattern": "Computing exact integer powers of real numbers"
        }
    ],
    "program_prelude": [
        "val mk_of_float : float -> Q.t",
        "val mk_of_q : Q.t -> Q.t",
        "val mk_of_string : string -> Q.t",
        "val to_float : Q.t -> float",
        "val compare : t -> t -> int",
        "val pp : Stdlib.Format.formatter -> Q.t -> unit",
        "val to_string : Q.t -> string",
        "val to_string_approx : Q.t -> string",
        "val pow_ : Q.t -> int -> Q.t"
    ]
}