/usr/include/polybori/DegLexOrder.h is in libpolybori-dev 0.5~rc1-2.1build2.
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 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 | // -*- c++ -*-
//*****************************************************************************
/** @file DegLexOrder.h
*
* @author Alexander Dreyer
* @date 2006-05-18
*
* Defining Degree-lexicographical ordering.
*
* @par Copyright:
* (c) 2006 by The PolyBoRi Team
*
* @internal
* @version \$Id: DegLexOrder.h,v 1.9 2008/07/08 21:41:58 alexanderdreyer Exp $
*
* @par History:
* @verbatim
* $Log: DegLexOrder.h,v $
* Revision 1.9 2008/07/08 21:41:58 alexanderdreyer
* Merge: from developer's repository
*
* Revision 1.13 2007/11/06 15:03:35 dreyer
* CHANGE: More generic copyright
*
* Revision 1.12 2007/07/31 07:43:50 dreyer
* ADD: getBaseOrderCode(), lieInSameBlock(...), isSingleton(), isPair()...
*
* Revision 1.11 2007/04/30 15:20:31 dreyer
* CHANGE: Switching from CTermIter to iterators based on CTermStack
*
* Revision 1.10 2007/03/21 08:55:09 dreyer
* ADD: first version of block_dlex running
*
* Revision 1.9 2007/03/19 16:49:39 dreyer
* CHANGE: ordered iterators made more generic
*
* Revision 1.8 2006/10/06 12:52:01 dreyer
* ADD easy_equility_property and used in lex_compare
*
* Revision 1.7 2006/10/05 12:51:31 dreyer
* CHANGE: Made lex-based comparisions more generic.
*
* Revision 1.6 2006/10/04 12:22:32 dreyer
* ADD: getOrderCode()
*
* Revision 1.5 2006/09/13 15:07:04 dreyer
* ADD: lead(sugar) and infrastructure
*
* Revision 1.4 2006/09/08 14:31:39 dreyer
* ADD: COrderedIter and infrastructure for order-dependent iterator
*
* Revision 1.3 2006/09/05 11:10:44 dreyer
* ADD: BoolePolyRing::Compare(...), fixed assertion in groebner
*
* Revision 1.2 2006/09/05 08:48:32 dreyer
* ADD: BoolePolyRing::is(Total)DegreeOrder()
*
* Revision 1.1 2006/09/04 15:58:43 dreyer
* ADD: DegLexOrder and preparations
*
* @endverbatim
**/
//*****************************************************************************
// include basic definitions
#include "pbori_defs.h"
// include base order definitions
#include "COrderBase.h"
#ifndef DegLexOrder_h_
#define DegLexOrder_h_
BEGIN_NAMESPACE_PBORI
/** @class DegLexOrder
* @brief This class defines ordering related functions.
*
*
**/
class DegLexOrder:
public COrderBase {
public:
//-------------------------------------------------------------------------
// types definitions
//-------------------------------------------------------------------------
/// generic access to current type
typedef DegLexOrder self;
/// @name define generic property markers
//@{
typedef valid_tag symmetry_property;
typedef valid_tag degorder_property;
typedef valid_tag totaldegorder_property;
typedef valid_tag descending_property;
typedef dlex_tag order_tag;
//@}
/// Define binary predicate for index comparision
typedef std::less<idx_type> idx_comparer_type;
/// Get order code
enum { order_code = CTypes::dlex, baseorder_code = order_code };
/// Default Constructor
DegLexOrder(): base() {};
/// Copy Constructor
DegLexOrder(const self& rhs): base(rhs) {};
/// Destructor
~DegLexOrder() {};
/// Comparison of indices corresponding to variables
comp_type compare(idx_type, idx_type) const;
/// Comparison of monomials
comp_type compare(const monom_type&, const monom_type&) const;
/// Comparison of exponent vectors
comp_type compare(const exp_type&, const exp_type&) const;
/// Get leading term
monom_type lead(const poly_type&) const;
/// Get leading term (using upper bound)
monom_type lead(const poly_type& poly, size_type) const;
/// Get leading exponent
exp_type leadExp(const poly_type&) const;
/// Get leading exponent (using an upper bound)
exp_type leadExp(const poly_type&, size_type) const;
/// Initialize iterator corresponding to leading term
indirect_iterator leadIteratorBegin(const poly_type&) const;
indirect_iterator leadIteratorEnd() const;
indirect_exp_iterator leadExpIteratorBegin(const poly_type&) const;
indirect_exp_iterator leadExpIteratorEnd() const;
};
END_NAMESPACE_PBORI
#endif // DegLexOrder_h_
|