~ubuntu-branches/ubuntu/trusty/igraph/trusty-proposed

« back to all changes in this revision

Viewing changes to examples/simple/igraph_scg_semiprojectors.c.xml

  • Committer: Package Import Robot
  • Author(s): Mathieu Malaterre
  • Date: 2013-05-27 14:01:54 UTC
  • mfrom: (4.1.1 experimental)
  • Revision ID: package-import@ubuntu.com-20130527140154-oxwwmr0gj3kdy4ol
Tags: 0.6.5-2
Upload to sid

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
<programlisting linenumbering="numbered"><emphasis>/* -*- mode: C -*-  */</emphasis>
 
2
<emphasis>/* </emphasis>
 
3
<emphasis>   IGraph library.</emphasis>
 
4
<emphasis>   Copyright (C) 2011-2012  Gabor Csardi </emphasis>&lt;csardi.gabor@gmail.com&gt;
 
5
<emphasis>   334 Harvard st, Cambridge MA, 02139 USA</emphasis>
 
6
<emphasis>   </emphasis>
 
7
<emphasis>   This program is free software; you can redistribute it and/or modify</emphasis>
 
8
<emphasis>   it under the terms of the GNU General Public License as published by</emphasis>
 
9
<emphasis>   the Free Software Foundation; either version 2 of the License, or</emphasis>
 
10
<emphasis>   (at your option) any later version.</emphasis>
 
11
<emphasis>   </emphasis>
 
12
<emphasis>   This program is distributed in the hope that it will be useful,</emphasis>
 
13
<emphasis>   but WITHOUT ANY WARRANTY; without even the implied warranty of</emphasis>
 
14
<emphasis>   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</emphasis>
 
15
<emphasis>   GNU General Public License for more details.</emphasis>
 
16
<emphasis>   </emphasis>
 
17
<emphasis>   You should have received a copy of the GNU General Public License</emphasis>
 
18
<emphasis>   along with this program; if not, write to the Free Software</emphasis>
 
19
<emphasis>   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA </emphasis>
 
20
<emphasis>   02110-1301 USA</emphasis>
 
21
 
 
22
<emphasis>*/</emphasis>
 
23
 
 
24
<emphasis role="strong">#include</emphasis> &lt;igraph.h&gt;
 
