File: tools.h

package info (click to toggle)
mpsolve 3.2.3-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 13,100 kB
  • sloc: ansic: 25,748; sh: 4,925; cpp: 3,155; makefile: 914; python: 407; yacc: 158; lex: 85; xml: 41
file content (78 lines) | stat: -rw-r--r-- 2,800 bytes parent folder | download | duplicates (4)
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
/***********************************************************
**                        C Tools                         **
**                      Version 2.0                       **
**                                                        **
**             Written by Giuseppe Fiorentino             **
**                 (fiorent@dm.unipi.it)                  **
***********************************************************/

/**
 * @file
 * @brief Header containing various tools used to interact
 * with the system.
 *
 * It contains convenience function to obtain random values,
 * and define the <code>mps_boolean</code> type.
 */

#include <mps/mps.h>

#ifndef MPS_TOOLS_H_
#define MPS_TOOLS_H_

MPS_BEGIN_DECLS

/* consts */
#define LOG2     0.69314718055994530941
#define LOG10    2.30258509299404568401
#define LOG10_2  0.30102999566398119521
#define LOG2_10  3.32192809488736234787
#define PI       3.14159265358979323846

/* macros */
#define MAX(A, B)  ((A) > (B) ? (A) : (B))
#define MIN(A, B)  ((A) < (B) ? (A) : (B))

/* functions */
void randomize (unsigned int seed);
double drand (void);
double dbl_set_2dl (double d, long int l);
void dbl_get_2dl (double *rd, long int *rl, double d);
double dbl_get_mant (double d);
int dbl_get_exp (double d);

/* vector support functions */
#define mps_boolean_valloc(N)           (mps_boolean*)malloc ((N)*sizeof(mps_boolean))
void mps_boolean_vinit (mps_boolean v[], unsigned long int size);
#define mps_boolean_vclear(V, N)                mps_boolean_vinit (V, N)
#define mps_boolean_vfree(V)            free (V)

/* vector support functions */
#define char_valloc(N)                  (char*)malloc ((N)*sizeof(char))
void char_vinit (char v[], unsigned long int size);
#define char_vclear(V, N)               char_vinit (V, N)
#define char_vfree(V)                   free (V)

#define int_valloc(N)                   (int*)malloc ((N)*sizeof(int))
void int_vinit (int v[], unsigned long int size);
#define int_vclear(V, N)                int_vinit (V, N)
#define int_vfree(V)                    free (V)

#define long_valloc(N)                  (long*)malloc ((N)*sizeof(long))
void long_vinit (long v[], unsigned long int size);
#define long_vclear(V, N)               lng_vinit (V, N)
#define long_vfree(V)                   free (V)

#define float_valloc(N)                 (float*)malloc ((N)*sizeof(float))
void float_vinit (float v[], unsigned long int size);
#define float_vclear(V, N)              float_vinit (V, N)
#define float_vfree(V)                  free (V)

#define double_valloc(N)                (double*)malloc ((N)*sizeof(double))
void double_vinit (double v[], unsigned long int size);
#define double_vclear(V, N)             double_vinit (V, N)
#define double_vfree(V)                 free (V)

MPS_END_DECLS

#endif