Changeset 7589:15d46848c593
- Timestamp:
- 11/13/07 13:52:22 (6 years ago)
- Branch:
- default
- Files:
-
- 5 edited
-
c_lib/include/ccobject.h (modified) (1 diff)
-
c_lib/include/pb_wrap.h (modified) (1 diff)
-
sage/libs/polybori/decl.pxi (modified) (6 diffs)
-
sage/rings/polynomial/polybori.pxd (modified) (2 diffs)
-
sage/rings/polynomial/polybori.pyx (modified) (12 diffs)
Legend:
- Unmodified
- Added
- Removed
-
c_lib/include/ccobject.h
r7584 r7589 51 51 } 52 52 53 /* Construct with three parameters */ 54 template <class T, class P, class R, class Q> 55 T* Construct_ppp(void* mem, const P &d, const R &e, const Q &f){ 56 return new(mem) T(d, e, f); 57 } 58 53 59 /* Destruct */ 54 60 template <class T> -
c_lib/include/pb_wrap.h
r7588 r7589 3 3 #include "nf.h" 4 4 #include "ccobject.h" 5 6 // M4RI 7 #define PACKED 1 8 #include "M4RI/packedmatrix.h" 9 #include "M4RI/grayflex.h" 10 5 11 #include <sstream> 6 12 #include <vector> -
sage/libs/polybori/decl.pxi
r7588 r7589 38 38 39 39 ctypedef struct PBRing "BoolePolyRing": 40 bint (* isDegreeOrder)() 40 41 int (* nVariables)() 41 42 PBDD (* variable)(int n) … … 48 49 int (* next "operator++")() 49 50 int (* hash)() 51 52 ctypedef struct PBVar "BooleVariable": 53 int (* index)() 54 bint (* is_equal "operator==")(PBVar right) 55 56 PBVar* PBVar_construct_int "Construct_p<BooleVariable, int>" \ 57 (void *mem, int ind) 58 59 PBVar* PBVar_construct_pbvar "Construct_p<BooleVariable, BooleVariable>" \ 60 (void *mem, PBVar v) 50 61 51 62 ctypedef struct PBMonom "BooleMonomial": … … 63 74 PBMonom* PBMonom_construct_pbmonom \ 64 75 "Construct_p<BooleMonomial, BooleMonomial>" (void *mem, PBMonom m) 76 PBMonom* PBMonom_construct_pbvar \ 77 "Construct_p<BooleMonomial, BooleVariable>" (void *mem, PBVar m) 65 78 PBMonom* PBMonom_construct_dd \ 66 79 "Construct_p<BoolePolynomial, BooleMonomial::dd_type>" (void *mem, PBDD m) … … 195 208 PBPolyVector (* minimalize)() 196 209 PBPolyVector (* minimalizeAndTailReduce)() 210 PBPolyVector (* faugereStepDense)(PBPolyVector v) 197 211 198 212 int (* pairs_top_sugar)(GBStrategy strat) … … 211 225 void GBStrategy_destruct "Destruct<GroebnerStrategy>"(GBStrategy *mem) 212 226 227 PBRing get_current_ring "BoolePolyRing::ring"() 213 228 214 229 PBSet pb_recursively_insert "recursively_insert"(PBNavigator p, … … 225 240 (PBPolyVector inp, GBStrategy strat, int average_steps, double delay_f) 226 241 242 void pb_set_variable_name "BoolePolyRing::setRingVariableName" \ 243 (int idx, char* varname) 244 245 #M4RI initialization 246 void buildAllCodes() 247 void setupPackingMasks() -
sage/rings/polynomial/polybori.pxd
r7588 r7589 25 25 cdef class BooleanMonomial(MonoidElement): 26 26 cdef PBMonom _M 27 cdef BooleanPolynomial _add_c_impl(BooleanMonomial left, BooleanMonomial right) 27 28 28 29 cdef class BooleanMonomialIterator: … … 51 52 cdef PBPolyVectorIter _iter 52 53 cdef PBPolyVector _obj 54 55 cdef class VariableBlock_base: 56 cdef int size 57 cdef int start_index 58 cdef int offset 59 cdef public object __name__ 60 61 cdef class BooleVariable: 62 cdef PBVar _V -
sage/rings/polynomial/polybori.pyx
r7588 r7589 207 207 return self._M.deg() 208 208 209 def __len__(BooleanMonomial self): 210 return self._M.deg() 211 209 212 def __iter__(self): 210 213 return new_BMI_from_PBMonomIter(self._M, self._M.begin()) … … 216 219 return m 217 220 221 cdef BooleanPolynomial _add_c_impl(BooleanMonomial left, BooleanMonomial right): 222 cdef BooleanPolynomial res 223 res = new_BP_from_PBMonom( (<BooleanMonomial>left)._parent._ring, \ 224 (<BooleanMonomial>left)._M) 225 res._P.iadd_PBMonom((<BooleanMonomial>right)._M) 226 return res 227 218 228 def __add__(self, right): 219 cdef BooleanPolynomial res 220 if PY_TYPE_CHECK(right, BooleanMonomial): 221 res = new_BP_from_PBMonom( (<BooleanMonomial>self)._parent._ring, \ 222 (<BooleanMonomial>self)._M) 223 res._P.iadd_PBMonom((<BooleanMonomial>right)._M) 224 return res 225 else: 226 #FIXME 227 raise NotImplementedError, "Adding %s and %s is not supported." % \ 228 (type(self), type(right)) 229 if PY_TYPE_CHECK(self, BooleanMonomial) and \ 230 PY_TYPE_CHECK(right, BooleanMonomial) and \ 231 (<BooleanMonomial>self)._parent._ring is \ 232 (<BooleanMonomial>right)._parent._ring: 233 return (<BooleanMonomial>self)._add_c_impl(right) 234 235 if PY_TYPE_CHECK(self, BooleanMonomial) and right == 1: 236 return (<BooleanMonomial>self)._add_c_impl(\ 237 (<BooleanMonomial>self)._parent()) 238 239 if self == 1 and PY_TYPE_CHECK(right, BooleanMonomial): 240 return (<BooleanMonomial>right)._add_c_impl(\ 241 (<BooleanMonomial>right)._parent()) 229 242 230 243 … … 241 254 cdef BooleanMonomial m = new_BM(parent) 242 255 PBMonom_construct_pbmonom(&m._M,juice) 256 return m 257 258 cdef inline BooleanMonomial new_BM_from_PBVar(parent, PBVar juice): 259 cdef BooleanMonomial m = new_BM(parent) 260 PBMonom_construct_pbvar(&m._M,juice) 243 261 return m 244 262 … … 537 555 PBSet_destruct(&self._S) 538 556 557 def __call__(self): 558 return self 559 539 560 def empty(self): 540 561 return self._S.emptiness() … … 567 588 s = <BooleSet>PY_NEW(BooleSet) 568 589 s._S = juice 590 return s 591 592 cdef inline BooleSet new_BS_from_PBDD(PBDD juice): 593 """ 594 Construct a new BooleSet 595 """ 596 cdef BooleSet s 597 s = <BooleSet>PY_NEW(BooleSet) 598 PBSet_construct_dd(&s._S, juice) 569 599 return s 570 600 … … 707 737 return self._S.containsOne() 708 738 739 def faugereStepDense(self, BooleanPolynomialVector v): 740 return new_BPV_from_PBPolyVector(self._parent, 741 self._S.faugereStepDense(v._vec)) 742 709 743 def minimalize(self): 710 cdef PBPolyVector v = self._S.minimalize() 711 return new_BPVI_from_PBPolyVectorIter(self._parent, v, v.begin()) 744 return new_BPV_from_PBPolyVector(self._parent, self._S.minimalize()) 712 745 713 746 def minimalizeAndTailReduce(self): 714 cdef PBPolyVector v = self._S.minimalizeAndTailReduce()715 return new_BPVI_from_PBPolyVectorIter(self._parent, v, v.begin())747 return new_BPV_from_PBPolyVector(self._parent, 748 self._S.minimalizeAndTailReduce()) 716 749 717 750 def npairs(self): … … 772 805 if name is 'optRedTailInLastBlock': 773 806 return self._S.optRedTailInLastBlock, 774 if name is 'red uceByTailReduced':807 if name is 'redByReduced': 775 808 return self._S.reduceByTailReduced 776 809 if name is 'monomials': … … 822 855 elif name is 'optRedTailInLastBlock': 823 856 self._S.optRedTailInLastBlock = val 824 elif name is 'red uceByTailReduced':857 elif name is 'redByReduced': 825 858 self._S.reduceByTailReduced = val 826 859 else: … … 835 868 n._N = juice 836 869 return n 870 871 cdef class BooleVariable: 872 def index(self): 873 return self._V.index() 874 875 def is_equal(self, BooleVariable other): 876 return self._V.is_equal(other._V) 877 878 cdef inline BooleVariable new_BV_from_PBVar(PBVar juice): 879 """ 880 Construct a new BooleVariable 881 """ 882 cdef BooleVariable n 883 n = <BooleVariable>PY_NEW(BooleVariable) 884 n._V = juice 885 return n 886 887 cdef inline BooleVariable new_BV_from_int(int juice): 888 """ 889 Construct a new BooleVariable 890 """ 891 cdef BooleVariable n 892 n = <BooleVariable>PY_NEW(BooleVariable) 893 PBVar_construct_int(&n._V, juice) 894 return n 895 896 cdef class VariableBlock_base: 897 def __init__(self, size, start_index, offset): 898 self.size = size 899 self.start_index = start_index 900 self.offset = offset 901 902 cdef class VariableBlockTrue(VariableBlock_base): 903 def __init__(self, size, start_index, offset): 904 VariableBlock_base.__init__(self, size, start_index, offset) 905 906 def __call__(self, int i): 907 cdef PBVar v 908 PBVar_construct_int(&v, self.offset+self.start_index+self.size-1-i) 909 return new_BM_from_PBVar(get_cring()._monom_monoid, v) 910 911 cdef class VariableBlockFalse(VariableBlock_base): 912 def __init__(self, size, start_index, offset): 913 VariableBlock_base.__init__(self, size, start_index, offset) 914 915 def __call__(self, int i): 916 cdef PBVar v 917 PBVar_construct_int(&v, i-self.start_index+self.offset) 918 return new_BM_from_PBVar(get_cring()._monom_monoid, v) 919 920 def VariableBlock(size, start_index, offset, reverse): 921 if reverse: 922 return VariableBlockFalse(size, start_index, offset) 923 else: 924 return VariableBlockTrue(size, start_index, offset) 925 926 def init_M4RI(): 927 buildAllCodes() 928 setupPackingMasks() 837 929 838 930 def recursively_insert(CCuddNavigator n, int ind, CCuddNavigator m): … … 862 954 863 955 def change_ordering(order): 956 global cur_ring 864 957 pb_change_ordering(order) 958 cur_ring._R = get_current_ring() 865 959 866 960 def parallel_reduce(BooleanPolynomialVector inp, GroebnerStrategy strat, \ … … 869 963 pb_parallel_reduce(inp._vec, strat._S, average_steps, delay_f)) 870 964 965 def have_degree_order(): 966 global cur_ring 967 return cur_ring._R.isDegreeOrder() 968 969 def set_variable_name( i, s): 970 pb_set_variable_name(i, s) 971 871 972 cdef BooleanPolynomialRing cur_ring 872 973 ring_callbacks = [] … … 885 986 global ring_callbacks 886 987 ring_callbacks.append(func) 988 989 init_M4RI()
Note: See TracChangeset
for help on using the changeset viewer.
