逐元素除法。
Divide
00 Remarks
整数除法没有对应的硬件指令(vdivpd/vdivps 只作用于浮点), 因此 Divide.int32_op_divide_int32_scalar() 保持标量实现。
01 Syntax
Microsoft.VisualBasic.Math.SIMD.Divide
02 Methods
| Name | Overloads | Summary |
|---|---|---|
| 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
f64_scalar_op_divide_f64(
Double, Double())标量除以向量:v1 / v2(i)
f64_op_divide_f64_scalar(
Double(), Double)向量除以标量:v1(i) / v2
int32_op_divide_int32_scalar(
Int32(), Double)整数向量除以 Double 标量,结果提升为 Double。
Remarks
这个函数没有向量化:把 Int32 逐元素提升为 Double 再相除的转换开销会抵消掉向量化收益,当前调用点也不在热路径上。
f64_op_divide_f64(
Double(), Double())向量除以向量:v1(i) / v2(i)
Remarks
语义提醒:为了与历史实现保持一致,当分子 v1(i) = 0 时结果被直接置为 0(而不是让 0 / 0 产生 Double)。向量化实现通过 掩码选择完成同样的语义。
f32_scalar_op_divide_f32(
Single, Single())标量除以向量(Single)
f32_op_divide_f32_scalar(
Single(), Single)向量除以标量(Single)
f32_op_divide_f32(
Single(), Single())向量除以向量(Single)。
Remarks
这是一个新增的普通除法;如果同样需要“分子为零则结果为零”的历史语义, 请使用 SimdEngine.DivideZeroSafe()。