Developer Reference for Intel® oneAPI Math Kernel Library for C
v?Div
vsDiv vmsDiv vdDiv vmdDiv vcDiv vmcDiv vzDiv vmzDiv Performs element by element division of vector a by vector b
Syntax
vhDiv ( n , a , b , y ) ;
vhDivI(n, a, inca, b, incb, y, incy);
vmhDiv ( n , a , b , y , mode ) ;
vmhDivI(n, a, inca, b, incb, y, incy, mode);
vsDiv ( n , a , b , y ) ;
vsDivI(n, a, inca, b, incb, y, incy);
vmsDiv ( n , a , b , y , mode ) ;
vmsDivI(n, a, inca, b, incb, y, incy, mode);
vdDiv ( n , a , b , y ) ;
vdDivI(n, a, inca, b, incb, y, incy);
vmdDiv ( n , a , b , y , mode ) ;
vmdDivI(n, a, inca, b, incb, y, incy, mode);
vcDiv ( n , a , b , y ) ;
vcDivI(n, a, inca, b, incb, y, incy);
vmcDiv ( n , a , b , y , mode ) ;
vmcDivI(n, a, inca, b, incb, y, incy, mode);
vzDiv ( n , a , b , y ) ;
vzDivI(n, a, inca, b, incb, y, incy);
vmzDiv ( n , a , b , y , mode ) ;
vmzDivI(n, a, inca, b, incb, y, incy, mode);
Include Files
mkl.h
Input Parameters
Name |
Type |
Description |
|---|---|---|
n |
const MKL_INT |
Specifies the number of elements to be calculated. |
a , b |
const _Float16* for vhDiv , vmhDiv const float* for vsDiv , vmsDiv const double* for vdDiv , vmdDiv const MKL_Complex8* for vcDiv , vmcDiv const MKL_Complex16* for vzDiv , vmzDiv |
Pointers to arrays that contain the input vectors a and b . |
inca , incb , incy |
const MKL_INT |
Specifies increments for the elements of a , b , and y . |
mode |
const MKL_INT64 |
Overrides global VM mode setting for this function call. See vmlSetMode (Sets a new mode for VM functions according to the mode parameter and stores the previous VM mode to oldmode.) for possible values and their description. |
Precision Overflow Thresholds for Real v?Div Function
Data Type |
Threshold Limitations on Input Parameters |
|---|---|
single precision |
abs(a[i]) < abs(b[i]) * FLT_MAX |
double precision |
abs(a[i]) < abs(b[i]) * DBL_MAX |
Precision overflow thresholds for the complex v?Div function are beyond the scope of this document.
Output Parameters
Name |
Type |
Description |
|---|---|---|
y |
_Float16* for vhDiv , vmhDiv float* for vsDiv , vmsDiv double* for vdDiv , vmdDiv MKL_Complex8* for vcDiv , vmcDiv MKL_Complex16* for vzDiv , vmzDiv |
Pointer to an array that contains the output vector y . |
Description
The v?Div function performs element by element division of vector a by vector b .
Special values for Real Function v?Div(x)
Argument 1 |
Argument 2 |
Result |
VM Error Status |
Exception |
|---|---|---|---|---|
X > +0 |
+0 |
|
VML_STATUS_SING |
ZERODIVIDE |
X > +0 |
-0 |
|
VML_STATUS_SING |
ZERODIVIDE |
X < +0 |
+0 |
|
VML_STATUS_SING |
ZERODIVIDE |
X < +0 |
-0 |
|
VML_STATUS_SING |
ZERODIVIDE |
+0 |
+0 |
QNAN |
VML_STATUS_SING |
|
-0 |
-0 |
QNAN |
VML_STATUS_SING |
|
X > +0 |
|
+0 |
||
X > +0 |
|
-0 |
||
|
|
QNAN |
||
|
|
QNAN |
||
QNAN |
QNAN |
QNAN |
||
SNAN |
SNAN |
QNAN |
INVALID |
Specifications for special values of the complex functions are defined according to the following formula
\(Div(x1+i*y1,x2+i*y2) = (x1+i*y1)*(x2-i*y2)/(x2*x2+y2*y2)\) .
Overflow in a complex function occurs when x2+i*y2 is not zero, x1 , x2 , y1 , y2 are finite numbers, but the real or imaginary part of the exact result is so large that it does not fit the target precision. In that case, the function returns ∞ in that part of the result, raises the OVERFLOW exception, and sets the VM Error Status to VML_STATUS_OVERFLOW .