~ubuntu-branches/ubuntu/oneiric/suitesparse/oneiric

« back to all changes in this revision

Viewing changes to CSparse/Source/cs_symperm.c

  • Committer: Bazaar Package Importer
  • Author(s): Nick Ellery
  • Date: 2009-06-14 19:15:52 UTC
  • mfrom: (7.2.2 sid)
  • Revision ID: james.westby@ubuntu.com-20090614191552-2hliya5q8n1quseu
Tags: 1:3.4.0-1ubuntu1
* Merge from debian unstable, remaining changes (LP: #387137):
  - debian/control:
    - demote libatlas-doc from recommends to suggests as it is not in main
    - drop recommends on doc-central as it is not in main

Show diffs side-by-side

added added

removed removed

Lines of Context:
5
5
    int i, j, p, q, i2, j2, n, *Ap, *Ai, *Cp, *Ci, *w ;
6
6
    double *Cx, *Ax ;
7
7
    cs *C ;
8
 
    if (!CS_CSC (A)) return (NULL) ;                    /* check inputs */
 
8
    if (!CS_CSC (A)) return (NULL) ;                    /* check inputs */
9
9
    n = A->n ; Ap = A->p ; Ai = A->i ; Ax = A->x ;
10
10
    C = cs_spalloc (n, n, Ap [n], values && (Ax != NULL), 0) ; /* alloc result*/
11
 
    w = cs_calloc (n, sizeof (int)) ;                   /* get workspace */
12
 
    if (!C || !w) return (cs_done (C, w, NULL, 0)) ;    /* out of memory */
 
11
    w = cs_calloc (n, sizeof (int)) ;                   /* get workspace */
 
12
    if (!C || !w) return (cs_done (C, w, NULL, 0)) ;    /* out of memory */
13
13
    Cp = C->p ; Ci = C->i ; Cx = C->x ;
14
 
    for (j = 0 ; j < n ; j++)           /* count entries in each column of C */
 
14
    for (j = 0 ; j < n ; j++)           /* count entries in each column of C */
15
15
    {
16
 
        j2 = pinv ? pinv [j] : j ;      /* column j of A is column j2 of C */
17
 
        for (p = Ap [j] ; p < Ap [j+1] ; p++)
18
 
        {
19
 
            i = Ai [p] ;
20
 
            if (i > j) continue ;       /* skip lower triangular part of A */
21
 
            i2 = pinv ? pinv [i] : i ;  /* row i of A is row i2 of C */
22
 
            w [CS_MAX (i2, j2)]++ ;     /* column count of C */
23
 
        }
 
16
        j2 = pinv ? pinv [j] : j ;      /* column j of A is column j2 of C */
 
17
        for (p = Ap [j] ; p < Ap [j+1] ; p++)
 
18
        {
 
19
            i = Ai [p] ;
 
20
            if (i > j) continue ;       /* skip lower triangular part of A */
 
21
            i2 = pinv ? pinv [i] : i ;  /* row i of A is row i2 of C */
 
22
            w [CS_MAX (i2, j2)]++ ;     /* column count of C */
 
23
        }
24
24
    }
25
 
    cs_cumsum (Cp, w, n) ;              /* compute column pointers of C */
 
25
    cs_cumsum (Cp, w, n) ;              /* compute column pointers of C */
26
26
    for (j = 0 ; j < n ; j++)
27
27
    {
28
 
        j2 = pinv ? pinv [j] : j ;      /* column j of A is column j2 of C */
29
 
        for (p = Ap [j] ; p < Ap [j+1] ; p++)
30
 
        {
31
 
            i = Ai [p] ;
32
 
            if (i > j) continue ;       /* skip lower triangular part of A*/
33
 
            i2 = pinv ? pinv [i] : i ;  /* row i of A is row i2 of C */
34
 
            Ci [q = w [CS_MAX (i2, j2)]++] = CS_MIN (i2, j2) ;
35
 
            if (Cx) Cx [q] = Ax [p] ;
36
 
        }
 
28
        j2 = pinv ? pinv [j] : j ;      /* column j of A is column j2 of C */
 
29
        for (p = Ap [j] ; p < Ap [j+1] ; p++)
 
30
        {
 
31
            i = Ai [p] ;
 
32
            if (i > j) continue ;       /* skip lower triangular part of A*/
 
33
            i2 = pinv ? pinv [i] : i ;  /* row i of A is row i2 of C */
 
34
            Ci [q = w [CS_MAX (i2, j2)]++] = CS_MIN (i2, j2) ;
 
35
            if (Cx) Cx [q] = Ax [p] ;
 
36
        }
37
37
    }
38
 
    return (cs_done (C, w, NULL, 1)) ;  /* success; free workspace, return C */
 
38
    return (cs_done (C, w, NULL, 1)) ;  /* success; free workspace, return C */
39
39
}