File: cs_pinv.c

package info (click to toggle)
ufsparse 1.2-7
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 27,536 kB
  • ctags: 5,848
  • sloc: ansic: 89,328; makefile: 4,721; fortran: 1,991; csh: 207; sed: 162; awk: 33; java: 30; sh: 8
file content (11 lines) | stat: -rw-r--r-- 403 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
#include "cs.h"
/* Pinv = P', or P = Pinv' */
int *cs_pinv (int const *P, int n)
{
    int k, *Pinv ;
    if (!P) return (NULL) ;			/* P = NULL denotes identity */
    Pinv = cs_malloc (n, sizeof (int)) ;	/* allocate resuult */
    if (!Pinv) return (NULL) ;			/* out of memory */
    for (k = 0 ; k < n ; k++) Pinv [P [k]] = k ;/* invert the permutation */
    return (Pinv) ;				/* return result */
}