Matrix r5059
Loading...
Searching...
No Matches
utils-R.c File Reference
#include "Mdefines.h"
#include "M5.h"
#include "t_rle.c"

Go to the source code of this file.

Macros

#define DO_INDEX
 
#define DO_INDEX
 
#define TEMPLATE(c)
 
#define TRUE_   Rf_ScalarLogical(1)
 
#define FALSE_   Rf_ScalarLogical(0)
 
#define do_ii_FILL(_i_, _j_)
 
#define _rle_d_
 
#define _rle_i_
 

Functions

SEXP R_index_triangle (SEXP s_n, SEXP s_packed, SEXP s_upper, SEXP s_diag)
 
SEXP R_index_diagonal (SEXP s_n, SEXP s_packed, SEXP s_upper)
 
SEXP R_nnz (SEXP s_x, SEXP s_countNA, SEXP s_nnzmax)
 
SEXP R_all0 (SEXP x)
 
SEXP R_any0 (SEXP x)
 
SEXP Mmatrix (SEXP args)
 
static int * expand_cmprPt (int ncol, const int mp[], int mj[])
 Expand compressed pointers in the array mp into a full set of indices in the array mj.
 
SEXP compressed_non_0_ij (SEXP x, SEXP colP)
 Return a 2 column matrix '' cbind(i, j) '' of 0-origin index vectors (i,j) which entirely correspond to the (i,j) slots of as(x, "TsparseMatrix") :
 
SEXP Matrix_expand_pointers (SEXP pP)
 
SEXP m_encodeInd (SEXP ij, SEXP di, SEXP orig_1, SEXP chk_bnds)
 Encode Matrix index (i,j) |--> i + j * nrow {i,j : 0-origin}.
 
SEXP m_encodeInd2 (SEXP i, SEXP j, SEXP di, SEXP orig_1, SEXP chk_bnds)
 Encode Matrix index (i,j) |--> i + j * nrow {i,j : 0-origin}.
 

Macro Definition Documentation

◆ _rle_d_

#define _rle_d_

Definition at line 610 of file utils-R.c.

◆ _rle_i_

#define _rle_i_

Definition at line 614 of file utils-R.c.

◆ do_ii_FILL

#define do_ii_FILL ( _i_,
_j_ )
Value:
int i; \
if (check_bounds) { \
for (i = 0; i < n; i++) { \
if (_i_[i] == NA_INTEGER || _j_[i] == NA_INTEGER) \
ii[i] = NA_INTEGER; \
else { \
register int i_i, j_i; \
if (one_ind) { \
i_i = _i_[i]-1; \
j_i = _j_[i]-1; \
} else { \
i_i = _i_[i]; \
j_i = _j_[i]; \
} \
if (i_i < 0 || i_i >= Di[0]) \
Rf_error(_("subscript 'i' out of bounds in M[ij]")); \
if (j_i < 0 || j_i >= Di[1]) \
Rf_error(_("subscript 'j' out of bounds in M[ij]")); \
ii[i] = i_i + j_i * nr; \
} \
} \
} else { \
for (i = 0; i < n; i++) \
ii[i] = (_i_[i] == NA_INTEGER || _j_[i] == NA_INTEGER) \
? NA_INTEGER \
: ((one_ind) \
? ((_i_[i]-1) + (_j_[i]-1) * nr) \
: _i_[i] + _j_[i] * nr); \
}
#define _(String)
Definition Mdefines.h:66

Referenced by m_encodeInd(), and m_encodeInd2().

◆ DO_INDEX [1/2]

#define DO_INDEX

◆ DO_INDEX [2/2]

#define DO_INDEX
Value:
do { \
if (!packed) { \
for (j = 0; j < n; ++j) { \
*(pr++) = k++; \
k += n; \
} \
} else if (upper) { \
for (j = 0; j < n; ++j) { \
*(pr++) = k; \
k += j+2; \
} \
} else { \
for (j = 0; j < n; ++j) { \
*(pr++) = k; \
k += n-j; \
} \
} \
} while (0)

◆ FALSE_

#define FALSE_   Rf_ScalarLogical(0)

Definition at line 191 of file utils-R.c.

Referenced by R_all0(), and R_any0().

◆ TEMPLATE

