123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813 |
- var bigDecimal =
- /******/ (function(modules) { // webpackBootstrap
- /******/ // The module cache
- /******/ var installedModules = {};
- /******/
- /******/ // The require function
- /******/ function __webpack_require__(moduleId) {
- /******/
- /******/ // Check if module is in cache
- /******/ if(installedModules[moduleId]) {
- /******/ return installedModules[moduleId].exports;
- /******/ }
- /******/ // Create a new module (and put it into the cache)
- /******/ var module = installedModules[moduleId] = {
- /******/ i: moduleId,
- /******/ l: false,
- /******/ exports: {}
- /******/ };
- /******/
- /******/ // Execute the module function
- /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
- /******/
- /******/ // Flag the module as loaded
- /******/ module.l = true;
- /******/
- /******/ // Return the exports of the module
- /******/ return module.exports;
- /******/ }
- /******/
- /******/
- /******/ // expose the modules object (__webpack_modules__)
- /******/ __webpack_require__.m = modules;
- /******/
- /******/ // expose the module cache
- /******/ __webpack_require__.c = installedModules;
- /******/
- /******/ // define getter function for harmony exports
- /******/ __webpack_require__.d = function(exports, name, getter) {
- /******/ if(!__webpack_require__.o(exports, name)) {
- /******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
- /******/ }
- /******/ };
- /******/
- /******/ // define __esModule on exports
- /******/ __webpack_require__.r = function(exports) {
- /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
- /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
- /******/ }
- /******/ Object.defineProperty(exports, '__esModule', { value: true });
- /******/ };
- /******/
- /******/ // create a fake namespace object
- /******/ // mode & 1: value is a module id, require it
- /******/ // mode & 2: merge all properties of value into the ns
- /******/ // mode & 4: return value when already ns object
- /******/ // mode & 8|1: behave like require
- /******/ __webpack_require__.t = function(value, mode) {
- /******/ if(mode & 1) value = __webpack_require__(value);
- /******/ if(mode & 8) return value;
- /******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
- /******/ var ns = Object.create(null);
- /******/ __webpack_require__.r(ns);
- /******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
- /******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
- /******/ return ns;
- /******/ };
- /******/
- /******/ // getDefaultExport function for compatibility with non-harmony modules
- /******/ __webpack_require__.n = function(module) {
- /******/ var getter = module && module.__esModule ?
- /******/ function getDefault() { return module['default']; } :
- /******/ function getModuleExports() { return module; };
- /******/ __webpack_require__.d(getter, 'a', getter);
- /******/ return getter;
- /******/ };
- /******/
- /******/ // Object.prototype.hasOwnProperty.call
- /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
- /******/
- /******/ // __webpack_public_path__
- /******/ __webpack_require__.p = "";
- /******/
- /******/
- /******/ // Load entry module and return exports
- /******/ return __webpack_require__(__webpack_require__.s = 3);
- /******/ })
- /************************************************************************/
- /******/ ([
- /* 0 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- //function add {
- function add(number1, number2) {
- var _a;
- if (number2 === void 0) { number2 = "0"; }
- var neg = 0, ind = -1, neg_len;
- //check for negatives
- if (number1[0] == '-') {
- neg++;
- ind = 1;
- number1 = number1.substring(1);
- neg_len = number1.length;
- }
- if (number2[0] == '-') {
- neg++;
- ind = 2;
- number2 = number2.substring(1);
- neg_len = number2.length;
- }
- number1 = trim(number1);
- number2 = trim(number2);
- _a = pad(trim(number1), trim(number2)), number1 = _a[0], number2 = _a[1];
- if (neg == 1) {
- if (ind == 1)
- number1 = compliment(number1);
- else
- number2 = compliment(number2);
- }
- var res = addCore(number1, number2);
- if (!neg)
- return trim(res);
- else if (neg == 2)
- return ('-' + trim(res));
- else {
- if (number1.length < (res.length))
- return trim(res.substring(1));
- else
- return ('-' + trim(compliment(res)));
- }
- }
- exports.add = add;
- function compliment(number) {
- var s = '', l = number.length, dec = number.split('.')[1], ld = dec ? dec.length : 0;
- for (var i = 0; i < l; i++) {
- if (number[i] >= '0' && number[i] <= '9')
- s += (9 - parseInt(number[i]));
- else
- s += number[i];
- }
- var one = (ld > 0) ? ('0.' + (new Array(ld)).join('0') + '1') : '1';
- return addCore(s, one);
- }
- function trim(number) {
- var parts = number.split('.');
- if (!parts[0])
- parts[0] = '0';
- while (parts[0][0] == '0' && parts[0].length > 1)
- parts[0] = parts[0].substring(1);
- return parts[0] + (parts[1] ? ('.' + parts[1]) : '');
- }
- exports.trim = trim;
- function pad(number1, number2) {
- var parts1 = number1.split('.'), parts2 = number2.split('.');
- //pad integral part
- var length1 = parts1[0].length, length2 = parts2[0].length;
- if (length1 > length2) {
- parts2[0] = (new Array(Math.abs(length1 - length2) + 1)).join('0') + (parts2[0] ? parts2[0] : '');
- }
- else {
- parts1[0] = (new Array(Math.abs(length1 - length2) + 1)).join('0') + (parts1[0] ? parts1[0] : '');
- }
- //pad fractional part
- length1 = parts1[1] ? parts1[1].length : 0,
- length2 = parts2[1] ? parts2[1].length : 0;
- if (length1 || length2) {
- if (length1 > length2) {
- parts2[1] = (parts2[1] ? parts2[1] : '') + (new Array(Math.abs(length1 - length2) + 1)).join('0');
- }
- else {
- parts1[1] = (parts1[1] ? parts1[1] : '') + (new Array(Math.abs(length1 - length2) + 1)).join('0');
- }
- }
- number1 = parts1[0] + ((parts1[1]) ? ('.' + parts1[1]) : '');
- number2 = parts2[0] + ((parts2[1]) ? ('.' + parts2[1]) : '');
- return [number1, number2];
- }
- exports.pad = pad;
- function addCore(number1, number2) {
- var _a;
- _a = pad(number1, number2), number1 = _a[0], number2 = _a[1];
- var sum = '', carry = 0;
- for (var i = number1.length - 1; i >= 0; i--) {
- if (number1[i] === '.') {
- sum = '.' + sum;
- continue;
- }
- var temp = parseInt(number1[i]) + parseInt(number2[i]) + carry;
- sum = (temp % 10) + sum;
- carry = Math.floor(temp / 10);
- }
- return carry ? (carry.toString() + sum) : sum;
- }
- /***/ }),
- /* 1 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- var roundingModes_1 = __webpack_require__(2);
- /**
- *
- * @param input the number to round
- * @param n precision
- * @param mode Rounding Mode
- */
- function roundOff(input, n, mode) {
- if (n === void 0) { n = 0; }
- if (mode === void 0) { mode = roundingModes_1.RoundingModes.HALF_EVEN; }
- if (mode === roundingModes_1.RoundingModes.UNNECESSARY) {
- throw new Error("UNNECESSARY Rounding Mode has not yet been implemented");
- }
- if (typeof (input) == 'number')
- input = input.toString();
- var neg = false;
- if (input[0] === '-') {
- neg = true;
- input = input.substring(1);
- }
- var parts = input.split('.'), partInt = parts[0], partDec = parts[1];
- //handle case of -ve n: roundOff(12564,-2)=12600
- if (n < 0) {
- n = -n;
- if (partInt.length <= n)
- return '0';
- else {
- var prefix = partInt.substr(0, partInt.length - n);
- input = prefix + '.' + partInt.substr(partInt.length - n) + partDec;
- prefix = roundOff(input, 0, mode);
- return (neg ? '-' : '') + prefix + (new Array(n + 1).join('0'));
- }
- }
- // handle case when integer output is desired
- if (n == 0) {
- var l = partInt.length;
- if (greaterThanFive(parts[1], partInt, neg, mode)) {
- return (neg ? '-' : '') + increment(partInt);
- }
- return (neg ? '-' : '') + partInt;
- }
- // handle case when n>0
- if (!parts[1]) {
- return (neg ? '-' : '') + partInt + '.' + (new Array(n + 1).join('0'));
- }
- else if (parts[1].length < n) {
- return (neg ? '-' : '') + partInt + '.' + parts[1] + (new Array(n - parts[1].length + 1).join('0'));
- }
- partDec = parts[1].substring(0, n);
- var rem = parts[1].substring(n);
- if (rem && greaterThanFive(rem, partDec, neg, mode)) {
- partDec = increment(partDec);
- if (partDec.length > n) {
- return increment(partInt, parseInt(partDec[0])) + '.' + partDec.substring(1);
- }
- }
- return (neg ? '-' : '') + partInt + '.' + partDec;
- }
- exports.roundOff = roundOff;
- function greaterThanFive(part, pre, neg, mode) {
- if (!part || part === new Array(part.length + 1).join('0'))
- return false;
- // #region UP, DOWN, CEILING, FLOOR
- if (mode === roundingModes_1.RoundingModes.DOWN || (!neg && mode === roundingModes_1.RoundingModes.FLOOR) ||
- (neg && mode === roundingModes_1.RoundingModes.CEILING))
- return false;
- if (mode === roundingModes_1.RoundingModes.UP || (neg && mode === roundingModes_1.RoundingModes.FLOOR) ||
- (!neg && mode === roundingModes_1.RoundingModes.CEILING))
- return true;
- // #endregion
- // case when part !== five
- var five = '5' + (new Array(part.length).join('0'));
- if (part > five)
- return true;
- else if (part < five)
- return false;
- // case when part === five
- switch (mode) {
- case roundingModes_1.RoundingModes.HALF_DOWN: return false;
- case roundingModes_1.RoundingModes.HALF_UP: return true;
- case roundingModes_1.RoundingModes.HALF_EVEN:
- default: return (parseInt(pre[pre.length - 1]) % 2 == 1);
- }
- }
- function increment(part, c) {
- if (c === void 0) { c = 0; }
- if (!c)
- c = 1;
- if (typeof (part) == 'number')
- part.toString();
- var l = part.length - 1, s = '';
- for (var i = l; i >= 0; i--) {
- var x = parseInt(part[i]) + c;
- if (x == 10) {
- c = 1;
- x = 0;
- }
- else {
- c = 0;
- }
- s += x;
- }
- if (c)
- s += c;
- return s.split('').reverse().join('');
- }
- /***/ }),
- /* 2 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- var RoundingModes;
- (function (RoundingModes) {
- /**
- * Rounding mode to round towards positive infinity.
- */
- RoundingModes[RoundingModes["CEILING"] = 0] = "CEILING";
- /**
- * Rounding mode to round towards zero.
- */
- RoundingModes[RoundingModes["DOWN"] = 1] = "DOWN";
- /**
- * Rounding mode to round towards negative infinity.
- */
- RoundingModes[RoundingModes["FLOOR"] = 2] = "FLOOR";
- /**
- * Rounding mode to round towards "nearest neighbor" unless both neighbors are equidistant,
- * in which case round down.
- */
- RoundingModes[RoundingModes["HALF_DOWN"] = 3] = "HALF_DOWN";
- /**
- * Rounding mode to round towards the "nearest neighbor" unless both neighbors are equidistant,
- * in which case, round towards the even neighbor.
- */
- RoundingModes[RoundingModes["HALF_EVEN"] = 4] = "HALF_EVEN";
- /**
- * Rounding mode to round towards "nearest neighbor" unless both neighbors are equidistant,
- * in which case round up.
- */
- RoundingModes[RoundingModes["HALF_UP"] = 5] = "HALF_UP";
- /**
- * Rounding mode to assert that the requested operation has an exact result, hence no rounding is necessary.
- * UNIMPLEMENTED
- */
- RoundingModes[RoundingModes["UNNECESSARY"] = 6] = "UNNECESSARY";
- /**
- * Rounding mode to round away from zero.
- */
- RoundingModes[RoundingModes["UP"] = 7] = "UP";
- })(RoundingModes = exports.RoundingModes || (exports.RoundingModes = {}));
- /***/ }),
- /* 3 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- var add_1 = __webpack_require__(0);
- var round_1 = __webpack_require__(1);
- var multiply_1 = __webpack_require__(4);
- var divide_1 = __webpack_require__(5);
- var compareTo_1 = __webpack_require__(6);
- var subtract_1 = __webpack_require__(7);
- var roundingModes_1 = __webpack_require__(2);
- var bigDecimal = /** @class */ (function () {
- function bigDecimal(number) {
- if (number === void 0) { number = '0'; }
- this.value = bigDecimal.validate(number);
- }
- bigDecimal.validate = function (number) {
- if (number) {
- number = number.toString();
- if (isNaN(number))
- throw Error("Parameter is not a number: " + number);
- if (number[0] == '+')
- number = number.substring(1);
- }
- else
- number = '0';
- //handle exponentiation
- if (/e/i.test(number)) {
- var _a = number.split(/[eE]/), mantisa = _a[0], exponent = _a[1];
- mantisa = add_1.trim(mantisa);
- exponent = parseInt(exponent) + mantisa.indexOf('.');
- mantisa = mantisa.replace('.', '');
- if (mantisa.length < exponent) {
- number = mantisa + (new Array(exponent - mantisa.length + 1)).join('0');
- }
- else if (mantisa.length >= exponent && exponent > 0) {
- number = add_1.trim(mantisa.substring(0, exponent)) +
- ((mantisa.length > exponent) ? ('.' + mantisa.substring(exponent)) : '');
- }
- else {
- number = '0.' + (new Array(-exponent + 1)).join('0') + mantisa;
- }
- }
- return number;
- };
- bigDecimal.prototype.getValue = function () {
- return this.value;
- };
- bigDecimal.getPrettyValue = function (number, digits, separator) {
- if (!(digits || separator)) {
- digits = 3;
- separator = ',';
- }
- else if (!(digits && separator)) {
- throw Error('Illegal Arguments. Should pass both digits and separator or pass none');
- }
- number = bigDecimal.validate(number);
- var neg = number.charAt(0) == '-';
- if (neg)
- number = number.substring(1);
- var len = number.indexOf('.');
- len = len > 0 ? len : (number.length);
- var temp = '';
- for (var i = len; i > 0;) {
- if (i < digits) {
- digits = i;
- i = 0;
- }
- else
- i -= digits;
- temp = number.substring(i, i + digits) + ((i < (len - digits) && i >= 0) ? separator : '') + temp;
- }
- return (neg ? '-' : '') + temp + number.substring(len);
- };
- bigDecimal.prototype.getPrettyValue = function (digits, separator) {
- return bigDecimal.getPrettyValue(this.value, digits, separator);
- };
- bigDecimal.round = function (number, precision, mode) {
- if (precision === void 0) { precision = 0; }
- if (mode === void 0) { mode = roundingModes_1.RoundingModes.HALF_EVEN; }
- number = bigDecimal.validate(number);
- if (isNaN(precision))
- throw Error("Precision is not a number: " + precision);
- return round_1.roundOff(number, precision, mode);
- };
- bigDecimal.prototype.round = function (precision, mode) {
- if (precision === void 0) { precision = 0; }
- if (mode === void 0) { mode = roundingModes_1.RoundingModes.HALF_EVEN; }
- if (isNaN(precision))
- throw Error("Precision is not a number: " + precision);
- return new bigDecimal(round_1.roundOff(this.value, precision, mode));
- };
- bigDecimal.floor = function (number) {
- number = bigDecimal.validate(number);
- if (number.indexOf('.') === -1)
- return number;
- return bigDecimal.round(bigDecimal.subtract(number, 0.5));
- };
- bigDecimal.prototype.floor = function () {
- if (this.value.indexOf('.') === -1)
- return new bigDecimal(this.value);
- return this.subtract(new bigDecimal(0.5)).round();
- };
- bigDecimal.ceil = function (number) {
- number = bigDecimal.validate(number);
- if (number.indexOf('.') === -1)
- return number;
- return bigDecimal.round(bigDecimal.add(number, 0.5));
- };
- bigDecimal.prototype.ceil = function () {
- if (this.value.indexOf('.') === -1)
- return new bigDecimal(this.value);
- return this.add(new bigDecimal(0.5)).round();
- };
- bigDecimal.add = function (number1, number2) {
- number1 = bigDecimal.validate(number1);
- number2 = bigDecimal.validate(number2);
- return add_1.add(number1, number2);
- };
- bigDecimal.prototype.add = function (number) {
- return new bigDecimal(add_1.add(this.value, number.getValue()));
- };
- bigDecimal.subtract = function (number1, number2) {
- number1 = bigDecimal.validate(number1);
- number2 = bigDecimal.validate(number2);
- return subtract_1.subtract(number1, number2);
- };
- bigDecimal.prototype.subtract = function (number) {
- return new bigDecimal(subtract_1.subtract(this.value, number.getValue()));
- };
- bigDecimal.multiply = function (number1, number2) {
- number1 = bigDecimal.validate(number1);
- number2 = bigDecimal.validate(number2);
- return multiply_1.multiply(number1, number2);
- };
- bigDecimal.prototype.multiply = function (number) {
- return new bigDecimal(multiply_1.multiply(this.value, number.getValue()));
- };
- bigDecimal.divide = function (number1, number2, precision) {
- number1 = bigDecimal.validate(number1);
- number2 = bigDecimal.validate(number2);
- return divide_1.divide(number1, number2, precision);
- };
- bigDecimal.prototype.divide = function (number, precision) {
- return new bigDecimal(divide_1.divide(this.value, number.getValue(), precision));
- };
- bigDecimal.compareTo = function (number1, number2) {
- number1 = bigDecimal.validate(number1);
- number2 = bigDecimal.validate(number2);
- return compareTo_1.compareTo(number1, number2);
- };
- bigDecimal.prototype.compareTo = function (number) {
- return compareTo_1.compareTo(this.value, number.getValue());
- };
- bigDecimal.negate = function (number) {
- number = bigDecimal.validate(number);
- return subtract_1.negate(number);
- };
- bigDecimal.prototype.negate = function () {
- return new bigDecimal(subtract_1.negate(this.value));
- };
- bigDecimal.RoundingModes = roundingModes_1.RoundingModes;
- return bigDecimal;
- }());
- module.exports = bigDecimal;
- /***/ }),
- /* 4 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- function multiply(number1, number2) {
- number1 = number1.toString();
- number2 = number2.toString();
- /*Filter numbers*/
- var negative = 0;
- if (number1[0] == '-') {
- negative++;
- number1 = number1.substr(1);
- }
- if (number2[0] == '-') {
- negative++;
- number2 = number2.substr(1);
- }
- number1 = trailZero(number1);
- number2 = trailZero(number2);
- var decimalLength1 = 0;
- var decimalLength2 = 0;
- if (number1.indexOf('.') != -1) {
- decimalLength1 = number1.length - number1.indexOf('.') - 1;
- }
- if (number2.indexOf('.') != -1) {
- decimalLength2 = number2.length - number2.indexOf('.') - 1;
- }
- var decimalLength = decimalLength1 + decimalLength2;
- number1 = trailZero(number1.replace('.', ''));
- number2 = trailZero(number2.replace('.', ''));
- if (number1.length < number2.length) {
- var temp = number1;
- number1 = number2;
- number2 = temp;
- }
- if (number2 == '0') {
- return '0';
- }
- /*
- * Core multiplication
- */
- var length = number2.length;
- var carry = 0;
- var positionVector = [];
- var currentPosition = length - 1;
- var result = "";
- for (var i = 0; i < length; i++) {
- positionVector[i] = number1.length - 1;
- }
- for (var i = 0; i < 2 * number1.length; i++) {
- var sum = 0;
- for (var j = number2.length - 1; j >= currentPosition && j >= 0; j--) {
- if (positionVector[j] > -1 && positionVector[j] < number1.length) {
- sum += parseInt(number1[positionVector[j]--]) * parseInt(number2[j]);
- }
- }
- sum += carry;
- carry = Math.floor(sum / 10);
- result = sum % 10 + result;
- currentPosition--;
- }
- /*
- * Formatting result
- */
- result = trailZero(adjustDecimal(result, decimalLength));
- if (negative == 1) {
- result = '-' + result;
- }
- return result;
- }
- exports.multiply = multiply;
- /*
- * Add decimal point
- */
- function adjustDecimal(number, decimal) {
- if (decimal == 0)
- return number;
- else {
- number = (decimal >= number.length) ? ((new Array(decimal - number.length + 1)).join('0') + number) : number;
- return number.substr(0, number.length - decimal) + '.' + number.substr(number.length - decimal, decimal);
- }
- }
- /*
- * Removes zero from front and back*/
- function trailZero(number) {
- while (number[0] == '0') {
- number = number.substr(1);
- }
- if (number.indexOf('.') != -1) {
- while (number[number.length - 1] == '0') {
- number = number.substr(0, number.length - 1);
- }
- }
- if (number == "" || number == ".") {
- number = '0';
- }
- else if (number[number.length - 1] == '.') {
- number = number.substr(0, number.length - 1);
- }
- if (number[0] == '.') {
- number = '0' + number;
- }
- return number;
- }
- /***/ }),
- /* 5 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- var add_1 = __webpack_require__(0);
- var round_1 = __webpack_require__(1);
- function divide(dividend, divisor, precission) {
- if (precission === void 0) { precission = 8; }
- if (divisor == 0) {
- throw new Error('Cannot divide by 0');
- }
- dividend = dividend.toString();
- divisor = divisor.toString();
- // remove trailing zeros in decimal ISSUE#18
- dividend = dividend.replace(/(\.\d*?[1-9])0+$/g, "$1").replace(/\.0+$/, "");
- divisor = divisor.replace(/(\.\d*?[1-9])0+$/g, "$1").replace(/\.0+$/, "");
- if (dividend == 0)
- return '0';
- var neg = 0;
- if (divisor[0] == '-') {
- divisor = divisor.substring(1);
- neg++;
- }
- if (dividend[0] == '-') {
- dividend = dividend.substring(1);
- neg++;
- }
- var pt_dvsr = divisor.indexOf('.') > 0 ? divisor.length - divisor.indexOf('.') - 1 : -1;
- divisor = add_1.trim(divisor.replace('.', ''));
- if (pt_dvsr >= 0) {
- var pt_dvnd = dividend.indexOf('.') > 0 ? dividend.length - dividend.indexOf('.') - 1 : -1;
- if (pt_dvnd == -1) {
- dividend = add_1.trim(dividend + (new Array(pt_dvsr + 1)).join('0'));
- }
- else {
- if (pt_dvsr > pt_dvnd) {
- dividend = dividend.replace('.', '');
- dividend = add_1.trim(dividend + (new Array(pt_dvsr - pt_dvnd + 1)).join('0'));
- }
- else if (pt_dvsr < pt_dvnd) {
- dividend = dividend.replace('.', '');
- var loc = dividend.length - pt_dvnd + pt_dvsr;
- dividend = add_1.trim(dividend.substring(0, loc) + '.' + dividend.substring(loc));
- }
- else if (pt_dvsr == pt_dvnd) {
- dividend = add_1.trim(dividend.replace('.', ''));
- }
- }
- }
- var prec = 0, dl = divisor.length, rem = '0', quotent = '';
- var dvnd = (dividend.indexOf('.') > -1 && dividend.indexOf('.') < dl) ? dividend.substring(0, dl + 1) : dividend.substring(0, dl);
- dividend = (dividend.indexOf('.') > -1 && dividend.indexOf('.') < dl) ? dividend.substring(dl + 1) : dividend.substring(dl);
- if (dvnd.indexOf('.') > -1) {
- var shift = dvnd.length - dvnd.indexOf('.') - 1;
- dvnd = dvnd.replace('.', '');
- if (dl > dvnd.length) {
- shift += dl - dvnd.length;
- dvnd = dvnd + (new Array(dl - dvnd.length + 1)).join('0');
- }
- prec = shift;
- quotent = '0.' + (new Array(shift)).join('0');
- }
- precission = precission + 2;
- while (prec <= precission) {
- var qt = 0;
- while (parseInt(dvnd) >= parseInt(divisor)) {
- dvnd = add_1.add(dvnd, '-' + divisor);
- qt++;
- }
- quotent += qt;
- if (!dividend) {
- if (!prec)
- quotent += '.';
- prec++;
- dvnd = dvnd + '0';
- }
- else {
- if (dividend[0] == '.') {
- quotent += '.';
- prec++;
- dividend = dividend.substring(1);
- }
- dvnd = dvnd + dividend.substring(0, 1);
- dividend = dividend.substring(1);
- }
- }
- return ((neg == 1) ? '-' : '') + add_1.trim(round_1.roundOff(quotent, precission - 2));
- }
- exports.divide = divide;
- /***/ }),
- /* 6 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- var add_1 = __webpack_require__(0);
- function compareTo(number1, number2) {
- var _a;
- var negative = false;
- if (number1[0] == '-' && number2[0] != "-") {
- return -1;
- }
- else if (number1[0] != '-' && number2[0] == '-') {
- return 1;
- }
- else if (number1[0] == '-' && number2[0] == '-') {
- number1 = number1.substr(1);
- number2 = number2.substr(1);
- negative = true;
- }
- _a = add_1.pad(number1, number2), number1 = _a[0], number2 = _a[1];
- if (number1.localeCompare(number2) == 0) {
- return 0;
- }
- for (var i = 0; i < number1.length; i++) {
- if (number1[i] == number2[i]) {
- continue;
- }
- else if (number1[i] > number2[i]) {
- if (negative) {
- return -1;
- }
- else {
- return 1;
- }
- }
- else {
- if (negative) {
- return 1;
- }
- else {
- return -1;
- }
- }
- }
- return 0;
- }
- exports.compareTo = compareTo;
- /***/ }),
- /* 7 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- var add_1 = __webpack_require__(0);
- function subtract(number1, number2) {
- number1 = number1.toString();
- number2 = number2.toString();
- number2 = negate(number2);
- return add_1.add(number1, number2);
- }
- exports.subtract = subtract;
- function negate(number) {
- if (number[0] == '-') {
- number = number.substr(1);
- }
- else {
- number = '-' + number;
- }
- return number;
- }
- exports.negate = negate;
- /***/ })
- /******/ ]);
|