/usr/include/linbox/integer.h is in liblinbox-dev 1.1.6~rc0-4.1.
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 | /* -*- mode: C++; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
/* Copyright(c)'94-97 by Givaro Team
* Copyright(c)'2000-2002 by LinBox Team
* see the copyright file.
* Created by M. Samama, T. Gautier
*
* Modified Jean-Guillaume.Dumas <Jean-Guillaume.Dumas@imag.fr>
* B. David Saunders <saunders@cis.udel.edu>,
* Bradford Hovinen <hovinen@cis.udel.edu>
* Gilles Villard <Gilles.Villard@ens-lyon.fr>
* JGD Random functions back.
* (2002/02/12 16:05:24)
*
*/
#ifndef __INTEGER_H
#define __INTEGER_H
#include "linbox/linbox-config.h"
#include "gmp++/gmp++.h"
namespace LinBox
{
/** \brief This is a representation of arbitrary integers.
*
* \ingroup linbox
*
* It is a wrapper of GMP integers. Arithmetic operations are via
C++ infix operator forms (eg. a*b) . It is for ``casual'' uses such as characteristics and
cardinalities and when initializing field elements. The integers are also represented as a
LinBox ring for use in integer matrix computation, see pid-integers.h or ntl-ZZ.h.
*/
typedef Integer integer;
typedef signed __LINBOX_INT8 int8;
typedef signed __LINBOX_INT16 int16;
/** \memo This is a representation of 32 bit ints, usually equivalent to `int'.
*
* The use of `int32' ensures you are working with
* 32 bit signed ints, [-2^31..2^31). Similarly, int8, int16, and int64 are defined.
*/
typedef signed __LINBOX_INT32 int32;
typedef signed __LINBOX_INT64 int64;
typedef unsigned __LINBOX_INT8 uint8;
typedef unsigned __LINBOX_INT16 uint16;
/** This is a representation of 32 bit unsigned ints, usually equivalent to `unsigned int'.
*
* The use of `uint32' ensures you are working with
* 32 bit unsigned ints, [0..2^32). Similarly, uint8, uint16, and uint64 are defined.
*/
typedef unsigned __LINBOX_INT32 uint32;
typedef unsigned __LINBOX_INT64 uint64;
// Huh? -bds
template< class T >
T abs( const T& a ) { return( a <= 0 ? a * -1 : a ); }
// SPy to have access to protected members of integer
struct SpyInteger {
struct InHeritsInteger : public integer {
protected:
friend struct SpyInteger;
};
static const InHeritsInteger::Rep* get_rep(const integer& i) {
return static_cast<const InHeritsInteger&>(i).get_rep();
}
static mpz_ptr get_mpz(integer& i) {
return static_cast<InHeritsInteger&>(i).get_mpz();
}
static mpz_ptr get_mpz(const integer& i) {
return const_cast<InHeritsInteger&>(static_cast<const InHeritsInteger&>(i)).get_mpz();
}
};
}
#endif // __INTEGER_H
|