Performs element by element division of vector a by vector b
FORTRAN:
call vsdiv( n, a, b, y )
call vmsdiv( n, a, b, y, mode )
call vddiv( n, a, b, y )
call vmddiv( n, a, b, y, mode )
call vcdiv( n, a, b, y )
call vmcdiv( n, a, b, y, mode )
call vzdiv( n, a, b, y )
call vmzdiv( n, a, b, y, mode )
C:
vsDiv( n, a, b, y );
vmsDiv( n, a, b, y, mode );
vdDiv( n, a, b, y );
vmdDiv( n, a, b, y, mode );
vcDiv( n, a, b, y );
vmcDiv( n, a, b, y, mode );
vzDiv( n, a, b, y );
vmzDiv( n, a, b, y, mode );
Name |
Type |
Description |
---|---|---|
n |
FORTRAN 77: INTEGER Fortran 90: INTEGER, INTENT(IN) C: const int |
Specifies the number of elements to be calculated. |
a, b |
FORTRAN 77: REAL for vsdiv, vmsdiv DOUBLE PRECISION for vddiv, vmddiv COMPLEX for vcdiv, vmcdiv DOUBLE COMPLEX for vzdiv, vmzdiv Fortran 90: REAL, INTENT(IN) for vsdiv, vmsdiv DOUBLE PRECISION, INTENT(IN) for vddiv, vmddiv COMPLEX, INTENT(IN) for vcdiv, vmcdiv DOUBLE COMPLEX, INTENT(IN) for vzdiv, vmzdiv C: const float* for vsDiv, vmsDiv const double* for vdDiv, vmdDiv const MKL_Complex8* for vcDiv, vmcDiv const MKL_Complex16* for vzDiv, vmzDiv |
FORTRAN: Arrays that specify the input vectors a and b. C: Pointers to arrays that contain the input vectors a and b. |
mode |
FORTRAN 77: INTEGER*8 Fortran 90: INTEGER(KIND=8), INTENT(IN) C: const MKL_INT64 |
Overrides global VML mode setting for this function call. See vmlSetMode for possible values and their description. |
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.
Name |
Type |
Description |
---|---|---|
y |
FORTRAN 77: REAL for vsdiv, vmsdiv DOUBLE PRECISION for vddiv, vmddiv COMPLEX for vcdiv, vmcdiv DOUBLE COMPLEX for vzdiv, vmzdiv Fortran 90: REAL, INTENT(OUT) for vsdiv, vmsdiv DOUBLE PRECISION, INTENT(OUT) for vddiv, vmddiv COMPLEX, INTENT(OUT) for vcdiv, vmcdiv DOUBLE COMPLEX, INTENT(OUT) for vzdiv, vmzdiv C: float* for vsDiv, vmsDiv double* for vdDiv, vmdDiv MKL_Complex8* for vcDiv, vmcDiv MKL_Complex16* for vzDiv, vmzDiv |
FORTRAN: Array that specifies the output vector y. C: Pointer to an array that contains the output vector y. |
The v?Div function performs element by element division of vector a by vector b.
Argument 1 | Argument 2 | Result | VML 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 VML Error Status to VML_STATUS_OVERFLOW.