25
 
 
26
int <emphasis role="strong">main</emphasis>() {
 
27
 
 
28
  igraph_t g;
 
29
  igraph_matrix_t L, R;
 
30
  igraph_sparsemat_t Lsparse, Rsparse;
 
31
  igraph_matrix_t adj, V;
 
32
  <link linkend='igraph_vector_t'>igraph_vector_t</link> groups;
 
33
  igraph_eigen_which_t which;
 
34
 
 
35
  <emphasis role="strong"><link linkend='igraph_matrix_init'>igraph_matrix_init</link></emphasis>(&amp;L, 0, 0);
 
36
  <emphasis role="strong"><link linkend='igraph_matrix_init'>igraph_matrix_init</link></emphasis>(&amp;R, 0, 0);
 
37
  <emphasis role="strong"><link linkend='igraph_matrix_init'>igraph_matrix_init</link></emphasis>(&amp;adj, 0, 0);
 
38
  <emphasis role="strong"><link linkend='igraph_matrix_init'>igraph_matrix_init</link></emphasis>(&amp;V, 0, 0);
 
39
  <emphasis role="strong"><link linkend='igraph_vector_init'>igraph_vector_init</link></emphasis>(&amp;groups, 0);
 
40
    
 
41
  <emphasis role="strong"><link linkend='igraph_rng_seed'>igraph_rng_seed</link></emphasis>(<emphasis role="strong"><link linkend='igraph_rng_default'>igraph_rng_default</link></emphasis>(), 42);
 
42
  
 
43
  <emphasis role="strong"><link linkend='igraph_tree'>igraph_tree</link></emphasis>(&amp;g, 10, <emphasis>/* children= */</emphasis> 3, IGRAPH_TREE_UNDIRECTED);
 
44
  
 
45
  <emphasis role="strong"><link linkend='igraph_get_adjacency'>igraph_get_adjacency</link></emphasis>(&amp;g, &amp;adj, IGRAPH_GET_ADJACENCY_BOTH, <emphasis>/*eids=*/</emphasis> 0);
 
46
 
 
47
  which.pos=IGRAPH_EIGEN_LM;
 
48
  which.howmany=1;
 
49
  <emphasis role="strong">igraph_eigen_matrix_symmetric</emphasis>(&amp;adj, <emphasis>/*sparsemat=*/</emphasis> 0, <emphasis>/*fun=*/</emphasis> 0,
 
50
                                <emphasis role="strong"><link linkend='igraph_vcount'>igraph_vcount</link></emphasis>(&amp;g), <emphasis>/*extra=*/</emphasis> 0, 
 
51
                                <emphasis>/*algorithm=*/</emphasis> IGRAPH_EIGEN_LAPACK,
 
52
                                &amp;which, <emphasis>/*options=*/</emphasis> 0, <emphasis>/*storage=*/</emphasis> 0, 
 
53
                                <emphasis>/*values=*/</emphasis> 0, &amp;V);
 
54
 
 
55
<emphasis role="strong">#define</emphasis> <emphasis role="strong">SEMI</emphasis>()                                                            \
 
56
  <emphasis role="strong">do</emphasis> {                                                                       \
 
57
    <emphasis role="strong"><link linkend='igraph_scg_semiprojectors'>igraph_scg_semiprojectors</link></emphasis>(&amp;groups, IGRAPH_SCG_SYMMETRIC, &amp;L, &amp;R,    \
 
58
                              &amp;Lsparse, &amp;Rsparse, <emphasis>/*p=*/</emphasis> 0,                \
 
59
                              IGRAPH_SCG_NORM_ROW);                     \
 
60
  } <emphasis role="strong">while</emphasis>(0)
 
61
 
 
62
<emphasis role="strong">#define</emphasis> <emphasis role="strong">PRINTRES</emphasis>()                                \
 
63
  <emphasis role="strong">do</emphasis> {                                               \
 
64
    <emphasis role="strong">printf</emphasis>("----------------------\n");              \
 
65
    <emphasis role="strong">igraph_matrix_print</emphasis>(&amp;L);                     \
 
66
    <emphasis role="strong">printf</emphasis>("---\n");                         \
 
67
    <emphasis role="strong">igraph_matrix_print</emphasis>(&amp;R);                     \
 
68
    <emphasis role="strong">printf</emphasis>("---\n");                         \
 
69
  } <emphasis role="strong">while</emphasis> (0)
 
70
 
 
71
  <emphasis>/* -------------- */</emphasis>
 
72
 
 
73
  <emphasis role="strong"><link linkend='igraph_scg_grouping'>igraph_scg_grouping</link></emphasis>(&amp;V, &amp;groups, <emphasis>/*intervals=*/</emphasis> 3, 
 
74
                      <emphasis>/*intervals_vector=*/</emphasis> 0, IGRAPH_SCG_SYMMETRIC,
 
75
                      IGRAPH_SCG_OPTIMUM, <emphasis>/*p=*/</emphasis> 0, <emphasis>/*maxiter=*/</emphasis> 10000);
 
76
  <emphasis role="strong">SEMI</emphasis>();
 
77
  <emphasis role="strong">PRINTRES</emphasis>();
 
78
 
 
79
  <emphasis>/* -------------- */</emphasis>
 
80
 
 
81
  <emphasis role="strong"><link linkend='igraph_scg_grouping'>igraph_scg_grouping</link></emphasis>(&amp;V, &amp;groups, <emphasis>/*intervals=*/</emphasis> 2, 
 
82
                      <emphasis>/*intervals_vector=*/</emphasis> 0, IGRAPH_SCG_SYMMETRIC,
 
83
                      IGRAPH_SCG_INTERV_KM, <emphasis>/*p=*/</emphasis> 0, <emphasis>/*maxiter=*/</emphasis> 10000);
 
84
  <emphasis role="strong">SEMI</emphasis>();
 
85
  <emphasis role="strong">PRINTRES</emphasis>();
 
86
 
 
87
  <emphasis>/* -------------- */</emphasis>
 
88
 
 
89
  <emphasis role="strong"><link linkend='igraph_scg_grouping'>igraph_scg_grouping</link></emphasis>(&amp;V, &amp;groups, <emphasis>/*intervals=*/</emphasis> 2, 
 
90
                      <emphasis>/*intervals_vector=*/</emphasis> 0, IGRAPH_SCG_SYMMETRIC,
 
91
                      IGRAPH_SCG_INTERV, <emphasis>/*p=*/</emphasis> 0, <emphasis>/*maxiter=*/</emphasis> 10000);
 
92
  <emphasis role="strong">SEMI</emphasis>();
 
93
  <emphasis role="strong">PRINTRES</emphasis>();
 
94
 
 
95
  <emphasis>/* -------------- */</emphasis>
 
96
 
 
97
  <emphasis role="strong"><link linkend='igraph_scg_grouping'>igraph_scg_grouping</link></emphasis>(&amp;V, &amp;groups, <emphasis>/*(ignored) intervals=*/</emphasis> 0, 
 
98
                      <emphasis>/*intervals_vector=*/</emphasis> 0, IGRAPH_SCG_SYMMETRIC,
 
99
                      IGRAPH_SCG_EXACT, <emphasis>/*p=*/</emphasis> 0, <emphasis>/*maxiter=*/</emphasis> 10000);
 
100
  <emphasis role="strong">SEMI</emphasis>();
 
101
  <emphasis role="strong">PRINTRES</emphasis>();
 
102
 
 
103
  <emphasis>/* -------------- */</emphasis>
 
104
 
 
105
  <emphasis role="strong"><link linkend='igraph_vector_destroy'>igraph_vector_destroy</link></emphasis>(&amp;groups);
 
106
  <emphasis role="strong"><link linkend='igraph_matrix_destroy'>igraph_matrix_destroy</link></emphasis>(&amp;V);
 
107
  <emphasis role="strong"><link linkend='igraph_matrix_destroy'>igraph_matrix_destroy</link></emphasis>(&amp;adj);
 
108
  <emphasis role="strong"><link linkend='igraph_destroy'>igraph_destroy</link></emphasis>(&amp;g);
 
109
  
 
110
  <emphasis role="strong">return</emphasis> 0;
 
111
}
 
112
    
 
113
</programlisting>