import { U, StrRemoveSome, If_StrIncludes, Or, Equal } from "typescript-treasure"; export type InjectDataFn = (fill_data: Data extends string | number | undefined | null ? never : Data) => ( If_HasNumFmt extends true ? number | GetWrapErr : string | GetWrapErr ); export type InjectExprFn = (expr: Expr extends string | number ? Expr : never) => ( If_HasNumFmt extends true ? number | GetWrapErr : string | GetWrapErr ); type If_IncludesVar = U.If_IncludeVar>; type If_NumOrStr = T extends string | number ? true : false; type If_FillData = T extends string | number | undefined | null ? false : true; type Not = T extends true ? false : true; type GetWrapErr = T extends { _error: infer I; } ? I : "-"; type GetFmt = T extends { _fmt: infer I; } ? I : never; type If_HasNumFmt = Or< If_StrIncludes | If_StrIncludes, ["!n"]> >; type DirectReturn = If_HasNumFmt extends true ? ( number | GetWrapErr ) : ( string | GetWrapErr ); type FuncReturn = If_IncludesVar extends true ? ( InjectDataFn ) : ( If_FillData extends true ? InjectExprFn : never ); type If_DirectReturn = Or< If_NumOrStr & If_FillData | If_NumOrStr & Not> >; /** * calc/calc_space 运行时选项类型(可以包含数据和配置) */ type CalcRuntimeOptions = any[] | Partial<{ _error: Err; _fmt: Fmt; _unit: boolean; _debug?: boolean; _on_debug?: (info: any) => void; _angle_unit?: 'deg' | 'rad'; _compact_symbols?: string[]; _compact_step?: number | number[]; _thousands?: Record; /** 多路取值时视为空值的值数组(仅运行时选项) */ _empty_values?: any[]; /** 多路取值时自定义空值判断函数(仅运行时选项) */ _empty_check?: (value: any, path?: string) => boolean; [key: string]: any; // 允许任意数据字段 }>; export type Calc = (expr: Expr, options?: CalcRuntimeOptions) => ( If_StrIncludes & If_StrIncludes extends true ? number | Err : string | Err ); export type CalcSpace = (expr: Expr, options?: CalcRuntimeOptions) => ( If_StrIncludes & If_StrIncludes extends true ? number | Err : string | Err ); export type CalcSum = (expr: Expr, options: Array>) => ( If_StrIncludes & If_StrIncludes extends true ? number | Err : string | Err ); /** * fmt 格式化选项(运行时选项) * 注意:单位转换相关配置(_unit_convert_out 等)只能通过 set_config 全局设置 */ export interface FmtOptions { _error?: any; _fmt?: string; /** 紧凑格式符号数组(临时覆盖) */ _compact_symbols?: string[]; /** 紧凑格式阶梯值(临时覆盖) */ _compact_step?: number | number[]; /** 千分位预设配置 */ _thousands?: Record; /** 多路取值时视为空值的值数组 */ _empty_values?: any[]; /** 多路取值时自定义空值判断函数 */ _empty_check?: (value: any, path?: string) => boolean; [key: string]: any; } /** * fmt 函数类型 * 直接格式化数字,跳过表达式解析 */ export interface Fmt { ( value: number | string, format_str?: FmtStr, options?: FmtOptions & { _error?: Err } ): If_StrIncludes extends true ? number | Err : string | Err; } export interface CalcWrap { (expr: Expr): If_IncludesVar extends true ? FuncReturn : If_StrIncludes extends true ? number | "-" : string | "-"; > (expr: Expr, options: Options): DirectReturn; > (options: Options): FuncReturn; } /** * 传入字符串算术式或数字返回计算的结果(标准语法) * @param expr 一个字符串算术式或一个数字 * @param options 一个配置或者用来填充算术式的数据源,或者两者的结合 * @returns 返回进过计算和格式化之后的结果,结果可能是字符串或数字或自定义的错误类型 * * @example: * ```typescript * calc("a + b", {a: 1, b: 2}) // 3 * calc("1.00") // 1 * calc("1.00 | =3") // 1.000 * calc("a + b | =2", {a: 0.1, b: 0.2}) // 0.30 * calc("a++(b", {_error: null}) // null * calc("1% + 2%", {_unit: true}) // 3% * ``` */ export const calc: Calc; /** * 空格语法计算函数 * 使用空格分隔的语法,支持所有 3.x 新功能(千分位预设、格式化分组、范围限制等) * @param expr 一个字符串算术式或一个数字(使用空格语法) * @param options 一个配置或者用来填充算术式的数据源,或者两者的结合 * @returns 返回进过计算和格式化之后的结果,结果可能是字符串或数字或自定义的错误类型 * * @example: * ```typescript * calc_space("a + b", {a: 1, b: 2}) // 3 * calc_space("1 + 2 * 3 | = 2") // "7.00" * calc_space("100 | , = 2") // "100.00" * calc_space("1000000 | @cn") // "1,000,000"(使用千分位预设) * calc_space("100 | % = 2") // "100.00%" * ``` */ export const calc_space: CalcSpace; /** * 传入字符串算术式和数据源的数组进行计算并最终归集,这个方法类似 options_arr.reduce((memo, data) => calc("expr + memo", {expr, memo, _fill_data: data}), 0) * @param expr 一个字符串算术式或一个数字 * @param options_arr 数据源的集合 * @returns 返回进过计算和格式化并归集之后的结果,结果可能是字符串或数字或自定义的错误类型 * * @example: * ```typescript * calc_sum("a + 1", [{a: 1}, {a: 2}]) // 5 * ``` */ export const calc_sum: CalcSum; /** * 计算数组中每个元素的表达式值并求平均值 * @param expr 一个字符串算术式,可包含格式化指令 * @param options_arr 数据源的集合 * @returns 返回平均值结果 * * @example: * ```typescript * calc_avg("score", [{score: 80}, {score: 90}, {score: 100}]) // '90' * calc_avg("score | =2", [{score: 80}, {score: 90}]) // '85.00' * ``` */ export const calc_avg: CalcSum; /** * 计算数组中每个元素的表达式值并返回最大值 * @param expr 一个字符串算术式,可包含格式化指令 * @param options_arr 数据源的集合 * @returns 返回最大值结果 * * @example: * ```typescript * calc_max("price", [{price: 10}, {price: 30}, {price: 20}]) // '30' * calc_max("price * qty | =2", [{price: 10, qty: 2}, {price: 5, qty: 3}]) // '20.00' * ``` */ export const calc_max: CalcSum; /** * 计算数组中每个元素的表达式值并返回最小值 * @param expr 一个字符串算术式,可包含格式化指令 * @param options_arr 数据源的集合 * @returns 返回最小值结果 * * @example: * ```typescript * calc_min("price", [{price: 10}, {price: 30}, {price: 20}]) // '10' * calc_min("stock | =0", [{stock: 50}, {stock: 10}, {stock: 30}]) // '10' * ``` */ export const calc_min: CalcSum; /** * 统计数组中表达式结果为真值(非零)的数量 * @param expr 一个字符串算术式,可包含格式化指令 * @param options_arr 数据源的集合 * @returns 返回满足条件的数量 * * @example: * ```typescript * calc_count("stock > 0", [{stock: 10}, {stock: 0}, {stock: 5}]) // '2' * calc_count("active", [{active: 1}, {active: 0}, {active: 1}]) // '2' * ``` */ export const calc_count: CalcSum; /** * 专用格式化函数,用于对数字进行格式化处理 * 相比 calc,它跳过表达式解析,性能更好 * * 支持多种调用方式: * 1. 新 API: fmt(100, '=2') - 直接格式化数字,性能最好 * 2. 旧 API: fmt('100 | =2') - calc 风格(向后兼容) * 3. 旧 API: fmt(100, { _fmt: '=2' }) - 对象选项风格(向后兼容) * * @param value 要格式化的数字,或包含 | 的 calc 风格表达式 * @param format_str 格式化字符串,或选项对象(旧 API 兼容) * @param options 可选配置项 * @returns 返回格式化后的结果 * * @example: * ```typescript * // 新 API(推荐) * fmt(100, '=2') // '100.00' * fmt(1234567, ',') // '1,234,567' * fmt(0.1234, '%=2') // '12.34%' * * // 旧 API(向后兼容) * fmt('100 | =2') // '100.00' * fmt('num | ,', { num: 1234567 }) // '1,234,567' * fmt(100, { _fmt: '=2' }) // '100.00' * ``` */ export const fmt: Fmt; /** * calc方法的包装版本,除了支持calc所有的功能还额外提供了更强大的类型推导和更灵活的编写方式 * @param expr 一个字符串算术式或一个数字 * @param options 一个配置或者用来填充算术式的数据源,或者两者的结合 * @returns 返回进过计算和格式化之后的结果,结果可能是字符串或数字或自定义的错误类型 * * @example: * ```typescript * // 先传入表达式还是先注入数据源都是可以的 * calc_wrap("a + b")({a: 1, b: 2}) // 3 * calc_wrap("a + b",{a: 1, b: 2}) // 3 * calc_wrap({a: 0.1, b: 0.2})("a + b | =2") // 0.30 * ``` */ export const calc_wrap: CalcWrap; /** * 当前库版本号 */ export const version: string; /** * 工具函数集合 */ export const calc_util: { /** * 检查当前库是否有更新版本 */ check_update(): void; /** * 打印当前库的版本 */ print_version(): void; }; export const parse_thousands: (str: string) => string; // ==================== 原始运算函数类型 ==================== type NumOrStr = number | string; type TypeArg = "number" | "string"; /** * 二元运算函数类型(支持多参数) * - 默认返回 number * - 最后一个参数为 "string" 时返回 string * - 最后一个参数为 "number" 时返回 number */ interface BinaryOp { // 无参数 (): number; // 单参数 (a: NumOrStr): number; (a: NumOrStr, type: "string"): string; (a: NumOrStr, type: "number"): number; // 双参数(兼容旧版) (a: NumOrStr, b: NumOrStr): number; (a: NumOrStr, b: NumOrStr, type: "string"): string; (a: NumOrStr, b: NumOrStr, type: "number"): number; // 三参数 (a: NumOrStr, b: NumOrStr, c: NumOrStr): number; (a: NumOrStr, b: NumOrStr, c: NumOrStr, type: "string"): string; (a: NumOrStr, b: NumOrStr, c: NumOrStr, type: "number"): number; // 四参数 (a: NumOrStr, b: NumOrStr, c: NumOrStr, d: NumOrStr): number; (a: NumOrStr, b: NumOrStr, c: NumOrStr, d: NumOrStr, type: "string"): string; (a: NumOrStr, b: NumOrStr, c: NumOrStr, d: NumOrStr, type: "number"): number; // 更多参数(fallback) (...args: NumOrStr[]): number | string; } /** * 一元运算函数类型 */ interface UnaryOp { (value: NumOrStr): number; (value: NumOrStr, type: "string"): string; (value: NumOrStr, type: "number"): number; } /** * 加法 - 支持多参数 * @example * add(1, 2) // => 3 (number) * add(1, 2, 3, 4) // => 10 (number) * add(1, 2, "string") // => "3" (string) */ export const add: BinaryOp; /** * 减法 - 支持多参数 * @example * sub(10, 3) // => 7 (number) * sub(10, 3, 2) // => 5 (number) * sub(10, 3, "string") // => "7" (string) */ export const sub: BinaryOp; /** * 乘法 - 支持多参数 * @example * mul(2, 3) // => 6 (number) * mul(2, 3, 4) // => 24 (number) * mul(2, 3, "string") // => "6" (string) */ export const mul: BinaryOp; /** * 除法 - 支持多参数 * @example * div(100, 2) // => 50 (number) * div(100, 2, 5) // => 10 (number) * div(10, 0) // throws Error or returns _error */ export const div: BinaryOp; /** * 取模 - 支持多参数 * @example * mod(10, 3) // => 1 (number) * mod(10, 3, "string") // => "1" (string) */ export const mod: BinaryOp; /** * 幂运算 - 支持多参数(右结合) * @example * pow(2, 3) // => 8 (number) * pow(2, 3, 2) // => 512 (number) = 2^(3^2) */ export const pow: BinaryOp; /** * 整除 - 支持多参数 * @example * idiv(10, 3) // => 3 (number) * idiv(100, 7, 2) // => 7 (number) */ export const idiv: BinaryOp; /** * 绝对值 * @example * abs(-5) // => 5 (number) * abs(-5, "string") // => "5" (string) */ export const abs: UnaryOp; /** * 取负 * @example * neg(5) // => -5 (number) * neg(-5, "string") // => "5" (string) */ export const neg: UnaryOp; /** * 平方根 * @example * sqrt(16) // => 4 (number) * sqrt(2, "string") // => "1.4142135623730950488" (string) */ export const sqrt: UnaryOp; /** * 自然对数 * @example * ln(Math.E) // => 1 (number) * ln(10, "string") // => "2.302585..." (string) */ export const ln: UnaryOp; /** * e 的 x 次方 * @example * exp(1) // => 2.718281828... (number) * exp(0, "string") // => "1" (string) */ export const exp: UnaryOp; // ==================== 链式计算 API ==================== /** * 链式计算返回值类型 * 可以直接调用获取结果,也可以继续链式调用 */ export interface ChainValue { /** 获取结果,可选传入格式化字符串 */ (format?: string): string; /** 链式加法 */ add(...nums: (NumOrStr | ChainValue)[]): ChainValue; /** 链式减法 */ sub(...nums: (NumOrStr | ChainValue)[]): ChainValue; /** 链式乘法 */ mul(...nums: (NumOrStr | ChainValue)[]): ChainValue; /** 链式除法 */ div(...nums: (NumOrStr | ChainValue)[]): ChainValue; /** 链式取模 */ mod(...nums: (NumOrStr | ChainValue)[]): ChainValue; /** 链式幂运算 */ pow(...nums: (NumOrStr | ChainValue)[]): ChainValue; /** 链式整除 */ idiv(...nums: (NumOrStr | ChainValue)[]): ChainValue; } /** * 链式加法起始 * @example * cadd(1, 2, 3)() // => "6" * cadd(1, 2).mul(3)() // => "9" * cadd(100).sub(50)("=2") // => "50.00" */ export function cadd(...nums: (NumOrStr | ChainValue)[]): ChainValue; /** * 链式减法起始 * @example * csub(10, 3)() // => "7" * csub(100, 50).div(2)() // => "25" */ export function csub(first: NumOrStr | ChainValue, ...rest: (NumOrStr | ChainValue)[]): ChainValue; /** * 链式乘法起始 * @example * cmul(2, 3, 4)() // => "24" * cmul(10).add(5)() // => "15" */ export function cmul(...nums: (NumOrStr | ChainValue)[]): ChainValue; /** * 链式除法起始 * @example * cdiv(100, 2)() // => "50" * cdiv(100, 2, 5)() // => "10" */ export function cdiv(first: NumOrStr | ChainValue, ...rest: (NumOrStr | ChainValue)[]): ChainValue; /** * 链式取模起始 * @example * cmod(10, 3)() // => "1" */ export function cmod(first: NumOrStr | ChainValue, ...rest: (NumOrStr | ChainValue)[]): ChainValue; /** * 链式幂运算起始 * @example * cpow(2, 3)() // => "8" */ export function cpow(first: NumOrStr | ChainValue, ...rest: (NumOrStr | ChainValue)[]): ChainValue; /** * 链式整除起始 * @example * cidiv(10, 3)() // => "3" */ export function cidiv(first: NumOrStr | ChainValue, ...rest: (NumOrStr | ChainValue)[]): ChainValue; // ==================== 计算模式 ==================== /** * 计算模式类型 */ export type ComputeMode = 'decimal' | 'bigint' | 'wasm'; /** * 角度单位类型 */ export type AngleUnit = 'deg' | 'rad'; /** * 单位转换规则类型 */ export type UnitConvertRule = | number | ((value: number, input_unit: string, output_unit: string) => number) | { mul?: number; div?: number; plus?: number; minus?: number; fn?: (value: number, input_unit: string, output_unit: string) => number; _position?: 'before' | 'after' | 'middle'; _thousands?: string; _compact?: string; }; /** * 单位转换映射类型(输出单位为key) */ export type UnitConvertOut = Record & { _position?: 'before' | 'after' | 'middle'; _thousands?: string; _compact?: string; }>; /** * 单位转换映射类型(输入单位为key) */ export type UnitConvertIn = Record>; /** * 千分位预设名称(系统内置) * - en: 英文/国际标准 (1,234,567.89) * - eu: 欧洲大陆格式 (1.234.567,89) * - swiss: 瑞士格式 (1'234'567.89) * - space: 空格分隔/ISO标准 (1 234 567.89) * - fr: 法国格式 (1 234 567,89 - 使用不换行空格) * - indian: 印度格式 (12,34,567.89) * - wan: 万进制/东亚格式 (123,4567.89) */ export type ThousandsPresetName = 'en' | 'eu' | 'swiss' | 'space' | 'fr' | 'indian' | 'wan'; /** * 紧凑格式预设名称(系统内置) * - en: 英文/国际通用 (1.23K, 1.23M, 1.23B, 1.23T) * - cn: 中文千进制 (1.23千, 1.23百万, 1.23十亿, 1.23万亿) * - wan: 万进制 (1.23万, 1.23亿, 1.23万亿) * - storage: 存储单位 (1KB, 1MB, 1GB, 1TB - 1024进制) * - indian: 印度格式 (1.23K, 1.23L, 1.23Cr - 阶梯[1000,100,100]) */ export type CompactPresetName = 'en' | 'cn' | 'wan' | 'storage' | 'indian'; /** * 千分位预设配置类型 */ export interface ThousandsPreset { /** 千分位分隔符,默认 ',' */ sep?: string; /** 小数点符号,默认 '.' */ point?: string; /** 分组规则,默认 [3] */ grouping?: number[]; /** 最小触发位数,0 表示不限制 */ min_len?: number; /** 是否对小数部分分组 */ point_group?: boolean; /** 自定义格式化函数 */ fn?: (num_str: string, context: { int_part: string; dec_part: string | null; sign: string; options: any }) => string; } /** * 紧凑格式预设配置类型 */ export type CompactPreset = | string[] // 简写形式:只有符号数组,step 默认 1000 | { // 完整形式:包含 symbols 和 step symbols: string[]; step?: number | number[]; } | ((num_str: string, context: { // 自定义函数形式 decimals: number; options: any; current_unit?: string; }) => { sign: string; number: string; unit: string; formatted: string; } | string); // 可以返回对象或字符串 /** * 全局配置项(只能通过 set_config 设置) */ export interface GlobalConfig { /** 计算模式: "decimal" | "bigint" | "wasm" */ _compute_mode?: ComputeMode; /** 角度单位: "deg" (度) | "rad" (弧度),默认 "deg" */ _angle_unit?: AngleUnit; /** 除法精度(小数位数),默认 20 */ _div_precision?: number; /** 错误时的返回值,默认 '-' */ _error?: any; /** 是否启用调试模式控制台输出,默认 true */ _debug_console?: boolean; /** 默认舍入模式 */ _default_round?: string; /** 默认格式化字符串(全局配置) */ _fmt?: string; /** 内置函数映射 */ _builtin_functions?: Record any>; // ==================== 紧凑格式配置 ==================== /** 紧凑格式预设配置(全局配置) */ _compact?: Record; /** 默认紧凑格式预设名称 */ _compact_default?: string; // ==================== 格式化分组配置 ==================== /** 格式化分组(全局配置) */ _fmt_groups?: Record; // ==================== 单位转换配置 ==================== /** 单位转换映射(输出单位为key) */ _unit_convert_out?: UnitConvertOut; /** 单位转换映射(输入单位为key,内部会转换为 _unit_convert_out 格式) */ _unit_convert_in?: UnitConvertIn; /** 默认输出单位 */ _unit_default_out?: string | string[]; /** 默认输入单位(当有多个输入单位时指定默认从哪个单位转换) */ _unit_default_in?: string | string[]; /** 默认单位位置: 'after' | 'before' | 'middle' */ _unit_default_position?: 'before' | 'after' | 'middle'; // ==================== 单位联动映射 ==================== /** 单位到位置的映射 */ _unit_position_map?: Record; /** 单位到千分位预设的映射 */ _unit_thousands_map?: Record; /** 单位到紧凑格式预设的映射 */ _unit_compact_map?: Record; // ==================== 千分位配置 ==================== /** 千分位预设配置 */ _thousands?: Record; /** 默认千分位预设名称 */ _thousands_default?: string; // ==================== 快捷语法配置 ==================== /** 快捷语法前缀(:xxx 等同于 _shortcut_prefix:xxx),默认 '!u' */ _shortcut_prefix?: string; // ==================== 多路取值配置 ==================== /** 多路取值时视为空值的值数组(全局配置,运行时选项可覆盖) */ _empty_values?: any[]; /** 多路取值时自定义空值判断函数(全局配置,运行时选项可覆盖) */ _empty_check?: (value: any, path?: string) => boolean; } /** * 设置全局配置 * @param config 配置对象 * @example * set_config({ _compute_mode: 'bigint' }) // 切换到 BigInt 模式 * set_config({ _angle_unit: 'rad' }) // 使用弧度制 * set_config({ _div_precision: 30 }) // 设置除法精度为 30 位 * set_config({ _error: 0 }) // 错误时返回 0 */ export function set_config(config: GlobalConfig): void; /** * 获取全局配置 * @param key 配置项名称,不传则返回全部配置 * @returns 配置值或全部配置对象 * @example * get_config('_compute_mode') // => 'decimal' * get_config() // => { _compute_mode: 'decimal', ... } */ export function get_config(): GlobalConfig; export function get_config(key: K): GlobalConfig[K]; /** * 重置全局配置到默认值 * * @example * reset_config() // 重置所有配置 * reset_config('_unit_convert_out') // 重置单个配置 * reset_config(['_unit_convert_out', '_unit_default_out']) // 重置多个配置 */ export function reset_config(): void; export function reset_config(key: keyof GlobalConfig): void; export function reset_config(keys: (keyof GlobalConfig)[]): void; /** * 运算符方法类型(跟随 _compute_mode 配置变化) */ export interface Ops { // 基础运算 add: (a: string, b: string) => string; sub: (a: string, b: string) => string; mul: (a: string, b: string) => string; div: (a: string, b: string) => string; mod: (a: string, b: string) => string; pow: (a: string, b: string) => string; idiv: (a: string, b: string) => string; // 一元运算 abs: (a: string) => string; neg: (a: string) => string; sqrt: (a: string) => string; cbrt: (a: string) => string; // 指数对数 exp: (a: string) => string; ln: (a: string) => string; log: (a: string, base: string) => string; log2: (a: string) => string; log10: (a: string) => string; // 三角函数 sin: (a: string) => string; cos: (a: string) => string; tan: (a: string) => string; asin: (a: string) => string; acos: (a: string) => string; atan: (a: string) => string; // 双曲函数 sinh: (a: string) => string; cosh: (a: string) => string; tanh: (a: string) => string; asinh: (a: string) => string; acosh: (a: string) => string; atanh: (a: string) => string; // 取整 floor: (a: string) => string; ceil: (a: string) => string; trunc: (a: string) => string; round: (a: string) => string; // 比较 max: (a: string, b: string) => string; min: (a: string, b: string) => string; compare: (a: string, b: string) => number; eq: (a: string, b: string) => boolean; lt: (a: string, b: string) => boolean; gt: (a: string, b: string) => boolean; lte: (a: string, b: string) => boolean; gte: (a: string, b: string) => boolean; } /** * 原始运算符对象(跟随 _compute_mode 配置变化) */ export const ops: Ops; /** * 加载 WASM 模块(异步) * @returns Promise,加载完成后 resolve */ export function load_wasm(): Promise; /** * 检查 WASM 模块是否已加载 * @returns 是否已加载 */ export function is_wasm_loaded(): boolean; /** * WASM 表达式计算 * 直接传入复杂表达式字符串,内部完成解析和计算 * @param expr 表达式字符串 * @returns 计算结果字符串 * @example * wcalc("1 + 2 * 3") // => "7" * wcalc("sqrt(16) + pow(2, 3)") // => "12" */ export function wcalc(expr: string): string; // ==================== r 前缀原始运算函数 ==================== // 这些函数直接调用底层计算模式,字符串进字符串出,会跟随 _compute_mode 配置变化 // 切换计算模式请使用: set_config({ _compute_mode: 'bigint' }) // 基础运算 export function radd(a: string, b: string): string; export function rsub(a: string, b: string): string; export function rmul(a: string, b: string): string; export function rdiv(a: string, b: string): string; export function rmod(a: string, b: string): string; export function rpow(a: string, b: string): string; export function ridiv(a: string, b: string): string; // 一元运算 export function rabs(a: string): string; export function rneg(a: string): string; export function rsqrt(a: string): string; export function rcbrt(a: string): string; // 指数对数 export function rexp(a: string): string; export function rln(a: string): string; export function rlog(a: string, base: string): string; export function rlog2(a: string): string; export function rlog10(a: string): string; // 三角函数 export function rsin(a: string): string; export function rcos(a: string): string; export function rtan(a: string): string; export function rasin(a: string): string; export function racos(a: string): string; export function ratan(a: string): string; // 双曲函数 export function rsinh(a: string): string; export function rcosh(a: string): string; export function rtanh(a: string): string; export function rasinh(a: string): string; export function racosh(a: string): string; export function ratanh(a: string): string; // 取整 export function rfloor(a: string): string; export function rceil(a: string): string; export function rtrunc(a: string): string; export function rround(a: string): string; // 比较 export function rmax(a: string, b: string): string; export function rmin(a: string, b: string): string; export function rcompare(a: string, b: string): number; export function req(a: string, b: string): boolean; export function rlt(a: string, b: string): boolean; export function rgt(a: string, b: string): boolean; export function rlte(a: string, b: string): boolean; export function rgte(a: string, b: string): boolean; // ==================== d 前缀原始运算函数(decimal 模式) ==================== // 这些函数始终使用 decimal.js 进行计算,不受 _compute_mode 配置影响 // 基础运算 export function dadd(a: string, b: string): string; export function dsub(a: string, b: string): string; export function dmul(a: string, b: string): string; export function ddiv(a: string, b: string): string; export function dmod(a: string, b: string): string; export function dpow(a: string, b: string): string; export function didiv(a: string, b: string): string; // 一元运算 export function dabs(a: string): string; export function dneg(a: string): string; export function dsqrt(a: string): string; export function dcbrt(a: string): string; // 指数对数 export function dexp(a: string): string; export function dln(a: string): string; export function dlog(a: string, base: string): string; export function dlog2(a: string): string; export function dlog10(a: string): string; // 三角函数 export function dsin(a: string): string; export function dcos(a: string): string; export function dtan(a: string): string; export function dasin(a: string): string; export function dacos(a: string): string; export function datan(a: string): string; // 双曲函数 export function dsinh(a: string): string; export function dcosh(a: string): string; export function dtanh(a: string): string; export function dasinh(a: string): string; export function dacosh(a: string): string; export function datanh(a: string): string; // 取整 export function dfloor(a: string): string; export function dceil(a: string): string; export function dtrunc(a: string): string; export function dround(a: string): string; // 比较 export function dmax(a: string, b: string): string; export function dmin(a: string, b: string): string; export function dcompare(a: string, b: string): number; export function deq(a: string, b: string): boolean; export function dlt(a: string, b: string): boolean; export function dgt(a: string, b: string): boolean; export function dlte(a: string, b: string): boolean; export function dgte(a: string, b: string): boolean; // ==================== b 前缀原始运算函数(bigint 模式) ==================== // 这些函数始终使用 BigInt 进行计算,不受 _compute_mode 配置影响 // 基础运算 export function badd(a: string, b: string): string; export function bsub(a: string, b: string): string; export function bmul(a: string, b: string): string; export function bdiv(a: string, b: string): string; export function bmod(a: string, b: string): string; export function bpow(a: string, b: string): string; export function bidiv(a: string, b: string): string; // 一元运算 export function babs(a: string): string; export function bneg(a: string): string; export function bsqrt(a: string): string; export function bcbrt(a: string): string; // 指数对数 export function bexp(a: string): string; export function bln(a: string): string; export function blog(a: string, base: string): string; export function blog2(a: string): string; export function blog10(a: string): string; // 三角函数 export function bsin(a: string): string; export function bcos(a: string): string; export function btan(a: string): string; export function basin(a: string): string; export function bacos(a: string): string; export function batan(a: string): string; // 双曲函数 export function bsinh(a: string): string; export function bcosh(a: string): string; export function btanh(a: string): string; export function basinh(a: string): string; export function bacosh(a: string): string; export function batanh(a: string): string; // 取整 export function bfloor(a: string): string; export function bceil(a: string): string; export function btrunc(a: string): string; export function bround(a: string): string; // 比较 export function bmax(a: string, b: string): string; export function bmin(a: string, b: string): string; export function bcompare(a: string, b: string): number; export function beq(a: string, b: string): boolean; export function blt(a: string, b: string): boolean; export function bgt(a: string, b: string): boolean; export function blte(a: string, b: string): boolean; export function bgte(a: string, b: string): boolean; // ==================== w 前缀原始运算函数(wasm 模式) ==================== // 这些函数使用 WASM 进行计算,首次调用时自动触发 WASM 加载 // 加载完成前使用 decimal 模式兜底 // 基础运算 export function wadd(a: string, b: string): string; export function wsub(a: string, b: string): string; export function wmul(a: string, b: string): string; export function wdiv(a: string, b: string): string; export function wmod(a: string, b: string): string; export function wpow(a: string, b: string): string; export function widiv(a: string, b: string): string; // 一元运算 export function wabs(a: string): string; export function wneg(a: string): string; export function wsqrt(a: string): string; export function wcbrt(a: string): string; // 指数对数 export function wexp(a: string): string; export function wln(a: string): string; export function wlog(a: string, base: string): string; export function wlog2(a: string): string; export function wlog10(a: string): string; // 三角函数 export function wsin(a: string): string; export function wcos(a: string): string; export function wtan(a: string): string; export function wasin(a: string): string; export function wacos(a: string): string; export function watan(a: string): string; // 双曲函数 export function wsinh(a: string): string; export function wcosh(a: string): string; export function wtanh(a: string): string; export function wasinh(a: string): string; export function wacosh(a: string): string; export function watanh(a: string): string; // 取整 export function wfloor(a: string): string; export function wceil(a: string): string; export function wtrunc(a: string): string; export function wround(a: string): string; // 比较 export function wmax(a: string, b: string): string; export function wmin(a: string, b: string): string; export function wcompare(a: string, b: string): number; export function weq(a: string, b: string): boolean; export function wlt(a: string, b: string): boolean; export function wgt(a: string, b: string): boolean; export function wlte(a: string, b: string): boolean; export function wgte(a: string, b: string): boolean;