nuget server logo nuget api documents
↑

API Docs / Microsoft.VisualBasic.Runtime / Divide

Divide

Full name Microsoft.VisualBasic.Math.SIMD.Divide Assembly Microsoft.VisualBasic.Runtime Members 7

逐元素除法。

00 Remarks

整数除法没有对应的硬件指令(vdivpd/vdivps 只作用于浮点), 因此 Divide.int32_op_divide_int32_scalar() 保持标量实现。

01 Syntax

Microsoft.VisualBasic.Math.SIMD.Divide

02 Methods

NameOverloadsSummary
f64_scalar_op_divide_f64 1 标量除以向量:v1 / v2(i)
f64_op_divide_f64_scalar 1 向量除以标量:v1(i) / v2
int32_op_divide_int32_scalar 1 整数向量除以 Double 标量,结果提升为 Double。
f64_op_divide_f64 1 向量除以向量:v1(i) / v2(i)
f32_scalar_op_divide_f32 1 标量除以向量(Single)
f32_op_divide_f32_scalar 1 向量除以标量(Single)
f32_op_divide_f32 1 向量除以向量(Single)。

03 Members

method f64_scalar_op_divide_f64 #
f64_scalar_op_divide_f64(Double, Double())

标量除以向量:v1 / v2(i)

method f64_op_divide_f64_scalar #
f64_op_divide_f64_scalar(Double(), Double)

向量除以标量:v1(i) / v2

method int32_op_divide_int32_scalar #
int32_op_divide_int32_scalar(Int32(), Double)

整数向量除以 Double 标量,结果提升为 Double。

Remarks

这个函数没有向量化:把 Int32 逐元素提升为 Double 再相除的转换开销会抵消掉向量化收益,当前调用点也不在热路径上。

method f64_op_divide_f64 #
f64_op_divide_f64(Double(), Double())

向量除以向量:v1(i) / v2(i)

Remarks

语义提醒:为了与历史实现保持一致,当分子 v1(i) = 0 时结果被直接置为 0(而不是让 0 / 0 产生 Double)。向量化实现通过 掩码选择完成同样的语义。

method f32_scalar_op_divide_f32 #
f32_scalar_op_divide_f32(Single, Single())

标量除以向量(Single)

method f32_op_divide_f32_scalar #
f32_op_divide_f32_scalar(Single(), Single)

向量除以标量(Single)

method f32_op_divide_f32 #
f32_op_divide_f32(Single(), Single())

向量除以向量(Single)。

Remarks

这是一个新增的普通除法;如果同样需要“分子为零则结果为零”的历史语义, 请使用 SimdEngine.DivideZeroSafe()。