nuget server logo nuget api documents
↑

API Docs / Microsoft.VisualBasic.Runtime / Exponent

Exponent

Full name Microsoft.VisualBasic.Math.SIMD.Exponent Assembly Microsoft.VisualBasic.Runtime Members 8

幂运算与自然指数。

00 Remarks

VB 的 ^ 运算符会被编译成 Math.Pow(), 而幂函数没有逐元素硬件指令,因此“指数也在变化”的重载依旧是标量实现。

真正可被向量化的是指数固定的场景:当指数为 2 时可以直接用乘法 (x * x 与正确舍入的 pow(x, 2) 结果逐位相同)、指数为 0.5 时可以用开方。这正是 SimdMath.PowScalar() 所做的特化, 也是 SquareDistance 这类热点(指数恒为 2)的主要加速来源。

注意:指数为 3 / 4 的特化用的是连续乘法,与正确舍入的 pow 相比可能相差几个 ULP(相对误差量级 1e-16)。

01 Syntax

Microsoft.VisualBasic.Math.SIMD.Exponent

02 Methods

NameOverloadsSummary
f64_scalar_op_exponent_f64 1 标量的向量次幂:v1 ^ v2(i)
f64_op_exponent_f64_scalar 1 向量的固定次幂:v1(i) ^ v2
f64_op_exponent_f64 1 向量对向量的逐元素次幂:v1(i) ^ v2(i)
f64_exp 1 逐元素自然指数:Exp(v(i))
f32_scalar_op_exponent_f32 1 标量的向量次幂(Single)
f32_op_exponent_f32_scalar 1 向量的固定次幂(Single)
f32_op_exponent_f32 1 向量对向量的逐元素次幂(Single)
f32_exp 1 逐元素自然指数(Single)

03 Members

method f64_scalar_op_exponent_f64 #
f64_scalar_op_exponent_f64(Double, Double())

标量的向量次幂:v1 ^ v2(i)

method f64_op_exponent_f64_scalar #
f64_op_exponent_f64_scalar(Double(), Double)

向量的固定次幂:v1(i) ^ v2

Remarks

指数为 2 / 3 / 4 / 0.5 时会走到向量化的快速路径,其余指数退回标量 ^。

method f64_op_exponent_f64 #
f64_op_exponent_f64(Double(), Double())

向量对向量的逐元素次幂:v1(i) ^ v2(i)

method f64_exp #
f64_exp(Double())

逐元素自然指数:Exp(v(i))

method f32_scalar_op_exponent_f32 #
f32_scalar_op_exponent_f32(Single, Single())

标量的向量次幂(Single)

method f32_op_exponent_f32_scalar #
f32_op_exponent_f32_scalar(Single(), Single)

向量的固定次幂(Single)

method f32_op_exponent_f32 #
f32_op_exponent_f32(Single(), Single())

向量对向量的逐元素次幂(Single)

method f32_exp #
f32_exp(Single())

逐元素自然指数(Single)