2026a

# 数学相关


# 数学运算符

函数名 简介
+ 加法操作符,用于将两个数值或对象相加
- 减法操作符,用于从第一个数值中减去第二个数值
* 乘法操作符,用于将两个数值相乘
/ 右除操作符,将 x 乘以 y 的逆(在右侧)。对于整数参数,返回浮点结果
\ 左除操作符,将 y 乘以 x 的逆(在左侧)。对于整数参数,返回浮点结果
^ 指数操作符。如果 x 是一个矩阵,则计算矩阵的指数。对于数字,计算 x 的幂
fma fma(x, y, z)计算 x * y + z,在计算过程中不会对中间结果 x * y 进行舍入
muladd 组合乘加操作:muladd(x, y, z)计算 x * y + z,允许将乘法和加法与其他操作合并,以提高性能
inv 返回 x 的乘法逆元,使得 x * inv(x) 或 inv(x) * x 的结果接近乘法单位元素 one(x),可能会有舍入误差
div 欧几里得(整数)除法的商。通常等同于数学操作 x / y,但没有小数部分
fld 小于或等于 x / y 的最大整数。等同于 div(x, y, RoundDown)
cld 大于或等于 x / y 的最小整数。等同于 div(x, y, RoundUp)
mod 用于计算给定整数 x 在范围 r 中的模
rem 欧几里得除法的余数,返回一个与 x 具有相同符号且绝对值小于 y 的值
rem2pi 计算 x 除以 2π 后的余数,商根据舍入模式 r 四舍五入
Base.Math.mod2pi 计算 x 除以 2π 后的余数,返回结果范围在 [0, 2π) 之间
divrem 欧几里得除法的商和余数
fldmod 除法后的向下取整商和余数
fld1 向下取整除法,返回与 mod1(x, y) 一致的值
mod1 向下取整除法后计算余数,返回一个值 r,使得 mod(r, y) 等于 mod(x, y)
fldmod1 返回 (fld1(x, y), mod1(x, y)),其中 fld1(x, y) 是向下取整除法的商,mod1(x, y) 是向下取整除法后的余数
// 将两个整数或有理数相除,返回一个有理数结果
rationalize 将浮点数 x 近似为具有给定整数类型的有理数
numerator 返回 x 的有理数表示中的分子部分
denominator 返回 x 的有理数表示中的分母部分
<< 左位移操作符 <<,表示将 x 向左移 n 位
>> 右位移操作符 >>,表示将 x 向右移 n 位
>>> 无符号右位移操作符 >>>,表示将 x 向右移 n 位
bitrotate 按位旋转操作。它返回将 x 的位向左旋转 k 次后的值。如果 k 为负值,则会向右旋转
: :expr 引用一个表达式 expr,返回该表达式的抽象语法树(AST)
range 根据参数构造一个具有均匀间隔元素并优化存储的数组
Base.OneTo 定义一个 AbstractUnitRange,它的行为类似于 1:n,并且通过类型系统保证下限(起始值)始终为 1
StepRangeLen 定义一个范围 r,其中 r[i] 生成类型为 T 的值
== 实现通用的相等运算符
!= 实现不等于比较运算符。它总是返回与 == 运算符相反的结果
!== 实现不等于比较运算符 !==,它总是返回与 === 运算符相反的结果
< 实现小于比较运算符 <,默认回退到 isless
<= 实现小于或等于比较运算符 <=,默认回退到 (x < y)
> 实现大于比较运算符 >,默认回退到 y < x
>= 实现大于或等于比较运算符 >=,默认回退到 y <= x
cmp 返回 -1、0 或 1,分别表示 x 小于、等于或大于 y。它使用由 isless 实现的全序关系
~ 实现按位取反运算符
& 实现按位与运算符
| 实现按位或运算符
xor 实现按位异或运算符
nand 实现按位与非运算符
nor 实现按位或非运算符
! 实现布尔取反运算符
&& 实现短路布尔与运算符。当左侧操作数为 false 时,右侧操作数不会被求值
|| 实现短路布尔或运算符。当左侧操作数为 true 时,右侧操作数不会被求值

