GRASS GIS 7 Programmer's Manual  7.5.svn(2018)-r72734
n_arrays_calc.c File Reference
`#include <math.h>`
`#include <grass/N_pde.h>`
`#include <grass/raster.h>`
`#include <grass/glocale.h>`
Include dependency graph for n_arrays_calc.c:

Go to the source code of this file.

## Functions

void N_copy_array_2d (N_array_2d *source, N_array_2d *target)
Copy the source N_array_2d struct to the target N_array_2d struct. More...

double N_norm_array_2d (N_array_2d *a, N_array_2d *b, int type)
Calculate the norm of the two input arrays. More...

void N_calc_array_2d_stats (N_array_2d *a, double *min, double *max, double *sum, int *nonull, int withoffset)
Calculate basic statistics of the N_array_2d struct. More...

N_array_2dN_math_array_2d (N_array_2d *a, N_array_2d *b, N_array_2d *result, int type)
Perform calculations with two input arrays, the result is written to a third array. More...

int N_convert_array_2d_null_to_zero (N_array_2d *a)
Convert all null values to zero values. More...

void N_copy_array_3d (N_array_3d *source, N_array_3d *target)
Copy the source N_array_3d struct to the target N_array_3d struct. More...

double N_norm_array_3d (N_array_3d *a, N_array_3d *b, int type)
Calculate the norm of the two input arrays. More...

void N_calc_array_3d_stats (N_array_3d *a, double *min, double *max, double *sum, int *nonull, int withoffset)
Calculate basic statistics of the N_array_3d struct. More...

N_array_3dN_math_array_3d (N_array_3d *a, N_array_3d *b, N_array_3d *result, int type)
Perform calculations with two input arrays, the result is written to a third array. More...

int N_convert_array_3d_null_to_zero (N_array_3d *a)
Convert all null values to zero values. More...

## Function Documentation

 void N_calc_array_2d_stats ( N_array_2d * a, double * min, double * max, double * sum, int * nonull, int withoffset )

Calculate basic statistics of the N_array_2d struct.

Calculates the minimum, maximum, sum and the number of non null values. The array offset can be included in the calculation.

Parameters
 a N_array_2d * - input array min double* - variable to store the computed minimum max double* - variable to store the computed maximum sum double* - variable to store the computed sum nonull int* - variable to store the number of non null values withoffset - if 1 include offset values in statistic calculation, 0 otherwise
Returns
void

Definition at line 219 of file n_arrays_calc.c.

 void N_calc_array_3d_stats ( N_array_3d * a, double * min, double * max, double * sum, int * nonull, int withoffset )

Calculate basic statistics of the N_array_3d struct.

Calculates the minimum, maximum, sum and the number of non null values. The array offset can be included in the statistical calculation.

Parameters
 a N_array_3d * - input array min double* - variable to store the computed minimum max double* - variable to store the computed maximum sum double* - variable to store the computed sum nonull int* - variable to store the number of non null values withoffset - if 1 include offset values in statistic calculation, 0 otherwise
Returns
void

Definition at line 642 of file n_arrays_calc.c.

 int N_convert_array_2d_null_to_zero ( N_array_2d * a )

Convert all null values to zero values.

The complete data array inclusively offsets is used. The array data types are automatically recognized.

Parameters
 a N_array_2d *
Returns
int - number of replaced values

Definition at line 434 of file n_arrays_calc.c.

 int N_convert_array_3d_null_to_zero ( N_array_3d * a )

Convert all null values to zero values.

The complete data array inclusively offsets is used.

Parameters
 a N_array_3d *
Returns
int - number of replaced null values

Definition at line 852 of file n_arrays_calc.c.

 void N_copy_array_2d ( N_array_2d * source, N_array_2d * target )

Copy the source N_array_2d struct to the target N_array_2d struct.

The arrays must have the same size and the same offset.

The array types can be mixed, the values are automatically casted and the null values are set accordingly.

If you copy a cell array into a dcell array, the values are casted to dcell and the null values are converted from cell-null to dcell-null

