KmlIssGcrDotprodBeta
Calculate
in the GCR algorithm.
Interface Definition
C interface:
int KmlIssGcrDotprodBeta(const float *ar, const float *ap, double *c, const int *m, const int *xl, const int *xr, const int *yl, const int *yr, const int *zl, const int *zr, const int *ybegin, const int *yend, const int *zbegin, const int *zend);
Parameters
Parameter |
Type |
Description |
Input/Output |
|---|---|---|---|
ar |
const float * |
Intermediate variable ar of the GCR algorithm. It is stored in the (z, x, y) direction. |
Input |
ap |
const float * |
Intermediate variable ap of the GCR algorithm. It is stored in the (z, x, y) direction. |
Input |
c |
double * |
Calculation result beta |
Input/Output |
m |
const int * |
Intermediate variable j of the GCR algorithm |
Input |
xl |
const int * |
Start position in the x direction of the solving space |
Input |
xr |
const int * |
End position in the x direction of the solving space |
Input |
yl |
const int * |
Start position in the y direction of the solving space |
Input |
yr |
const int * |
End position in the y direction of the solving space |
Input |
zl |
const int * |
Start position in the z direction of the solving space |
Input |
zr |
const int * |
End position in the z direction of the solving space |
Input |
ybegin |
const int * |
Start position in the y direction of the auxiliary solving space |
Input |
yend |
const int * |
End position in the y direction of the auxiliary solving space |
Input |
zbegin |
const int * |
Start position in the z direction of the auxiliary solving space |
Input |
zend |
const int * |
End position in the z direction of the auxiliary solving space |
Input |
Dependencies
#include "kml_gcr_specific.h"
Return Value
Return Value |
Type |
Description |
|---|---|---|
KMLSS_NO_ERROR |
int |
The execution is successful. |
KMLSS_NULL_ARGUMENT |
int |
A null pointer exists in the input. |
KMLSS_BAD_DATA |
int |
The parameters related to the solving space are invalid. |
Examples
int xl = 5;
int yl = 5;
int zl = 5;
int xr = 6;
int yr = 6;
int zr = 6;
int ybegin = 5;
int yend = 6;
int zbegin = 5;
int zend = 6;
int m = 1;
float *r = (float*)malloc(sizeof(float) * 27);
float *ap = (float*)malloc(sizeof(float) * 108);
double *c=(double*)malloc(sizeof(double) * 4);
for (int i=0; i<27; i++) {
r[i] = rand();
}
for (int i=0; i<108; i++) {
ap[i] = rand();
}
for (int i=0; i<4; i++) {
c[i] = 0.0;
}
KmlIssGcrDotprodBeta(r, ap, c, &m, &xl, &xr, &yl, &yr, &zl, &zr, &ybegin, ¥d, &zbegin, &zend);