File: Mongoose_Debug.hpp

package info (click to toggle)
suitesparse 1%3A7.10.1%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: 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 (101 lines) | stat: -rw-r--r-- 2,895 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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
/* ========================================================================== */
/* === Include/Mongoose_Debug.hpp =========================================== */
/* ========================================================================== */

/* -----------------------------------------------------------------------------
 * Mongoose Graph Partitioning Library, Copyright (C) 2017-2023,
 * Scott P. Kolodziej, Nuri S. Yeralan, Timothy A. Davis, William W. Hager
 * Mongoose is licensed under Version 3 of the GNU General Public License.
 * Mongoose is also available under other licenses; contact authors for details.
 * SPDX-License-Identifier: GPL-3.0-only
 * -------------------------------------------------------------------------- */

// #pragma once
#ifndef MONGOOSE_DEBUG_HPP
#define MONGOOSE_DEBUG_HPP

#include "Mongoose_CSparse.hpp"
#include "Mongoose_EdgeCutOptions.hpp"
#include "Mongoose_EdgeCutProblem.hpp"
#include "Mongoose_QPDelta.hpp"

#include <cassert>
#include <cstdio>

// Mongoose Logic Macros
#undef IMPLIES
#define IMPLIES(p, q) (!(p) || ((p) && (q)))
#undef IFF
#define IFF(p, q) (IMPLIES(p, q) && IMPLIES(q, p))

// turn off debugging
#ifndef NDEBUG
#define NDEBUG
#endif

// turn off debug printing
#ifndef NPRINT
#define NPRINT
#endif

// Uncomment this line to enable debugging.  Mongoose will be very slow.
// #undef NDEBUG

// Uncomment this line to enable debug printing.  Mongoose will be very slow
// and produce massive amounts of debug output.
// #undef NPRINT

// ASSERT macro, example usage: ASSERT (x > 0) ;
// where x is required to be positive.  An error occurs if x <= 0.
#undef ASSERT
#ifndef NDEBUG
#define ASSERT(expression) (assert(expression))
#define ASSERT_TEXT(expression, text) (assert(expression &&text))
#else
#define ASSERT(expression)
#define ASSERT_TEXT(expression, text)
#endif

// PR macro, example usage: PR (("stuff here %g %g\n", x, y)) ;
#undef PR
#undef FFLUSH
#ifndef NPRINT
#define PR(s) printf s
#define FFLUSH                                                                 \
    {                                                                          \
        fflush(stdout);                                                        \
        fflush(stderr);                                                        \
    }
#else
#define PR(s)
#define FFLUSH
#endif

// DEBUG macro, example usage: DEBUG (statement) ;
#undef DEBUG
#ifndef NDEBUG
#define DEBUG(s) s
#else
#define DEBUG(s)
#endif

#ifndef NDEBUG
#include <algorithm>
#endif

namespace Mongoose
{

void print(cs *G);

void print(EdgeCutProblem *G);

void QPcheckCom(EdgeCutProblem *G, const EdgeCut_Options *O, QPDelta *QP, bool check_b,
                Int nFreeSet, double b);

void FreeSet_dump(const char *where, Int n, Int *FreeSet_list, Int nFreeSet,
                  Int *FreeSet_status, Int verbose, double *x);

} // end namespace Mongoose

#endif