#define TEMPLATE ( c)
Value:
do { \
c##TYPE *px = c##PTR(s_x); \
if (countNA == NA_LOGICAL) { \
while (n-- > 0) { \
if (!c##NOT_NA(*px)) \
return Rf_ScalarInteger(NA_INTEGER); \
if (c##NOT_ZERO(*px)) \
++nnz; \
++px; \
} \
} else if (countNA != 0) { \
while (n-- > 0) { \
if (c##NOT_ZERO(*px)) \
++nnz; \
++px; \
} \
} else { \
while (n-- > 0) { \
if (c##NOT_NA(*px) && c##NOT_ZERO(*px)) \
++nnz; \
++px; \
} \
} \
} while (0)
cholmod_common c
Definition cholmod-etc.c:5

Referenced by R_nnz().

◆ TRUE_

#define TRUE_   Rf_ScalarLogical(1)

Definition at line 190 of file utils-R.c.

Referenced by R_all0(), and R_any0().

Function Documentation

◆ compressed_non_0_ij()

SEXP compressed_non_0_ij ( SEXP x,
SEXP colP )

Return a 2 column matrix '' cbind(i, j) '' of 0-origin index vectors (i,j) which entirely correspond to the (i,j) slots of as(x, "TsparseMatrix") :

Definition at line 447 of file utils-R.c.

References expand_cmprPt(), GET_SLOT, Matrix_DimSym, Matrix_iSym, Matrix_jSym, and Matrix_pSym.

◆ expand_cmprPt()

static int * expand_cmprPt ( int ncol,
const int mp[],
int mj[] )
static

Expand compressed pointers in the array mp into a full set of indices in the array mj.

Parameters
ncolnumber of columns (or rows)
mpcolumn pointer vector of length ncol + 1
mjvector of length mp[ncol] to hold the result
Returns
mj

Definition at line 432 of file utils-R.c.

Referenced by compressed_non_0_ij(), and Matrix_expand_pointers().

◆ m_encodeInd()

SEXP m_encodeInd ( SEXP ij,
SEXP di,
SEXP orig_1,
SEXP chk_bnds )

Encode Matrix index (i,j) |--> i + j * nrow {i,j : 0-origin}.

Parameters
ij2-column integer matrix
didim(.), i.e. length 2 integer vector
chk_bndslogical indicating 0 <= ij[,k] < di[k] need to be checked.
Returns
encoded index; integer if prod(dim) is small; double otherwise

Definition at line 493 of file utils-R.c.

References _, do_ii_FILL, and TYPEOF.

◆ m_encodeInd2()

SEXP m_encodeInd2 ( SEXP i,
SEXP j,
SEXP di,
SEXP orig_1,
SEXP chk_bnds )

Encode Matrix index (i,j) |--> i + j * nrow {i,j : 0-origin}.

Parameters
iinteger vector
jinteger vector of same length as 'i'
orig_1logical: if TRUE, "1-origin" otherwise "0-origin"
didim(.), i.e. length 2 integer vector
chk_bndslogical indicating 0 <= ij[,k] < di[k] need to be checked.
Returns
encoded index; integer if prod(dim) is small; double otherwise

Definition at line 571 of file utils-R.c.

References _, do_ii_FILL, and TYPEOF.

◆ Matrix_expand_pointers()

SEXP Matrix_expand_pointers ( SEXP pP)

Definition at line 473 of file utils-R.c.

References expand_cmprPt().

◆ Mmatrix()

SEXP Mmatrix ( SEXP args)

Definition at line 290 of file utils-R.c.

References _, and TYPEOF.

◆ R_all0()

SEXP R_all0 ( SEXP x)

Definition at line 196 of file utils-R.c.

References _, FALSE_, TRUE_, and TYPEOF.

◆ R_any0()

SEXP R_any0 ( SEXP x)

Definition at line 242 of file utils-R.c.

References _, FALSE_, TRUE_, and TYPEOF.

◆ R_index_diagonal()

SEXP R_index_diagonal ( SEXP s_n,
SEXP s_packed,
SEXP s_upper )

Definition at line 91 of file utils-R.c.

References _, and DO_INDEX.

◆ R_index_triangle()

SEXP R_index_triangle ( SEXP s_n,
SEXP s_packed,
SEXP s_upper,
SEXP s_diag )

Definition at line 4 of file utils-R.c.

References _, and DO_INDEX.

◆ R_nnz()

SEXP R_nnz ( SEXP s_x,
SEXP s_countNA,
SEXP s_nnzmax )

Definition at line 143 of file utils-R.c.

References SWITCH4, TEMPLATE, TYPEOF, and typeToKind().