# 数学函数

函数名 简介
isapprox 实现不精确相等比较运算符。当两个数字的相对距离或绝对距离在容忍范围内时,它们被认为相等
sin 计算 x 的正弦值,其中 x 为弧度
cos 计算 x 的余弦值,其中 x 为弧度
sincos 同时计算 x 的正弦和余弦值,其中 x 为弧度,并返回一个元组 (sine, cosine)
tan 计算 x 的正切值,其中 x 为弧度
Base.Math.sind 计算 x 的正弦值,其中 x 为度数。如果 x 是矩阵,则 x 必须是一个方阵
Base.Math.cosd 计算 x 的余弦值,其中 x 为度数。如果 x 是矩阵,则 x 必须是一个方阵
Base.Math.tand 计算 x 的正切值,其中 x 为度数。如果 x 是矩阵,则 x 必须是一个方阵
Base.Math.sincosd 同时计算 x 的正弦和余弦值,其中 x 为度数
Base.Math.sinpi 计算 sin(π * x),比 sin(π * x) 更精确,尤其是对于较大的 x
Base.Math.cospi 计算 cos(π * x),比 cos(π * x) 更精确,尤其是对于较大的 x
Base.Math.sincospi 同时计算 sinpi(x) 和 cospi(x),其中 x 为弧度,并返回一个元组 (sine, cosine)
sinh 计算 x 的双曲正弦值
cosh 计算 x 的双曲余弦值
tanh 计算 x 的双曲正切值
asin 计算 x 的反正弦值,输出结果为弧度
acos 计算 x 的反余弦值,输出结果为弧度
atan 计算 x 的反正切值,输出结果为弧度
Base.Math.asind 计算 x 的反正弦值,输出结果为度数
Base.Math.acosd 计算 x 的反余弦值,输出结果为度数
Base.Math.atand 计算 x 的反正切值,输出结果为度数
Base.Math.sec 计算 x 的正割值
Base.Math.csc 计算 x 的余割值
Base.Math.cot 计算 x 的余切值
Base.Math.secd 计算 x 的正割值,其中 x 为度数
Base.Math.cscd 计算 x 的余割值,其中 x 为度数
Base.Math.cotd 计算 x 的余切值,其中 x 为度数
Base.Math.asec 计算 x 的反正割值,输出结果为弧度
Base.Math.acsc 计算 x 的反余割值,输出结果为弧度
Base.Math.acot 计算 x 的反余切值,输出结果为弧度
Base.Math.asecd 计算 x 的反正割值,输出结果为度数
Base.Math.acscd 计算 x 的反余割值,输出结果为度数
Base.Math.acotd 计算 x 的反余切值,输出结果为度数
Base.Math.sech 计算 x 的双曲正割值
Base.Math.csch 计算 x 的双曲余割值
Base.Math.coth 计算 x 的双曲余切值
asinh 计算 x 的反双曲正弦值
acosh 计算 x 的反双曲余弦值
atanh 计算 x 的反双曲正切值
Base.Math.asech 计算 x 的反双曲正割值
Base.Math.acsch 计算 x 的反双曲余割值
Base.Math.acoth 计算 x 的反双曲余切值
Base.Math.sinc 当 x ≠ 0 时,计算 sin(πx) / (πx),若 x = 0 则返回 1
Base.Math.cosc 当 x ≠ 0 时,计算 cos(πx) / x - sin(πx) / (πx²),若 x = 0 则返回 0
Base.Math.deg2rad 将 x 从度数转换为弧度
Base.Math.rad2deg 将 x 从弧度转换为度数
Base.Math.hypot 计算两点间的距离,即 √(x² + y²),并避免溢出和下溢
log 计算 x 的自然对数
log2 计算 x 的以 2 为底的对数
log10 计算 x 的以 10 为底的对数
log1p 计算 1 + x 的自然对数
Base.Math.frexp 将一个浮点数分解成 (x, exp)
exp 计算自然底数 e 的 x 次幂
exp2 计算以 2 为底的指数
exp10 计算以 10 为底的指数
Base.Math.ldexp 计算x × 2^n
Base.Math.modf 返回一个元组 (fpart, ipart),分别表示数字的小数部分和整数部分,两部分符号与参数 x 相同
expm1 精确计算 e^x - 1
round 返回与给定时间 dt 在指定精度 p 下最接近的日期或日期时间
Base.Rounding.RoundingMode 此类型用于控制浮点运算的舍入模式
Base.Rounding.RoundNearest 四舍五入到最接近的整数,当遇到“中间值”(即小数部分为 0.5)时,舍入到最接近的偶数整数
Base.Rounding.RoundNearestTiesAway 四舍五入到最接近的整数,当遇到“中间值”时,远离零进行舍入
Base.Rounding.RoundNearestTiesUp 四舍五入到最接近的整数,当遇到“中间值”时,向正无穷方向舍入
Base.Rounding.RoundToZero 这种舍入模式下的 round 是 trunc 函数的别名
Base.Rounding.RoundFromZero 远离零方向舍入
Base.Rounding.RoundUp 这种舍入模式下的 round 是 ceil 函数的别名
Base.Rounding.RoundDown 这种舍入模式下的 round 是 floor 函数的别名
round 返回与复数 z 最接近且类型相同的整数值
ceil 返回与 x 类型相同且大于或等于 x 的最接近整数
floor 返回与 x 类型相同且小于或等于 x 的最接近整数
trunc 返回与 x 类型相同且绝对值小于或等于 x 绝对值的最接近整数
unsafe_trunc 返回类型为 T 的最接近整数值,且其绝对值不大于 x 的绝对值
min 返回参数中的最小值
max 返回参数中的最大值
minmax 同时返回 (min(x, y), max(x, y))
Base.Math.clamp 如果 x 在区间 [lo, hi] 内,则返回 x;如果 x 大于 hi,则返回 hi;如果 x 小于 lo,则返回 lo
Base.Math.clamp! 将数组中的值限制在指定范围内,直接在原数组上进行修改
abs 计算绝对值
Base.Checked 提供内置有符号和无符号整数类型的算术函数,当发生溢出时会抛出错误
Base.Checked.checked_abs 计算 abs(x),并在可能的情况下检查溢出错误
Base.Checked.checked_neg 计算 -x,并在可能的情况下检查溢出错误
Base.Checked.checked_add 计算 x + y,并在可能的情况下检查溢出错误
Base.Checked.checked_sub 计算 x - y,并在可能的情况下检查溢出错误
Base.Checked.checked_mul 计算 x * y,并在可能的情况下检查溢出错误
Base.Checked.checked_div 计算 div(x, y),并在可能的情况下检查溢出错误
Base.Checked.checked_rem 计算 x % y,并在可能的情况下检查溢出错误
Base.Checked.checked_fld 计算 fld(x, y),并在可能的情况下检查溢出错误
Base.Checked.checked_mod 计算 mod(x, y),并在可能的情况下检查溢出错误
Base.Checked.checked_cld 计算 cld(x, y),并在可能的情况下检查溢出错误
Base.Checked.add_with_overflow 计算 r = x + y,同时返回一个标志 f,指示是否发生了溢出
Base.Checked.sub_with_overflow 计算 r = x - y,同时返回一个标志 f,指示是否发生了溢出
Base.Checked.mul_with_overflow 计算 r = x * y,同时返回一个标志 f,指示是否发生了溢出
abs2 计算平方绝对值
copysign 返回一个数 z,其大小(幅值)与 x 相同,符号与 y 相同
sign 返回数值的符号,零时返回零,非零时返回正负符号
signbit 判断数值符号是否为负,负数返回真,否则返回假
flipsign 根据另一个数的符号决定是否翻转当前数的符号
sqrt 返回平方根
isqrt 计算整数平方根,即不超过给定数的最大整数平方值的整数
Base.Math.cbrt 返回立方根
Base.fourthroot 计算数的四次方根
real 返回复数的实部
imag 返回复数的虚部
reim 返回复数的实部和虚部,组成一个元组
conj 计算复数的共轭复数
angle 计算复数的幅角(相位角),结果以弧度表示
cis 利用欧拉公式,更高效地计算复数指数函数 exp(im * x)
cispi 提供一种更高精度的方法来计算 cis(π * x),尤其适用于较大的 x 值
binomial 计算二项式系数
factorial 计算整数的阶乘
gcd 计算多个数的最大公约数(正数)
lcm 计算多个数的最小公倍数(正数)
gcdx 计算两个数的最大公约数(正数)及其贝祖系数
ispow2 判断给定数是否为二的整数次幂
nextpow 返回不小于给定值的最小 a^n
prevpow 返回不大于给定值的最大 a^n
nextprod 返回不小于给定整数的最小整数,该整数可以表示为多个给定因子的乘积形式
invmod 计算模 m 下的 n 的乘法逆元 y,满足 n * y ≡ 1 (mod m),且 div(y, m) = 0
powermod 计算 x^p 对模 m 的取余
ndigits 计算整数在指定进制下的位数
Base.add_sum 用于 sum 函数的归约操作符
widemul 将 x 和 y 相乘,结果以更大类型返回
Base.Math.evalpoly 计算一个多项式,形式是系数数组 p 中的元素依次乘以 x 的不同次幂并求和
Base.Math.@evalpoly 用于计算多项式,形式是系数数组 c 中的元素依次乘以复数 z 的不同次幂并求和
Base.FastMath.@fastmath 执行经过转换的表达式版本,该版本调用的函数可能不遵守严格的 IEEE 标准,从而实现尽可能快的运算速度,但结果未定义

