Blame view

fvn_sparse/UMFPACK/Source/umf_symbolic_usage.c 1.46 KB
422234dc3   daniau   git-svn-id: https...
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
44
45
  /* ========================================================================== */
  /* === UMF_symbolic_usage =================================================== */
  /* ========================================================================== */
  
  /* -------------------------------------------------------------------------- */
  /* UMFPACK Copyright (c) Timothy A. Davis, CISE,                              */
  /* Univ. of Florida.  All Rights Reserved.  See ../Doc/License for License.   */
  /* web: http://www.cise.ufl.edu/research/sparse/umfpack                       */
  /* -------------------------------------------------------------------------- */
  
  /* Returns the final size of the Symbolic object, in Units */
  
  #include "umf_internal.h"
  
  GLOBAL double UMF_symbolic_usage
  (
      Int n_row,
      Int n_col,
      Int nchains,
      Int nfr,
      Int esize,	    /* zero if no dense rows.  Otherwise, equal to the
  		     * number of non-singleton, non-empty columns */
      Int prefer_diagonal
  )
  {
      double units ;
  
      units =
  	DUNITS (SymbolicType, 1)	/* Symbolic structure */
  	+ 2 * DUNITS (Int, n_col+1)	/* Cperm_init, Cdeg */
  	+ 2 * DUNITS (Int, n_row+1)	/* Rperm_init, Rdeg */
  	+ 3 * DUNITS (Int, nchains+1)	/* Chain_ */
  	+ 4 * DUNITS (Int, nfr+1) ;	/* Front_ */
  
      /* if dense rows are present */
      units += DUNITS (Int, esize) ;	/* Esize */
  
      /* for diagonal pivoting */
      if (prefer_diagonal)
      {
  	units += DUNITS (Int, n_col+1) ;    /* Diagonal_map */
      }
  
      return (units) ;
  }