@wzyjs/utils 0.3.4 → 0.3.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/common/ai/302/image/index.d.ts +0 -1
- package/dist/common/ai/302/index.d.ts +0 -2
- package/dist/common/index.d.ts +3 -5
- package/dist/node.cjs.js +158 -3289
- package/dist/node.esm.js +155 -3286
- package/dist/web.cjs.js +112 -3238
- package/dist/web.esm.js +119 -3245
- package/package.json +2 -2
- package/dist/common/ai/302/audio/doubao.d.ts +0 -29
- package/dist/common/ai/302/audio/index.d.ts +0 -2
- package/dist/common/ai/302/audio/tts.d.ts +0 -51
- package/dist/common/ai/302/image/gpt.d.ts +0 -97
- package/dist/common/ai/doubao/index.d.ts +0 -2
- package/dist/common/ai/doubao/tts.d.ts +0 -30
- package/dist/common/ai/doubao/vc.d.ts +0 -21
package/dist/node.cjs.js
CHANGED
|
@@ -738,7 +738,7 @@ var require_lodash = __commonJS((exports2, module2) => {
|
|
|
738
738
|
var objectCtorString = funcToString.call(Object2);
|
|
739
739
|
var oldDash = root._;
|
|
740
740
|
var reIsNative = RegExp2("^" + funcToString.call(hasOwnProperty).replace(reRegExpChar, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$");
|
|
741
|
-
var Buffer2 = moduleExports ? context.Buffer : undefined2, Symbol2 = context.Symbol,
|
|
741
|
+
var Buffer2 = moduleExports ? context.Buffer : undefined2, Symbol2 = context.Symbol, Uint8Array = context.Uint8Array, allocUnsafe = Buffer2 ? Buffer2.allocUnsafe : undefined2, getPrototype = overArg(Object2.getPrototypeOf, Object2), objectCreate = Object2.create, propertyIsEnumerable = objectProto.propertyIsEnumerable, splice = arrayProto.splice, spreadableSymbol = Symbol2 ? Symbol2.isConcatSpreadable : undefined2, symIterator = Symbol2 ? Symbol2.iterator : undefined2, symToStringTag = Symbol2 ? Symbol2.toStringTag : undefined2;
|
|
742
742
|
var defineProperty = function() {
|
|
743
743
|
try {
|
|
744
744
|
var func = getNative(Object2, "defineProperty");
|
|
@@ -1204,7 +1204,7 @@ var require_lodash = __commonJS((exports2, module2) => {
|
|
|
1204
1204
|
if (typeof func != "function") {
|
|
1205
1205
|
throw new TypeError2(FUNC_ERROR_TEXT);
|
|
1206
1206
|
}
|
|
1207
|
-
return
|
|
1207
|
+
return setTimeout(function() {
|
|
1208
1208
|
func.apply(undefined2, args);
|
|
1209
1209
|
}, wait);
|
|
1210
1210
|
}
|
|
@@ -1996,7 +1996,7 @@ var require_lodash = __commonJS((exports2, module2) => {
|
|
|
1996
1996
|
}
|
|
1997
1997
|
function cloneArrayBuffer(arrayBuffer) {
|
|
1998
1998
|
var result2 = new arrayBuffer.constructor(arrayBuffer.byteLength);
|
|
1999
|
-
new
|
|
1999
|
+
new Uint8Array(result2).set(new Uint8Array(arrayBuffer));
|
|
2000
2000
|
return result2;
|
|
2001
2001
|
}
|
|
2002
2002
|
function cloneDataView(dataView, isDeep) {
|
|
@@ -2578,7 +2578,7 @@ var require_lodash = __commonJS((exports2, module2) => {
|
|
|
2578
2578
|
object = object.buffer;
|
|
2579
2579
|
other = other.buffer;
|
|
2580
2580
|
case arrayBufferTag:
|
|
2581
|
-
if (object.byteLength != other.byteLength || !equalFunc(new
|
|
2581
|
+
if (object.byteLength != other.byteLength || !equalFunc(new Uint8Array(object), new Uint8Array(other))) {
|
|
2582
2582
|
return false;
|
|
2583
2583
|
}
|
|
2584
2584
|
return true;
|
|
@@ -3013,7 +3013,7 @@ var require_lodash = __commonJS((exports2, module2) => {
|
|
|
3013
3013
|
return object[key];
|
|
3014
3014
|
}
|
|
3015
3015
|
var setData = shortOut(baseSetData);
|
|
3016
|
-
var
|
|
3016
|
+
var setTimeout = ctxSetTimeout || function(func, wait) {
|
|
3017
3017
|
return root.setTimeout(func, wait);
|
|
3018
3018
|
};
|
|
3019
3019
|
var setToString = shortOut(baseSetToString);
|
|
@@ -3803,7 +3803,7 @@ var require_lodash = __commonJS((exports2, module2) => {
|
|
|
3803
3803
|
}
|
|
3804
3804
|
function leadingEdge(time) {
|
|
3805
3805
|
lastInvokeTime = time;
|
|
3806
|
-
timerId =
|
|
3806
|
+
timerId = setTimeout(timerExpired, wait);
|
|
3807
3807
|
return leading ? invokeFunc(time) : result2;
|
|
3808
3808
|
}
|
|
3809
3809
|
function remainingWait(time) {
|
|
@@ -3819,7 +3819,7 @@ var require_lodash = __commonJS((exports2, module2) => {
|
|
|
3819
3819
|
if (shouldInvoke(time)) {
|
|
3820
3820
|
return trailingEdge(time);
|
|
3821
3821
|
}
|
|
3822
|
-
timerId =
|
|
3822
|
+
timerId = setTimeout(timerExpired, remainingWait(time));
|
|
3823
3823
|
}
|
|
3824
3824
|
function trailingEdge(time) {
|
|
3825
3825
|
timerId = undefined2;
|
|
@@ -3850,12 +3850,12 @@ var require_lodash = __commonJS((exports2, module2) => {
|
|
|
3850
3850
|
}
|
|
3851
3851
|
if (maxing) {
|
|
3852
3852
|
clearTimeout(timerId);
|
|
3853
|
-
timerId =
|
|
3853
|
+
timerId = setTimeout(timerExpired, wait);
|
|
3854
3854
|
return invokeFunc(lastCallTime);
|
|
3855
3855
|
}
|
|
3856
3856
|
}
|
|
3857
3857
|
if (timerId === undefined2) {
|
|
3858
|
-
timerId =
|
|
3858
|
+
timerId = setTimeout(timerExpired, wait);
|
|
3859
3859
|
}
|
|
3860
3860
|
return result2;
|
|
3861
3861
|
}
|
|
@@ -4062,7 +4062,7 @@ var require_lodash = __commonJS((exports2, module2) => {
|
|
|
4062
4062
|
var tag = baseGetTag(value);
|
|
4063
4063
|
return tag == errorTag || tag == domExcTag || typeof value.message == "string" && typeof value.name == "string" && !isPlainObject(value);
|
|
4064
4064
|
}
|
|
4065
|
-
function
|
|
4065
|
+
function isFinite(value) {
|
|
4066
4066
|
return typeof value == "number" && nativeIsFinite(value);
|
|
4067
4067
|
}
|
|
4068
4068
|
function isFunction(value) {
|
|
@@ -4093,7 +4093,7 @@ var require_lodash = __commonJS((exports2, module2) => {
|
|
|
4093
4093
|
customizer = typeof customizer == "function" ? customizer : undefined2;
|
|
4094
4094
|
return baseIsMatch(object, source, getMatchData(source), customizer);
|
|
4095
4095
|
}
|
|
4096
|
-
function
|
|
4096
|
+
function isNaN(value) {
|
|
4097
4097
|
return isNumber(value) && value != +value;
|
|
4098
4098
|
}
|
|
4099
4099
|
function isNative(value) {
|
|
@@ -4752,7 +4752,7 @@ __p += '`;
|
|
|
4752
4752
|
}
|
|
4753
4753
|
return result2 + omission;
|
|
4754
4754
|
}
|
|
4755
|
-
function
|
|
4755
|
+
function unescape(string) {
|
|
4756
4756
|
string = toString(string);
|
|
4757
4757
|
return string && reHasEscapedHtml.test(string) ? string.replace(reEscapedHtml, unescapeHtmlChar) : string;
|
|
4758
4758
|
}
|
|
@@ -5176,14 +5176,14 @@ __p += '`;
|
|
|
5176
5176
|
lodash.isEqual = isEqual;
|
|
5177
5177
|
lodash.isEqualWith = isEqualWith;
|
|
5178
5178
|
lodash.isError = isError;
|
|
5179
|
-
lodash.isFinite =
|
|
5179
|
+
lodash.isFinite = isFinite;
|
|
5180
5180
|
lodash.isFunction = isFunction;
|
|
5181
5181
|
lodash.isInteger = isInteger;
|
|
5182
5182
|
lodash.isLength = isLength;
|
|
5183
5183
|
lodash.isMap = isMap;
|
|
5184
5184
|
lodash.isMatch = isMatch;
|
|
5185
5185
|
lodash.isMatchWith = isMatchWith;
|
|
5186
|
-
lodash.isNaN =
|
|
5186
|
+
lodash.isNaN = isNaN;
|
|
5187
5187
|
lodash.isNative = isNative;
|
|
5188
5188
|
lodash.isNil = isNil;
|
|
5189
5189
|
lodash.isNull = isNull;
|
|
@@ -5265,7 +5265,7 @@ __p += '`;
|
|
|
5265
5265
|
lodash.trimEnd = trimEnd;
|
|
5266
5266
|
lodash.trimStart = trimStart;
|
|
5267
5267
|
lodash.truncate = truncate;
|
|
5268
|
-
lodash.unescape =
|
|
5268
|
+
lodash.unescape = unescape;
|
|
5269
5269
|
lodash.uniqueId = uniqueId;
|
|
5270
5270
|
lodash.upperCase = upperCase;
|
|
5271
5271
|
lodash.upperFirst = upperFirst;
|
|
@@ -5460,7 +5460,6 @@ __p += '`;
|
|
|
5460
5460
|
var exports_node = {};
|
|
5461
5461
|
__export(exports_node, {
|
|
5462
5462
|
z: () => exports_external,
|
|
5463
|
-
watch: () => watch,
|
|
5464
5463
|
void: () => voidType,
|
|
5465
5464
|
util: () => util,
|
|
5466
5465
|
uploadFile: () => uploadFile,
|
|
@@ -5469,36 +5468,26 @@ __export(exports_node, {
|
|
|
5469
5468
|
undefined: () => undefinedType,
|
|
5470
5469
|
tuple: () => tupleType,
|
|
5471
5470
|
transformer: () => effectsType,
|
|
5472
|
-
toString: () => toString,
|
|
5473
5471
|
symbol: () => symbolType,
|
|
5474
5472
|
string: () => stringType,
|
|
5475
5473
|
strictObject: () => strictObjectType,
|
|
5476
|
-
shuffleArray: () => shuffleArray,
|
|
5477
5474
|
setErrorMap: () => setErrorMap,
|
|
5475
|
+
setCookie: () => setCookie,
|
|
5478
5476
|
set: () => setType,
|
|
5479
5477
|
sendMail: () => sendMail,
|
|
5480
5478
|
schedule: () => schedule,
|
|
5481
|
-
retryPromise: () => retryPromise,
|
|
5482
5479
|
replaceContentInFile: () => replaceContentInFile,
|
|
5483
|
-
replaceByVariables: () => replaceByVariables,
|
|
5484
|
-
replaceByRules: () => replaceByRules,
|
|
5485
|
-
replaceAll: () => replaceAll,
|
|
5486
|
-
removeSimilarDuplicates: () => removeSimilarDuplicates,
|
|
5487
5480
|
record: () => recordType,
|
|
5488
5481
|
quotelessJson: () => quotelessJson,
|
|
5489
5482
|
promise: () => promiseType,
|
|
5490
|
-
printConsoleLog: () => printConsoleLog,
|
|
5491
5483
|
preprocess: () => preprocessType,
|
|
5492
5484
|
pipeline: () => pipelineType,
|
|
5493
|
-
performDecimalOperation: () => performDecimalOperation,
|
|
5494
5485
|
ostring: () => ostring,
|
|
5495
|
-
optionsToEnum: () => optionsToEnum,
|
|
5496
5486
|
optional: () => optionalType,
|
|
5497
5487
|
onumber: () => onumber,
|
|
5498
5488
|
oboolean: () => oboolean,
|
|
5499
5489
|
objectUtil: () => objectUtil,
|
|
5500
5490
|
object: () => objectType,
|
|
5501
|
-
numberWithCommas: () => numberWithCommas,
|
|
5502
5491
|
number: () => numberType,
|
|
5503
5492
|
nullable: () => nullableType,
|
|
5504
5493
|
null: () => nullType,
|
|
@@ -5508,16 +5497,10 @@ __export(exports_node, {
|
|
|
5508
5497
|
map: () => mapType,
|
|
5509
5498
|
makeIssue: () => makeIssue,
|
|
5510
5499
|
literal: () => literalType,
|
|
5511
|
-
limitDecimals: () => limitDecimals,
|
|
5512
|
-
levenshteinDistance: () => levenshteinDistance,
|
|
5513
5500
|
lazy: () => lazyType,
|
|
5514
5501
|
late: () => late,
|
|
5515
|
-
keling: () => exports_keling,
|
|
5516
|
-
jsonParse: () => jsonParse,
|
|
5517
5502
|
json5: () => import_json52.default,
|
|
5518
|
-
isValidNumber: () => isValidNumber,
|
|
5519
5503
|
isValid: () => isValid,
|
|
5520
|
-
isJson: () => isJson,
|
|
5521
5504
|
isDirty: () => isDirty,
|
|
5522
5505
|
isAsync: () => isAsync,
|
|
5523
5506
|
isAborted: () => isAborted,
|
|
@@ -5526,33 +5509,15 @@ __export(exports_node, {
|
|
|
5526
5509
|
instanceof: () => instanceOfType,
|
|
5527
5510
|
initChinaDayjs: () => initChinaDayjs,
|
|
5528
5511
|
imageToBase64: () => imageToBase64,
|
|
5529
|
-
|
|
5530
|
-
getTotal: () => getTotal,
|
|
5531
|
-
getStrLength: () => getStrLength,
|
|
5532
|
-
getSliceStr: () => getSliceStr,
|
|
5533
|
-
getRandomString: () => getRandomString,
|
|
5534
|
-
getRandomNum: () => getRandomNum,
|
|
5535
|
-
getRandomColor: () => getRandomColor,
|
|
5536
|
-
getProxyUrl: () => getProxyUrl,
|
|
5512
|
+
getVideoStatus: () => getVideoStatus,
|
|
5537
5513
|
getParsedType: () => getParsedType,
|
|
5538
|
-
getLength: () => getLength,
|
|
5539
|
-
getFileSize: () => getFileSize,
|
|
5540
5514
|
getErrorMap: () => getErrorMap,
|
|
5541
|
-
|
|
5542
|
-
getChineseByStr: () => getChineseByStr,
|
|
5543
|
-
getChinese: () => getChinese,
|
|
5544
|
-
generateUniqueFileName: () => generateUniqueFileName,
|
|
5545
|
-
generateAlphabetArray: () => generateAlphabetArray,
|
|
5515
|
+
generateVideo: () => generateVideo,
|
|
5546
5516
|
function: () => functionType,
|
|
5547
|
-
findItem: () => findItem,
|
|
5548
|
-
filterParams: () => filterParams,
|
|
5549
|
-
executePromise: () => executePromise,
|
|
5550
5517
|
enum: () => enumType,
|
|
5551
5518
|
effect: () => effectsType,
|
|
5552
5519
|
downloadFile: () => downloadFile,
|
|
5553
|
-
doubao: () => exports_doubao2,
|
|
5554
5520
|
discriminatedUnion: () => discriminatedUnionType,
|
|
5555
|
-
delay: () => delay,
|
|
5556
5521
|
defaultErrorMap: () => en_default,
|
|
5557
5522
|
dayjs: () => dayjs_default,
|
|
5558
5523
|
datetimeRegex: () => datetimeRegex,
|
|
@@ -5562,14 +5527,12 @@ __export(exports_node, {
|
|
|
5562
5527
|
coerce: () => coerce,
|
|
5563
5528
|
chinaDayjs: () => chinaDayjs,
|
|
5564
5529
|
cheerio: () => cheerio,
|
|
5565
|
-
|
|
5530
|
+
chat: () => chat,
|
|
5566
5531
|
boolean: () => booleanType,
|
|
5567
5532
|
bigint: () => bigIntType,
|
|
5568
|
-
axios: () =>
|
|
5533
|
+
axios: () => import_axios9.default,
|
|
5569
5534
|
array: () => arrayType,
|
|
5570
5535
|
any: () => anyType,
|
|
5571
|
-
amount: () => amount,
|
|
5572
|
-
ai302: () => exports_302,
|
|
5573
5536
|
addIssueToContext: () => addIssueToContext,
|
|
5574
5537
|
_: () => import_lodash.default,
|
|
5575
5538
|
ZodVoid: () => ZodVoid,
|
|
@@ -5633,7 +5596,7 @@ module.exports = __toCommonJS(exports_node);
|
|
|
5633
5596
|
var import_nedb = __toESM(require("nedb"));
|
|
5634
5597
|
var cheerio = __toESM(require("cheerio"));
|
|
5635
5598
|
var import_lodash = __toESM(require_lodash());
|
|
5636
|
-
var
|
|
5599
|
+
var import_axios9 = __toESM(require("axios"));
|
|
5637
5600
|
var import_json52 = __toESM(require("json5"));
|
|
5638
5601
|
var import_consola = __toESM(require("consola"));
|
|
5639
5602
|
|
|
@@ -9610,14 +9573,6 @@ var coerce = {
|
|
|
9610
9573
|
date: (arg) => ZodDate.create({ ...arg, coerce: true })
|
|
9611
9574
|
};
|
|
9612
9575
|
var NEVER = INVALID;
|
|
9613
|
-
// src/common/ai/302/index.ts
|
|
9614
|
-
var exports_302 = {};
|
|
9615
|
-
__export(exports_302, {
|
|
9616
|
-
image: () => exports_image,
|
|
9617
|
-
chat: () => chat,
|
|
9618
|
-
audio: () => exports_audio
|
|
9619
|
-
});
|
|
9620
|
-
|
|
9621
9576
|
// src/common/ai/302/axios.ts
|
|
9622
9577
|
var import_axios = __toESM(require("axios"));
|
|
9623
9578
|
var key = process.env.AI_302_KEY || process.env.NEXT_PUBLIC_AI_302_KEY;
|
|
@@ -9641,7 +9596,7 @@ var chat = async (message, model = "gpt-4.1", isParse = true) => {
|
|
|
9641
9596
|
message
|
|
9642
9597
|
}
|
|
9643
9598
|
});
|
|
9644
|
-
console.log(666,
|
|
9599
|
+
console.log(666, typeof data, data);
|
|
9645
9600
|
const output = typeof data === "string" ? import_json5.default.parse(data)?.output : data?.output;
|
|
9646
9601
|
if (isParse) {
|
|
9647
9602
|
const match = /```(json)?(.*)```/s.exec(output);
|
|
@@ -9653,423 +9608,16 @@ var chat = async (message, model = "gpt-4.1", isParse = true) => {
|
|
|
9653
9608
|
}
|
|
9654
9609
|
return output;
|
|
9655
9610
|
} catch (error) {
|
|
9656
|
-
|
|
9657
|
-
const message2 = responseData?.error?.message_cn || responseData?.error?.message || responseData?.message || error?.response?.statusText || error?.message || "未知原因";
|
|
9658
|
-
throw new Error(message2);
|
|
9659
|
-
}
|
|
9660
|
-
};
|
|
9661
|
-
// src/common/ai/302/audio/index.ts
|
|
9662
|
-
var exports_audio = {};
|
|
9663
|
-
__export(exports_audio, {
|
|
9664
|
-
tts: () => exports_tts,
|
|
9665
|
-
doubao: () => exports_doubao
|
|
9666
|
-
});
|
|
9667
|
-
|
|
9668
|
-
// src/common/ai/302/audio/tts.ts
|
|
9669
|
-
var exports_tts = {};
|
|
9670
|
-
__export(exports_tts, {
|
|
9671
|
-
textToSpeech: () => textToSpeech,
|
|
9672
|
-
fetchTask: () => fetchTask,
|
|
9673
|
-
fetchProviders: () => fetchProviders
|
|
9674
|
-
});
|
|
9675
|
-
var fetchProviders = async () => {
|
|
9676
|
-
try {
|
|
9677
|
-
const { data } = await axios({
|
|
9678
|
-
url: "/302/tts/provider",
|
|
9679
|
-
method: "get"
|
|
9680
|
-
});
|
|
9681
|
-
return data;
|
|
9682
|
-
} catch (error) {
|
|
9683
|
-
throw error;
|
|
9684
|
-
}
|
|
9685
|
-
};
|
|
9686
|
-
var textToSpeech = async (request) => {
|
|
9687
|
-
try {
|
|
9688
|
-
const { webhook, run_async, ...body } = request;
|
|
9689
|
-
const { data } = await axios({
|
|
9690
|
-
url: "/302/v2/audio/tts",
|
|
9691
|
-
method: "post",
|
|
9692
|
-
params: {
|
|
9693
|
-
webhook,
|
|
9694
|
-
run_async
|
|
9695
|
-
},
|
|
9696
|
-
data: {
|
|
9697
|
-
...body,
|
|
9698
|
-
speed: body.speed ?? 1,
|
|
9699
|
-
volume: body.volume ?? 1,
|
|
9700
|
-
timeout: body.timeout ?? 180
|
|
9701
|
-
}
|
|
9702
|
-
});
|
|
9703
|
-
return data;
|
|
9704
|
-
} catch (error) {
|
|
9705
|
-
throw error;
|
|
9706
|
-
}
|
|
9707
|
-
};
|
|
9708
|
-
var fetchTask = async (taskId) => {
|
|
9709
|
-
if (!taskId) {
|
|
9710
|
-
throw new Error("taskId 不能为空");
|
|
9711
|
-
}
|
|
9712
|
-
try {
|
|
9713
|
-
const { data } = await axios({
|
|
9714
|
-
url: `/302/v2/audio/fetch/${encodeURIComponent(taskId)}`,
|
|
9715
|
-
method: "get"
|
|
9716
|
-
});
|
|
9717
|
-
return data;
|
|
9718
|
-
} catch (error) {
|
|
9719
|
-
throw error;
|
|
9720
|
-
}
|
|
9721
|
-
};
|
|
9722
|
-
// src/common/ai/302/audio/doubao.ts
|
|
9723
|
-
var exports_doubao = {};
|
|
9724
|
-
__export(exports_doubao, {
|
|
9725
|
-
ttsHd: () => ttsHd
|
|
9726
|
-
});
|
|
9727
|
-
var createReqid = () => {
|
|
9728
|
-
if (typeof crypto !== "undefined" && typeof crypto.randomUUID === "function") {
|
|
9729
|
-
return crypto.randomUUID();
|
|
9730
|
-
}
|
|
9731
|
-
return `${Date.now()}-${Math.random().toString(16).slice(2)}`;
|
|
9732
|
-
};
|
|
9733
|
-
var getUtf8ByteLength = (value) => {
|
|
9734
|
-
return new TextEncoder().encode(value).length;
|
|
9735
|
-
};
|
|
9736
|
-
var assertNonEmptyString = (value, label) => {
|
|
9737
|
-
if (typeof value !== "string" || !value.trim()) {
|
|
9738
|
-
throw new Error(`${label} 不能为空`);
|
|
9739
|
-
}
|
|
9740
|
-
};
|
|
9741
|
-
var assertSpeedRatio = (value) => {
|
|
9742
|
-
if (value === undefined)
|
|
9743
|
-
return;
|
|
9744
|
-
if (typeof value !== "number" || !Number.isFinite(value)) {
|
|
9745
|
-
throw new Error("speed_ratio 必须为数字");
|
|
9746
|
-
}
|
|
9747
|
-
if (value < 0.8 || value > 2) {
|
|
9748
|
-
throw new Error("speed_ratio 取值范围为 [0.8, 2]");
|
|
9749
|
-
}
|
|
9750
|
-
};
|
|
9751
|
-
var ttsHd = async (payload) => {
|
|
9752
|
-
const { audio, request } = payload;
|
|
9753
|
-
const { voice_type, encoding, speed_ratio } = audio;
|
|
9754
|
-
const { text, reqid: rawReqid, operation } = request;
|
|
9755
|
-
assertNonEmptyString(voice_type, "voice_type");
|
|
9756
|
-
assertNonEmptyString(text, "text");
|
|
9757
|
-
assertSpeedRatio(speed_ratio);
|
|
9758
|
-
const textByteLength = getUtf8ByteLength(text);
|
|
9759
|
-
if (textByteLength > 1024) {
|
|
9760
|
-
throw new Error(`text 超出长度限制:${textByteLength}/1024 字节`);
|
|
9761
|
-
}
|
|
9762
|
-
const reqid = rawReqid?.trim() || createReqid();
|
|
9763
|
-
const { data } = await axios({
|
|
9764
|
-
url: "/doubao/tts_hd",
|
|
9765
|
-
method: "post",
|
|
9766
|
-
data: {
|
|
9767
|
-
audio: {
|
|
9768
|
-
voice_type,
|
|
9769
|
-
encoding: encoding ?? "pcm",
|
|
9770
|
-
speed_ratio: speed_ratio ?? 1
|
|
9771
|
-
},
|
|
9772
|
-
request: {
|
|
9773
|
-
reqid,
|
|
9774
|
-
text,
|
|
9775
|
-
operation: operation ?? "query"
|
|
9776
|
-
}
|
|
9777
|
-
}
|
|
9778
|
-
});
|
|
9779
|
-
return data;
|
|
9780
|
-
};
|
|
9781
|
-
// src/common/ai/302/image/index.ts
|
|
9782
|
-
var exports_image = {};
|
|
9783
|
-
__export(exports_image, {
|
|
9784
|
-
midjourney: () => exports_midjourney,
|
|
9785
|
-
gpt: () => exports_gpt
|
|
9786
|
-
});
|
|
9787
|
-
|
|
9788
|
-
// src/common/ai/302/image/midjourney.ts
|
|
9789
|
-
var exports_midjourney = {};
|
|
9790
|
-
__export(exports_midjourney, {
|
|
9791
|
-
getImageStatus: () => getImageStatus,
|
|
9792
|
-
generateImage: () => generateImage
|
|
9793
|
-
});
|
|
9794
|
-
var generateImage = async (prompt, base64Array) => {
|
|
9795
|
-
try {
|
|
9796
|
-
const { data } = await axios({
|
|
9797
|
-
url: "/mj/submit/imagine",
|
|
9798
|
-
method: "post",
|
|
9799
|
-
data: {
|
|
9800
|
-
prompt,
|
|
9801
|
-
base64Array,
|
|
9802
|
-
botType: "MID_JOURNEY",
|
|
9803
|
-
notifyHook: "",
|
|
9804
|
-
state: ""
|
|
9805
|
-
}
|
|
9806
|
-
});
|
|
9807
|
-
return data;
|
|
9808
|
-
} catch (error) {
|
|
9809
|
-
throw error;
|
|
9810
|
-
}
|
|
9811
|
-
};
|
|
9812
|
-
var getImageStatus = async (taskId) => {
|
|
9813
|
-
try {
|
|
9814
|
-
const { data } = await axios({
|
|
9815
|
-
url: `/mj/task/${taskId}/fetch`,
|
|
9816
|
-
method: "get"
|
|
9817
|
-
});
|
|
9818
|
-
return data;
|
|
9819
|
-
} catch (error) {
|
|
9820
|
-
throw error;
|
|
9821
|
-
}
|
|
9822
|
-
};
|
|
9823
|
-
// src/common/ai/302/image/gpt.ts
|
|
9824
|
-
var exports_gpt = {};
|
|
9825
|
-
__export(exports_gpt, {
|
|
9826
|
-
generateImage: () => generateImage2
|
|
9827
|
-
});
|
|
9828
|
-
var generateImage2 = async (params) => {
|
|
9829
|
-
if (params.model === "gpt-4o-plus") {
|
|
9830
|
-
const { data: data2 } = await axios.post("/v1/chat/completions", {
|
|
9831
|
-
model: params.model,
|
|
9832
|
-
messages: [{ role: "user", content: params.prompt }]
|
|
9833
|
-
});
|
|
9834
|
-
const content = data2?.choices?.[0]?.message?.content || "";
|
|
9835
|
-
const urlMatch = content.match(/!\[.*?\]\((.*?)\)/) || content.match(/(https?:\/\/[^\s]+)/);
|
|
9836
|
-
const url = urlMatch ? urlMatch[1] : content;
|
|
9837
|
-
return {
|
|
9838
|
-
background: "",
|
|
9839
|
-
created: data2.created,
|
|
9840
|
-
data: [{ url }],
|
|
9841
|
-
output_format: "",
|
|
9842
|
-
quality: "",
|
|
9843
|
-
size: "",
|
|
9844
|
-
usage: {
|
|
9845
|
-
input_tokens: data2.usage?.prompt_tokens || 0,
|
|
9846
|
-
input_tokens_details: {
|
|
9847
|
-
image_tokens: data2.usage?.prompt_tokens_details?.image_tokens || 0,
|
|
9848
|
-
text_tokens: data2.usage?.prompt_tokens_details?.text_tokens || 0
|
|
9849
|
-
},
|
|
9850
|
-
output_tokens: data2.usage?.completion_tokens || 0,
|
|
9851
|
-
output_tokens_details: {
|
|
9852
|
-
image_tokens: data2.usage?.completion_tokens_details?.image_tokens || 0,
|
|
9853
|
-
text_tokens: data2.usage?.completion_tokens_details?.content_tokens || 0
|
|
9854
|
-
},
|
|
9855
|
-
total_tokens: data2.usage?.total_tokens || 0
|
|
9856
|
-
}
|
|
9857
|
-
};
|
|
9858
|
-
}
|
|
9859
|
-
const { data } = await axios.post("/v1/images/generations", params);
|
|
9860
|
-
return data;
|
|
9861
|
-
};
|
|
9862
|
-
// src/common/ai/doubao/index.ts
|
|
9863
|
-
var exports_doubao2 = {};
|
|
9864
|
-
__export(exports_doubao2, {
|
|
9865
|
-
vc: () => vc,
|
|
9866
|
-
tts: () => tts
|
|
9867
|
-
});
|
|
9868
|
-
|
|
9869
|
-
// src/common/ai/doubao/tts.ts
|
|
9870
|
-
var import_axios7 = __toESM(require("axios"));
|
|
9871
|
-
var createReqid2 = () => {
|
|
9872
|
-
if (typeof crypto !== "undefined" && typeof crypto.randomUUID === "function") {
|
|
9873
|
-
return crypto.randomUUID();
|
|
9874
|
-
}
|
|
9875
|
-
return `${Date.now()}-${Math.random().toString(16).slice(2)}`;
|
|
9876
|
-
};
|
|
9877
|
-
var decodeBase64ToArrayBuffer = (value) => {
|
|
9878
|
-
if (typeof window !== "undefined" && typeof window.atob === "function") {
|
|
9879
|
-
const binary = window.atob(value);
|
|
9880
|
-
const bytes = new Uint8Array(binary.length);
|
|
9881
|
-
for (let i = 0;i < binary.length; i++) {
|
|
9882
|
-
bytes[i] = binary.charCodeAt(i);
|
|
9883
|
-
}
|
|
9884
|
-
return bytes.buffer;
|
|
9885
|
-
}
|
|
9886
|
-
const buf = Buffer.from(value, "base64");
|
|
9887
|
-
return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);
|
|
9888
|
-
};
|
|
9889
|
-
var tts = async (params) => {
|
|
9890
|
-
const { app, user, audio, request } = params;
|
|
9891
|
-
const url = "https://openspeech.bytedance.com/api/v3/tts/unidirectional";
|
|
9892
|
-
const reqid = request.reqid || createReqid2();
|
|
9893
|
-
const speechRate = audio.speed_ratio ? Math.round((audio.speed_ratio - 1) * 100) : 0;
|
|
9894
|
-
const loudnessRate = audio.volume_ratio ? Math.round((audio.volume_ratio - 1) * 100) : 0;
|
|
9895
|
-
const headers = {
|
|
9896
|
-
"X-Api-App-Id": app.appid || "",
|
|
9897
|
-
"X-Api-Access-Key": app.accessToken || "",
|
|
9898
|
-
"Content-Type": "application/json",
|
|
9899
|
-
"X-Api-Resource-Id": app.resourceId || "seed-tts-2.0",
|
|
9900
|
-
"X-Api-Request-Id": reqid
|
|
9901
|
-
};
|
|
9902
|
-
const payload = {
|
|
9903
|
-
user: {
|
|
9904
|
-
uid: user?.uid || "uid"
|
|
9905
|
-
},
|
|
9906
|
-
req_params: {
|
|
9907
|
-
text: request.text,
|
|
9908
|
-
speaker: audio.voice_type,
|
|
9909
|
-
audio_params: {
|
|
9910
|
-
format: audio.encoding || "pcm",
|
|
9911
|
-
sample_rate: 24000,
|
|
9912
|
-
speech_rate: speechRate,
|
|
9913
|
-
loudness_rate: loudnessRate,
|
|
9914
|
-
emotion: audio.emotion,
|
|
9915
|
-
emotion_scale: audio.emotion_scale
|
|
9916
|
-
}
|
|
9917
|
-
}
|
|
9918
|
-
};
|
|
9919
|
-
if (audio.context_texts) {
|
|
9920
|
-
payload.req_params.additions = JSON.stringify({
|
|
9921
|
-
context_texts: audio.context_texts
|
|
9922
|
-
});
|
|
9923
|
-
}
|
|
9924
|
-
try {
|
|
9925
|
-
const response = await import_axios7.default.post(url, payload, {
|
|
9926
|
-
headers,
|
|
9927
|
-
responseType: "arraybuffer"
|
|
9928
|
-
});
|
|
9929
|
-
const responseText = new TextDecoder().decode(response.data);
|
|
9930
|
-
const jsonObjects = [];
|
|
9931
|
-
let depth = 0;
|
|
9932
|
-
let start = 0;
|
|
9933
|
-
for (let i = 0;i < responseText.length; i++) {
|
|
9934
|
-
if (responseText[i] === "{") {
|
|
9935
|
-
if (depth === 0)
|
|
9936
|
-
start = i;
|
|
9937
|
-
depth++;
|
|
9938
|
-
} else if (responseText[i] === "}") {
|
|
9939
|
-
depth--;
|
|
9940
|
-
if (depth === 0) {
|
|
9941
|
-
try {
|
|
9942
|
-
const jsonStr = responseText.substring(start, i + 1);
|
|
9943
|
-
const jsonObj = JSON.parse(jsonStr);
|
|
9944
|
-
jsonObjects.push(jsonObj);
|
|
9945
|
-
} catch (e) {
|
|
9946
|
-
console.warn("Failed to parse JSON chunk", e);
|
|
9947
|
-
}
|
|
9948
|
-
}
|
|
9949
|
-
}
|
|
9950
|
-
}
|
|
9951
|
-
if (jsonObjects.length === 0) {
|
|
9952
|
-
try {
|
|
9953
|
-
jsonObjects.push(JSON.parse(responseText));
|
|
9954
|
-
} catch (e) {
|
|
9955
|
-
console.error("Doubao TTS Response Parse Error:", responseText);
|
|
9956
|
-
throw new Error("Invalid response format");
|
|
9957
|
-
}
|
|
9958
|
-
}
|
|
9959
|
-
const audioChunks = [];
|
|
9960
|
-
let totalLength = 0;
|
|
9961
|
-
for (const data of jsonObjects) {
|
|
9962
|
-
const code = data.code;
|
|
9963
|
-
const message = data.message;
|
|
9964
|
-
if (typeof code === "number" && code !== 0 && code !== 20000000) {
|
|
9965
|
-
console.error("Doubao TTS Error Response:", JSON.stringify(data, null, 2));
|
|
9966
|
-
const err = new Error(`豆包语音合成失败: ${message} (code: ${code})`);
|
|
9967
|
-
err.code = code;
|
|
9968
|
-
err.reqid = data.reqid;
|
|
9969
|
-
throw err;
|
|
9970
|
-
}
|
|
9971
|
-
if (data.data) {
|
|
9972
|
-
const chunkBuffer = decodeBase64ToArrayBuffer(data.data);
|
|
9973
|
-
audioChunks.push(chunkBuffer);
|
|
9974
|
-
totalLength += chunkBuffer.byteLength;
|
|
9975
|
-
}
|
|
9976
|
-
}
|
|
9977
|
-
if (totalLength === 0) {
|
|
9978
|
-
throw new Error("豆包语音合成失败:未返回音频数据");
|
|
9979
|
-
}
|
|
9980
|
-
const resultBuffer = new Uint8Array(totalLength);
|
|
9981
|
-
let offset = 0;
|
|
9982
|
-
for (const chunk of audioChunks) {
|
|
9983
|
-
resultBuffer.set(new Uint8Array(chunk), offset);
|
|
9984
|
-
offset += chunk.byteLength;
|
|
9985
|
-
}
|
|
9986
|
-
return resultBuffer.buffer;
|
|
9987
|
-
} catch (error) {
|
|
9988
|
-
if (error.response) {
|
|
9989
|
-
try {
|
|
9990
|
-
let errorData = error.response.data;
|
|
9991
|
-
if (errorData instanceof ArrayBuffer || typeof Buffer !== "undefined" && Buffer.isBuffer(errorData)) {
|
|
9992
|
-
errorData = new TextDecoder().decode(errorData);
|
|
9993
|
-
} else if (typeof errorData === "object") {
|
|
9994
|
-
errorData = JSON.stringify(errorData);
|
|
9995
|
-
}
|
|
9996
|
-
throw new Error(`Doubao TTS Error: ${error.response.status} - ${errorData}`);
|
|
9997
|
-
} catch (e) {
|
|
9998
|
-
if (e.message && e.message.startsWith("Doubao TTS Error")) {
|
|
9999
|
-
throw e;
|
|
10000
|
-
}
|
|
10001
|
-
throw new Error(`Doubao TTS Error: ${error.response.status} ${error.message}`);
|
|
10002
|
-
}
|
|
10003
|
-
}
|
|
10004
|
-
throw error;
|
|
10005
|
-
}
|
|
10006
|
-
};
|
|
10007
|
-
// src/common/ai/doubao/vc.ts
|
|
10008
|
-
var import_axios8 = __toESM(require("axios"));
|
|
10009
|
-
var getHeaders = (accessToken, contentType) => {
|
|
10010
|
-
const headers = {
|
|
10011
|
-
Authorization: `Bearer; ${accessToken}`
|
|
10012
|
-
};
|
|
10013
|
-
if (contentType) {
|
|
10014
|
-
headers["content-type"] = contentType;
|
|
10015
|
-
}
|
|
10016
|
-
return headers;
|
|
10017
|
-
};
|
|
10018
|
-
var handleResponse = (data) => {
|
|
10019
|
-
if (data instanceof ArrayBuffer) {
|
|
10020
|
-
return data;
|
|
10021
|
-
}
|
|
10022
|
-
if (typeof Buffer !== "undefined" && Buffer.isBuffer(data)) {
|
|
10023
|
-
return data.buffer.slice(data.byteOffset, data.byteOffset + data.byteLength);
|
|
10024
|
-
}
|
|
10025
|
-
return data;
|
|
10026
|
-
};
|
|
10027
|
-
var vc = {
|
|
10028
|
-
submit: async (params) => {
|
|
10029
|
-
const { app, audio, options = {} } = params;
|
|
10030
|
-
const url = new URL("https://openspeech.bytedance.com/api/v1/vc/submit");
|
|
10031
|
-
url.searchParams.set("appid", app.appid);
|
|
10032
|
-
Object.entries(options).forEach(([key2, value]) => {
|
|
10033
|
-
if (value !== undefined && value !== null) {
|
|
10034
|
-
url.searchParams.set(key2, String(value));
|
|
10035
|
-
}
|
|
10036
|
-
});
|
|
10037
|
-
const response = await import_axios8.default.post(url.toString(), audio.data, {
|
|
10038
|
-
headers: getHeaders(app.accessToken, audio.contentType || "audio/wav"),
|
|
10039
|
-
responseType: "arraybuffer"
|
|
10040
|
-
});
|
|
10041
|
-
return handleResponse(response.data);
|
|
10042
|
-
},
|
|
10043
|
-
query: async (params) => {
|
|
10044
|
-
const { app, id, blocking } = params;
|
|
10045
|
-
const url = new URL("https://openspeech.bytedance.com/api/v1/vc/query");
|
|
10046
|
-
url.searchParams.set("appid", app.appid);
|
|
10047
|
-
url.searchParams.set("id", id);
|
|
10048
|
-
if (blocking !== undefined) {
|
|
10049
|
-
url.searchParams.set("blocking", String(blocking));
|
|
10050
|
-
}
|
|
10051
|
-
const response = await import_axios8.default.get(url.toString(), {
|
|
10052
|
-
headers: getHeaders(app.accessToken),
|
|
10053
|
-
responseType: "arraybuffer"
|
|
10054
|
-
});
|
|
10055
|
-
return handleResponse(response.data);
|
|
9611
|
+
throw new Error(error?.response?.statusText || error?.message || "未知原因");
|
|
10056
9612
|
}
|
|
10057
9613
|
};
|
|
10058
|
-
// src/common/ai/keling/index.ts
|
|
10059
|
-
var exports_keling = {};
|
|
10060
|
-
__export(exports_keling, {
|
|
10061
|
-
setCookie: () => setCookie,
|
|
10062
|
-
getVideoStatus: () => getVideoStatus,
|
|
10063
|
-
generateVideo: () => generateVideo
|
|
10064
|
-
});
|
|
10065
|
-
|
|
10066
9614
|
// src/common/ai/keling/utils.ts
|
|
10067
9615
|
var url = __toESM(require("url"));
|
|
10068
9616
|
var path = __toESM(require("path"));
|
|
10069
9617
|
|
|
10070
9618
|
// src/common/ai/keling/axios.ts
|
|
10071
|
-
var
|
|
10072
|
-
var
|
|
9619
|
+
var import_axios3 = __toESM(require("axios"));
|
|
9620
|
+
var axios2 = import_axios3.default.create({
|
|
10073
9621
|
headers: {
|
|
10074
9622
|
"Content-Type": "application/json",
|
|
10075
9623
|
Cookie: "weblogger_did=web_52354269549862D; did=web_d22eeae73f6e4c74a76a4cc98e3a1188a5b0; anonymous-message-release-notice-1=true; anonymous-message-release-notice-2=true; dev-center-view-welcome-dialog-key=true; userId=2904283585; welcome-future-partner-key=true; old-user-time=1731936878621; kuaishou.ai.portal_st=ChVrdWFpc2hvdS5haS5wb3J0YWwuc3QSoAFuUNTARKNKXARahOJhWZ4iVBl2mIANSUfk2nCSr85bxCg2lrpE3PHj2Kn_kjPW0_KV8DfZS6UnNam4i6gaYeBmxRwOVAldYysCz7YtlsosEZRuiTe2iY7Ziq5SZeAP7jhTg8lxk7gvC-bEELmAc8HSrqN5HLWeU4GUFcEq-ChV7qsodJ8m42oBuvkFgX1qytVTIROpSS4cMmEiBhB3h99EGhLGi0v_iyPMOr2JVXM8LPzBvxQiIJrnuzAheyLtkeb55iZOUgZoAzXjYj0U1e4mLSonbXBGKAUwAQ; kuaishou.ai.portal_ph=2669d9adaa5c0629ac1053ab87e6c123880a"
|
|
@@ -10079,7 +9627,7 @@ var axios4 = import_axios9.default.create({
|
|
|
10079
9627
|
// src/common/ai/keling/utils.ts
|
|
10080
9628
|
var getToken = async (filename) => {
|
|
10081
9629
|
try {
|
|
10082
|
-
const response = await
|
|
9630
|
+
const response = await axios2.get("https://klingai.kuaishou.com/api/upload/issue/token", {
|
|
10083
9631
|
params: { filename }
|
|
10084
9632
|
});
|
|
10085
9633
|
return response.data.data.token;
|
|
@@ -10090,7 +9638,7 @@ var getToken = async (filename) => {
|
|
|
10090
9638
|
};
|
|
10091
9639
|
var uploadFragment = async (uploadToken, imageBuffer) => {
|
|
10092
9640
|
try {
|
|
10093
|
-
const response = await
|
|
9641
|
+
const response = await axios2.post("https://upload.kuaishouzt.com/api/upload/fragment", imageBuffer, {
|
|
10094
9642
|
params: {
|
|
10095
9643
|
upload_token: uploadToken,
|
|
10096
9644
|
fragment_id: 0
|
|
@@ -10107,7 +9655,7 @@ var uploadFragment = async (uploadToken, imageBuffer) => {
|
|
|
10107
9655
|
};
|
|
10108
9656
|
var completeUpload = async (uploadToken) => {
|
|
10109
9657
|
try {
|
|
10110
|
-
const response = await
|
|
9658
|
+
const response = await axios2.post("https://upload.kuaishouzt.com/api/upload/complete", null, {
|
|
10111
9659
|
params: {
|
|
10112
9660
|
upload_token: uploadToken,
|
|
10113
9661
|
fragment_count: 1
|
|
@@ -10121,7 +9669,7 @@ var completeUpload = async (uploadToken) => {
|
|
|
10121
9669
|
};
|
|
10122
9670
|
var verifyUpload = async (token) => {
|
|
10123
9671
|
try {
|
|
10124
|
-
const response = await
|
|
9672
|
+
const response = await axios2.get("https://klingai.kuaishou.com/api/upload/verify/token", {
|
|
10125
9673
|
params: { token }
|
|
10126
9674
|
});
|
|
10127
9675
|
if (response.data?.result === 1 && response.data?.data?.status === 3) {
|
|
@@ -10136,7 +9684,7 @@ var verifyUpload = async (token) => {
|
|
|
10136
9684
|
};
|
|
10137
9685
|
var downloadImage = async (imageUrl) => {
|
|
10138
9686
|
try {
|
|
10139
|
-
const response = await
|
|
9687
|
+
const response = await axios2.get(imageUrl, {
|
|
10140
9688
|
responseType: "arraybuffer"
|
|
10141
9689
|
});
|
|
10142
9690
|
return Buffer.from(response.data, "binary");
|
|
@@ -10216,7 +9764,7 @@ var sbumit = async (imageUrl, prompt) => {
|
|
|
10216
9764
|
],
|
|
10217
9765
|
type: "m2v_img2video_hq"
|
|
10218
9766
|
});
|
|
10219
|
-
const response = await
|
|
9767
|
+
const response = await axios2({
|
|
10220
9768
|
method: "POST",
|
|
10221
9769
|
url: "https://klingai.kuaishou.com/api/task/submit",
|
|
10222
9770
|
data
|
|
@@ -10246,7 +9794,7 @@ var calculateProgress = (taskData) => {
|
|
|
10246
9794
|
return progressRatio;
|
|
10247
9795
|
};
|
|
10248
9796
|
var setCookie = (newCookieValue) => {
|
|
10249
|
-
|
|
9797
|
+
axios2.defaults.headers.Cookie = newCookieValue;
|
|
10250
9798
|
};
|
|
10251
9799
|
|
|
10252
9800
|
// src/common/ai/keling/index.ts
|
|
@@ -10255,7 +9803,7 @@ var getVideoStatus = async (taskId) => {
|
|
|
10255
9803
|
return;
|
|
10256
9804
|
}
|
|
10257
9805
|
try {
|
|
10258
|
-
const response = await
|
|
9806
|
+
const response = await axios2.get("https://klingai.kuaishou.com/api/task/status", {
|
|
10259
9807
|
params: { taskId }
|
|
10260
9808
|
});
|
|
10261
9809
|
return {
|
|
@@ -10276,2816 +9824,137 @@ var generateVideo = async (imageUrl, prompt) => {
|
|
|
10276
9824
|
console.log(666, "任务 id", taskId);
|
|
10277
9825
|
return taskId;
|
|
10278
9826
|
};
|
|
10279
|
-
// src/common/
|
|
10280
|
-
var
|
|
10281
|
-
|
|
10282
|
-
|
|
10283
|
-
|
|
10284
|
-
|
|
10285
|
-
|
|
10286
|
-
|
|
10287
|
-
|
|
10288
|
-
|
|
10289
|
-
|
|
10290
|
-
|
|
10291
|
-
if (!value) {
|
|
10292
|
-
return 0;
|
|
9827
|
+
// src/common/image.ts
|
|
9828
|
+
var import_axios6 = __toESM(require("axios"));
|
|
9829
|
+
async function imageToBase64(url2) {
|
|
9830
|
+
try {
|
|
9831
|
+
const response = await import_axios6.default.get(url2, {
|
|
9832
|
+
responseType: "arraybuffer"
|
|
9833
|
+
});
|
|
9834
|
+
const base64String = Buffer.from(response.data).toString("base64");
|
|
9835
|
+
return `data:image/*;base64,${base64String}`;
|
|
9836
|
+
} catch (error) {
|
|
9837
|
+
console.error("Failed to fetch the image:", error);
|
|
9838
|
+
throw error;
|
|
10293
9839
|
}
|
|
10294
|
-
|
|
10295
|
-
|
|
10296
|
-
|
|
10297
|
-
|
|
10298
|
-
|
|
10299
|
-
|
|
9840
|
+
}
|
|
9841
|
+
// src/common/enum.ts
|
|
9842
|
+
class EnumItem {
|
|
9843
|
+
label;
|
|
9844
|
+
value;
|
|
9845
|
+
extra;
|
|
9846
|
+
constructor(config) {
|
|
9847
|
+
this.value = config.value;
|
|
9848
|
+
this.label = config.label;
|
|
9849
|
+
this.extra = config.extra;
|
|
10300
9850
|
}
|
|
10301
|
-
|
|
10302
|
-
|
|
10303
|
-
|
|
9851
|
+
}
|
|
9852
|
+
var Enum = {
|
|
9853
|
+
create: (members) => {
|
|
9854
|
+
const usedValues = new Set;
|
|
9855
|
+
const enumObj = {};
|
|
9856
|
+
const map = new Map;
|
|
9857
|
+
const options = [];
|
|
9858
|
+
const extras = new Map;
|
|
9859
|
+
const labels = new Map;
|
|
9860
|
+
const enums = {};
|
|
9861
|
+
for (const key2 in members) {
|
|
9862
|
+
const member = members[key2];
|
|
9863
|
+
if (!member)
|
|
9864
|
+
continue;
|
|
9865
|
+
if (usedValues.has(member.value)) {
|
|
9866
|
+
throw new Error(`Duplicate enum value detected: ${member.value}`);
|
|
9867
|
+
}
|
|
9868
|
+
usedValues.add(member.value);
|
|
9869
|
+
const item = new EnumItem(member);
|
|
9870
|
+
enumObj[key2] = item;
|
|
9871
|
+
map.set(item.value, item);
|
|
9872
|
+
labels.set(item.value, item.label);
|
|
9873
|
+
options.push(item);
|
|
9874
|
+
enums[item.value] = { text: item.label, status: item.extra?.status };
|
|
9875
|
+
if (member.extra !== undefined) {
|
|
9876
|
+
extras.set(item.value, { ...member.extra });
|
|
9877
|
+
}
|
|
9878
|
+
}
|
|
9879
|
+
enumObj.map = map;
|
|
9880
|
+
enumObj.options = options;
|
|
9881
|
+
enumObj.extras = extras;
|
|
9882
|
+
enumObj.source = members;
|
|
9883
|
+
enumObj.labels = labels;
|
|
9884
|
+
enumObj.enums = enums;
|
|
9885
|
+
return enumObj;
|
|
10304
9886
|
}
|
|
10305
|
-
return replaceAll(str, searchValue, replaceValue);
|
|
10306
9887
|
};
|
|
10307
|
-
|
|
10308
|
-
|
|
10309
|
-
|
|
9888
|
+
// src/common/dayjs.ts
|
|
9889
|
+
var import_dayjs = __toESM(require("dayjs"));
|
|
9890
|
+
var import_isBetween = __toESM(require("dayjs/plugin/isBetween"));
|
|
9891
|
+
var import_weekday = __toESM(require("dayjs/plugin/weekday"));
|
|
9892
|
+
var import_localeData = __toESM(require("dayjs/plugin/localeData"));
|
|
9893
|
+
var import_isoWeek = __toESM(require("dayjs/plugin/isoWeek"));
|
|
9894
|
+
var import_updateLocale = __toESM(require("dayjs/plugin/updateLocale"));
|
|
9895
|
+
var import_timezone = __toESM(require("dayjs/plugin/timezone"));
|
|
9896
|
+
var import_isSameOrAfter = __toESM(require("dayjs/plugin/isSameOrAfter"));
|
|
9897
|
+
var import_isSameOrBefore = __toESM(require("dayjs/plugin/isSameOrBefore"));
|
|
9898
|
+
var import_utc = __toESM(require("dayjs/plugin/utc"));
|
|
9899
|
+
var import_zh_cn = require("dayjs/locale/zh-cn");
|
|
9900
|
+
var import_dayjs2 = require("dayjs");
|
|
9901
|
+
import_dayjs.default.extend(import_utc.default);
|
|
9902
|
+
import_dayjs.default.extend(import_isBetween.default);
|
|
9903
|
+
import_dayjs.default.extend(import_weekday.default);
|
|
9904
|
+
import_dayjs.default.extend(import_localeData.default);
|
|
9905
|
+
import_dayjs.default.extend(import_isoWeek.default);
|
|
9906
|
+
import_dayjs.default.extend(import_updateLocale.default);
|
|
9907
|
+
import_dayjs.default.extend(import_timezone.default);
|
|
9908
|
+
import_dayjs.default.extend(import_isSameOrAfter.default);
|
|
9909
|
+
import_dayjs.default.extend(import_isSameOrBefore.default);
|
|
9910
|
+
var Timezone;
|
|
9911
|
+
((Timezone2) => {
|
|
9912
|
+
Timezone2["AsiaShanghai"] = "Asia/Shanghai";
|
|
9913
|
+
Timezone2["AsiaTokyo"] = "Asia/Tokyo";
|
|
9914
|
+
Timezone2["AmericaNewYork"] = "America/New_York";
|
|
9915
|
+
Timezone2["EuropeLondon"] = "Europe/London";
|
|
9916
|
+
Timezone2["EuropeBerlin"] = "Europe/Berlin";
|
|
9917
|
+
})(Timezone ||= {});
|
|
9918
|
+
var initChinaDayjs = () => {
|
|
9919
|
+
import_dayjs.default.locale("zh-cn");
|
|
9920
|
+
import_dayjs.default.tz.setDefault("Asia/Shanghai" /* AsiaShanghai */);
|
|
9921
|
+
import_dayjs.default.updateLocale("zh-cn", {
|
|
9922
|
+
weekStart: 1
|
|
10310
9923
|
});
|
|
10311
|
-
return
|
|
9924
|
+
return import_dayjs.default;
|
|
10312
9925
|
};
|
|
10313
|
-
var
|
|
10314
|
-
|
|
10315
|
-
|
|
9926
|
+
var chinaDayjs = initChinaDayjs();
|
|
9927
|
+
var dayjs_default = import_dayjs.default;
|
|
9928
|
+
// src/node/mail.ts
|
|
9929
|
+
var import_nodemailer = __toESM(require("nodemailer"));
|
|
9930
|
+
var authMap = {
|
|
9931
|
+
163: {
|
|
9932
|
+
user: "15835196981@163.com",
|
|
9933
|
+
pass: "KPTVCFBMRXJVTCGW"
|
|
9934
|
+
},
|
|
9935
|
+
gmail: {
|
|
9936
|
+
user: "wangzhenzhen2023@gmail.com",
|
|
9937
|
+
pass: "lkxtorbpdyrjjxjq"
|
|
10316
9938
|
}
|
|
10317
|
-
const regex = /\{\{\s*(\w+)\s*\}\}/g;
|
|
10318
|
-
return prompt.replace(regex, (match, p1) => {
|
|
10319
|
-
return variables[p1] ?? match;
|
|
10320
|
-
});
|
|
10321
|
-
};
|
|
10322
|
-
var getType = (value) => {
|
|
10323
|
-
return Object.prototype.toString.call(value).slice(8, -1);
|
|
10324
9939
|
};
|
|
10325
|
-
var
|
|
10326
|
-
|
|
10327
|
-
|
|
9940
|
+
var transporter = import_nodemailer.default.createTransport({
|
|
9941
|
+
host: "smtp.gmail.com",
|
|
9942
|
+
port: 465,
|
|
9943
|
+
secure: true,
|
|
9944
|
+
auth: authMap.gmail
|
|
9945
|
+
});
|
|
9946
|
+
var sendMail = (config) => {
|
|
9947
|
+
return transporter.sendMail({
|
|
9948
|
+
from: authMap.gmail.user,
|
|
9949
|
+
...config
|
|
9950
|
+
});
|
|
10328
9951
|
};
|
|
10329
|
-
|
|
10330
|
-
|
|
10331
|
-
|
|
10332
|
-
|
|
10333
|
-
|
|
10334
|
-
|
|
10335
|
-
} catch (err) {
|
|
10336
|
-
return {};
|
|
10337
|
-
}
|
|
10338
|
-
};
|
|
10339
|
-
var isJson = (str) => {
|
|
10340
|
-
try {
|
|
10341
|
-
if (getType(JSON.parse(str)) === "Object") {
|
|
10342
|
-
return true;
|
|
10343
|
-
}
|
|
10344
|
-
} catch (e) {}
|
|
10345
|
-
return false;
|
|
10346
|
-
};
|
|
10347
|
-
var toString = (value) => {
|
|
10348
|
-
return Object.prototype.toString.call(value).slice(8, -1) === "object" ? JSON.stringify(value) : String(value);
|
|
10349
|
-
};
|
|
10350
|
-
var getRandomColor = () => {
|
|
10351
|
-
const color = Math.floor(Math.random() * 16777215).toString(16);
|
|
10352
|
-
if (color.length === 6) {
|
|
10353
|
-
return color;
|
|
10354
|
-
} else {
|
|
10355
|
-
return getRandomColor();
|
|
10356
|
-
}
|
|
10357
|
-
};
|
|
10358
|
-
var getRandomString = (length = 4) => {
|
|
10359
|
-
return Math.random().toString(36).substr(2, length);
|
|
10360
|
-
};
|
|
10361
|
-
var getChinese = (str) => {
|
|
10362
|
-
if (str == null || str === "") {
|
|
10363
|
-
return "";
|
|
10364
|
-
}
|
|
10365
|
-
const res = str.match(/[\u4e00-\u9fa5]/g);
|
|
10366
|
-
if (!res) {
|
|
10367
|
-
return "";
|
|
10368
|
-
}
|
|
10369
|
-
return res.join("");
|
|
10370
|
-
};
|
|
10371
|
-
var getSliceStr = (str, before, after) => {
|
|
10372
|
-
return str.slice(str.indexOf(before) + before.length, str.lastIndexOf(after));
|
|
10373
|
-
};
|
|
10374
|
-
var getProxyUrl = (url2) => {
|
|
10375
|
-
const beforeUrl = "https://1141871752167714.cn-hangzhou.fc.aliyuncs.com/2016-08-15/proxy/a.LATEST/proxy/?url=";
|
|
10376
|
-
return beforeUrl + url2;
|
|
10377
|
-
};
|
|
10378
|
-
var getLength = (value) => {
|
|
10379
|
-
const chineseLength = getChinese(value).length;
|
|
10380
|
-
return value.length - chineseLength + chineseLength * 2;
|
|
10381
|
-
};
|
|
10382
|
-
var getCookie = (name) => {
|
|
10383
|
-
const reg = new RegExp(`(^| )${name}=([^;]*)(;|$)`);
|
|
10384
|
-
const arr = document.cookie.match(reg);
|
|
10385
|
-
return arr ? unescape(arr[2]) : null;
|
|
10386
|
-
};
|
|
10387
|
-
var generateAlphabetArray = (n) => {
|
|
10388
|
-
return Array.from({ length: n }, (_, i) => String.fromCharCode(97 + i));
|
|
10389
|
-
};
|
|
10390
|
-
var levenshteinDistance = (a, b) => {
|
|
10391
|
-
const matrix = [];
|
|
10392
|
-
for (let i = 0;i <= b.length; i++) {
|
|
10393
|
-
matrix[i] = [i];
|
|
10394
|
-
}
|
|
10395
|
-
for (let j = 0;j <= a.length; j++) {
|
|
10396
|
-
matrix[0][j] = j;
|
|
10397
|
-
}
|
|
10398
|
-
for (let i = 1;i <= b.length; i++) {
|
|
10399
|
-
for (let j = 1;j <= a.length; j++) {
|
|
10400
|
-
if (b[i - 1] === a[j - 1]) {
|
|
10401
|
-
matrix[i][j] = matrix[i - 1][j - 1];
|
|
10402
|
-
} else {
|
|
10403
|
-
matrix[i][j] = Math.min(matrix[i - 1][j - 1] + 1, matrix[i][j - 1] + 1, matrix[i - 1][j] + 1);
|
|
10404
|
-
}
|
|
10405
|
-
}
|
|
10406
|
-
}
|
|
10407
|
-
return matrix[b.length][a.length];
|
|
10408
|
-
};
|
|
10409
|
-
var generateUniqueFileName = (name) => {
|
|
10410
|
-
const match = name.match(/^(.*?)(\.[^.]*$|$)/);
|
|
10411
|
-
if (match) {
|
|
10412
|
-
const namePart = match[1];
|
|
10413
|
-
const extensionPart = match[2];
|
|
10414
|
-
if (extensionPart) {
|
|
10415
|
-
return `${namePart}_${Date.now()}${extensionPart}`;
|
|
10416
|
-
} else {
|
|
10417
|
-
return `${namePart}_${Date.now()}.dat`;
|
|
10418
|
-
}
|
|
10419
|
-
}
|
|
10420
|
-
throw new Error("Invalid filename format.");
|
|
10421
|
-
};
|
|
10422
|
-
|
|
10423
|
-
// ../../node_modules/decimal.js/decimal.mjs
|
|
10424
|
-
/*!
|
|
10425
|
-
* decimal.js v10.6.0
|
|
10426
|
-
* An arbitrary-precision Decimal type for JavaScript.
|
|
10427
|
-
* https://github.com/MikeMcl/decimal.js
|
|
10428
|
-
* Copyright (c) 2025 Michael Mclaughlin <M8ch88l@gmail.com>
|
|
10429
|
-
* MIT Licence
|
|
10430
|
-
*/
|
|
10431
|
-
var EXP_LIMIT = 9000000000000000;
|
|
10432
|
-
var MAX_DIGITS = 1e9;
|
|
10433
|
-
var NUMERALS = "0123456789abcdef";
|
|
10434
|
-
var LN10 = "2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058";
|
|
10435
|
-
var PI = "3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789";
|
|
10436
|
-
var DEFAULTS = {
|
|
10437
|
-
precision: 20,
|
|
10438
|
-
rounding: 4,
|
|
10439
|
-
modulo: 1,
|
|
10440
|
-
toExpNeg: -7,
|
|
10441
|
-
toExpPos: 21,
|
|
10442
|
-
minE: -EXP_LIMIT,
|
|
10443
|
-
maxE: EXP_LIMIT,
|
|
10444
|
-
crypto: false
|
|
10445
|
-
};
|
|
10446
|
-
var inexact;
|
|
10447
|
-
var quadrant;
|
|
10448
|
-
var external2 = true;
|
|
10449
|
-
var decimalError = "[DecimalError] ";
|
|
10450
|
-
var invalidArgument = decimalError + "Invalid argument: ";
|
|
10451
|
-
var precisionLimitExceeded = decimalError + "Precision limit exceeded";
|
|
10452
|
-
var cryptoUnavailable = decimalError + "crypto unavailable";
|
|
10453
|
-
var tag = "[object Decimal]";
|
|
10454
|
-
var mathfloor = Math.floor;
|
|
10455
|
-
var mathpow = Math.pow;
|
|
10456
|
-
var isBinary = /^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i;
|
|
10457
|
-
var isHex = /^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i;
|
|
10458
|
-
var isOctal = /^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i;
|
|
10459
|
-
var isDecimal = /^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i;
|
|
10460
|
-
var BASE = 1e7;
|
|
10461
|
-
var LOG_BASE = 7;
|
|
10462
|
-
var MAX_SAFE_INTEGER = 9007199254740991;
|
|
10463
|
-
var LN10_PRECISION = LN10.length - 1;
|
|
10464
|
-
var PI_PRECISION = PI.length - 1;
|
|
10465
|
-
var P = { toStringTag: tag };
|
|
10466
|
-
P.absoluteValue = P.abs = function() {
|
|
10467
|
-
var x = new this.constructor(this);
|
|
10468
|
-
if (x.s < 0)
|
|
10469
|
-
x.s = 1;
|
|
10470
|
-
return finalise(x);
|
|
10471
|
-
};
|
|
10472
|
-
P.ceil = function() {
|
|
10473
|
-
return finalise(new this.constructor(this), this.e + 1, 2);
|
|
10474
|
-
};
|
|
10475
|
-
P.clampedTo = P.clamp = function(min, max) {
|
|
10476
|
-
var k, x = this, Ctor = x.constructor;
|
|
10477
|
-
min = new Ctor(min);
|
|
10478
|
-
max = new Ctor(max);
|
|
10479
|
-
if (!min.s || !max.s)
|
|
10480
|
-
return new Ctor(NaN);
|
|
10481
|
-
if (min.gt(max))
|
|
10482
|
-
throw Error(invalidArgument + max);
|
|
10483
|
-
k = x.cmp(min);
|
|
10484
|
-
return k < 0 ? min : x.cmp(max) > 0 ? max : new Ctor(x);
|
|
10485
|
-
};
|
|
10486
|
-
P.comparedTo = P.cmp = function(y) {
|
|
10487
|
-
var i, j, xdL, ydL, x = this, xd = x.d, yd = (y = new x.constructor(y)).d, xs = x.s, ys = y.s;
|
|
10488
|
-
if (!xd || !yd) {
|
|
10489
|
-
return !xs || !ys ? NaN : xs !== ys ? xs : xd === yd ? 0 : !xd ^ xs < 0 ? 1 : -1;
|
|
10490
|
-
}
|
|
10491
|
-
if (!xd[0] || !yd[0])
|
|
10492
|
-
return xd[0] ? xs : yd[0] ? -ys : 0;
|
|
10493
|
-
if (xs !== ys)
|
|
10494
|
-
return xs;
|
|
10495
|
-
if (x.e !== y.e)
|
|
10496
|
-
return x.e > y.e ^ xs < 0 ? 1 : -1;
|
|
10497
|
-
xdL = xd.length;
|
|
10498
|
-
ydL = yd.length;
|
|
10499
|
-
for (i = 0, j = xdL < ydL ? xdL : ydL;i < j; ++i) {
|
|
10500
|
-
if (xd[i] !== yd[i])
|
|
10501
|
-
return xd[i] > yd[i] ^ xs < 0 ? 1 : -1;
|
|
10502
|
-
}
|
|
10503
|
-
return xdL === ydL ? 0 : xdL > ydL ^ xs < 0 ? 1 : -1;
|
|
10504
|
-
};
|
|
10505
|
-
P.cosine = P.cos = function() {
|
|
10506
|
-
var pr, rm, x = this, Ctor = x.constructor;
|
|
10507
|
-
if (!x.d)
|
|
10508
|
-
return new Ctor(NaN);
|
|
10509
|
-
if (!x.d[0])
|
|
10510
|
-
return new Ctor(1);
|
|
10511
|
-
pr = Ctor.precision;
|
|
10512
|
-
rm = Ctor.rounding;
|
|
10513
|
-
Ctor.precision = pr + Math.max(x.e, x.sd()) + LOG_BASE;
|
|
10514
|
-
Ctor.rounding = 1;
|
|
10515
|
-
x = cosine(Ctor, toLessThanHalfPi(Ctor, x));
|
|
10516
|
-
Ctor.precision = pr;
|
|
10517
|
-
Ctor.rounding = rm;
|
|
10518
|
-
return finalise(quadrant == 2 || quadrant == 3 ? x.neg() : x, pr, rm, true);
|
|
10519
|
-
};
|
|
10520
|
-
P.cubeRoot = P.cbrt = function() {
|
|
10521
|
-
var e, m, n, r, rep, s, sd, t, t3, t3plusx, x = this, Ctor = x.constructor;
|
|
10522
|
-
if (!x.isFinite() || x.isZero())
|
|
10523
|
-
return new Ctor(x);
|
|
10524
|
-
external2 = false;
|
|
10525
|
-
s = x.s * mathpow(x.s * x, 1 / 3);
|
|
10526
|
-
if (!s || Math.abs(s) == 1 / 0) {
|
|
10527
|
-
n = digitsToString(x.d);
|
|
10528
|
-
e = x.e;
|
|
10529
|
-
if (s = (e - n.length + 1) % 3)
|
|
10530
|
-
n += s == 1 || s == -2 ? "0" : "00";
|
|
10531
|
-
s = mathpow(n, 1 / 3);
|
|
10532
|
-
e = mathfloor((e + 1) / 3) - (e % 3 == (e < 0 ? -1 : 2));
|
|
10533
|
-
if (s == 1 / 0) {
|
|
10534
|
-
n = "5e" + e;
|
|
10535
|
-
} else {
|
|
10536
|
-
n = s.toExponential();
|
|
10537
|
-
n = n.slice(0, n.indexOf("e") + 1) + e;
|
|
10538
|
-
}
|
|
10539
|
-
r = new Ctor(n);
|
|
10540
|
-
r.s = x.s;
|
|
10541
|
-
} else {
|
|
10542
|
-
r = new Ctor(s.toString());
|
|
10543
|
-
}
|
|
10544
|
-
sd = (e = Ctor.precision) + 3;
|
|
10545
|
-
for (;; ) {
|
|
10546
|
-
t = r;
|
|
10547
|
-
t3 = t.times(t).times(t);
|
|
10548
|
-
t3plusx = t3.plus(x);
|
|
10549
|
-
r = divide(t3plusx.plus(x).times(t), t3plusx.plus(t3), sd + 2, 1);
|
|
10550
|
-
if (digitsToString(t.d).slice(0, sd) === (n = digitsToString(r.d)).slice(0, sd)) {
|
|
10551
|
-
n = n.slice(sd - 3, sd + 1);
|
|
10552
|
-
if (n == "9999" || !rep && n == "4999") {
|
|
10553
|
-
if (!rep) {
|
|
10554
|
-
finalise(t, e + 1, 0);
|
|
10555
|
-
if (t.times(t).times(t).eq(x)) {
|
|
10556
|
-
r = t;
|
|
10557
|
-
break;
|
|
10558
|
-
}
|
|
10559
|
-
}
|
|
10560
|
-
sd += 4;
|
|
10561
|
-
rep = 1;
|
|
10562
|
-
} else {
|
|
10563
|
-
if (!+n || !+n.slice(1) && n.charAt(0) == "5") {
|
|
10564
|
-
finalise(r, e + 1, 1);
|
|
10565
|
-
m = !r.times(r).times(r).eq(x);
|
|
10566
|
-
}
|
|
10567
|
-
break;
|
|
10568
|
-
}
|
|
10569
|
-
}
|
|
10570
|
-
}
|
|
10571
|
-
external2 = true;
|
|
10572
|
-
return finalise(r, e, Ctor.rounding, m);
|
|
10573
|
-
};
|
|
10574
|
-
P.decimalPlaces = P.dp = function() {
|
|
10575
|
-
var w, d = this.d, n = NaN;
|
|
10576
|
-
if (d) {
|
|
10577
|
-
w = d.length - 1;
|
|
10578
|
-
n = (w - mathfloor(this.e / LOG_BASE)) * LOG_BASE;
|
|
10579
|
-
w = d[w];
|
|
10580
|
-
if (w)
|
|
10581
|
-
for (;w % 10 == 0; w /= 10)
|
|
10582
|
-
n--;
|
|
10583
|
-
if (n < 0)
|
|
10584
|
-
n = 0;
|
|
10585
|
-
}
|
|
10586
|
-
return n;
|
|
10587
|
-
};
|
|
10588
|
-
P.dividedBy = P.div = function(y) {
|
|
10589
|
-
return divide(this, new this.constructor(y));
|
|
10590
|
-
};
|
|
10591
|
-
P.dividedToIntegerBy = P.divToInt = function(y) {
|
|
10592
|
-
var x = this, Ctor = x.constructor;
|
|
10593
|
-
return finalise(divide(x, new Ctor(y), 0, 1, 1), Ctor.precision, Ctor.rounding);
|
|
10594
|
-
};
|
|
10595
|
-
P.equals = P.eq = function(y) {
|
|
10596
|
-
return this.cmp(y) === 0;
|
|
10597
|
-
};
|
|
10598
|
-
P.floor = function() {
|
|
10599
|
-
return finalise(new this.constructor(this), this.e + 1, 3);
|
|
10600
|
-
};
|
|
10601
|
-
P.greaterThan = P.gt = function(y) {
|
|
10602
|
-
return this.cmp(y) > 0;
|
|
10603
|
-
};
|
|
10604
|
-
P.greaterThanOrEqualTo = P.gte = function(y) {
|
|
10605
|
-
var k = this.cmp(y);
|
|
10606
|
-
return k == 1 || k === 0;
|
|
10607
|
-
};
|
|
10608
|
-
P.hyperbolicCosine = P.cosh = function() {
|
|
10609
|
-
var k, n, pr, rm, len, x = this, Ctor = x.constructor, one = new Ctor(1);
|
|
10610
|
-
if (!x.isFinite())
|
|
10611
|
-
return new Ctor(x.s ? 1 / 0 : NaN);
|
|
10612
|
-
if (x.isZero())
|
|
10613
|
-
return one;
|
|
10614
|
-
pr = Ctor.precision;
|
|
10615
|
-
rm = Ctor.rounding;
|
|
10616
|
-
Ctor.precision = pr + Math.max(x.e, x.sd()) + 4;
|
|
10617
|
-
Ctor.rounding = 1;
|
|
10618
|
-
len = x.d.length;
|
|
10619
|
-
if (len < 32) {
|
|
10620
|
-
k = Math.ceil(len / 3);
|
|
10621
|
-
n = (1 / tinyPow(4, k)).toString();
|
|
10622
|
-
} else {
|
|
10623
|
-
k = 16;
|
|
10624
|
-
n = "2.3283064365386962890625e-10";
|
|
10625
|
-
}
|
|
10626
|
-
x = taylorSeries(Ctor, 1, x.times(n), new Ctor(1), true);
|
|
10627
|
-
var cosh2_x, i = k, d8 = new Ctor(8);
|
|
10628
|
-
for (;i--; ) {
|
|
10629
|
-
cosh2_x = x.times(x);
|
|
10630
|
-
x = one.minus(cosh2_x.times(d8.minus(cosh2_x.times(d8))));
|
|
10631
|
-
}
|
|
10632
|
-
return finalise(x, Ctor.precision = pr, Ctor.rounding = rm, true);
|
|
10633
|
-
};
|
|
10634
|
-
P.hyperbolicSine = P.sinh = function() {
|
|
10635
|
-
var k, pr, rm, len, x = this, Ctor = x.constructor;
|
|
10636
|
-
if (!x.isFinite() || x.isZero())
|
|
10637
|
-
return new Ctor(x);
|
|
10638
|
-
pr = Ctor.precision;
|
|
10639
|
-
rm = Ctor.rounding;
|
|
10640
|
-
Ctor.precision = pr + Math.max(x.e, x.sd()) + 4;
|
|
10641
|
-
Ctor.rounding = 1;
|
|
10642
|
-
len = x.d.length;
|
|
10643
|
-
if (len < 3) {
|
|
10644
|
-
x = taylorSeries(Ctor, 2, x, x, true);
|
|
10645
|
-
} else {
|
|
10646
|
-
k = 1.4 * Math.sqrt(len);
|
|
10647
|
-
k = k > 16 ? 16 : k | 0;
|
|
10648
|
-
x = x.times(1 / tinyPow(5, k));
|
|
10649
|
-
x = taylorSeries(Ctor, 2, x, x, true);
|
|
10650
|
-
var sinh2_x, d5 = new Ctor(5), d16 = new Ctor(16), d20 = new Ctor(20);
|
|
10651
|
-
for (;k--; ) {
|
|
10652
|
-
sinh2_x = x.times(x);
|
|
10653
|
-
x = x.times(d5.plus(sinh2_x.times(d16.times(sinh2_x).plus(d20))));
|
|
10654
|
-
}
|
|
10655
|
-
}
|
|
10656
|
-
Ctor.precision = pr;
|
|
10657
|
-
Ctor.rounding = rm;
|
|
10658
|
-
return finalise(x, pr, rm, true);
|
|
10659
|
-
};
|
|
10660
|
-
P.hyperbolicTangent = P.tanh = function() {
|
|
10661
|
-
var pr, rm, x = this, Ctor = x.constructor;
|
|
10662
|
-
if (!x.isFinite())
|
|
10663
|
-
return new Ctor(x.s);
|
|
10664
|
-
if (x.isZero())
|
|
10665
|
-
return new Ctor(x);
|
|
10666
|
-
pr = Ctor.precision;
|
|
10667
|
-
rm = Ctor.rounding;
|
|
10668
|
-
Ctor.precision = pr + 7;
|
|
10669
|
-
Ctor.rounding = 1;
|
|
10670
|
-
return divide(x.sinh(), x.cosh(), Ctor.precision = pr, Ctor.rounding = rm);
|
|
10671
|
-
};
|
|
10672
|
-
P.inverseCosine = P.acos = function() {
|
|
10673
|
-
var x = this, Ctor = x.constructor, k = x.abs().cmp(1), pr = Ctor.precision, rm = Ctor.rounding;
|
|
10674
|
-
if (k !== -1) {
|
|
10675
|
-
return k === 0 ? x.isNeg() ? getPi(Ctor, pr, rm) : new Ctor(0) : new Ctor(NaN);
|
|
10676
|
-
}
|
|
10677
|
-
if (x.isZero())
|
|
10678
|
-
return getPi(Ctor, pr + 4, rm).times(0.5);
|
|
10679
|
-
Ctor.precision = pr + 6;
|
|
10680
|
-
Ctor.rounding = 1;
|
|
10681
|
-
x = new Ctor(1).minus(x).div(x.plus(1)).sqrt().atan();
|
|
10682
|
-
Ctor.precision = pr;
|
|
10683
|
-
Ctor.rounding = rm;
|
|
10684
|
-
return x.times(2);
|
|
10685
|
-
};
|
|
10686
|
-
P.inverseHyperbolicCosine = P.acosh = function() {
|
|
10687
|
-
var pr, rm, x = this, Ctor = x.constructor;
|
|
10688
|
-
if (x.lte(1))
|
|
10689
|
-
return new Ctor(x.eq(1) ? 0 : NaN);
|
|
10690
|
-
if (!x.isFinite())
|
|
10691
|
-
return new Ctor(x);
|
|
10692
|
-
pr = Ctor.precision;
|
|
10693
|
-
rm = Ctor.rounding;
|
|
10694
|
-
Ctor.precision = pr + Math.max(Math.abs(x.e), x.sd()) + 4;
|
|
10695
|
-
Ctor.rounding = 1;
|
|
10696
|
-
external2 = false;
|
|
10697
|
-
x = x.times(x).minus(1).sqrt().plus(x);
|
|
10698
|
-
external2 = true;
|
|
10699
|
-
Ctor.precision = pr;
|
|
10700
|
-
Ctor.rounding = rm;
|
|
10701
|
-
return x.ln();
|
|
10702
|
-
};
|
|
10703
|
-
P.inverseHyperbolicSine = P.asinh = function() {
|
|
10704
|
-
var pr, rm, x = this, Ctor = x.constructor;
|
|
10705
|
-
if (!x.isFinite() || x.isZero())
|
|
10706
|
-
return new Ctor(x);
|
|
10707
|
-
pr = Ctor.precision;
|
|
10708
|
-
rm = Ctor.rounding;
|
|
10709
|
-
Ctor.precision = pr + 2 * Math.max(Math.abs(x.e), x.sd()) + 6;
|
|
10710
|
-
Ctor.rounding = 1;
|
|
10711
|
-
external2 = false;
|
|
10712
|
-
x = x.times(x).plus(1).sqrt().plus(x);
|
|
10713
|
-
external2 = true;
|
|
10714
|
-
Ctor.precision = pr;
|
|
10715
|
-
Ctor.rounding = rm;
|
|
10716
|
-
return x.ln();
|
|
10717
|
-
};
|
|
10718
|
-
P.inverseHyperbolicTangent = P.atanh = function() {
|
|
10719
|
-
var pr, rm, wpr, xsd, x = this, Ctor = x.constructor;
|
|
10720
|
-
if (!x.isFinite())
|
|
10721
|
-
return new Ctor(NaN);
|
|
10722
|
-
if (x.e >= 0)
|
|
10723
|
-
return new Ctor(x.abs().eq(1) ? x.s / 0 : x.isZero() ? x : NaN);
|
|
10724
|
-
pr = Ctor.precision;
|
|
10725
|
-
rm = Ctor.rounding;
|
|
10726
|
-
xsd = x.sd();
|
|
10727
|
-
if (Math.max(xsd, pr) < 2 * -x.e - 1)
|
|
10728
|
-
return finalise(new Ctor(x), pr, rm, true);
|
|
10729
|
-
Ctor.precision = wpr = xsd - x.e;
|
|
10730
|
-
x = divide(x.plus(1), new Ctor(1).minus(x), wpr + pr, 1);
|
|
10731
|
-
Ctor.precision = pr + 4;
|
|
10732
|
-
Ctor.rounding = 1;
|
|
10733
|
-
x = x.ln();
|
|
10734
|
-
Ctor.precision = pr;
|
|
10735
|
-
Ctor.rounding = rm;
|
|
10736
|
-
return x.times(0.5);
|
|
10737
|
-
};
|
|
10738
|
-
P.inverseSine = P.asin = function() {
|
|
10739
|
-
var halfPi, k, pr, rm, x = this, Ctor = x.constructor;
|
|
10740
|
-
if (x.isZero())
|
|
10741
|
-
return new Ctor(x);
|
|
10742
|
-
k = x.abs().cmp(1);
|
|
10743
|
-
pr = Ctor.precision;
|
|
10744
|
-
rm = Ctor.rounding;
|
|
10745
|
-
if (k !== -1) {
|
|
10746
|
-
if (k === 0) {
|
|
10747
|
-
halfPi = getPi(Ctor, pr + 4, rm).times(0.5);
|
|
10748
|
-
halfPi.s = x.s;
|
|
10749
|
-
return halfPi;
|
|
10750
|
-
}
|
|
10751
|
-
return new Ctor(NaN);
|
|
10752
|
-
}
|
|
10753
|
-
Ctor.precision = pr + 6;
|
|
10754
|
-
Ctor.rounding = 1;
|
|
10755
|
-
x = x.div(new Ctor(1).minus(x.times(x)).sqrt().plus(1)).atan();
|
|
10756
|
-
Ctor.precision = pr;
|
|
10757
|
-
Ctor.rounding = rm;
|
|
10758
|
-
return x.times(2);
|
|
10759
|
-
};
|
|
10760
|
-
P.inverseTangent = P.atan = function() {
|
|
10761
|
-
var i, j, k, n, px, t, r, wpr, x2, x = this, Ctor = x.constructor, pr = Ctor.precision, rm = Ctor.rounding;
|
|
10762
|
-
if (!x.isFinite()) {
|
|
10763
|
-
if (!x.s)
|
|
10764
|
-
return new Ctor(NaN);
|
|
10765
|
-
if (pr + 4 <= PI_PRECISION) {
|
|
10766
|
-
r = getPi(Ctor, pr + 4, rm).times(0.5);
|
|
10767
|
-
r.s = x.s;
|
|
10768
|
-
return r;
|
|
10769
|
-
}
|
|
10770
|
-
} else if (x.isZero()) {
|
|
10771
|
-
return new Ctor(x);
|
|
10772
|
-
} else if (x.abs().eq(1) && pr + 4 <= PI_PRECISION) {
|
|
10773
|
-
r = getPi(Ctor, pr + 4, rm).times(0.25);
|
|
10774
|
-
r.s = x.s;
|
|
10775
|
-
return r;
|
|
10776
|
-
}
|
|
10777
|
-
Ctor.precision = wpr = pr + 10;
|
|
10778
|
-
Ctor.rounding = 1;
|
|
10779
|
-
k = Math.min(28, wpr / LOG_BASE + 2 | 0);
|
|
10780
|
-
for (i = k;i; --i)
|
|
10781
|
-
x = x.div(x.times(x).plus(1).sqrt().plus(1));
|
|
10782
|
-
external2 = false;
|
|
10783
|
-
j = Math.ceil(wpr / LOG_BASE);
|
|
10784
|
-
n = 1;
|
|
10785
|
-
x2 = x.times(x);
|
|
10786
|
-
r = new Ctor(x);
|
|
10787
|
-
px = x;
|
|
10788
|
-
for (;i !== -1; ) {
|
|
10789
|
-
px = px.times(x2);
|
|
10790
|
-
t = r.minus(px.div(n += 2));
|
|
10791
|
-
px = px.times(x2);
|
|
10792
|
-
r = t.plus(px.div(n += 2));
|
|
10793
|
-
if (r.d[j] !== undefined)
|
|
10794
|
-
for (i = j;r.d[i] === t.d[i] && i--; )
|
|
10795
|
-
;
|
|
10796
|
-
}
|
|
10797
|
-
if (k)
|
|
10798
|
-
r = r.times(2 << k - 1);
|
|
10799
|
-
external2 = true;
|
|
10800
|
-
return finalise(r, Ctor.precision = pr, Ctor.rounding = rm, true);
|
|
10801
|
-
};
|
|
10802
|
-
P.isFinite = function() {
|
|
10803
|
-
return !!this.d;
|
|
10804
|
-
};
|
|
10805
|
-
P.isInteger = P.isInt = function() {
|
|
10806
|
-
return !!this.d && mathfloor(this.e / LOG_BASE) > this.d.length - 2;
|
|
10807
|
-
};
|
|
10808
|
-
P.isNaN = function() {
|
|
10809
|
-
return !this.s;
|
|
10810
|
-
};
|
|
10811
|
-
P.isNegative = P.isNeg = function() {
|
|
10812
|
-
return this.s < 0;
|
|
10813
|
-
};
|
|
10814
|
-
P.isPositive = P.isPos = function() {
|
|
10815
|
-
return this.s > 0;
|
|
10816
|
-
};
|
|
10817
|
-
P.isZero = function() {
|
|
10818
|
-
return !!this.d && this.d[0] === 0;
|
|
10819
|
-
};
|
|
10820
|
-
P.lessThan = P.lt = function(y) {
|
|
10821
|
-
return this.cmp(y) < 0;
|
|
10822
|
-
};
|
|
10823
|
-
P.lessThanOrEqualTo = P.lte = function(y) {
|
|
10824
|
-
return this.cmp(y) < 1;
|
|
10825
|
-
};
|
|
10826
|
-
P.logarithm = P.log = function(base) {
|
|
10827
|
-
var isBase10, d, denominator, k, inf, num, sd, r, arg = this, Ctor = arg.constructor, pr = Ctor.precision, rm = Ctor.rounding, guard = 5;
|
|
10828
|
-
if (base == null) {
|
|
10829
|
-
base = new Ctor(10);
|
|
10830
|
-
isBase10 = true;
|
|
10831
|
-
} else {
|
|
10832
|
-
base = new Ctor(base);
|
|
10833
|
-
d = base.d;
|
|
10834
|
-
if (base.s < 0 || !d || !d[0] || base.eq(1))
|
|
10835
|
-
return new Ctor(NaN);
|
|
10836
|
-
isBase10 = base.eq(10);
|
|
10837
|
-
}
|
|
10838
|
-
d = arg.d;
|
|
10839
|
-
if (arg.s < 0 || !d || !d[0] || arg.eq(1)) {
|
|
10840
|
-
return new Ctor(d && !d[0] ? -1 / 0 : arg.s != 1 ? NaN : d ? 0 : 1 / 0);
|
|
10841
|
-
}
|
|
10842
|
-
if (isBase10) {
|
|
10843
|
-
if (d.length > 1) {
|
|
10844
|
-
inf = true;
|
|
10845
|
-
} else {
|
|
10846
|
-
for (k = d[0];k % 10 === 0; )
|
|
10847
|
-
k /= 10;
|
|
10848
|
-
inf = k !== 1;
|
|
10849
|
-
}
|
|
10850
|
-
}
|
|
10851
|
-
external2 = false;
|
|
10852
|
-
sd = pr + guard;
|
|
10853
|
-
num = naturalLogarithm(arg, sd);
|
|
10854
|
-
denominator = isBase10 ? getLn10(Ctor, sd + 10) : naturalLogarithm(base, sd);
|
|
10855
|
-
r = divide(num, denominator, sd, 1);
|
|
10856
|
-
if (checkRoundingDigits(r.d, k = pr, rm)) {
|
|
10857
|
-
do {
|
|
10858
|
-
sd += 10;
|
|
10859
|
-
num = naturalLogarithm(arg, sd);
|
|
10860
|
-
denominator = isBase10 ? getLn10(Ctor, sd + 10) : naturalLogarithm(base, sd);
|
|
10861
|
-
r = divide(num, denominator, sd, 1);
|
|
10862
|
-
if (!inf) {
|
|
10863
|
-
if (+digitsToString(r.d).slice(k + 1, k + 15) + 1 == 100000000000000) {
|
|
10864
|
-
r = finalise(r, pr + 1, 0);
|
|
10865
|
-
}
|
|
10866
|
-
break;
|
|
10867
|
-
}
|
|
10868
|
-
} while (checkRoundingDigits(r.d, k += 10, rm));
|
|
10869
|
-
}
|
|
10870
|
-
external2 = true;
|
|
10871
|
-
return finalise(r, pr, rm);
|
|
10872
|
-
};
|
|
10873
|
-
P.minus = P.sub = function(y) {
|
|
10874
|
-
var d, e, i, j, k, len, pr, rm, xd, xe, xLTy, yd, x = this, Ctor = x.constructor;
|
|
10875
|
-
y = new Ctor(y);
|
|
10876
|
-
if (!x.d || !y.d) {
|
|
10877
|
-
if (!x.s || !y.s)
|
|
10878
|
-
y = new Ctor(NaN);
|
|
10879
|
-
else if (x.d)
|
|
10880
|
-
y.s = -y.s;
|
|
10881
|
-
else
|
|
10882
|
-
y = new Ctor(y.d || x.s !== y.s ? x : NaN);
|
|
10883
|
-
return y;
|
|
10884
|
-
}
|
|
10885
|
-
if (x.s != y.s) {
|
|
10886
|
-
y.s = -y.s;
|
|
10887
|
-
return x.plus(y);
|
|
10888
|
-
}
|
|
10889
|
-
xd = x.d;
|
|
10890
|
-
yd = y.d;
|
|
10891
|
-
pr = Ctor.precision;
|
|
10892
|
-
rm = Ctor.rounding;
|
|
10893
|
-
if (!xd[0] || !yd[0]) {
|
|
10894
|
-
if (yd[0])
|
|
10895
|
-
y.s = -y.s;
|
|
10896
|
-
else if (xd[0])
|
|
10897
|
-
y = new Ctor(x);
|
|
10898
|
-
else
|
|
10899
|
-
return new Ctor(rm === 3 ? -0 : 0);
|
|
10900
|
-
return external2 ? finalise(y, pr, rm) : y;
|
|
10901
|
-
}
|
|
10902
|
-
e = mathfloor(y.e / LOG_BASE);
|
|
10903
|
-
xe = mathfloor(x.e / LOG_BASE);
|
|
10904
|
-
xd = xd.slice();
|
|
10905
|
-
k = xe - e;
|
|
10906
|
-
if (k) {
|
|
10907
|
-
xLTy = k < 0;
|
|
10908
|
-
if (xLTy) {
|
|
10909
|
-
d = xd;
|
|
10910
|
-
k = -k;
|
|
10911
|
-
len = yd.length;
|
|
10912
|
-
} else {
|
|
10913
|
-
d = yd;
|
|
10914
|
-
e = xe;
|
|
10915
|
-
len = xd.length;
|
|
10916
|
-
}
|
|
10917
|
-
i = Math.max(Math.ceil(pr / LOG_BASE), len) + 2;
|
|
10918
|
-
if (k > i) {
|
|
10919
|
-
k = i;
|
|
10920
|
-
d.length = 1;
|
|
10921
|
-
}
|
|
10922
|
-
d.reverse();
|
|
10923
|
-
for (i = k;i--; )
|
|
10924
|
-
d.push(0);
|
|
10925
|
-
d.reverse();
|
|
10926
|
-
} else {
|
|
10927
|
-
i = xd.length;
|
|
10928
|
-
len = yd.length;
|
|
10929
|
-
xLTy = i < len;
|
|
10930
|
-
if (xLTy)
|
|
10931
|
-
len = i;
|
|
10932
|
-
for (i = 0;i < len; i++) {
|
|
10933
|
-
if (xd[i] != yd[i]) {
|
|
10934
|
-
xLTy = xd[i] < yd[i];
|
|
10935
|
-
break;
|
|
10936
|
-
}
|
|
10937
|
-
}
|
|
10938
|
-
k = 0;
|
|
10939
|
-
}
|
|
10940
|
-
if (xLTy) {
|
|
10941
|
-
d = xd;
|
|
10942
|
-
xd = yd;
|
|
10943
|
-
yd = d;
|
|
10944
|
-
y.s = -y.s;
|
|
10945
|
-
}
|
|
10946
|
-
len = xd.length;
|
|
10947
|
-
for (i = yd.length - len;i > 0; --i)
|
|
10948
|
-
xd[len++] = 0;
|
|
10949
|
-
for (i = yd.length;i > k; ) {
|
|
10950
|
-
if (xd[--i] < yd[i]) {
|
|
10951
|
-
for (j = i;j && xd[--j] === 0; )
|
|
10952
|
-
xd[j] = BASE - 1;
|
|
10953
|
-
--xd[j];
|
|
10954
|
-
xd[i] += BASE;
|
|
10955
|
-
}
|
|
10956
|
-
xd[i] -= yd[i];
|
|
10957
|
-
}
|
|
10958
|
-
for (;xd[--len] === 0; )
|
|
10959
|
-
xd.pop();
|
|
10960
|
-
for (;xd[0] === 0; xd.shift())
|
|
10961
|
-
--e;
|
|
10962
|
-
if (!xd[0])
|
|
10963
|
-
return new Ctor(rm === 3 ? -0 : 0);
|
|
10964
|
-
y.d = xd;
|
|
10965
|
-
y.e = getBase10Exponent(xd, e);
|
|
10966
|
-
return external2 ? finalise(y, pr, rm) : y;
|
|
10967
|
-
};
|
|
10968
|
-
P.modulo = P.mod = function(y) {
|
|
10969
|
-
var q, x = this, Ctor = x.constructor;
|
|
10970
|
-
y = new Ctor(y);
|
|
10971
|
-
if (!x.d || !y.s || y.d && !y.d[0])
|
|
10972
|
-
return new Ctor(NaN);
|
|
10973
|
-
if (!y.d || x.d && !x.d[0]) {
|
|
10974
|
-
return finalise(new Ctor(x), Ctor.precision, Ctor.rounding);
|
|
10975
|
-
}
|
|
10976
|
-
external2 = false;
|
|
10977
|
-
if (Ctor.modulo == 9) {
|
|
10978
|
-
q = divide(x, y.abs(), 0, 3, 1);
|
|
10979
|
-
q.s *= y.s;
|
|
10980
|
-
} else {
|
|
10981
|
-
q = divide(x, y, 0, Ctor.modulo, 1);
|
|
10982
|
-
}
|
|
10983
|
-
q = q.times(y);
|
|
10984
|
-
external2 = true;
|
|
10985
|
-
return x.minus(q);
|
|
10986
|
-
};
|
|
10987
|
-
P.naturalExponential = P.exp = function() {
|
|
10988
|
-
return naturalExponential(this);
|
|
10989
|
-
};
|
|
10990
|
-
P.naturalLogarithm = P.ln = function() {
|
|
10991
|
-
return naturalLogarithm(this);
|
|
10992
|
-
};
|
|
10993
|
-
P.negated = P.neg = function() {
|
|
10994
|
-
var x = new this.constructor(this);
|
|
10995
|
-
x.s = -x.s;
|
|
10996
|
-
return finalise(x);
|
|
10997
|
-
};
|
|
10998
|
-
P.plus = P.add = function(y) {
|
|
10999
|
-
var carry, d, e, i, k, len, pr, rm, xd, yd, x = this, Ctor = x.constructor;
|
|
11000
|
-
y = new Ctor(y);
|
|
11001
|
-
if (!x.d || !y.d) {
|
|
11002
|
-
if (!x.s || !y.s)
|
|
11003
|
-
y = new Ctor(NaN);
|
|
11004
|
-
else if (!x.d)
|
|
11005
|
-
y = new Ctor(y.d || x.s === y.s ? x : NaN);
|
|
11006
|
-
return y;
|
|
11007
|
-
}
|
|
11008
|
-
if (x.s != y.s) {
|
|
11009
|
-
y.s = -y.s;
|
|
11010
|
-
return x.minus(y);
|
|
11011
|
-
}
|
|
11012
|
-
xd = x.d;
|
|
11013
|
-
yd = y.d;
|
|
11014
|
-
pr = Ctor.precision;
|
|
11015
|
-
rm = Ctor.rounding;
|
|
11016
|
-
if (!xd[0] || !yd[0]) {
|
|
11017
|
-
if (!yd[0])
|
|
11018
|
-
y = new Ctor(x);
|
|
11019
|
-
return external2 ? finalise(y, pr, rm) : y;
|
|
11020
|
-
}
|
|
11021
|
-
k = mathfloor(x.e / LOG_BASE);
|
|
11022
|
-
e = mathfloor(y.e / LOG_BASE);
|
|
11023
|
-
xd = xd.slice();
|
|
11024
|
-
i = k - e;
|
|
11025
|
-
if (i) {
|
|
11026
|
-
if (i < 0) {
|
|
11027
|
-
d = xd;
|
|
11028
|
-
i = -i;
|
|
11029
|
-
len = yd.length;
|
|
11030
|
-
} else {
|
|
11031
|
-
d = yd;
|
|
11032
|
-
e = k;
|
|
11033
|
-
len = xd.length;
|
|
11034
|
-
}
|
|
11035
|
-
k = Math.ceil(pr / LOG_BASE);
|
|
11036
|
-
len = k > len ? k + 1 : len + 1;
|
|
11037
|
-
if (i > len) {
|
|
11038
|
-
i = len;
|
|
11039
|
-
d.length = 1;
|
|
11040
|
-
}
|
|
11041
|
-
d.reverse();
|
|
11042
|
-
for (;i--; )
|
|
11043
|
-
d.push(0);
|
|
11044
|
-
d.reverse();
|
|
11045
|
-
}
|
|
11046
|
-
len = xd.length;
|
|
11047
|
-
i = yd.length;
|
|
11048
|
-
if (len - i < 0) {
|
|
11049
|
-
i = len;
|
|
11050
|
-
d = yd;
|
|
11051
|
-
yd = xd;
|
|
11052
|
-
xd = d;
|
|
11053
|
-
}
|
|
11054
|
-
for (carry = 0;i; ) {
|
|
11055
|
-
carry = (xd[--i] = xd[i] + yd[i] + carry) / BASE | 0;
|
|
11056
|
-
xd[i] %= BASE;
|
|
11057
|
-
}
|
|
11058
|
-
if (carry) {
|
|
11059
|
-
xd.unshift(carry);
|
|
11060
|
-
++e;
|
|
11061
|
-
}
|
|
11062
|
-
for (len = xd.length;xd[--len] == 0; )
|
|
11063
|
-
xd.pop();
|
|
11064
|
-
y.d = xd;
|
|
11065
|
-
y.e = getBase10Exponent(xd, e);
|
|
11066
|
-
return external2 ? finalise(y, pr, rm) : y;
|
|
11067
|
-
};
|
|
11068
|
-
P.precision = P.sd = function(z) {
|
|
11069
|
-
var k, x = this;
|
|
11070
|
-
if (z !== undefined && z !== !!z && z !== 1 && z !== 0)
|
|
11071
|
-
throw Error(invalidArgument + z);
|
|
11072
|
-
if (x.d) {
|
|
11073
|
-
k = getPrecision(x.d);
|
|
11074
|
-
if (z && x.e + 1 > k)
|
|
11075
|
-
k = x.e + 1;
|
|
11076
|
-
} else {
|
|
11077
|
-
k = NaN;
|
|
11078
|
-
}
|
|
11079
|
-
return k;
|
|
11080
|
-
};
|
|
11081
|
-
P.round = function() {
|
|
11082
|
-
var x = this, Ctor = x.constructor;
|
|
11083
|
-
return finalise(new Ctor(x), x.e + 1, Ctor.rounding);
|
|
11084
|
-
};
|
|
11085
|
-
P.sine = P.sin = function() {
|
|
11086
|
-
var pr, rm, x = this, Ctor = x.constructor;
|
|
11087
|
-
if (!x.isFinite())
|
|
11088
|
-
return new Ctor(NaN);
|
|
11089
|
-
if (x.isZero())
|
|
11090
|
-
return new Ctor(x);
|
|
11091
|
-
pr = Ctor.precision;
|
|
11092
|
-
rm = Ctor.rounding;
|
|
11093
|
-
Ctor.precision = pr + Math.max(x.e, x.sd()) + LOG_BASE;
|
|
11094
|
-
Ctor.rounding = 1;
|
|
11095
|
-
x = sine(Ctor, toLessThanHalfPi(Ctor, x));
|
|
11096
|
-
Ctor.precision = pr;
|
|
11097
|
-
Ctor.rounding = rm;
|
|
11098
|
-
return finalise(quadrant > 2 ? x.neg() : x, pr, rm, true);
|
|
11099
|
-
};
|
|
11100
|
-
P.squareRoot = P.sqrt = function() {
|
|
11101
|
-
var m, n, sd, r, rep, t, x = this, d = x.d, e = x.e, s = x.s, Ctor = x.constructor;
|
|
11102
|
-
if (s !== 1 || !d || !d[0]) {
|
|
11103
|
-
return new Ctor(!s || s < 0 && (!d || d[0]) ? NaN : d ? x : 1 / 0);
|
|
11104
|
-
}
|
|
11105
|
-
external2 = false;
|
|
11106
|
-
s = Math.sqrt(+x);
|
|
11107
|
-
if (s == 0 || s == 1 / 0) {
|
|
11108
|
-
n = digitsToString(d);
|
|
11109
|
-
if ((n.length + e) % 2 == 0)
|
|
11110
|
-
n += "0";
|
|
11111
|
-
s = Math.sqrt(n);
|
|
11112
|
-
e = mathfloor((e + 1) / 2) - (e < 0 || e % 2);
|
|
11113
|
-
if (s == 1 / 0) {
|
|
11114
|
-
n = "5e" + e;
|
|
11115
|
-
} else {
|
|
11116
|
-
n = s.toExponential();
|
|
11117
|
-
n = n.slice(0, n.indexOf("e") + 1) + e;
|
|
11118
|
-
}
|
|
11119
|
-
r = new Ctor(n);
|
|
11120
|
-
} else {
|
|
11121
|
-
r = new Ctor(s.toString());
|
|
11122
|
-
}
|
|
11123
|
-
sd = (e = Ctor.precision) + 3;
|
|
11124
|
-
for (;; ) {
|
|
11125
|
-
t = r;
|
|
11126
|
-
r = t.plus(divide(x, t, sd + 2, 1)).times(0.5);
|
|
11127
|
-
if (digitsToString(t.d).slice(0, sd) === (n = digitsToString(r.d)).slice(0, sd)) {
|
|
11128
|
-
n = n.slice(sd - 3, sd + 1);
|
|
11129
|
-
if (n == "9999" || !rep && n == "4999") {
|
|
11130
|
-
if (!rep) {
|
|
11131
|
-
finalise(t, e + 1, 0);
|
|
11132
|
-
if (t.times(t).eq(x)) {
|
|
11133
|
-
r = t;
|
|
11134
|
-
break;
|
|
11135
|
-
}
|
|
11136
|
-
}
|
|
11137
|
-
sd += 4;
|
|
11138
|
-
rep = 1;
|
|
11139
|
-
} else {
|
|
11140
|
-
if (!+n || !+n.slice(1) && n.charAt(0) == "5") {
|
|
11141
|
-
finalise(r, e + 1, 1);
|
|
11142
|
-
m = !r.times(r).eq(x);
|
|
11143
|
-
}
|
|
11144
|
-
break;
|
|
11145
|
-
}
|
|
11146
|
-
}
|
|
11147
|
-
}
|
|
11148
|
-
external2 = true;
|
|
11149
|
-
return finalise(r, e, Ctor.rounding, m);
|
|
11150
|
-
};
|
|
11151
|
-
P.tangent = P.tan = function() {
|
|
11152
|
-
var pr, rm, x = this, Ctor = x.constructor;
|
|
11153
|
-
if (!x.isFinite())
|
|
11154
|
-
return new Ctor(NaN);
|
|
11155
|
-
if (x.isZero())
|
|
11156
|
-
return new Ctor(x);
|
|
11157
|
-
pr = Ctor.precision;
|
|
11158
|
-
rm = Ctor.rounding;
|
|
11159
|
-
Ctor.precision = pr + 10;
|
|
11160
|
-
Ctor.rounding = 1;
|
|
11161
|
-
x = x.sin();
|
|
11162
|
-
x.s = 1;
|
|
11163
|
-
x = divide(x, new Ctor(1).minus(x.times(x)).sqrt(), pr + 10, 0);
|
|
11164
|
-
Ctor.precision = pr;
|
|
11165
|
-
Ctor.rounding = rm;
|
|
11166
|
-
return finalise(quadrant == 2 || quadrant == 4 ? x.neg() : x, pr, rm, true);
|
|
11167
|
-
};
|
|
11168
|
-
P.times = P.mul = function(y) {
|
|
11169
|
-
var carry, e, i, k, r, rL, t, xdL, ydL, x = this, Ctor = x.constructor, xd = x.d, yd = (y = new Ctor(y)).d;
|
|
11170
|
-
y.s *= x.s;
|
|
11171
|
-
if (!xd || !xd[0] || !yd || !yd[0]) {
|
|
11172
|
-
return new Ctor(!y.s || xd && !xd[0] && !yd || yd && !yd[0] && !xd ? NaN : !xd || !yd ? y.s / 0 : y.s * 0);
|
|
11173
|
-
}
|
|
11174
|
-
e = mathfloor(x.e / LOG_BASE) + mathfloor(y.e / LOG_BASE);
|
|
11175
|
-
xdL = xd.length;
|
|
11176
|
-
ydL = yd.length;
|
|
11177
|
-
if (xdL < ydL) {
|
|
11178
|
-
r = xd;
|
|
11179
|
-
xd = yd;
|
|
11180
|
-
yd = r;
|
|
11181
|
-
rL = xdL;
|
|
11182
|
-
xdL = ydL;
|
|
11183
|
-
ydL = rL;
|
|
11184
|
-
}
|
|
11185
|
-
r = [];
|
|
11186
|
-
rL = xdL + ydL;
|
|
11187
|
-
for (i = rL;i--; )
|
|
11188
|
-
r.push(0);
|
|
11189
|
-
for (i = ydL;--i >= 0; ) {
|
|
11190
|
-
carry = 0;
|
|
11191
|
-
for (k = xdL + i;k > i; ) {
|
|
11192
|
-
t = r[k] + yd[i] * xd[k - i - 1] + carry;
|
|
11193
|
-
r[k--] = t % BASE | 0;
|
|
11194
|
-
carry = t / BASE | 0;
|
|
11195
|
-
}
|
|
11196
|
-
r[k] = (r[k] + carry) % BASE | 0;
|
|
11197
|
-
}
|
|
11198
|
-
for (;!r[--rL]; )
|
|
11199
|
-
r.pop();
|
|
11200
|
-
if (carry)
|
|
11201
|
-
++e;
|
|
11202
|
-
else
|
|
11203
|
-
r.shift();
|
|
11204
|
-
y.d = r;
|
|
11205
|
-
y.e = getBase10Exponent(r, e);
|
|
11206
|
-
return external2 ? finalise(y, Ctor.precision, Ctor.rounding) : y;
|
|
11207
|
-
};
|
|
11208
|
-
P.toBinary = function(sd, rm) {
|
|
11209
|
-
return toStringBinary(this, 2, sd, rm);
|
|
11210
|
-
};
|
|
11211
|
-
P.toDecimalPlaces = P.toDP = function(dp, rm) {
|
|
11212
|
-
var x = this, Ctor = x.constructor;
|
|
11213
|
-
x = new Ctor(x);
|
|
11214
|
-
if (dp === undefined)
|
|
11215
|
-
return x;
|
|
11216
|
-
checkInt32(dp, 0, MAX_DIGITS);
|
|
11217
|
-
if (rm === undefined)
|
|
11218
|
-
rm = Ctor.rounding;
|
|
11219
|
-
else
|
|
11220
|
-
checkInt32(rm, 0, 8);
|
|
11221
|
-
return finalise(x, dp + x.e + 1, rm);
|
|
11222
|
-
};
|
|
11223
|
-
P.toExponential = function(dp, rm) {
|
|
11224
|
-
var str, x = this, Ctor = x.constructor;
|
|
11225
|
-
if (dp === undefined) {
|
|
11226
|
-
str = finiteToString(x, true);
|
|
11227
|
-
} else {
|
|
11228
|
-
checkInt32(dp, 0, MAX_DIGITS);
|
|
11229
|
-
if (rm === undefined)
|
|
11230
|
-
rm = Ctor.rounding;
|
|
11231
|
-
else
|
|
11232
|
-
checkInt32(rm, 0, 8);
|
|
11233
|
-
x = finalise(new Ctor(x), dp + 1, rm);
|
|
11234
|
-
str = finiteToString(x, true, dp + 1);
|
|
11235
|
-
}
|
|
11236
|
-
return x.isNeg() && !x.isZero() ? "-" + str : str;
|
|
11237
|
-
};
|
|
11238
|
-
P.toFixed = function(dp, rm) {
|
|
11239
|
-
var str, y, x = this, Ctor = x.constructor;
|
|
11240
|
-
if (dp === undefined) {
|
|
11241
|
-
str = finiteToString(x);
|
|
11242
|
-
} else {
|
|
11243
|
-
checkInt32(dp, 0, MAX_DIGITS);
|
|
11244
|
-
if (rm === undefined)
|
|
11245
|
-
rm = Ctor.rounding;
|
|
11246
|
-
else
|
|
11247
|
-
checkInt32(rm, 0, 8);
|
|
11248
|
-
y = finalise(new Ctor(x), dp + x.e + 1, rm);
|
|
11249
|
-
str = finiteToString(y, false, dp + y.e + 1);
|
|
11250
|
-
}
|
|
11251
|
-
return x.isNeg() && !x.isZero() ? "-" + str : str;
|
|
11252
|
-
};
|
|
11253
|
-
P.toFraction = function(maxD) {
|
|
11254
|
-
var d, d0, d1, d2, e, k, n, n0, n1, pr, q, r, x = this, xd = x.d, Ctor = x.constructor;
|
|
11255
|
-
if (!xd)
|
|
11256
|
-
return new Ctor(x);
|
|
11257
|
-
n1 = d0 = new Ctor(1);
|
|
11258
|
-
d1 = n0 = new Ctor(0);
|
|
11259
|
-
d = new Ctor(d1);
|
|
11260
|
-
e = d.e = getPrecision(xd) - x.e - 1;
|
|
11261
|
-
k = e % LOG_BASE;
|
|
11262
|
-
d.d[0] = mathpow(10, k < 0 ? LOG_BASE + k : k);
|
|
11263
|
-
if (maxD == null) {
|
|
11264
|
-
maxD = e > 0 ? d : n1;
|
|
11265
|
-
} else {
|
|
11266
|
-
n = new Ctor(maxD);
|
|
11267
|
-
if (!n.isInt() || n.lt(n1))
|
|
11268
|
-
throw Error(invalidArgument + n);
|
|
11269
|
-
maxD = n.gt(d) ? e > 0 ? d : n1 : n;
|
|
11270
|
-
}
|
|
11271
|
-
external2 = false;
|
|
11272
|
-
n = new Ctor(digitsToString(xd));
|
|
11273
|
-
pr = Ctor.precision;
|
|
11274
|
-
Ctor.precision = e = xd.length * LOG_BASE * 2;
|
|
11275
|
-
for (;; ) {
|
|
11276
|
-
q = divide(n, d, 0, 1, 1);
|
|
11277
|
-
d2 = d0.plus(q.times(d1));
|
|
11278
|
-
if (d2.cmp(maxD) == 1)
|
|
11279
|
-
break;
|
|
11280
|
-
d0 = d1;
|
|
11281
|
-
d1 = d2;
|
|
11282
|
-
d2 = n1;
|
|
11283
|
-
n1 = n0.plus(q.times(d2));
|
|
11284
|
-
n0 = d2;
|
|
11285
|
-
d2 = d;
|
|
11286
|
-
d = n.minus(q.times(d2));
|
|
11287
|
-
n = d2;
|
|
11288
|
-
}
|
|
11289
|
-
d2 = divide(maxD.minus(d0), d1, 0, 1, 1);
|
|
11290
|
-
n0 = n0.plus(d2.times(n1));
|
|
11291
|
-
d0 = d0.plus(d2.times(d1));
|
|
11292
|
-
n0.s = n1.s = x.s;
|
|
11293
|
-
r = divide(n1, d1, e, 1).minus(x).abs().cmp(divide(n0, d0, e, 1).minus(x).abs()) < 1 ? [n1, d1] : [n0, d0];
|
|
11294
|
-
Ctor.precision = pr;
|
|
11295
|
-
external2 = true;
|
|
11296
|
-
return r;
|
|
11297
|
-
};
|
|
11298
|
-
P.toHexadecimal = P.toHex = function(sd, rm) {
|
|
11299
|
-
return toStringBinary(this, 16, sd, rm);
|
|
11300
|
-
};
|
|
11301
|
-
P.toNearest = function(y, rm) {
|
|
11302
|
-
var x = this, Ctor = x.constructor;
|
|
11303
|
-
x = new Ctor(x);
|
|
11304
|
-
if (y == null) {
|
|
11305
|
-
if (!x.d)
|
|
11306
|
-
return x;
|
|
11307
|
-
y = new Ctor(1);
|
|
11308
|
-
rm = Ctor.rounding;
|
|
11309
|
-
} else {
|
|
11310
|
-
y = new Ctor(y);
|
|
11311
|
-
if (rm === undefined) {
|
|
11312
|
-
rm = Ctor.rounding;
|
|
11313
|
-
} else {
|
|
11314
|
-
checkInt32(rm, 0, 8);
|
|
11315
|
-
}
|
|
11316
|
-
if (!x.d)
|
|
11317
|
-
return y.s ? x : y;
|
|
11318
|
-
if (!y.d) {
|
|
11319
|
-
if (y.s)
|
|
11320
|
-
y.s = x.s;
|
|
11321
|
-
return y;
|
|
11322
|
-
}
|
|
11323
|
-
}
|
|
11324
|
-
if (y.d[0]) {
|
|
11325
|
-
external2 = false;
|
|
11326
|
-
x = divide(x, y, 0, rm, 1).times(y);
|
|
11327
|
-
external2 = true;
|
|
11328
|
-
finalise(x);
|
|
11329
|
-
} else {
|
|
11330
|
-
y.s = x.s;
|
|
11331
|
-
x = y;
|
|
11332
|
-
}
|
|
11333
|
-
return x;
|
|
11334
|
-
};
|
|
11335
|
-
P.toNumber = function() {
|
|
11336
|
-
return +this;
|
|
11337
|
-
};
|
|
11338
|
-
P.toOctal = function(sd, rm) {
|
|
11339
|
-
return toStringBinary(this, 8, sd, rm);
|
|
11340
|
-
};
|
|
11341
|
-
P.toPower = P.pow = function(y) {
|
|
11342
|
-
var e, k, pr, r, rm, s, x = this, Ctor = x.constructor, yn = +(y = new Ctor(y));
|
|
11343
|
-
if (!x.d || !y.d || !x.d[0] || !y.d[0])
|
|
11344
|
-
return new Ctor(mathpow(+x, yn));
|
|
11345
|
-
x = new Ctor(x);
|
|
11346
|
-
if (x.eq(1))
|
|
11347
|
-
return x;
|
|
11348
|
-
pr = Ctor.precision;
|
|
11349
|
-
rm = Ctor.rounding;
|
|
11350
|
-
if (y.eq(1))
|
|
11351
|
-
return finalise(x, pr, rm);
|
|
11352
|
-
e = mathfloor(y.e / LOG_BASE);
|
|
11353
|
-
if (e >= y.d.length - 1 && (k = yn < 0 ? -yn : yn) <= MAX_SAFE_INTEGER) {
|
|
11354
|
-
r = intPow(Ctor, x, k, pr);
|
|
11355
|
-
return y.s < 0 ? new Ctor(1).div(r) : finalise(r, pr, rm);
|
|
11356
|
-
}
|
|
11357
|
-
s = x.s;
|
|
11358
|
-
if (s < 0) {
|
|
11359
|
-
if (e < y.d.length - 1)
|
|
11360
|
-
return new Ctor(NaN);
|
|
11361
|
-
if ((y.d[e] & 1) == 0)
|
|
11362
|
-
s = 1;
|
|
11363
|
-
if (x.e == 0 && x.d[0] == 1 && x.d.length == 1) {
|
|
11364
|
-
x.s = s;
|
|
11365
|
-
return x;
|
|
11366
|
-
}
|
|
11367
|
-
}
|
|
11368
|
-
k = mathpow(+x, yn);
|
|
11369
|
-
e = k == 0 || !isFinite(k) ? mathfloor(yn * (Math.log("0." + digitsToString(x.d)) / Math.LN10 + x.e + 1)) : new Ctor(k + "").e;
|
|
11370
|
-
if (e > Ctor.maxE + 1 || e < Ctor.minE - 1)
|
|
11371
|
-
return new Ctor(e > 0 ? s / 0 : 0);
|
|
11372
|
-
external2 = false;
|
|
11373
|
-
Ctor.rounding = x.s = 1;
|
|
11374
|
-
k = Math.min(12, (e + "").length);
|
|
11375
|
-
r = naturalExponential(y.times(naturalLogarithm(x, pr + k)), pr);
|
|
11376
|
-
if (r.d) {
|
|
11377
|
-
r = finalise(r, pr + 5, 1);
|
|
11378
|
-
if (checkRoundingDigits(r.d, pr, rm)) {
|
|
11379
|
-
e = pr + 10;
|
|
11380
|
-
r = finalise(naturalExponential(y.times(naturalLogarithm(x, e + k)), e), e + 5, 1);
|
|
11381
|
-
if (+digitsToString(r.d).slice(pr + 1, pr + 15) + 1 == 100000000000000) {
|
|
11382
|
-
r = finalise(r, pr + 1, 0);
|
|
11383
|
-
}
|
|
11384
|
-
}
|
|
11385
|
-
}
|
|
11386
|
-
r.s = s;
|
|
11387
|
-
external2 = true;
|
|
11388
|
-
Ctor.rounding = rm;
|
|
11389
|
-
return finalise(r, pr, rm);
|
|
11390
|
-
};
|
|
11391
|
-
P.toPrecision = function(sd, rm) {
|
|
11392
|
-
var str, x = this, Ctor = x.constructor;
|
|
11393
|
-
if (sd === undefined) {
|
|
11394
|
-
str = finiteToString(x, x.e <= Ctor.toExpNeg || x.e >= Ctor.toExpPos);
|
|
11395
|
-
} else {
|
|
11396
|
-
checkInt32(sd, 1, MAX_DIGITS);
|
|
11397
|
-
if (rm === undefined)
|
|
11398
|
-
rm = Ctor.rounding;
|
|
11399
|
-
else
|
|
11400
|
-
checkInt32(rm, 0, 8);
|
|
11401
|
-
x = finalise(new Ctor(x), sd, rm);
|
|
11402
|
-
str = finiteToString(x, sd <= x.e || x.e <= Ctor.toExpNeg, sd);
|
|
11403
|
-
}
|
|
11404
|
-
return x.isNeg() && !x.isZero() ? "-" + str : str;
|
|
11405
|
-
};
|
|
11406
|
-
P.toSignificantDigits = P.toSD = function(sd, rm) {
|
|
11407
|
-
var x = this, Ctor = x.constructor;
|
|
11408
|
-
if (sd === undefined) {
|
|
11409
|
-
sd = Ctor.precision;
|
|
11410
|
-
rm = Ctor.rounding;
|
|
11411
|
-
} else {
|
|
11412
|
-
checkInt32(sd, 1, MAX_DIGITS);
|
|
11413
|
-
if (rm === undefined)
|
|
11414
|
-
rm = Ctor.rounding;
|
|
11415
|
-
else
|
|
11416
|
-
checkInt32(rm, 0, 8);
|
|
11417
|
-
}
|
|
11418
|
-
return finalise(new Ctor(x), sd, rm);
|
|
11419
|
-
};
|
|
11420
|
-
P.toString = function() {
|
|
11421
|
-
var x = this, Ctor = x.constructor, str = finiteToString(x, x.e <= Ctor.toExpNeg || x.e >= Ctor.toExpPos);
|
|
11422
|
-
return x.isNeg() && !x.isZero() ? "-" + str : str;
|
|
11423
|
-
};
|
|
11424
|
-
P.truncated = P.trunc = function() {
|
|
11425
|
-
return finalise(new this.constructor(this), this.e + 1, 1);
|
|
11426
|
-
};
|
|
11427
|
-
P.valueOf = P.toJSON = function() {
|
|
11428
|
-
var x = this, Ctor = x.constructor, str = finiteToString(x, x.e <= Ctor.toExpNeg || x.e >= Ctor.toExpPos);
|
|
11429
|
-
return x.isNeg() ? "-" + str : str;
|
|
11430
|
-
};
|
|
11431
|
-
function digitsToString(d) {
|
|
11432
|
-
var i, k, ws, indexOfLastWord = d.length - 1, str = "", w = d[0];
|
|
11433
|
-
if (indexOfLastWord > 0) {
|
|
11434
|
-
str += w;
|
|
11435
|
-
for (i = 1;i < indexOfLastWord; i++) {
|
|
11436
|
-
ws = d[i] + "";
|
|
11437
|
-
k = LOG_BASE - ws.length;
|
|
11438
|
-
if (k)
|
|
11439
|
-
str += getZeroString(k);
|
|
11440
|
-
str += ws;
|
|
11441
|
-
}
|
|
11442
|
-
w = d[i];
|
|
11443
|
-
ws = w + "";
|
|
11444
|
-
k = LOG_BASE - ws.length;
|
|
11445
|
-
if (k)
|
|
11446
|
-
str += getZeroString(k);
|
|
11447
|
-
} else if (w === 0) {
|
|
11448
|
-
return "0";
|
|
11449
|
-
}
|
|
11450
|
-
for (;w % 10 === 0; )
|
|
11451
|
-
w /= 10;
|
|
11452
|
-
return str + w;
|
|
11453
|
-
}
|
|
11454
|
-
function checkInt32(i, min, max) {
|
|
11455
|
-
if (i !== ~~i || i < min || i > max) {
|
|
11456
|
-
throw Error(invalidArgument + i);
|
|
11457
|
-
}
|
|
11458
|
-
}
|
|
11459
|
-
function checkRoundingDigits(d, i, rm, repeating) {
|
|
11460
|
-
var di, k, r, rd;
|
|
11461
|
-
for (k = d[0];k >= 10; k /= 10)
|
|
11462
|
-
--i;
|
|
11463
|
-
if (--i < 0) {
|
|
11464
|
-
i += LOG_BASE;
|
|
11465
|
-
di = 0;
|
|
11466
|
-
} else {
|
|
11467
|
-
di = Math.ceil((i + 1) / LOG_BASE);
|
|
11468
|
-
i %= LOG_BASE;
|
|
11469
|
-
}
|
|
11470
|
-
k = mathpow(10, LOG_BASE - i);
|
|
11471
|
-
rd = d[di] % k | 0;
|
|
11472
|
-
if (repeating == null) {
|
|
11473
|
-
if (i < 3) {
|
|
11474
|
-
if (i == 0)
|
|
11475
|
-
rd = rd / 100 | 0;
|
|
11476
|
-
else if (i == 1)
|
|
11477
|
-
rd = rd / 10 | 0;
|
|
11478
|
-
r = rm < 4 && rd == 99999 || rm > 3 && rd == 49999 || rd == 50000 || rd == 0;
|
|
11479
|
-
} else {
|
|
11480
|
-
r = (rm < 4 && rd + 1 == k || rm > 3 && rd + 1 == k / 2) && (d[di + 1] / k / 100 | 0) == mathpow(10, i - 2) - 1 || (rd == k / 2 || rd == 0) && (d[di + 1] / k / 100 | 0) == 0;
|
|
11481
|
-
}
|
|
11482
|
-
} else {
|
|
11483
|
-
if (i < 4) {
|
|
11484
|
-
if (i == 0)
|
|
11485
|
-
rd = rd / 1000 | 0;
|
|
11486
|
-
else if (i == 1)
|
|
11487
|
-
rd = rd / 100 | 0;
|
|
11488
|
-
else if (i == 2)
|
|
11489
|
-
rd = rd / 10 | 0;
|
|
11490
|
-
r = (repeating || rm < 4) && rd == 9999 || !repeating && rm > 3 && rd == 4999;
|
|
11491
|
-
} else {
|
|
11492
|
-
r = ((repeating || rm < 4) && rd + 1 == k || !repeating && rm > 3 && rd + 1 == k / 2) && (d[di + 1] / k / 1000 | 0) == mathpow(10, i - 3) - 1;
|
|
11493
|
-
}
|
|
11494
|
-
}
|
|
11495
|
-
return r;
|
|
11496
|
-
}
|
|
11497
|
-
function convertBase(str, baseIn, baseOut) {
|
|
11498
|
-
var j, arr = [0], arrL, i = 0, strL = str.length;
|
|
11499
|
-
for (;i < strL; ) {
|
|
11500
|
-
for (arrL = arr.length;arrL--; )
|
|
11501
|
-
arr[arrL] *= baseIn;
|
|
11502
|
-
arr[0] += NUMERALS.indexOf(str.charAt(i++));
|
|
11503
|
-
for (j = 0;j < arr.length; j++) {
|
|
11504
|
-
if (arr[j] > baseOut - 1) {
|
|
11505
|
-
if (arr[j + 1] === undefined)
|
|
11506
|
-
arr[j + 1] = 0;
|
|
11507
|
-
arr[j + 1] += arr[j] / baseOut | 0;
|
|
11508
|
-
arr[j] %= baseOut;
|
|
11509
|
-
}
|
|
11510
|
-
}
|
|
11511
|
-
}
|
|
11512
|
-
return arr.reverse();
|
|
11513
|
-
}
|
|
11514
|
-
function cosine(Ctor, x) {
|
|
11515
|
-
var k, len, y;
|
|
11516
|
-
if (x.isZero())
|
|
11517
|
-
return x;
|
|
11518
|
-
len = x.d.length;
|
|
11519
|
-
if (len < 32) {
|
|
11520
|
-
k = Math.ceil(len / 3);
|
|
11521
|
-
y = (1 / tinyPow(4, k)).toString();
|
|
11522
|
-
} else {
|
|
11523
|
-
k = 16;
|
|
11524
|
-
y = "2.3283064365386962890625e-10";
|
|
11525
|
-
}
|
|
11526
|
-
Ctor.precision += k;
|
|
11527
|
-
x = taylorSeries(Ctor, 1, x.times(y), new Ctor(1));
|
|
11528
|
-
for (var i = k;i--; ) {
|
|
11529
|
-
var cos2x = x.times(x);
|
|
11530
|
-
x = cos2x.times(cos2x).minus(cos2x).times(8).plus(1);
|
|
11531
|
-
}
|
|
11532
|
-
Ctor.precision -= k;
|
|
11533
|
-
return x;
|
|
11534
|
-
}
|
|
11535
|
-
var divide = function() {
|
|
11536
|
-
function multiplyInteger(x, k, base) {
|
|
11537
|
-
var temp, carry = 0, i = x.length;
|
|
11538
|
-
for (x = x.slice();i--; ) {
|
|
11539
|
-
temp = x[i] * k + carry;
|
|
11540
|
-
x[i] = temp % base | 0;
|
|
11541
|
-
carry = temp / base | 0;
|
|
11542
|
-
}
|
|
11543
|
-
if (carry)
|
|
11544
|
-
x.unshift(carry);
|
|
11545
|
-
return x;
|
|
11546
|
-
}
|
|
11547
|
-
function compare(a, b, aL, bL) {
|
|
11548
|
-
var i, r;
|
|
11549
|
-
if (aL != bL) {
|
|
11550
|
-
r = aL > bL ? 1 : -1;
|
|
11551
|
-
} else {
|
|
11552
|
-
for (i = r = 0;i < aL; i++) {
|
|
11553
|
-
if (a[i] != b[i]) {
|
|
11554
|
-
r = a[i] > b[i] ? 1 : -1;
|
|
11555
|
-
break;
|
|
11556
|
-
}
|
|
11557
|
-
}
|
|
11558
|
-
}
|
|
11559
|
-
return r;
|
|
11560
|
-
}
|
|
11561
|
-
function subtract(a, b, aL, base) {
|
|
11562
|
-
var i = 0;
|
|
11563
|
-
for (;aL--; ) {
|
|
11564
|
-
a[aL] -= i;
|
|
11565
|
-
i = a[aL] < b[aL] ? 1 : 0;
|
|
11566
|
-
a[aL] = i * base + a[aL] - b[aL];
|
|
11567
|
-
}
|
|
11568
|
-
for (;!a[0] && a.length > 1; )
|
|
11569
|
-
a.shift();
|
|
11570
|
-
}
|
|
11571
|
-
return function(x, y, pr, rm, dp, base) {
|
|
11572
|
-
var cmp, e, i, k, logBase, more, prod, prodL, q, qd, rem, remL, rem0, sd, t, xi, xL, yd0, yL, yz, Ctor = x.constructor, sign = x.s == y.s ? 1 : -1, xd = x.d, yd = y.d;
|
|
11573
|
-
if (!xd || !xd[0] || !yd || !yd[0]) {
|
|
11574
|
-
return new Ctor(!x.s || !y.s || (xd ? yd && xd[0] == yd[0] : !yd) ? NaN : xd && xd[0] == 0 || !yd ? sign * 0 : sign / 0);
|
|
11575
|
-
}
|
|
11576
|
-
if (base) {
|
|
11577
|
-
logBase = 1;
|
|
11578
|
-
e = x.e - y.e;
|
|
11579
|
-
} else {
|
|
11580
|
-
base = BASE;
|
|
11581
|
-
logBase = LOG_BASE;
|
|
11582
|
-
e = mathfloor(x.e / logBase) - mathfloor(y.e / logBase);
|
|
11583
|
-
}
|
|
11584
|
-
yL = yd.length;
|
|
11585
|
-
xL = xd.length;
|
|
11586
|
-
q = new Ctor(sign);
|
|
11587
|
-
qd = q.d = [];
|
|
11588
|
-
for (i = 0;yd[i] == (xd[i] || 0); i++)
|
|
11589
|
-
;
|
|
11590
|
-
if (yd[i] > (xd[i] || 0))
|
|
11591
|
-
e--;
|
|
11592
|
-
if (pr == null) {
|
|
11593
|
-
sd = pr = Ctor.precision;
|
|
11594
|
-
rm = Ctor.rounding;
|
|
11595
|
-
} else if (dp) {
|
|
11596
|
-
sd = pr + (x.e - y.e) + 1;
|
|
11597
|
-
} else {
|
|
11598
|
-
sd = pr;
|
|
11599
|
-
}
|
|
11600
|
-
if (sd < 0) {
|
|
11601
|
-
qd.push(1);
|
|
11602
|
-
more = true;
|
|
11603
|
-
} else {
|
|
11604
|
-
sd = sd / logBase + 2 | 0;
|
|
11605
|
-
i = 0;
|
|
11606
|
-
if (yL == 1) {
|
|
11607
|
-
k = 0;
|
|
11608
|
-
yd = yd[0];
|
|
11609
|
-
sd++;
|
|
11610
|
-
for (;(i < xL || k) && sd--; i++) {
|
|
11611
|
-
t = k * base + (xd[i] || 0);
|
|
11612
|
-
qd[i] = t / yd | 0;
|
|
11613
|
-
k = t % yd | 0;
|
|
11614
|
-
}
|
|
11615
|
-
more = k || i < xL;
|
|
11616
|
-
} else {
|
|
11617
|
-
k = base / (yd[0] + 1) | 0;
|
|
11618
|
-
if (k > 1) {
|
|
11619
|
-
yd = multiplyInteger(yd, k, base);
|
|
11620
|
-
xd = multiplyInteger(xd, k, base);
|
|
11621
|
-
yL = yd.length;
|
|
11622
|
-
xL = xd.length;
|
|
11623
|
-
}
|
|
11624
|
-
xi = yL;
|
|
11625
|
-
rem = xd.slice(0, yL);
|
|
11626
|
-
remL = rem.length;
|
|
11627
|
-
for (;remL < yL; )
|
|
11628
|
-
rem[remL++] = 0;
|
|
11629
|
-
yz = yd.slice();
|
|
11630
|
-
yz.unshift(0);
|
|
11631
|
-
yd0 = yd[0];
|
|
11632
|
-
if (yd[1] >= base / 2)
|
|
11633
|
-
++yd0;
|
|
11634
|
-
do {
|
|
11635
|
-
k = 0;
|
|
11636
|
-
cmp = compare(yd, rem, yL, remL);
|
|
11637
|
-
if (cmp < 0) {
|
|
11638
|
-
rem0 = rem[0];
|
|
11639
|
-
if (yL != remL)
|
|
11640
|
-
rem0 = rem0 * base + (rem[1] || 0);
|
|
11641
|
-
k = rem0 / yd0 | 0;
|
|
11642
|
-
if (k > 1) {
|
|
11643
|
-
if (k >= base)
|
|
11644
|
-
k = base - 1;
|
|
11645
|
-
prod = multiplyInteger(yd, k, base);
|
|
11646
|
-
prodL = prod.length;
|
|
11647
|
-
remL = rem.length;
|
|
11648
|
-
cmp = compare(prod, rem, prodL, remL);
|
|
11649
|
-
if (cmp == 1) {
|
|
11650
|
-
k--;
|
|
11651
|
-
subtract(prod, yL < prodL ? yz : yd, prodL, base);
|
|
11652
|
-
}
|
|
11653
|
-
} else {
|
|
11654
|
-
if (k == 0)
|
|
11655
|
-
cmp = k = 1;
|
|
11656
|
-
prod = yd.slice();
|
|
11657
|
-
}
|
|
11658
|
-
prodL = prod.length;
|
|
11659
|
-
if (prodL < remL)
|
|
11660
|
-
prod.unshift(0);
|
|
11661
|
-
subtract(rem, prod, remL, base);
|
|
11662
|
-
if (cmp == -1) {
|
|
11663
|
-
remL = rem.length;
|
|
11664
|
-
cmp = compare(yd, rem, yL, remL);
|
|
11665
|
-
if (cmp < 1) {
|
|
11666
|
-
k++;
|
|
11667
|
-
subtract(rem, yL < remL ? yz : yd, remL, base);
|
|
11668
|
-
}
|
|
11669
|
-
}
|
|
11670
|
-
remL = rem.length;
|
|
11671
|
-
} else if (cmp === 0) {
|
|
11672
|
-
k++;
|
|
11673
|
-
rem = [0];
|
|
11674
|
-
}
|
|
11675
|
-
qd[i++] = k;
|
|
11676
|
-
if (cmp && rem[0]) {
|
|
11677
|
-
rem[remL++] = xd[xi] || 0;
|
|
11678
|
-
} else {
|
|
11679
|
-
rem = [xd[xi]];
|
|
11680
|
-
remL = 1;
|
|
11681
|
-
}
|
|
11682
|
-
} while ((xi++ < xL || rem[0] !== undefined) && sd--);
|
|
11683
|
-
more = rem[0] !== undefined;
|
|
11684
|
-
}
|
|
11685
|
-
if (!qd[0])
|
|
11686
|
-
qd.shift();
|
|
11687
|
-
}
|
|
11688
|
-
if (logBase == 1) {
|
|
11689
|
-
q.e = e;
|
|
11690
|
-
inexact = more;
|
|
11691
|
-
} else {
|
|
11692
|
-
for (i = 1, k = qd[0];k >= 10; k /= 10)
|
|
11693
|
-
i++;
|
|
11694
|
-
q.e = i + e * logBase - 1;
|
|
11695
|
-
finalise(q, dp ? pr + q.e + 1 : pr, rm, more);
|
|
11696
|
-
}
|
|
11697
|
-
return q;
|
|
11698
|
-
};
|
|
11699
|
-
}();
|
|
11700
|
-
function finalise(x, sd, rm, isTruncated) {
|
|
11701
|
-
var digits, i, j, k, rd, roundUp, w, xd, xdi, Ctor = x.constructor;
|
|
11702
|
-
out:
|
|
11703
|
-
if (sd != null) {
|
|
11704
|
-
xd = x.d;
|
|
11705
|
-
if (!xd)
|
|
11706
|
-
return x;
|
|
11707
|
-
for (digits = 1, k = xd[0];k >= 10; k /= 10)
|
|
11708
|
-
digits++;
|
|
11709
|
-
i = sd - digits;
|
|
11710
|
-
if (i < 0) {
|
|
11711
|
-
i += LOG_BASE;
|
|
11712
|
-
j = sd;
|
|
11713
|
-
w = xd[xdi = 0];
|
|
11714
|
-
rd = w / mathpow(10, digits - j - 1) % 10 | 0;
|
|
11715
|
-
} else {
|
|
11716
|
-
xdi = Math.ceil((i + 1) / LOG_BASE);
|
|
11717
|
-
k = xd.length;
|
|
11718
|
-
if (xdi >= k) {
|
|
11719
|
-
if (isTruncated) {
|
|
11720
|
-
for (;k++ <= xdi; )
|
|
11721
|
-
xd.push(0);
|
|
11722
|
-
w = rd = 0;
|
|
11723
|
-
digits = 1;
|
|
11724
|
-
i %= LOG_BASE;
|
|
11725
|
-
j = i - LOG_BASE + 1;
|
|
11726
|
-
} else {
|
|
11727
|
-
break out;
|
|
11728
|
-
}
|
|
11729
|
-
} else {
|
|
11730
|
-
w = k = xd[xdi];
|
|
11731
|
-
for (digits = 1;k >= 10; k /= 10)
|
|
11732
|
-
digits++;
|
|
11733
|
-
i %= LOG_BASE;
|
|
11734
|
-
j = i - LOG_BASE + digits;
|
|
11735
|
-
rd = j < 0 ? 0 : w / mathpow(10, digits - j - 1) % 10 | 0;
|
|
11736
|
-
}
|
|
11737
|
-
}
|
|
11738
|
-
isTruncated = isTruncated || sd < 0 || xd[xdi + 1] !== undefined || (j < 0 ? w : w % mathpow(10, digits - j - 1));
|
|
11739
|
-
roundUp = rm < 4 ? (rd || isTruncated) && (rm == 0 || rm == (x.s < 0 ? 3 : 2)) : rd > 5 || rd == 5 && (rm == 4 || isTruncated || rm == 6 && (i > 0 ? j > 0 ? w / mathpow(10, digits - j) : 0 : xd[xdi - 1]) % 10 & 1 || rm == (x.s < 0 ? 8 : 7));
|
|
11740
|
-
if (sd < 1 || !xd[0]) {
|
|
11741
|
-
xd.length = 0;
|
|
11742
|
-
if (roundUp) {
|
|
11743
|
-
sd -= x.e + 1;
|
|
11744
|
-
xd[0] = mathpow(10, (LOG_BASE - sd % LOG_BASE) % LOG_BASE);
|
|
11745
|
-
x.e = -sd || 0;
|
|
11746
|
-
} else {
|
|
11747
|
-
xd[0] = x.e = 0;
|
|
11748
|
-
}
|
|
11749
|
-
return x;
|
|
11750
|
-
}
|
|
11751
|
-
if (i == 0) {
|
|
11752
|
-
xd.length = xdi;
|
|
11753
|
-
k = 1;
|
|
11754
|
-
xdi--;
|
|
11755
|
-
} else {
|
|
11756
|
-
xd.length = xdi + 1;
|
|
11757
|
-
k = mathpow(10, LOG_BASE - i);
|
|
11758
|
-
xd[xdi] = j > 0 ? (w / mathpow(10, digits - j) % mathpow(10, j) | 0) * k : 0;
|
|
11759
|
-
}
|
|
11760
|
-
if (roundUp) {
|
|
11761
|
-
for (;; ) {
|
|
11762
|
-
if (xdi == 0) {
|
|
11763
|
-
for (i = 1, j = xd[0];j >= 10; j /= 10)
|
|
11764
|
-
i++;
|
|
11765
|
-
j = xd[0] += k;
|
|
11766
|
-
for (k = 1;j >= 10; j /= 10)
|
|
11767
|
-
k++;
|
|
11768
|
-
if (i != k) {
|
|
11769
|
-
x.e++;
|
|
11770
|
-
if (xd[0] == BASE)
|
|
11771
|
-
xd[0] = 1;
|
|
11772
|
-
}
|
|
11773
|
-
break;
|
|
11774
|
-
} else {
|
|
11775
|
-
xd[xdi] += k;
|
|
11776
|
-
if (xd[xdi] != BASE)
|
|
11777
|
-
break;
|
|
11778
|
-
xd[xdi--] = 0;
|
|
11779
|
-
k = 1;
|
|
11780
|
-
}
|
|
11781
|
-
}
|
|
11782
|
-
}
|
|
11783
|
-
for (i = xd.length;xd[--i] === 0; )
|
|
11784
|
-
xd.pop();
|
|
11785
|
-
}
|
|
11786
|
-
if (external2) {
|
|
11787
|
-
if (x.e > Ctor.maxE) {
|
|
11788
|
-
x.d = null;
|
|
11789
|
-
x.e = NaN;
|
|
11790
|
-
} else if (x.e < Ctor.minE) {
|
|
11791
|
-
x.e = 0;
|
|
11792
|
-
x.d = [0];
|
|
11793
|
-
}
|
|
11794
|
-
}
|
|
11795
|
-
return x;
|
|
11796
|
-
}
|
|
11797
|
-
function finiteToString(x, isExp, sd) {
|
|
11798
|
-
if (!x.isFinite())
|
|
11799
|
-
return nonFiniteToString(x);
|
|
11800
|
-
var k, e = x.e, str = digitsToString(x.d), len = str.length;
|
|
11801
|
-
if (isExp) {
|
|
11802
|
-
if (sd && (k = sd - len) > 0) {
|
|
11803
|
-
str = str.charAt(0) + "." + str.slice(1) + getZeroString(k);
|
|
11804
|
-
} else if (len > 1) {
|
|
11805
|
-
str = str.charAt(0) + "." + str.slice(1);
|
|
11806
|
-
}
|
|
11807
|
-
str = str + (x.e < 0 ? "e" : "e+") + x.e;
|
|
11808
|
-
} else if (e < 0) {
|
|
11809
|
-
str = "0." + getZeroString(-e - 1) + str;
|
|
11810
|
-
if (sd && (k = sd - len) > 0)
|
|
11811
|
-
str += getZeroString(k);
|
|
11812
|
-
} else if (e >= len) {
|
|
11813
|
-
str += getZeroString(e + 1 - len);
|
|
11814
|
-
if (sd && (k = sd - e - 1) > 0)
|
|
11815
|
-
str = str + "." + getZeroString(k);
|
|
11816
|
-
} else {
|
|
11817
|
-
if ((k = e + 1) < len)
|
|
11818
|
-
str = str.slice(0, k) + "." + str.slice(k);
|
|
11819
|
-
if (sd && (k = sd - len) > 0) {
|
|
11820
|
-
if (e + 1 === len)
|
|
11821
|
-
str += ".";
|
|
11822
|
-
str += getZeroString(k);
|
|
11823
|
-
}
|
|
11824
|
-
}
|
|
11825
|
-
return str;
|
|
11826
|
-
}
|
|
11827
|
-
function getBase10Exponent(digits, e) {
|
|
11828
|
-
var w = digits[0];
|
|
11829
|
-
for (e *= LOG_BASE;w >= 10; w /= 10)
|
|
11830
|
-
e++;
|
|
11831
|
-
return e;
|
|
11832
|
-
}
|
|
11833
|
-
function getLn10(Ctor, sd, pr) {
|
|
11834
|
-
if (sd > LN10_PRECISION) {
|
|
11835
|
-
external2 = true;
|
|
11836
|
-
if (pr)
|
|
11837
|
-
Ctor.precision = pr;
|
|
11838
|
-
throw Error(precisionLimitExceeded);
|
|
11839
|
-
}
|
|
11840
|
-
return finalise(new Ctor(LN10), sd, 1, true);
|
|
11841
|
-
}
|
|
11842
|
-
function getPi(Ctor, sd, rm) {
|
|
11843
|
-
if (sd > PI_PRECISION)
|
|
11844
|
-
throw Error(precisionLimitExceeded);
|
|
11845
|
-
return finalise(new Ctor(PI), sd, rm, true);
|
|
11846
|
-
}
|
|
11847
|
-
function getPrecision(digits) {
|
|
11848
|
-
var w = digits.length - 1, len = w * LOG_BASE + 1;
|
|
11849
|
-
w = digits[w];
|
|
11850
|
-
if (w) {
|
|
11851
|
-
for (;w % 10 == 0; w /= 10)
|
|
11852
|
-
len--;
|
|
11853
|
-
for (w = digits[0];w >= 10; w /= 10)
|
|
11854
|
-
len++;
|
|
11855
|
-
}
|
|
11856
|
-
return len;
|
|
11857
|
-
}
|
|
11858
|
-
function getZeroString(k) {
|
|
11859
|
-
var zs = "";
|
|
11860
|
-
for (;k--; )
|
|
11861
|
-
zs += "0";
|
|
11862
|
-
return zs;
|
|
11863
|
-
}
|
|
11864
|
-
function intPow(Ctor, x, n, pr) {
|
|
11865
|
-
var isTruncated, r = new Ctor(1), k = Math.ceil(pr / LOG_BASE + 4);
|
|
11866
|
-
external2 = false;
|
|
11867
|
-
for (;; ) {
|
|
11868
|
-
if (n % 2) {
|
|
11869
|
-
r = r.times(x);
|
|
11870
|
-
if (truncate(r.d, k))
|
|
11871
|
-
isTruncated = true;
|
|
11872
|
-
}
|
|
11873
|
-
n = mathfloor(n / 2);
|
|
11874
|
-
if (n === 0) {
|
|
11875
|
-
n = r.d.length - 1;
|
|
11876
|
-
if (isTruncated && r.d[n] === 0)
|
|
11877
|
-
++r.d[n];
|
|
11878
|
-
break;
|
|
11879
|
-
}
|
|
11880
|
-
x = x.times(x);
|
|
11881
|
-
truncate(x.d, k);
|
|
11882
|
-
}
|
|
11883
|
-
external2 = true;
|
|
11884
|
-
return r;
|
|
11885
|
-
}
|
|
11886
|
-
function isOdd(n) {
|
|
11887
|
-
return n.d[n.d.length - 1] & 1;
|
|
11888
|
-
}
|
|
11889
|
-
function maxOrMin(Ctor, args, n) {
|
|
11890
|
-
var k, y, x = new Ctor(args[0]), i = 0;
|
|
11891
|
-
for (;++i < args.length; ) {
|
|
11892
|
-
y = new Ctor(args[i]);
|
|
11893
|
-
if (!y.s) {
|
|
11894
|
-
x = y;
|
|
11895
|
-
break;
|
|
11896
|
-
}
|
|
11897
|
-
k = x.cmp(y);
|
|
11898
|
-
if (k === n || k === 0 && x.s === n) {
|
|
11899
|
-
x = y;
|
|
11900
|
-
}
|
|
11901
|
-
}
|
|
11902
|
-
return x;
|
|
11903
|
-
}
|
|
11904
|
-
function naturalExponential(x, sd) {
|
|
11905
|
-
var denominator, guard, j, pow, sum, t, wpr, rep = 0, i = 0, k = 0, Ctor = x.constructor, rm = Ctor.rounding, pr = Ctor.precision;
|
|
11906
|
-
if (!x.d || !x.d[0] || x.e > 17) {
|
|
11907
|
-
return new Ctor(x.d ? !x.d[0] ? 1 : x.s < 0 ? 0 : 1 / 0 : x.s ? x.s < 0 ? 0 : x : 0 / 0);
|
|
11908
|
-
}
|
|
11909
|
-
if (sd == null) {
|
|
11910
|
-
external2 = false;
|
|
11911
|
-
wpr = pr;
|
|
11912
|
-
} else {
|
|
11913
|
-
wpr = sd;
|
|
11914
|
-
}
|
|
11915
|
-
t = new Ctor(0.03125);
|
|
11916
|
-
while (x.e > -2) {
|
|
11917
|
-
x = x.times(t);
|
|
11918
|
-
k += 5;
|
|
11919
|
-
}
|
|
11920
|
-
guard = Math.log(mathpow(2, k)) / Math.LN10 * 2 + 5 | 0;
|
|
11921
|
-
wpr += guard;
|
|
11922
|
-
denominator = pow = sum = new Ctor(1);
|
|
11923
|
-
Ctor.precision = wpr;
|
|
11924
|
-
for (;; ) {
|
|
11925
|
-
pow = finalise(pow.times(x), wpr, 1);
|
|
11926
|
-
denominator = denominator.times(++i);
|
|
11927
|
-
t = sum.plus(divide(pow, denominator, wpr, 1));
|
|
11928
|
-
if (digitsToString(t.d).slice(0, wpr) === digitsToString(sum.d).slice(0, wpr)) {
|
|
11929
|
-
j = k;
|
|
11930
|
-
while (j--)
|
|
11931
|
-
sum = finalise(sum.times(sum), wpr, 1);
|
|
11932
|
-
if (sd == null) {
|
|
11933
|
-
if (rep < 3 && checkRoundingDigits(sum.d, wpr - guard, rm, rep)) {
|
|
11934
|
-
Ctor.precision = wpr += 10;
|
|
11935
|
-
denominator = pow = t = new Ctor(1);
|
|
11936
|
-
i = 0;
|
|
11937
|
-
rep++;
|
|
11938
|
-
} else {
|
|
11939
|
-
return finalise(sum, Ctor.precision = pr, rm, external2 = true);
|
|
11940
|
-
}
|
|
11941
|
-
} else {
|
|
11942
|
-
Ctor.precision = pr;
|
|
11943
|
-
return sum;
|
|
11944
|
-
}
|
|
11945
|
-
}
|
|
11946
|
-
sum = t;
|
|
11947
|
-
}
|
|
11948
|
-
}
|
|
11949
|
-
function naturalLogarithm(y, sd) {
|
|
11950
|
-
var c, c0, denominator, e, numerator, rep, sum, t, wpr, x1, x2, n = 1, guard = 10, x = y, xd = x.d, Ctor = x.constructor, rm = Ctor.rounding, pr = Ctor.precision;
|
|
11951
|
-
if (x.s < 0 || !xd || !xd[0] || !x.e && xd[0] == 1 && xd.length == 1) {
|
|
11952
|
-
return new Ctor(xd && !xd[0] ? -1 / 0 : x.s != 1 ? NaN : xd ? 0 : x);
|
|
11953
|
-
}
|
|
11954
|
-
if (sd == null) {
|
|
11955
|
-
external2 = false;
|
|
11956
|
-
wpr = pr;
|
|
11957
|
-
} else {
|
|
11958
|
-
wpr = sd;
|
|
11959
|
-
}
|
|
11960
|
-
Ctor.precision = wpr += guard;
|
|
11961
|
-
c = digitsToString(xd);
|
|
11962
|
-
c0 = c.charAt(0);
|
|
11963
|
-
if (Math.abs(e = x.e) < 1500000000000000) {
|
|
11964
|
-
while (c0 < 7 && c0 != 1 || c0 == 1 && c.charAt(1) > 3) {
|
|
11965
|
-
x = x.times(y);
|
|
11966
|
-
c = digitsToString(x.d);
|
|
11967
|
-
c0 = c.charAt(0);
|
|
11968
|
-
n++;
|
|
11969
|
-
}
|
|
11970
|
-
e = x.e;
|
|
11971
|
-
if (c0 > 1) {
|
|
11972
|
-
x = new Ctor("0." + c);
|
|
11973
|
-
e++;
|
|
11974
|
-
} else {
|
|
11975
|
-
x = new Ctor(c0 + "." + c.slice(1));
|
|
11976
|
-
}
|
|
11977
|
-
} else {
|
|
11978
|
-
t = getLn10(Ctor, wpr + 2, pr).times(e + "");
|
|
11979
|
-
x = naturalLogarithm(new Ctor(c0 + "." + c.slice(1)), wpr - guard).plus(t);
|
|
11980
|
-
Ctor.precision = pr;
|
|
11981
|
-
return sd == null ? finalise(x, pr, rm, external2 = true) : x;
|
|
11982
|
-
}
|
|
11983
|
-
x1 = x;
|
|
11984
|
-
sum = numerator = x = divide(x.minus(1), x.plus(1), wpr, 1);
|
|
11985
|
-
x2 = finalise(x.times(x), wpr, 1);
|
|
11986
|
-
denominator = 3;
|
|
11987
|
-
for (;; ) {
|
|
11988
|
-
numerator = finalise(numerator.times(x2), wpr, 1);
|
|
11989
|
-
t = sum.plus(divide(numerator, new Ctor(denominator), wpr, 1));
|
|
11990
|
-
if (digitsToString(t.d).slice(0, wpr) === digitsToString(sum.d).slice(0, wpr)) {
|
|
11991
|
-
sum = sum.times(2);
|
|
11992
|
-
if (e !== 0)
|
|
11993
|
-
sum = sum.plus(getLn10(Ctor, wpr + 2, pr).times(e + ""));
|
|
11994
|
-
sum = divide(sum, new Ctor(n), wpr, 1);
|
|
11995
|
-
if (sd == null) {
|
|
11996
|
-
if (checkRoundingDigits(sum.d, wpr - guard, rm, rep)) {
|
|
11997
|
-
Ctor.precision = wpr += guard;
|
|
11998
|
-
t = numerator = x = divide(x1.minus(1), x1.plus(1), wpr, 1);
|
|
11999
|
-
x2 = finalise(x.times(x), wpr, 1);
|
|
12000
|
-
denominator = rep = 1;
|
|
12001
|
-
} else {
|
|
12002
|
-
return finalise(sum, Ctor.precision = pr, rm, external2 = true);
|
|
12003
|
-
}
|
|
12004
|
-
} else {
|
|
12005
|
-
Ctor.precision = pr;
|
|
12006
|
-
return sum;
|
|
12007
|
-
}
|
|
12008
|
-
}
|
|
12009
|
-
sum = t;
|
|
12010
|
-
denominator += 2;
|
|
12011
|
-
}
|
|
12012
|
-
}
|
|
12013
|
-
function nonFiniteToString(x) {
|
|
12014
|
-
return String(x.s * x.s / 0);
|
|
12015
|
-
}
|
|
12016
|
-
function parseDecimal(x, str) {
|
|
12017
|
-
var e, i, len;
|
|
12018
|
-
if ((e = str.indexOf(".")) > -1)
|
|
12019
|
-
str = str.replace(".", "");
|
|
12020
|
-
if ((i = str.search(/e/i)) > 0) {
|
|
12021
|
-
if (e < 0)
|
|
12022
|
-
e = i;
|
|
12023
|
-
e += +str.slice(i + 1);
|
|
12024
|
-
str = str.substring(0, i);
|
|
12025
|
-
} else if (e < 0) {
|
|
12026
|
-
e = str.length;
|
|
12027
|
-
}
|
|
12028
|
-
for (i = 0;str.charCodeAt(i) === 48; i++)
|
|
12029
|
-
;
|
|
12030
|
-
for (len = str.length;str.charCodeAt(len - 1) === 48; --len)
|
|
12031
|
-
;
|
|
12032
|
-
str = str.slice(i, len);
|
|
12033
|
-
if (str) {
|
|
12034
|
-
len -= i;
|
|
12035
|
-
x.e = e = e - i - 1;
|
|
12036
|
-
x.d = [];
|
|
12037
|
-
i = (e + 1) % LOG_BASE;
|
|
12038
|
-
if (e < 0)
|
|
12039
|
-
i += LOG_BASE;
|
|
12040
|
-
if (i < len) {
|
|
12041
|
-
if (i)
|
|
12042
|
-
x.d.push(+str.slice(0, i));
|
|
12043
|
-
for (len -= LOG_BASE;i < len; )
|
|
12044
|
-
x.d.push(+str.slice(i, i += LOG_BASE));
|
|
12045
|
-
str = str.slice(i);
|
|
12046
|
-
i = LOG_BASE - str.length;
|
|
12047
|
-
} else {
|
|
12048
|
-
i -= len;
|
|
12049
|
-
}
|
|
12050
|
-
for (;i--; )
|
|
12051
|
-
str += "0";
|
|
12052
|
-
x.d.push(+str);
|
|
12053
|
-
if (external2) {
|
|
12054
|
-
if (x.e > x.constructor.maxE) {
|
|
12055
|
-
x.d = null;
|
|
12056
|
-
x.e = NaN;
|
|
12057
|
-
} else if (x.e < x.constructor.minE) {
|
|
12058
|
-
x.e = 0;
|
|
12059
|
-
x.d = [0];
|
|
12060
|
-
}
|
|
12061
|
-
}
|
|
12062
|
-
} else {
|
|
12063
|
-
x.e = 0;
|
|
12064
|
-
x.d = [0];
|
|
12065
|
-
}
|
|
12066
|
-
return x;
|
|
12067
|
-
}
|
|
12068
|
-
function parseOther(x, str) {
|
|
12069
|
-
var base, Ctor, divisor, i, isFloat, len, p, xd, xe;
|
|
12070
|
-
if (str.indexOf("_") > -1) {
|
|
12071
|
-
str = str.replace(/(\d)_(?=\d)/g, "$1");
|
|
12072
|
-
if (isDecimal.test(str))
|
|
12073
|
-
return parseDecimal(x, str);
|
|
12074
|
-
} else if (str === "Infinity" || str === "NaN") {
|
|
12075
|
-
if (!+str)
|
|
12076
|
-
x.s = NaN;
|
|
12077
|
-
x.e = NaN;
|
|
12078
|
-
x.d = null;
|
|
12079
|
-
return x;
|
|
12080
|
-
}
|
|
12081
|
-
if (isHex.test(str)) {
|
|
12082
|
-
base = 16;
|
|
12083
|
-
str = str.toLowerCase();
|
|
12084
|
-
} else if (isBinary.test(str)) {
|
|
12085
|
-
base = 2;
|
|
12086
|
-
} else if (isOctal.test(str)) {
|
|
12087
|
-
base = 8;
|
|
12088
|
-
} else {
|
|
12089
|
-
throw Error(invalidArgument + str);
|
|
12090
|
-
}
|
|
12091
|
-
i = str.search(/p/i);
|
|
12092
|
-
if (i > 0) {
|
|
12093
|
-
p = +str.slice(i + 1);
|
|
12094
|
-
str = str.substring(2, i);
|
|
12095
|
-
} else {
|
|
12096
|
-
str = str.slice(2);
|
|
12097
|
-
}
|
|
12098
|
-
i = str.indexOf(".");
|
|
12099
|
-
isFloat = i >= 0;
|
|
12100
|
-
Ctor = x.constructor;
|
|
12101
|
-
if (isFloat) {
|
|
12102
|
-
str = str.replace(".", "");
|
|
12103
|
-
len = str.length;
|
|
12104
|
-
i = len - i;
|
|
12105
|
-
divisor = intPow(Ctor, new Ctor(base), i, i * 2);
|
|
12106
|
-
}
|
|
12107
|
-
xd = convertBase(str, base, BASE);
|
|
12108
|
-
xe = xd.length - 1;
|
|
12109
|
-
for (i = xe;xd[i] === 0; --i)
|
|
12110
|
-
xd.pop();
|
|
12111
|
-
if (i < 0)
|
|
12112
|
-
return new Ctor(x.s * 0);
|
|
12113
|
-
x.e = getBase10Exponent(xd, xe);
|
|
12114
|
-
x.d = xd;
|
|
12115
|
-
external2 = false;
|
|
12116
|
-
if (isFloat)
|
|
12117
|
-
x = divide(x, divisor, len * 4);
|
|
12118
|
-
if (p)
|
|
12119
|
-
x = x.times(Math.abs(p) < 54 ? mathpow(2, p) : Decimal.pow(2, p));
|
|
12120
|
-
external2 = true;
|
|
12121
|
-
return x;
|
|
12122
|
-
}
|
|
12123
|
-
function sine(Ctor, x) {
|
|
12124
|
-
var k, len = x.d.length;
|
|
12125
|
-
if (len < 3) {
|
|
12126
|
-
return x.isZero() ? x : taylorSeries(Ctor, 2, x, x);
|
|
12127
|
-
}
|
|
12128
|
-
k = 1.4 * Math.sqrt(len);
|
|
12129
|
-
k = k > 16 ? 16 : k | 0;
|
|
12130
|
-
x = x.times(1 / tinyPow(5, k));
|
|
12131
|
-
x = taylorSeries(Ctor, 2, x, x);
|
|
12132
|
-
var sin2_x, d5 = new Ctor(5), d16 = new Ctor(16), d20 = new Ctor(20);
|
|
12133
|
-
for (;k--; ) {
|
|
12134
|
-
sin2_x = x.times(x);
|
|
12135
|
-
x = x.times(d5.plus(sin2_x.times(d16.times(sin2_x).minus(d20))));
|
|
12136
|
-
}
|
|
12137
|
-
return x;
|
|
12138
|
-
}
|
|
12139
|
-
function taylorSeries(Ctor, n, x, y, isHyperbolic) {
|
|
12140
|
-
var j, t, u, x2, i = 1, pr = Ctor.precision, k = Math.ceil(pr / LOG_BASE);
|
|
12141
|
-
external2 = false;
|
|
12142
|
-
x2 = x.times(x);
|
|
12143
|
-
u = new Ctor(y);
|
|
12144
|
-
for (;; ) {
|
|
12145
|
-
t = divide(u.times(x2), new Ctor(n++ * n++), pr, 1);
|
|
12146
|
-
u = isHyperbolic ? y.plus(t) : y.minus(t);
|
|
12147
|
-
y = divide(t.times(x2), new Ctor(n++ * n++), pr, 1);
|
|
12148
|
-
t = u.plus(y);
|
|
12149
|
-
if (t.d[k] !== undefined) {
|
|
12150
|
-
for (j = k;t.d[j] === u.d[j] && j--; )
|
|
12151
|
-
;
|
|
12152
|
-
if (j == -1)
|
|
12153
|
-
break;
|
|
12154
|
-
}
|
|
12155
|
-
j = u;
|
|
12156
|
-
u = y;
|
|
12157
|
-
y = t;
|
|
12158
|
-
t = j;
|
|
12159
|
-
i++;
|
|
12160
|
-
}
|
|
12161
|
-
external2 = true;
|
|
12162
|
-
t.d.length = k + 1;
|
|
12163
|
-
return t;
|
|
12164
|
-
}
|
|
12165
|
-
function tinyPow(b, e) {
|
|
12166
|
-
var n = b;
|
|
12167
|
-
while (--e)
|
|
12168
|
-
n *= b;
|
|
12169
|
-
return n;
|
|
12170
|
-
}
|
|
12171
|
-
function toLessThanHalfPi(Ctor, x) {
|
|
12172
|
-
var t, isNeg = x.s < 0, pi = getPi(Ctor, Ctor.precision, 1), halfPi = pi.times(0.5);
|
|
12173
|
-
x = x.abs();
|
|
12174
|
-
if (x.lte(halfPi)) {
|
|
12175
|
-
quadrant = isNeg ? 4 : 1;
|
|
12176
|
-
return x;
|
|
12177
|
-
}
|
|
12178
|
-
t = x.divToInt(pi);
|
|
12179
|
-
if (t.isZero()) {
|
|
12180
|
-
quadrant = isNeg ? 3 : 2;
|
|
12181
|
-
} else {
|
|
12182
|
-
x = x.minus(t.times(pi));
|
|
12183
|
-
if (x.lte(halfPi)) {
|
|
12184
|
-
quadrant = isOdd(t) ? isNeg ? 2 : 3 : isNeg ? 4 : 1;
|
|
12185
|
-
return x;
|
|
12186
|
-
}
|
|
12187
|
-
quadrant = isOdd(t) ? isNeg ? 1 : 4 : isNeg ? 3 : 2;
|
|
12188
|
-
}
|
|
12189
|
-
return x.minus(pi).abs();
|
|
12190
|
-
}
|
|
12191
|
-
function toStringBinary(x, baseOut, sd, rm) {
|
|
12192
|
-
var base, e, i, k, len, roundUp, str, xd, y, Ctor = x.constructor, isExp = sd !== undefined;
|
|
12193
|
-
if (isExp) {
|
|
12194
|
-
checkInt32(sd, 1, MAX_DIGITS);
|
|
12195
|
-
if (rm === undefined)
|
|
12196
|
-
rm = Ctor.rounding;
|
|
12197
|
-
else
|
|
12198
|
-
checkInt32(rm, 0, 8);
|
|
12199
|
-
} else {
|
|
12200
|
-
sd = Ctor.precision;
|
|
12201
|
-
rm = Ctor.rounding;
|
|
12202
|
-
}
|
|
12203
|
-
if (!x.isFinite()) {
|
|
12204
|
-
str = nonFiniteToString(x);
|
|
12205
|
-
} else {
|
|
12206
|
-
str = finiteToString(x);
|
|
12207
|
-
i = str.indexOf(".");
|
|
12208
|
-
if (isExp) {
|
|
12209
|
-
base = 2;
|
|
12210
|
-
if (baseOut == 16) {
|
|
12211
|
-
sd = sd * 4 - 3;
|
|
12212
|
-
} else if (baseOut == 8) {
|
|
12213
|
-
sd = sd * 3 - 2;
|
|
12214
|
-
}
|
|
12215
|
-
} else {
|
|
12216
|
-
base = baseOut;
|
|
12217
|
-
}
|
|
12218
|
-
if (i >= 0) {
|
|
12219
|
-
str = str.replace(".", "");
|
|
12220
|
-
y = new Ctor(1);
|
|
12221
|
-
y.e = str.length - i;
|
|
12222
|
-
y.d = convertBase(finiteToString(y), 10, base);
|
|
12223
|
-
y.e = y.d.length;
|
|
12224
|
-
}
|
|
12225
|
-
xd = convertBase(str, 10, base);
|
|
12226
|
-
e = len = xd.length;
|
|
12227
|
-
for (;xd[--len] == 0; )
|
|
12228
|
-
xd.pop();
|
|
12229
|
-
if (!xd[0]) {
|
|
12230
|
-
str = isExp ? "0p+0" : "0";
|
|
12231
|
-
} else {
|
|
12232
|
-
if (i < 0) {
|
|
12233
|
-
e--;
|
|
12234
|
-
} else {
|
|
12235
|
-
x = new Ctor(x);
|
|
12236
|
-
x.d = xd;
|
|
12237
|
-
x.e = e;
|
|
12238
|
-
x = divide(x, y, sd, rm, 0, base);
|
|
12239
|
-
xd = x.d;
|
|
12240
|
-
e = x.e;
|
|
12241
|
-
roundUp = inexact;
|
|
12242
|
-
}
|
|
12243
|
-
i = xd[sd];
|
|
12244
|
-
k = base / 2;
|
|
12245
|
-
roundUp = roundUp || xd[sd + 1] !== undefined;
|
|
12246
|
-
roundUp = rm < 4 ? (i !== undefined || roundUp) && (rm === 0 || rm === (x.s < 0 ? 3 : 2)) : i > k || i === k && (rm === 4 || roundUp || rm === 6 && xd[sd - 1] & 1 || rm === (x.s < 0 ? 8 : 7));
|
|
12247
|
-
xd.length = sd;
|
|
12248
|
-
if (roundUp) {
|
|
12249
|
-
for (;++xd[--sd] > base - 1; ) {
|
|
12250
|
-
xd[sd] = 0;
|
|
12251
|
-
if (!sd) {
|
|
12252
|
-
++e;
|
|
12253
|
-
xd.unshift(1);
|
|
12254
|
-
}
|
|
12255
|
-
}
|
|
12256
|
-
}
|
|
12257
|
-
for (len = xd.length;!xd[len - 1]; --len)
|
|
12258
|
-
;
|
|
12259
|
-
for (i = 0, str = "";i < len; i++)
|
|
12260
|
-
str += NUMERALS.charAt(xd[i]);
|
|
12261
|
-
if (isExp) {
|
|
12262
|
-
if (len > 1) {
|
|
12263
|
-
if (baseOut == 16 || baseOut == 8) {
|
|
12264
|
-
i = baseOut == 16 ? 4 : 3;
|
|
12265
|
-
for (--len;len % i; len++)
|
|
12266
|
-
str += "0";
|
|
12267
|
-
xd = convertBase(str, base, baseOut);
|
|
12268
|
-
for (len = xd.length;!xd[len - 1]; --len)
|
|
12269
|
-
;
|
|
12270
|
-
for (i = 1, str = "1.";i < len; i++)
|
|
12271
|
-
str += NUMERALS.charAt(xd[i]);
|
|
12272
|
-
} else {
|
|
12273
|
-
str = str.charAt(0) + "." + str.slice(1);
|
|
12274
|
-
}
|
|
12275
|
-
}
|
|
12276
|
-
str = str + (e < 0 ? "p" : "p+") + e;
|
|
12277
|
-
} else if (e < 0) {
|
|
12278
|
-
for (;++e; )
|
|
12279
|
-
str = "0" + str;
|
|
12280
|
-
str = "0." + str;
|
|
12281
|
-
} else {
|
|
12282
|
-
if (++e > len)
|
|
12283
|
-
for (e -= len;e--; )
|
|
12284
|
-
str += "0";
|
|
12285
|
-
else if (e < len)
|
|
12286
|
-
str = str.slice(0, e) + "." + str.slice(e);
|
|
12287
|
-
}
|
|
12288
|
-
}
|
|
12289
|
-
str = (baseOut == 16 ? "0x" : baseOut == 2 ? "0b" : baseOut == 8 ? "0o" : "") + str;
|
|
12290
|
-
}
|
|
12291
|
-
return x.s < 0 ? "-" + str : str;
|
|
12292
|
-
}
|
|
12293
|
-
function truncate(arr, len) {
|
|
12294
|
-
if (arr.length > len) {
|
|
12295
|
-
arr.length = len;
|
|
12296
|
-
return true;
|
|
12297
|
-
}
|
|
12298
|
-
}
|
|
12299
|
-
function abs(x) {
|
|
12300
|
-
return new this(x).abs();
|
|
12301
|
-
}
|
|
12302
|
-
function acos(x) {
|
|
12303
|
-
return new this(x).acos();
|
|
12304
|
-
}
|
|
12305
|
-
function acosh(x) {
|
|
12306
|
-
return new this(x).acosh();
|
|
12307
|
-
}
|
|
12308
|
-
function add(x, y) {
|
|
12309
|
-
return new this(x).plus(y);
|
|
12310
|
-
}
|
|
12311
|
-
function asin(x) {
|
|
12312
|
-
return new this(x).asin();
|
|
12313
|
-
}
|
|
12314
|
-
function asinh(x) {
|
|
12315
|
-
return new this(x).asinh();
|
|
12316
|
-
}
|
|
12317
|
-
function atan(x) {
|
|
12318
|
-
return new this(x).atan();
|
|
12319
|
-
}
|
|
12320
|
-
function atanh(x) {
|
|
12321
|
-
return new this(x).atanh();
|
|
12322
|
-
}
|
|
12323
|
-
function atan2(y, x) {
|
|
12324
|
-
y = new this(y);
|
|
12325
|
-
x = new this(x);
|
|
12326
|
-
var r, pr = this.precision, rm = this.rounding, wpr = pr + 4;
|
|
12327
|
-
if (!y.s || !x.s) {
|
|
12328
|
-
r = new this(NaN);
|
|
12329
|
-
} else if (!y.d && !x.d) {
|
|
12330
|
-
r = getPi(this, wpr, 1).times(x.s > 0 ? 0.25 : 0.75);
|
|
12331
|
-
r.s = y.s;
|
|
12332
|
-
} else if (!x.d || y.isZero()) {
|
|
12333
|
-
r = x.s < 0 ? getPi(this, pr, rm) : new this(0);
|
|
12334
|
-
r.s = y.s;
|
|
12335
|
-
} else if (!y.d || x.isZero()) {
|
|
12336
|
-
r = getPi(this, wpr, 1).times(0.5);
|
|
12337
|
-
r.s = y.s;
|
|
12338
|
-
} else if (x.s < 0) {
|
|
12339
|
-
this.precision = wpr;
|
|
12340
|
-
this.rounding = 1;
|
|
12341
|
-
r = this.atan(divide(y, x, wpr, 1));
|
|
12342
|
-
x = getPi(this, wpr, 1);
|
|
12343
|
-
this.precision = pr;
|
|
12344
|
-
this.rounding = rm;
|
|
12345
|
-
r = y.s < 0 ? r.minus(x) : r.plus(x);
|
|
12346
|
-
} else {
|
|
12347
|
-
r = this.atan(divide(y, x, wpr, 1));
|
|
12348
|
-
}
|
|
12349
|
-
return r;
|
|
12350
|
-
}
|
|
12351
|
-
function cbrt(x) {
|
|
12352
|
-
return new this(x).cbrt();
|
|
12353
|
-
}
|
|
12354
|
-
function ceil(x) {
|
|
12355
|
-
return finalise(x = new this(x), x.e + 1, 2);
|
|
12356
|
-
}
|
|
12357
|
-
function clamp(x, min, max) {
|
|
12358
|
-
return new this(x).clamp(min, max);
|
|
12359
|
-
}
|
|
12360
|
-
function config(obj) {
|
|
12361
|
-
if (!obj || typeof obj !== "object")
|
|
12362
|
-
throw Error(decimalError + "Object expected");
|
|
12363
|
-
var i, p, v, useDefaults = obj.defaults === true, ps = [
|
|
12364
|
-
"precision",
|
|
12365
|
-
1,
|
|
12366
|
-
MAX_DIGITS,
|
|
12367
|
-
"rounding",
|
|
12368
|
-
0,
|
|
12369
|
-
8,
|
|
12370
|
-
"toExpNeg",
|
|
12371
|
-
-EXP_LIMIT,
|
|
12372
|
-
0,
|
|
12373
|
-
"toExpPos",
|
|
12374
|
-
0,
|
|
12375
|
-
EXP_LIMIT,
|
|
12376
|
-
"maxE",
|
|
12377
|
-
0,
|
|
12378
|
-
EXP_LIMIT,
|
|
12379
|
-
"minE",
|
|
12380
|
-
-EXP_LIMIT,
|
|
12381
|
-
0,
|
|
12382
|
-
"modulo",
|
|
12383
|
-
0,
|
|
12384
|
-
9
|
|
12385
|
-
];
|
|
12386
|
-
for (i = 0;i < ps.length; i += 3) {
|
|
12387
|
-
if (p = ps[i], useDefaults)
|
|
12388
|
-
this[p] = DEFAULTS[p];
|
|
12389
|
-
if ((v = obj[p]) !== undefined) {
|
|
12390
|
-
if (mathfloor(v) === v && v >= ps[i + 1] && v <= ps[i + 2])
|
|
12391
|
-
this[p] = v;
|
|
12392
|
-
else
|
|
12393
|
-
throw Error(invalidArgument + p + ": " + v);
|
|
12394
|
-
}
|
|
12395
|
-
}
|
|
12396
|
-
if (p = "crypto", useDefaults)
|
|
12397
|
-
this[p] = DEFAULTS[p];
|
|
12398
|
-
if ((v = obj[p]) !== undefined) {
|
|
12399
|
-
if (v === true || v === false || v === 0 || v === 1) {
|
|
12400
|
-
if (v) {
|
|
12401
|
-
if (typeof crypto != "undefined" && crypto && (crypto.getRandomValues || crypto.randomBytes)) {
|
|
12402
|
-
this[p] = true;
|
|
12403
|
-
} else {
|
|
12404
|
-
throw Error(cryptoUnavailable);
|
|
12405
|
-
}
|
|
12406
|
-
} else {
|
|
12407
|
-
this[p] = false;
|
|
12408
|
-
}
|
|
12409
|
-
} else {
|
|
12410
|
-
throw Error(invalidArgument + p + ": " + v);
|
|
12411
|
-
}
|
|
12412
|
-
}
|
|
12413
|
-
return this;
|
|
12414
|
-
}
|
|
12415
|
-
function cos(x) {
|
|
12416
|
-
return new this(x).cos();
|
|
12417
|
-
}
|
|
12418
|
-
function cosh(x) {
|
|
12419
|
-
return new this(x).cosh();
|
|
12420
|
-
}
|
|
12421
|
-
function clone(obj) {
|
|
12422
|
-
var i, p, ps;
|
|
12423
|
-
function Decimal(v) {
|
|
12424
|
-
var e, i2, t, x = this;
|
|
12425
|
-
if (!(x instanceof Decimal))
|
|
12426
|
-
return new Decimal(v);
|
|
12427
|
-
x.constructor = Decimal;
|
|
12428
|
-
if (isDecimalInstance(v)) {
|
|
12429
|
-
x.s = v.s;
|
|
12430
|
-
if (external2) {
|
|
12431
|
-
if (!v.d || v.e > Decimal.maxE) {
|
|
12432
|
-
x.e = NaN;
|
|
12433
|
-
x.d = null;
|
|
12434
|
-
} else if (v.e < Decimal.minE) {
|
|
12435
|
-
x.e = 0;
|
|
12436
|
-
x.d = [0];
|
|
12437
|
-
} else {
|
|
12438
|
-
x.e = v.e;
|
|
12439
|
-
x.d = v.d.slice();
|
|
12440
|
-
}
|
|
12441
|
-
} else {
|
|
12442
|
-
x.e = v.e;
|
|
12443
|
-
x.d = v.d ? v.d.slice() : v.d;
|
|
12444
|
-
}
|
|
12445
|
-
return;
|
|
12446
|
-
}
|
|
12447
|
-
t = typeof v;
|
|
12448
|
-
if (t === "number") {
|
|
12449
|
-
if (v === 0) {
|
|
12450
|
-
x.s = 1 / v < 0 ? -1 : 1;
|
|
12451
|
-
x.e = 0;
|
|
12452
|
-
x.d = [0];
|
|
12453
|
-
return;
|
|
12454
|
-
}
|
|
12455
|
-
if (v < 0) {
|
|
12456
|
-
v = -v;
|
|
12457
|
-
x.s = -1;
|
|
12458
|
-
} else {
|
|
12459
|
-
x.s = 1;
|
|
12460
|
-
}
|
|
12461
|
-
if (v === ~~v && v < 1e7) {
|
|
12462
|
-
for (e = 0, i2 = v;i2 >= 10; i2 /= 10)
|
|
12463
|
-
e++;
|
|
12464
|
-
if (external2) {
|
|
12465
|
-
if (e > Decimal.maxE) {
|
|
12466
|
-
x.e = NaN;
|
|
12467
|
-
x.d = null;
|
|
12468
|
-
} else if (e < Decimal.minE) {
|
|
12469
|
-
x.e = 0;
|
|
12470
|
-
x.d = [0];
|
|
12471
|
-
} else {
|
|
12472
|
-
x.e = e;
|
|
12473
|
-
x.d = [v];
|
|
12474
|
-
}
|
|
12475
|
-
} else {
|
|
12476
|
-
x.e = e;
|
|
12477
|
-
x.d = [v];
|
|
12478
|
-
}
|
|
12479
|
-
return;
|
|
12480
|
-
}
|
|
12481
|
-
if (v * 0 !== 0) {
|
|
12482
|
-
if (!v)
|
|
12483
|
-
x.s = NaN;
|
|
12484
|
-
x.e = NaN;
|
|
12485
|
-
x.d = null;
|
|
12486
|
-
return;
|
|
12487
|
-
}
|
|
12488
|
-
return parseDecimal(x, v.toString());
|
|
12489
|
-
}
|
|
12490
|
-
if (t === "string") {
|
|
12491
|
-
if ((i2 = v.charCodeAt(0)) === 45) {
|
|
12492
|
-
v = v.slice(1);
|
|
12493
|
-
x.s = -1;
|
|
12494
|
-
} else {
|
|
12495
|
-
if (i2 === 43)
|
|
12496
|
-
v = v.slice(1);
|
|
12497
|
-
x.s = 1;
|
|
12498
|
-
}
|
|
12499
|
-
return isDecimal.test(v) ? parseDecimal(x, v) : parseOther(x, v);
|
|
12500
|
-
}
|
|
12501
|
-
if (t === "bigint") {
|
|
12502
|
-
if (v < 0) {
|
|
12503
|
-
v = -v;
|
|
12504
|
-
x.s = -1;
|
|
12505
|
-
} else {
|
|
12506
|
-
x.s = 1;
|
|
12507
|
-
}
|
|
12508
|
-
return parseDecimal(x, v.toString());
|
|
12509
|
-
}
|
|
12510
|
-
throw Error(invalidArgument + v);
|
|
12511
|
-
}
|
|
12512
|
-
Decimal.prototype = P;
|
|
12513
|
-
Decimal.ROUND_UP = 0;
|
|
12514
|
-
Decimal.ROUND_DOWN = 1;
|
|
12515
|
-
Decimal.ROUND_CEIL = 2;
|
|
12516
|
-
Decimal.ROUND_FLOOR = 3;
|
|
12517
|
-
Decimal.ROUND_HALF_UP = 4;
|
|
12518
|
-
Decimal.ROUND_HALF_DOWN = 5;
|
|
12519
|
-
Decimal.ROUND_HALF_EVEN = 6;
|
|
12520
|
-
Decimal.ROUND_HALF_CEIL = 7;
|
|
12521
|
-
Decimal.ROUND_HALF_FLOOR = 8;
|
|
12522
|
-
Decimal.EUCLID = 9;
|
|
12523
|
-
Decimal.config = Decimal.set = config;
|
|
12524
|
-
Decimal.clone = clone;
|
|
12525
|
-
Decimal.isDecimal = isDecimalInstance;
|
|
12526
|
-
Decimal.abs = abs;
|
|
12527
|
-
Decimal.acos = acos;
|
|
12528
|
-
Decimal.acosh = acosh;
|
|
12529
|
-
Decimal.add = add;
|
|
12530
|
-
Decimal.asin = asin;
|
|
12531
|
-
Decimal.asinh = asinh;
|
|
12532
|
-
Decimal.atan = atan;
|
|
12533
|
-
Decimal.atanh = atanh;
|
|
12534
|
-
Decimal.atan2 = atan2;
|
|
12535
|
-
Decimal.cbrt = cbrt;
|
|
12536
|
-
Decimal.ceil = ceil;
|
|
12537
|
-
Decimal.clamp = clamp;
|
|
12538
|
-
Decimal.cos = cos;
|
|
12539
|
-
Decimal.cosh = cosh;
|
|
12540
|
-
Decimal.div = div;
|
|
12541
|
-
Decimal.exp = exp;
|
|
12542
|
-
Decimal.floor = floor;
|
|
12543
|
-
Decimal.hypot = hypot;
|
|
12544
|
-
Decimal.ln = ln;
|
|
12545
|
-
Decimal.log = log;
|
|
12546
|
-
Decimal.log10 = log10;
|
|
12547
|
-
Decimal.log2 = log2;
|
|
12548
|
-
Decimal.max = max;
|
|
12549
|
-
Decimal.min = min;
|
|
12550
|
-
Decimal.mod = mod;
|
|
12551
|
-
Decimal.mul = mul;
|
|
12552
|
-
Decimal.pow = pow;
|
|
12553
|
-
Decimal.random = random;
|
|
12554
|
-
Decimal.round = round;
|
|
12555
|
-
Decimal.sign = sign;
|
|
12556
|
-
Decimal.sin = sin;
|
|
12557
|
-
Decimal.sinh = sinh;
|
|
12558
|
-
Decimal.sqrt = sqrt;
|
|
12559
|
-
Decimal.sub = sub;
|
|
12560
|
-
Decimal.sum = sum;
|
|
12561
|
-
Decimal.tan = tan;
|
|
12562
|
-
Decimal.tanh = tanh;
|
|
12563
|
-
Decimal.trunc = trunc;
|
|
12564
|
-
if (obj === undefined)
|
|
12565
|
-
obj = {};
|
|
12566
|
-
if (obj) {
|
|
12567
|
-
if (obj.defaults !== true) {
|
|
12568
|
-
ps = ["precision", "rounding", "toExpNeg", "toExpPos", "maxE", "minE", "modulo", "crypto"];
|
|
12569
|
-
for (i = 0;i < ps.length; )
|
|
12570
|
-
if (!obj.hasOwnProperty(p = ps[i++]))
|
|
12571
|
-
obj[p] = this[p];
|
|
12572
|
-
}
|
|
12573
|
-
}
|
|
12574
|
-
Decimal.config(obj);
|
|
12575
|
-
return Decimal;
|
|
12576
|
-
}
|
|
12577
|
-
function div(x, y) {
|
|
12578
|
-
return new this(x).div(y);
|
|
12579
|
-
}
|
|
12580
|
-
function exp(x) {
|
|
12581
|
-
return new this(x).exp();
|
|
12582
|
-
}
|
|
12583
|
-
function floor(x) {
|
|
12584
|
-
return finalise(x = new this(x), x.e + 1, 3);
|
|
12585
|
-
}
|
|
12586
|
-
function hypot() {
|
|
12587
|
-
var i, n, t = new this(0);
|
|
12588
|
-
external2 = false;
|
|
12589
|
-
for (i = 0;i < arguments.length; ) {
|
|
12590
|
-
n = new this(arguments[i++]);
|
|
12591
|
-
if (!n.d) {
|
|
12592
|
-
if (n.s) {
|
|
12593
|
-
external2 = true;
|
|
12594
|
-
return new this(1 / 0);
|
|
12595
|
-
}
|
|
12596
|
-
t = n;
|
|
12597
|
-
} else if (t.d) {
|
|
12598
|
-
t = t.plus(n.times(n));
|
|
12599
|
-
}
|
|
12600
|
-
}
|
|
12601
|
-
external2 = true;
|
|
12602
|
-
return t.sqrt();
|
|
12603
|
-
}
|
|
12604
|
-
function isDecimalInstance(obj) {
|
|
12605
|
-
return obj instanceof Decimal || obj && obj.toStringTag === tag || false;
|
|
12606
|
-
}
|
|
12607
|
-
function ln(x) {
|
|
12608
|
-
return new this(x).ln();
|
|
12609
|
-
}
|
|
12610
|
-
function log(x, y) {
|
|
12611
|
-
return new this(x).log(y);
|
|
12612
|
-
}
|
|
12613
|
-
function log2(x) {
|
|
12614
|
-
return new this(x).log(2);
|
|
12615
|
-
}
|
|
12616
|
-
function log10(x) {
|
|
12617
|
-
return new this(x).log(10);
|
|
12618
|
-
}
|
|
12619
|
-
function max() {
|
|
12620
|
-
return maxOrMin(this, arguments, -1);
|
|
12621
|
-
}
|
|
12622
|
-
function min() {
|
|
12623
|
-
return maxOrMin(this, arguments, 1);
|
|
12624
|
-
}
|
|
12625
|
-
function mod(x, y) {
|
|
12626
|
-
return new this(x).mod(y);
|
|
12627
|
-
}
|
|
12628
|
-
function mul(x, y) {
|
|
12629
|
-
return new this(x).mul(y);
|
|
12630
|
-
}
|
|
12631
|
-
function pow(x, y) {
|
|
12632
|
-
return new this(x).pow(y);
|
|
12633
|
-
}
|
|
12634
|
-
function random(sd) {
|
|
12635
|
-
var d, e, k, n, i = 0, r = new this(1), rd = [];
|
|
12636
|
-
if (sd === undefined)
|
|
12637
|
-
sd = this.precision;
|
|
12638
|
-
else
|
|
12639
|
-
checkInt32(sd, 1, MAX_DIGITS);
|
|
12640
|
-
k = Math.ceil(sd / LOG_BASE);
|
|
12641
|
-
if (!this.crypto) {
|
|
12642
|
-
for (;i < k; )
|
|
12643
|
-
rd[i++] = Math.random() * 1e7 | 0;
|
|
12644
|
-
} else if (crypto.getRandomValues) {
|
|
12645
|
-
d = crypto.getRandomValues(new Uint32Array(k));
|
|
12646
|
-
for (;i < k; ) {
|
|
12647
|
-
n = d[i];
|
|
12648
|
-
if (n >= 4290000000) {
|
|
12649
|
-
d[i] = crypto.getRandomValues(new Uint32Array(1))[0];
|
|
12650
|
-
} else {
|
|
12651
|
-
rd[i++] = n % 1e7;
|
|
12652
|
-
}
|
|
12653
|
-
}
|
|
12654
|
-
} else if (crypto.randomBytes) {
|
|
12655
|
-
d = crypto.randomBytes(k *= 4);
|
|
12656
|
-
for (;i < k; ) {
|
|
12657
|
-
n = d[i] + (d[i + 1] << 8) + (d[i + 2] << 16) + ((d[i + 3] & 127) << 24);
|
|
12658
|
-
if (n >= 2140000000) {
|
|
12659
|
-
crypto.randomBytes(4).copy(d, i);
|
|
12660
|
-
} else {
|
|
12661
|
-
rd.push(n % 1e7);
|
|
12662
|
-
i += 4;
|
|
12663
|
-
}
|
|
12664
|
-
}
|
|
12665
|
-
i = k / 4;
|
|
12666
|
-
} else {
|
|
12667
|
-
throw Error(cryptoUnavailable);
|
|
12668
|
-
}
|
|
12669
|
-
k = rd[--i];
|
|
12670
|
-
sd %= LOG_BASE;
|
|
12671
|
-
if (k && sd) {
|
|
12672
|
-
n = mathpow(10, LOG_BASE - sd);
|
|
12673
|
-
rd[i] = (k / n | 0) * n;
|
|
12674
|
-
}
|
|
12675
|
-
for (;rd[i] === 0; i--)
|
|
12676
|
-
rd.pop();
|
|
12677
|
-
if (i < 0) {
|
|
12678
|
-
e = 0;
|
|
12679
|
-
rd = [0];
|
|
12680
|
-
} else {
|
|
12681
|
-
e = -1;
|
|
12682
|
-
for (;rd[0] === 0; e -= LOG_BASE)
|
|
12683
|
-
rd.shift();
|
|
12684
|
-
for (k = 1, n = rd[0];n >= 10; n /= 10)
|
|
12685
|
-
k++;
|
|
12686
|
-
if (k < LOG_BASE)
|
|
12687
|
-
e -= LOG_BASE - k;
|
|
12688
|
-
}
|
|
12689
|
-
r.e = e;
|
|
12690
|
-
r.d = rd;
|
|
12691
|
-
return r;
|
|
12692
|
-
}
|
|
12693
|
-
function round(x) {
|
|
12694
|
-
return finalise(x = new this(x), x.e + 1, this.rounding);
|
|
12695
|
-
}
|
|
12696
|
-
function sign(x) {
|
|
12697
|
-
x = new this(x);
|
|
12698
|
-
return x.d ? x.d[0] ? x.s : 0 * x.s : x.s || NaN;
|
|
12699
|
-
}
|
|
12700
|
-
function sin(x) {
|
|
12701
|
-
return new this(x).sin();
|
|
12702
|
-
}
|
|
12703
|
-
function sinh(x) {
|
|
12704
|
-
return new this(x).sinh();
|
|
12705
|
-
}
|
|
12706
|
-
function sqrt(x) {
|
|
12707
|
-
return new this(x).sqrt();
|
|
12708
|
-
}
|
|
12709
|
-
function sub(x, y) {
|
|
12710
|
-
return new this(x).sub(y);
|
|
12711
|
-
}
|
|
12712
|
-
function sum() {
|
|
12713
|
-
var i = 0, args = arguments, x = new this(args[i]);
|
|
12714
|
-
external2 = false;
|
|
12715
|
-
for (;x.s && ++i < args.length; )
|
|
12716
|
-
x = x.plus(args[i]);
|
|
12717
|
-
external2 = true;
|
|
12718
|
-
return finalise(x, this.precision, this.rounding);
|
|
12719
|
-
}
|
|
12720
|
-
function tan(x) {
|
|
12721
|
-
return new this(x).tan();
|
|
12722
|
-
}
|
|
12723
|
-
function tanh(x) {
|
|
12724
|
-
return new this(x).tanh();
|
|
12725
|
-
}
|
|
12726
|
-
function trunc(x) {
|
|
12727
|
-
return finalise(x = new this(x), x.e + 1, 1);
|
|
12728
|
-
}
|
|
12729
|
-
P[Symbol.for("nodejs.util.inspect.custom")] = P.toString;
|
|
12730
|
-
P[Symbol.toStringTag] = "Decimal";
|
|
12731
|
-
var Decimal = P.constructor = clone(DEFAULTS);
|
|
12732
|
-
LN10 = new Decimal(LN10);
|
|
12733
|
-
PI = new Decimal(PI);
|
|
12734
|
-
var decimal_default = Decimal;
|
|
12735
|
-
|
|
12736
|
-
// src/common/base/other.ts
|
|
12737
|
-
var delay = (time = 1000) => {
|
|
12738
|
-
return new Promise((resolve) => setTimeout(resolve, time));
|
|
12739
|
-
};
|
|
12740
|
-
var calcJsText = (expr, context) => {
|
|
12741
|
-
const keys = Object.keys(context);
|
|
12742
|
-
const values = keys.map((key2) => context[key2]);
|
|
12743
|
-
return Function(...keys, `return (${expr})`)(...values);
|
|
12744
|
-
};
|
|
12745
|
-
var optionsToEnum = (options, text, key2) => {
|
|
12746
|
-
return options.reduce((acc, cur) => {
|
|
12747
|
-
acc[cur[key2]] = {
|
|
12748
|
-
text: cur[text]
|
|
12749
|
-
};
|
|
12750
|
-
return acc;
|
|
12751
|
-
}, {});
|
|
12752
|
-
};
|
|
12753
|
-
var performDecimalOperation = (num1, num2, operator) => {
|
|
12754
|
-
if (num1 === undefined || num2 === undefined || !operator) {
|
|
12755
|
-
return;
|
|
12756
|
-
}
|
|
12757
|
-
const decimalNum1 = new decimal_default(Number(num1));
|
|
12758
|
-
const decimalNum2 = new decimal_default(Number(num2));
|
|
12759
|
-
switch (operator) {
|
|
12760
|
-
case "+":
|
|
12761
|
-
return decimalNum1.plus(decimalNum2).toNumber();
|
|
12762
|
-
case "-":
|
|
12763
|
-
return decimalNum1.minus(decimalNum2).toNumber();
|
|
12764
|
-
case "*":
|
|
12765
|
-
return decimalNum1.times(decimalNum2).toNumber();
|
|
12766
|
-
case "/":
|
|
12767
|
-
if (num2 !== 0) {
|
|
12768
|
-
return decimalNum1.dividedBy(decimalNum2).toNumber();
|
|
12769
|
-
} else {
|
|
12770
|
-
console.error("Division by zero is not allowed.");
|
|
12771
|
-
return NaN;
|
|
12772
|
-
}
|
|
12773
|
-
default:
|
|
12774
|
-
console.error("Invalid operator:", operator);
|
|
12775
|
-
return NaN;
|
|
12776
|
-
}
|
|
12777
|
-
};
|
|
12778
|
-
var printConsoleLog = (type, path2, params, response) => {
|
|
12779
|
-
const styles = {
|
|
12780
|
-
header: "color: #fff; background: #35495e; padding: 2px 8px; border-radius: 3px 0 0 3px;",
|
|
12781
|
-
value: "color: #35495e; background: #f0f4f8; padding: 2px 6px; border-radius: 0 3px 3px 0;",
|
|
12782
|
-
separator: "color: #409EFF; margin: 0 4px;"
|
|
12783
|
-
};
|
|
12784
|
-
console.groupCollapsed(`666 %c${type}%c${path2}`, styles.header, styles.value);
|
|
12785
|
-
if (params) {
|
|
12786
|
-
console.table(params);
|
|
12787
|
-
}
|
|
12788
|
-
if (response) {
|
|
12789
|
-
console.table(response);
|
|
12790
|
-
}
|
|
12791
|
-
console.groupEnd();
|
|
12792
|
-
};
|
|
12793
|
-
|
|
12794
|
-
// src/common/base/array.ts
|
|
12795
|
-
var shuffleArray = (array) => {
|
|
12796
|
-
const shuffledArray = [...array];
|
|
12797
|
-
for (let i = shuffledArray.length - 1;i > 0; i--) {
|
|
12798
|
-
const j = Math.floor(Math.random() * (i + 1));
|
|
12799
|
-
[shuffledArray[i], shuffledArray[j]] = [shuffledArray[j], shuffledArray[i]];
|
|
12800
|
-
}
|
|
12801
|
-
return shuffledArray;
|
|
12802
|
-
};
|
|
12803
|
-
var removeSimilarDuplicates = (arr, threshold, isLog) => {
|
|
12804
|
-
const uniqueArray = [];
|
|
12805
|
-
const similarPairs = [];
|
|
12806
|
-
for (const str of arr) {
|
|
12807
|
-
const isSimilar = uniqueArray.some((uniqueStr) => {
|
|
12808
|
-
const distance = levenshteinDistance(str, uniqueStr);
|
|
12809
|
-
if (distance <= threshold) {
|
|
12810
|
-
similarPairs.push([str, uniqueStr]);
|
|
12811
|
-
return true;
|
|
12812
|
-
}
|
|
12813
|
-
return false;
|
|
12814
|
-
});
|
|
12815
|
-
if (!isSimilar) {
|
|
12816
|
-
uniqueArray.push(str);
|
|
12817
|
-
}
|
|
12818
|
-
}
|
|
12819
|
-
if (isLog) {
|
|
12820
|
-
if (similarPairs.length > 0) {
|
|
12821
|
-
similarPairs.forEach((pair) => {
|
|
12822
|
-
console.log(pair[0]);
|
|
12823
|
-
console.log(pair[1]);
|
|
12824
|
-
console.log();
|
|
12825
|
-
});
|
|
12826
|
-
} else {
|
|
12827
|
-
console.log("没有找到类似的字符串");
|
|
12828
|
-
}
|
|
12829
|
-
}
|
|
12830
|
-
return uniqueArray;
|
|
12831
|
-
};
|
|
12832
|
-
var getTotal = (arr, key2) => {
|
|
12833
|
-
if (!Array.isArray(arr) || !key2) {
|
|
12834
|
-
return 0;
|
|
12835
|
-
}
|
|
12836
|
-
return arr.reduce((total, item) => {
|
|
12837
|
-
const itemValue = Number(item[key2]);
|
|
12838
|
-
if (!isNaN(itemValue)) {
|
|
12839
|
-
return performDecimalOperation(total, itemValue, "+");
|
|
12840
|
-
}
|
|
12841
|
-
return total;
|
|
12842
|
-
}, 0);
|
|
12843
|
-
};
|
|
12844
|
-
|
|
12845
|
-
// src/common/base/number.ts
|
|
12846
|
-
var getRandomNum = (min2, max2) => {
|
|
12847
|
-
return Math.floor(Math.random() * (max2 - min2 + 1) + min2);
|
|
12848
|
-
};
|
|
12849
|
-
var limitDecimals = (v, num = 2, isForce) => {
|
|
12850
|
-
let value = parseFloat(v);
|
|
12851
|
-
if (isNaN(value)) {
|
|
12852
|
-
if (isForce) {
|
|
12853
|
-
value = 0;
|
|
12854
|
-
} else {
|
|
12855
|
-
return "";
|
|
12856
|
-
}
|
|
12857
|
-
}
|
|
12858
|
-
return value.toFixed(num).toString();
|
|
12859
|
-
};
|
|
12860
|
-
var getFileSize = (size) => {
|
|
12861
|
-
let d = "G";
|
|
12862
|
-
let s = size / 1024 / 1024 / 1024;
|
|
12863
|
-
if (s < 1) {
|
|
12864
|
-
d = "M";
|
|
12865
|
-
s *= 1024;
|
|
12866
|
-
}
|
|
12867
|
-
return `${(s.toFixed(1) / 1).toString()}${d}`;
|
|
12868
|
-
};
|
|
12869
|
-
var isValidNumber = (value) => {
|
|
12870
|
-
if (typeof value !== "number") {
|
|
12871
|
-
return false;
|
|
12872
|
-
}
|
|
12873
|
-
if (isNaN(value)) {
|
|
12874
|
-
return false;
|
|
12875
|
-
}
|
|
12876
|
-
if (value === Infinity || value === -Infinity) {
|
|
12877
|
-
return false;
|
|
12878
|
-
}
|
|
12879
|
-
return true;
|
|
12880
|
-
};
|
|
12881
|
-
var numberWithCommas = (x) => {
|
|
12882
|
-
if (x === undefined || x === null) {
|
|
12883
|
-
return "";
|
|
12884
|
-
}
|
|
12885
|
-
return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
|
|
12886
|
-
};
|
|
12887
|
-
|
|
12888
|
-
// src/common/base/object.ts
|
|
12889
|
-
var findItem = (list, attr, value) => {
|
|
12890
|
-
return list.find((item) => value === undefined ? item[attr] : item[attr] === value);
|
|
12891
|
-
};
|
|
12892
|
-
var filterParams = (params, deep = false) => {
|
|
12893
|
-
const clean = (value) => {
|
|
12894
|
-
if (value === undefined || value === null) {
|
|
12895
|
-
return;
|
|
12896
|
-
}
|
|
12897
|
-
if (!deep) {
|
|
12898
|
-
return value;
|
|
12899
|
-
}
|
|
12900
|
-
if (Array.isArray(value)) {
|
|
12901
|
-
return value.map((v) => clean(v)).filter((v) => v !== undefined);
|
|
12902
|
-
}
|
|
12903
|
-
if (typeof value === "object") {
|
|
12904
|
-
return Object.entries(value).reduce((acc, [k, v]) => {
|
|
12905
|
-
const cleaned = clean(v);
|
|
12906
|
-
if (cleaned !== undefined)
|
|
12907
|
-
acc[k] = cleaned;
|
|
12908
|
-
return acc;
|
|
12909
|
-
}, {});
|
|
12910
|
-
}
|
|
12911
|
-
return value;
|
|
12912
|
-
};
|
|
12913
|
-
return clean(params);
|
|
12914
|
-
};
|
|
12915
|
-
var watch = {
|
|
12916
|
-
observe(obj, key2, watchFun) {
|
|
12917
|
-
const val = obj[key2];
|
|
12918
|
-
Object.defineProperty(obj, key2, {
|
|
12919
|
-
configurable: true,
|
|
12920
|
-
enumerable: true,
|
|
12921
|
-
set(value) {
|
|
12922
|
-
obj[key2] = value;
|
|
12923
|
-
watchFun(value, val);
|
|
12924
|
-
},
|
|
12925
|
-
get() {
|
|
12926
|
-
return val;
|
|
12927
|
-
}
|
|
12928
|
-
});
|
|
12929
|
-
},
|
|
12930
|
-
setWatcher(data = {}, watch2 = {}) {
|
|
12931
|
-
Object.keys(watch2).forEach((v) => {
|
|
12932
|
-
this.observe(data, v, watch2[v]);
|
|
12933
|
-
});
|
|
12934
|
-
}
|
|
12935
|
-
};
|
|
12936
|
-
|
|
12937
|
-
// src/common/base/promise.ts
|
|
12938
|
-
var executePromise = async (promise) => {
|
|
12939
|
-
const start = Date.now();
|
|
12940
|
-
const result = await promise;
|
|
12941
|
-
const time = Date.now() - start;
|
|
12942
|
-
return {
|
|
12943
|
-
result,
|
|
12944
|
-
time
|
|
12945
|
-
};
|
|
12946
|
-
};
|
|
12947
|
-
var retryPromise = async (promiseFn, retryInterval = 1000, retryCount = 3) => {
|
|
12948
|
-
try {
|
|
12949
|
-
return await promiseFn();
|
|
12950
|
-
} catch (error) {
|
|
12951
|
-
if (retryCount <= 0) {
|
|
12952
|
-
throw error;
|
|
12953
|
-
}
|
|
12954
|
-
await new Promise((resolve) => setTimeout(resolve, retryInterval));
|
|
12955
|
-
return retryPromise(promiseFn, retryCount - 1, retryInterval);
|
|
12956
|
-
}
|
|
12957
|
-
};
|
|
12958
|
-
// src/common/enum.ts
|
|
12959
|
-
class EnumItem {
|
|
12960
|
-
label;
|
|
12961
|
-
value;
|
|
12962
|
-
extra;
|
|
12963
|
-
constructor(config2) {
|
|
12964
|
-
this.value = config2.value;
|
|
12965
|
-
this.label = config2.label;
|
|
12966
|
-
this.extra = config2.extra;
|
|
12967
|
-
}
|
|
12968
|
-
}
|
|
12969
|
-
var Enum = {
|
|
12970
|
-
create: (members) => {
|
|
12971
|
-
const usedValues = new Set;
|
|
12972
|
-
const enumObj = {};
|
|
12973
|
-
const map = new Map;
|
|
12974
|
-
const options = [];
|
|
12975
|
-
const extras = new Map;
|
|
12976
|
-
const labels = new Map;
|
|
12977
|
-
const enums = {};
|
|
12978
|
-
for (const key2 in members) {
|
|
12979
|
-
const member = members[key2];
|
|
12980
|
-
if (!member)
|
|
12981
|
-
continue;
|
|
12982
|
-
if (usedValues.has(member.value)) {
|
|
12983
|
-
throw new Error(`Duplicate enum value detected: ${member.value}`);
|
|
12984
|
-
}
|
|
12985
|
-
usedValues.add(member.value);
|
|
12986
|
-
const item = new EnumItem(member);
|
|
12987
|
-
enumObj[key2] = item;
|
|
12988
|
-
map.set(item.value, item);
|
|
12989
|
-
labels.set(item.value, item.label);
|
|
12990
|
-
options.push(item);
|
|
12991
|
-
enums[item.value] = { text: item.label, status: item.extra?.status };
|
|
12992
|
-
if (member.extra !== undefined) {
|
|
12993
|
-
extras.set(item.value, { ...member.extra });
|
|
12994
|
-
}
|
|
12995
|
-
}
|
|
12996
|
-
enumObj.map = map;
|
|
12997
|
-
enumObj.options = options;
|
|
12998
|
-
enumObj.extras = extras;
|
|
12999
|
-
enumObj.source = members;
|
|
13000
|
-
enumObj.labels = labels;
|
|
13001
|
-
enumObj.enums = enums;
|
|
13002
|
-
return enumObj;
|
|
13003
|
-
}
|
|
13004
|
-
};
|
|
13005
|
-
// src/common/image.ts
|
|
13006
|
-
var import_axios12 = __toESM(require("axios"));
|
|
13007
|
-
async function imageToBase64(url2) {
|
|
13008
|
-
try {
|
|
13009
|
-
const response = await import_axios12.default.get(url2, {
|
|
13010
|
-
responseType: "arraybuffer"
|
|
13011
|
-
});
|
|
13012
|
-
const base64String = Buffer.from(response.data).toString("base64");
|
|
13013
|
-
return `data:image/*;base64,${base64String}`;
|
|
13014
|
-
} catch (error) {
|
|
13015
|
-
console.error("Failed to fetch the image:", error);
|
|
13016
|
-
throw error;
|
|
13017
|
-
}
|
|
13018
|
-
}
|
|
13019
|
-
// src/common/dayjs.ts
|
|
13020
|
-
var import_dayjs = __toESM(require("dayjs"));
|
|
13021
|
-
var import_isBetween = __toESM(require("dayjs/plugin/isBetween"));
|
|
13022
|
-
var import_weekday = __toESM(require("dayjs/plugin/weekday"));
|
|
13023
|
-
var import_localeData = __toESM(require("dayjs/plugin/localeData"));
|
|
13024
|
-
var import_isoWeek = __toESM(require("dayjs/plugin/isoWeek"));
|
|
13025
|
-
var import_updateLocale = __toESM(require("dayjs/plugin/updateLocale"));
|
|
13026
|
-
var import_timezone = __toESM(require("dayjs/plugin/timezone"));
|
|
13027
|
-
var import_isSameOrAfter = __toESM(require("dayjs/plugin/isSameOrAfter"));
|
|
13028
|
-
var import_isSameOrBefore = __toESM(require("dayjs/plugin/isSameOrBefore"));
|
|
13029
|
-
var import_utc = __toESM(require("dayjs/plugin/utc"));
|
|
13030
|
-
var import_zh_cn = require("dayjs/locale/zh-cn");
|
|
13031
|
-
var import_dayjs2 = require("dayjs");
|
|
13032
|
-
import_dayjs.default.extend(import_utc.default);
|
|
13033
|
-
import_dayjs.default.extend(import_isBetween.default);
|
|
13034
|
-
import_dayjs.default.extend(import_weekday.default);
|
|
13035
|
-
import_dayjs.default.extend(import_localeData.default);
|
|
13036
|
-
import_dayjs.default.extend(import_isoWeek.default);
|
|
13037
|
-
import_dayjs.default.extend(import_updateLocale.default);
|
|
13038
|
-
import_dayjs.default.extend(import_timezone.default);
|
|
13039
|
-
import_dayjs.default.extend(import_isSameOrAfter.default);
|
|
13040
|
-
import_dayjs.default.extend(import_isSameOrBefore.default);
|
|
13041
|
-
var Timezone;
|
|
13042
|
-
((Timezone2) => {
|
|
13043
|
-
Timezone2["AsiaShanghai"] = "Asia/Shanghai";
|
|
13044
|
-
Timezone2["AsiaTokyo"] = "Asia/Tokyo";
|
|
13045
|
-
Timezone2["AmericaNewYork"] = "America/New_York";
|
|
13046
|
-
Timezone2["EuropeLondon"] = "Europe/London";
|
|
13047
|
-
Timezone2["EuropeBerlin"] = "Europe/Berlin";
|
|
13048
|
-
})(Timezone ||= {});
|
|
13049
|
-
var initChinaDayjs = () => {
|
|
13050
|
-
import_dayjs.default.locale("zh-cn");
|
|
13051
|
-
import_dayjs.default.tz.setDefault("Asia/Shanghai" /* AsiaShanghai */);
|
|
13052
|
-
import_dayjs.default.updateLocale("zh-cn", {
|
|
13053
|
-
weekStart: 1
|
|
13054
|
-
});
|
|
13055
|
-
return import_dayjs.default;
|
|
13056
|
-
};
|
|
13057
|
-
var chinaDayjs = initChinaDayjs();
|
|
13058
|
-
var dayjs_default = import_dayjs.default;
|
|
13059
|
-
// src/node/mail.ts
|
|
13060
|
-
var import_nodemailer = __toESM(require("nodemailer"));
|
|
13061
|
-
var authMap = {
|
|
13062
|
-
163: {
|
|
13063
|
-
user: "15835196981@163.com",
|
|
13064
|
-
pass: "KPTVCFBMRXJVTCGW"
|
|
13065
|
-
},
|
|
13066
|
-
gmail: {
|
|
13067
|
-
user: "wangzhenzhen2023@gmail.com",
|
|
13068
|
-
pass: "lkxtorbpdyrjjxjq"
|
|
13069
|
-
}
|
|
13070
|
-
};
|
|
13071
|
-
var transporter = import_nodemailer.default.createTransport({
|
|
13072
|
-
host: "smtp.gmail.com",
|
|
13073
|
-
port: 465,
|
|
13074
|
-
secure: true,
|
|
13075
|
-
auth: authMap.gmail
|
|
13076
|
-
});
|
|
13077
|
-
var sendMail = (config2) => {
|
|
13078
|
-
return transporter.sendMail({
|
|
13079
|
-
from: authMap.gmail.user,
|
|
13080
|
-
...config2
|
|
13081
|
-
});
|
|
13082
|
-
};
|
|
13083
|
-
// src/node/file.ts
|
|
13084
|
-
var import_fs_extra = __toESM(require("fs-extra"));
|
|
13085
|
-
var import_axios13 = __toESM(require("axios"));
|
|
13086
|
-
var import_url = __toESM(require("url"));
|
|
13087
|
-
var path2 = __toESM(require("path"));
|
|
13088
|
-
var replaceContentInFile = async (filePath, targetContent, replacement) => {
|
|
9952
|
+
// src/node/file.ts
|
|
9953
|
+
var import_fs_extra = __toESM(require("fs-extra"));
|
|
9954
|
+
var import_axios7 = __toESM(require("axios"));
|
|
9955
|
+
var import_url = __toESM(require("url"));
|
|
9956
|
+
var path2 = __toESM(require("path"));
|
|
9957
|
+
var replaceContentInFile = async (filePath, targetContent, replacement) => {
|
|
13089
9958
|
try {
|
|
13090
9959
|
const data = await import_fs_extra.default.readFile(filePath, "utf8");
|
|
13091
9960
|
if (replacement && data.includes(replacement)) {
|
|
@@ -13114,7 +9983,7 @@ var downloadFile = async (httpUrl, outputPath) => {
|
|
|
13114
9983
|
}
|
|
13115
9984
|
outputPath = ".tmp/" + decodeURIComponent(fileName);
|
|
13116
9985
|
}
|
|
13117
|
-
const response = await
|
|
9986
|
+
const response = await import_axios7.default({
|
|
13118
9987
|
url: httpUrl,
|
|
13119
9988
|
method: "get",
|
|
13120
9989
|
responseType: "stream"
|
|
@@ -13133,7 +10002,7 @@ var downloadFile = async (httpUrl, outputPath) => {
|
|
|
13133
10002
|
};
|
|
13134
10003
|
// src/node/oss.ts
|
|
13135
10004
|
var import_ali_oss = __toESM(require("ali-oss"));
|
|
13136
|
-
var
|
|
10005
|
+
var import_axios8 = __toESM(require("axios"));
|
|
13137
10006
|
var import_fs_extra2 = __toESM(require("fs-extra"));
|
|
13138
10007
|
var path3 = __toESM(require("path"));
|
|
13139
10008
|
var oss = new import_ali_oss.default({
|
|
@@ -13148,7 +10017,7 @@ async function uploadFile(file, filename) {
|
|
|
13148
10017
|
if (typeof file === "string") {
|
|
13149
10018
|
if (/^https?:\/\//.test(file)) {
|
|
13150
10019
|
try {
|
|
13151
|
-
const response = await
|
|
10020
|
+
const response = await import_axios8.default.get(file, { responseType: "arraybuffer" });
|
|
13152
10021
|
buffer = Buffer.from(response.data);
|
|
13153
10022
|
} catch (error) {
|
|
13154
10023
|
throw new Error(`无法从 URL 下载文件: ${error}`);
|