// Numbers.
(function(baselib) {
    var exports = {};
    baselib.numbers = exports;



    var isNumber = jsnums.isSchemeNumber;
    var isReal = jsnums.isReal;
    var isRational = jsnums.isRational;
    var isComplex = isNumber;
    var isInteger = jsnums.isInteger;


    var isNatural = function(x) {
        return (jsnums.isExact(x) && isInteger(x) 
	        && jsnums.greaterThanOrEqual(x, 0));
    };

    var isNonNegativeReal = function(x) {
	return isReal(x) && jsnums.greaterThanOrEqual(x, 0);
    };





    //////////////////////////////////////////////////////////////////////
    // Exports


    // We first re-export everything in jsnums.
    for (var prop in jsnums) {
        if (jsnums.hasOwnProperty(prop)) {
            exports[prop] = jsnums[prop];
        }
    }

    exports.isNumber = jsnums.isSchemeNumber;
    exports.isReal = isReal;
    exports.isRational = isRational;
    exports.isComplex = isComplex;
    exports.isInteger = isInteger;
    exports.isNatural = isNatural;
    exports.isNonNegativeReal = isNonNegativeReal;


})(this['plt'].baselib);