File: cs_di_demo1.c

package info (click to toggle)
suitesparse 1%3A7.10.1%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 254,920 kB
  • sloc: ansic: 1,134,743; cpp: 46,133; makefile: 4,875; fortran: 2,087; java: 1,826; sh: 996; ruby: 725; python: 495; asm: 371; sed: 166; awk: 44
file content (43 lines) | stat: -rw-r--r-- 1,769 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
// CXSparse/Demo/cs_di_demo1: demo program for CXSparse (double int32_t)
// CXSparse, Copyright (c) 2006-2022, Timothy A. Davis. All Rights Reserved.
// SPDX-License-Identifier: LGPL-2.1+
#include "cs.h"
int main (void)
{
    cs_di *T, *A, *Eye, *AT, *C, *D ;
    int i, m ;
    int version [3] ;
    cxsparse_version (version) ;
    printf ("CXSparse v%d.%d.%d\n", version [0], version [1], version [2]) ;

    #ifndef TEST_COVERAGE
    if ((version [0] != CS_VER) || (version [1] != CS_SUBVER) ||
        (version [2] != CS_SUBSUB))
    {
        fprintf (stderr, "version in header does not match library\n") ;
        abort ( ) ;
    }
    #endif

    T = cs_di_load (stdin) ;               /* load triplet matrix T from stdin */
    printf ("T:\n") ; cs_di_print (T, 0) ; /* print T */
    A = cs_di_compress (T) ;               /* A = compressed-column form of T */
    printf ("A:\n") ; cs_di_print (A, 0) ; /* print A */
    cs_di_spfree (T) ;                     /* clear T */
    AT = cs_di_transpose (A, 1) ;          /* AT = A' */
    printf ("AT:\n") ; cs_di_print (AT, 0) ; /* print AT */
    m = A ? A->m : 0 ;                  /* m = # of rows of A */
    T = cs_di_spalloc (m, m, m, 1, 1) ;    /* create triplet identity matrix */
    for (i = 0 ; i < m ; i++) cs_di_entry (T, i, i, 1) ;
    Eye = cs_di_compress (T) ;             /* Eye = speye (m) */
    cs_di_spfree (T) ;
    C = cs_di_multiply (A, AT) ;           /* C = A*A' */
    D = cs_di_add (C, Eye, 1, cs_di_norm (C)) ;   /* D = C + Eye*norm (C,1) */
    printf ("D:\n") ; cs_di_print (D, 0) ; /* print D */
    cs_di_spfree (A) ;                     /* clear A AT C D Eye */
    cs_di_spfree (AT) ;
    cs_di_spfree (C) ;
    cs_di_spfree (D) ;
    cs_di_spfree (Eye) ;
    return (0) ;
}