# 自定义二元运算符

某些 unicode 字符可用于定义新的支持中缀表示法的二元运算符。

例如, ⊗(x,y) = kron(x,y) 定义 (otimes) 为 Kronecker 积, 并且可以通过中缀语法将它作为一个二元运算符调用: C = A ⊗ B 也可以使用常用的前缀语法 C = ⊗(A,B)

其他支持这种扩展的字符包括 \odot 和 \oplus

完整列表在解析器代码中。

* 一样解析的包括(按优先级排列) * / ÷ % & ⋅ ∘ × |\\| ∩ ∧ ⊗ ⊘ ⊙ ⊚ ⊛ ⊠ ⊡ ⊓ ∗ ∙ ∤ ⅋ ≀ ⊼ ⋄ ⋆ ⋇ ⋉ ⋊ ⋋ ⋌ ⋏ ⋒ ⟑ ⦸ ⦼ ⦾ ⦿ ⧶ ⧷ ⨇ ⨰ ⨱ ⨲ ⨳ ⨴ ⨵ ⨶ ⨷ ⨸ ⨻ ⨼ ⨽ ⩀ ⩃ ⩄ ⩋ ⩍ ⩎ ⩑ ⩓ ⩕ ⩘ ⩚ ⩜ ⩞ ⩟ ⩠ ⫛ ⊍ ▷ ⨝ ⟕ ⟖ ⟗+ 一样解析的包括 + - |\|| ⊕ ⊖ ⊞ ⊟ |++|∪ ∨ ⊔ ± ∓ ∔ ∸ ≏ ⊎ ⊻ ⊽ ⋎ ⋓ ⟇ ⧺ ⧻ ⨈ ⨢ ⨣ ⨤ ⨥ ⨦ ⨧ ⨨ ⨩ ⨪ ⨫ ⨬ ⨭ ⨮ ⨹ ⨺ ⩁ ⩂ ⩅ ⩊ ⩌ ⩏ ⩐ ⩒ ⩔ ⩖ ⩗ ⩛ ⩝ ⩡ ⩢ ⩣ 还有许多其他的与箭头、比较和幂相关的符号。