/usr/include/ap_interval.h is in libapron-dev 0.9.10-9.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 | /* ************************************************************************* */
/* ap_interval.h: intervals */
/* ************************************************************************* */
/* This file is part of the APRON Library, released under LGPL license. Please
read the COPYING file packaged in the distribution */
#ifndef _AP_INTERVAL_H_
#define _AP_INTERVAL_H_
#include <assert.h>
#include <math.h>
#include <stdio.h>
#include "ap_config.h"
#include "ap_scalar.h"
#ifdef __cplusplus
extern "C" {
#endif
typedef struct ap_interval_t {
ap_scalar_t* inf;
ap_scalar_t* sup;
} ap_interval_t;
/* ====================================================================== */
/* Basics */
/* ====================================================================== */
ap_interval_t* ap_interval_alloc(void);
/* Initialization, using DOUBLE as default type for scalars */
void ap_interval_reinit(ap_interval_t* interval, ap_scalar_discr_t ap_scalar_discr);
/* Change the type of scalars */
void ap_interval_free(ap_interval_t* interval);
/* Free an interval */
void ap_interval_fprint(FILE* stream, ap_interval_t* a);
static inline
void ap_interval_print(ap_interval_t* a)
{ ap_interval_fprint(stdout,a); }
/* Printing */
static inline
void ap_interval_swap(ap_interval_t* a, ap_interval_t* b)
{ ap_interval_t t = *a; *a = *b; *b = t; }
/* Exchange */
/* ====================================================================== */
/* Assignments */
/* ====================================================================== */
void ap_interval_set(ap_interval_t* interval, ap_interval_t* interval2);
/* Assignment */
void ap_interval_set_scalar(ap_interval_t* interval, ap_scalar_t* inf, ap_scalar_t* sup);
void ap_interval_set_mpq(ap_interval_t* interval, mpq_t inf, mpq_t sup);
void ap_interval_set_int(ap_interval_t* interval, long int inf, long int sup);
void ap_interval_set_frac(ap_interval_t* interval, long int numinf, unsigned long int deninf, long int numsup, unsigned long int densup);
void ap_interval_set_double(ap_interval_t* interval, double inf, double sup);
void ap_interval_set_mpfr(ap_interval_t* interval, mpfr_t inf, mpfr_t sup);
/* Assignment from resp.
- two scalars
- two rationals of type MPQ
- two integers, giving [inf,dup]
- two rationals, giving [numinf/deninf,numsup/densup]
- two double values
- two MPFR floating-point numbers
*/
void ap_interval_set_top(ap_interval_t* interval);
/* Assignment to universe interval [-oo,oo],
does not change the type of scalars */
void ap_interval_set_bottom(ap_interval_t* interval);
/* Assignment to empty interval [1,-1],
does not change the type of scalars */
/* ====================================================================== */
/* Combined allocation and assignments */
/* ====================================================================== */
ap_interval_t* ap_interval_alloc_set(ap_interval_t* interval);
/* Assignment */
/* ====================================================================== */
/* Tests */
/* ====================================================================== */
bool ap_interval_is_top(ap_interval_t* interval);
/* Is it the universe interval ? */
bool ap_interval_is_bottom(ap_interval_t* interval);
/* Is it an empty interval ? */
bool ap_interval_is_leq(ap_interval_t* i1, ap_interval_t* i2);
/* Inclusion test */
int ap_interval_cmp(ap_interval_t* i1, ap_interval_t* i2);
/* Comparison:
0: equality
-1: i1 included in i2
+1: i2 included in i1
-2: i1.inf less than i2.inf
+2: i1.inf greater than i2.inf
*/
bool ap_interval_equal(ap_interval_t* i1, ap_interval_t* i2);
bool ap_interval_equal_int(ap_interval_t* i, int b);
/* Equality */
/* ====================================================================== */
/* Other operations */
/* ====================================================================== */
void ap_interval_neg(ap_interval_t* a, ap_interval_t* b);
/* Negation */
long ap_interval_hash(ap_interval_t* itv);
/* Hash code */
/* ====================================================================== */
/* Array of intervals */
/* ====================================================================== */
ap_interval_t** ap_interval_array_alloc(size_t size);
/* Allocating an array of intervals, initialized with [0,0] values */
void ap_interval_array_free(ap_interval_t** array, size_t size);
/* Clearing and freeing an array of intervals */
#ifdef __cplusplus
}
#endif
#endif
|