This function can be called in a parallel region defined with OpenMP. The copy loop is parallelize with a openmp for pragma.

Parameters
 source N_array_2d * target N_array_2d *
Returns
void

Definition at line 45 of file n_arrays_calc.c.

 void N_copy_array_3d ( N_array_3d * source, N_array_3d * target )

Copy the source N_array_3d struct to the target N_array_3d struct.

The arrays must have the same size and the same offset.

The array data types can be mixed, the values are automatically casted and the null values are set accordingly.

If you copy a float array to a double array, the values are casted to DCELL and the null values are converted from FCELL-null to DCELL-null

Parameters
 source N_array_3d * target N_array_3d *
Returns
void

Definition at line 500 of file n_arrays_calc.c.

 N_array_2d* N_math_array_2d ( N_array_2d * a, N_array_2d * b, N_array_2d * result, int type )

Perform calculations with two input arrays, the result is written to a third array.

All arrays must have equal sizes and offsets. The complete data array inclusively offsets is used for calucaltions. Only non-null values are computed. If one array value is null, the result array value will be null too.

If a division with zero is detected, the resulting arrays value will set to null and not to NaN.

The result array is optional, if the result arrays points to NULL, a new array will be allocated with the largest arrays data type (CELL, FCELL or DCELL) used by the input arrays.

the array computations can be of the following forms:

• result = a + b -> N_ARRAY_SUM
• result = a - b -> N_ARRAY_DIF
• result = a * b -> N_ARRAY_MUL
• result = a / b -> N_ARRAY_DIV
Parameters
 a N_array_2d * - first input array b N_array_2d * - second input array result N_array_2d * - the optional result array type - the type of calculation
Returns
N_array_2d * - the pointer to the result array

Definition at line 308 of file n_arrays_calc.c.

 N_array_3d* N_math_array_3d ( N_array_3d * a, N_array_3d * b, N_array_3d * result, int type )

Perform calculations with two input arrays, the result is written to a third array.

All arrays must have equal sizes and offsets. The complete data array inclusively offsets is used for calucaltions. Only non-null values are used. If one array value is null, the result array value will be null too.

If a division with zero is detected, the resulting arrays value will set to null and not to NaN.

The result array is optional, if the result arrays points to NULL, a new array will be allocated with the largest arrays data type (FCELL_TYPE or DCELL_TYPE) used by the input arrays.

the calculations are of the following form:

• result = a + b -> N_ARRAY_SUM
• result = a - b -> N_ARRAY_DIF
• result = a * b -> N_ARRAY_MUL
• result = a / b -> N_ARRAY_DIV
Parameters
 a N_array_3d * - first input array b N_array_3d * - second input array result N_array_3d * - the optional result array type - the type of calculation
Returns
N_array_3d * - the pointer to the result array

Definition at line 739 of file n_arrays_calc.c.

 double N_norm_array_2d ( N_array_2d * a, N_array_2d * b, int type )

Calculate the norm of the two input arrays.

The norm can be of type N_MAXIMUM_NORM or N_EUKLID_NORM. All arrays must have equal sizes and offsets. The complete data array inclusively offsets is used for norm calucaltion. Only non-null values are used to calculate the norm.

Parameters
 a N_array_2d * b N_array_2d * type the type of the norm -> N_MAXIMUM_NORM, N_EUKLID_NORM
Returns
double the calculated norm

Definition at line 148 of file n_arrays_calc.c.

 double N_norm_array_3d ( N_array_3d * a, N_array_3d * b, int type )

Calculate the norm of the two input arrays.

The norm can be of type N_MAXIMUM_NORM or N_EUKLID_NORM. All arrays must have equal sizes and offsets. The complete data array inclusively offsets is used for norm calucaltion. Only non-null values are used to calculate the norm.

Parameters
 a N_array_3d * b N_array_3d * type the type of the norm -> N_MAXIMUM_NORM, N_EUKLID_NORM
Returns
double the calculated norm

Definition at line 576 of file n_arrays_calc.c.