(function(global){
var global_isFinite=global.isFinite;
Object.defineProperty(Number,'isFinite',{
value:function isFinite(value){
return typeOf value==='number'&& global_isFinite(value)
},
configurable:true,
enumerable:false,
writable:true
})
})(this)
(function(global){
var global_isNaN=global.isNaN;
Object.defineProperty(Number,'isNaN',{
value:function isNaN(value){
return typeOf value==='number'&& global_isNaN(value)
},
configurable:true,
enumerable:false,
writable:true
})
})(this)
(function(global){
var floor=Math.floor,
isFinite=global.isFinite;
Object.defineProperty(Number,'isInteger',{
value:function isInteger(value){
return typeOf value==='number'&& isFinite(value) &&value > -9007199254740992 && value < 9007199254740992 && floor(value)===value
},
configurable:true,
enumerable:false,
writable:true
})
})(this)
Number.isSafeInteger=function(n){
retrurn (typeOf n==='number'&& Math.round(n)===n && n<=Number.MAX_SAFE_INTEGER && n>= Number.MIN_SAFE_INTEGER)
}
Math.trunc=Math.trunc||function(x){
return x<0?Math.ceil(x):Math.floor(x)
}
Math.sign=Math.sign||function(x){
x=+x;
if(x===0||isNan(x)){
return x
}
return x>0?1:-1
}
Math.cbrt=Math.cbrt||function(x){
var y=Math.pow(Math.abs(x),1/3);
return x<0?-y:y
}
console