automatic commit
[mlp] / misc.h
1 /*
2  *  mlp-mnist is an implementation of a multi-layer neural network.
3  *
4  *  Copyright (c) 2008 Idiap Research Institute, http://www.idiap.ch/
5  *  Written by Francois Fleuret <francois.fleuret@idiap.ch>
6  *
7  *  This file is part of mlp-mnist.
8  *
9  *  mlp-mnist is free software: you can redistribute it and/or modify
10  *  it under the terms of the GNU General Public License version 3 as
11  *  published by the Free Software Foundation.
12  *
13  *  mlp-mnist is distributed in the hope that it will be useful, but
14  *  WITHOUT ANY WARRANTY; without even the implied warranty of
15  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
16  *  General Public License for more details.
17  *
18  *  You should have received a copy of the GNU General Public License
19  *  along with mlp-mnist.  If not, see <http://www.gnu.org/licenses/>.
20  *
21  */
22
23 #ifndef MISC_H
24 #define MISC_H
25
26 #ifdef DEBUG
27 #define ASSERT(x, s) if(!(x)) { std::cerr << "ASSERT FAILED IN " << __FILE__ << ":" << __LINE__ << " [" << (s) << "]\n"; abort(); }
28 #else
29 #define ASSERT(x, s)
30 #endif
31
32 typedef float scalar_t;
33
34 template<class T> T sq(T x) { return x*x; }
35
36 template<class T> T pos(T x) { if(x < 0) return 0.0; else return x; }
37
38 struct Couple {
39   int index;
40   double value;
41 };
42
43 int compare_couple(const void *a, const void *b);
44
45 int factorial(int k);
46
47 #endif