Ignore:
Timestamp:
Aug 2, 2012, 9:58:56 PM (11 years ago)
Author:
Oleksandr Motsak <motsak@…>
Branches:
(u'jengelh-datetime', 'ceac47cbc86fe4a15902392bdbb9bd2ae0ea02c6')(u'spielwiese', 'c987db42cd2ec943b97ac5746c99892ceddf909c')
Children:
e98c64edd3cf15f4e5d15991052a7bbcbb1184a5
Parents:
495328d14a955b215ad10b598e995ab522243881
git-author:
Oleksandr Motsak <motsak@mathematik.uni-kl.de>2012-08-02 21:58:56+02:00
git-committer:
Oleksandr Motsak <motsak@mathematik.uni-kl.de>2014-05-07 04:41:46+02:00
Message:
Totally bitmasked: CReducerFinder: FindReducer uses syz_checker.IsDivisible()
File:
1 edited

Legend:

Unmodified
Added
Removed
  • dyn_modules/syzextra/syzextra.h

    r495328 r5cecde  
    9595{
    9696  public:
    97     CLCM(const SchreyerSyzygyComputation& data);
     97    CLCM(const ideal& L, const SchreyerSyzygyComputationFlags& flags);
    9898
    9999    bool Check(const poly m) const;
    100100   
    101101  private:
    102     const SchreyerSyzygyComputation& m_data;
    103 
    104102    bool m_compute;
     103
     104    const unsigned int m_N; ///< number of ring variables
    105105};
    106106
     
    130130   
    131131  public:
    132 
    133132    /// goes over all leading terms
    134     CReducerFinder(const SchreyerSyzygyComputation& data);
     133    CReducerFinder(const ideal L, const SchreyerSyzygyComputationFlags& flags);
     134
     135    void Initialize(const ideal L);
    135136
    136137    ~CReducerFinder();
    137138
    138139    // TODO: save shortcut (syz: |-.->) LM(LM(m) * "t") -> syz?   
    139     poly FindReducer(const poly product, const poly syzterm) const;
     140    poly FindReducer(const poly product, const poly syzterm, const CReducerFinder& checker) const;
     141
     142    bool IsDivisible(const poly q) const;
     143
     144    bool IsNonempty() const { return (m_hash.size() > 0); }
    140145
    141146  private:
    142     const SchreyerSyzygyComputation& m_data;
     147    ideal m_L; ///< only for debug
    143148
    144149    CReducersHash m_hash; // can also be replaced with a vector indexed by components
     
    169174        m_idLeads(idLeads), m_idTails(idTails),
    170175        m_syzLeads(NULL), m_syzTails(NULL), m_LS(NULL),
    171         m_lcm(*this), m_div(*this)
     176        m_lcm(m_idLeads, setting), m_div(m_idLeads, setting), m_checker(NULL, setting)
    172177    {
    173178    }
    174 
    175179
    176180    /// Construct a global object for given input data (separated into leads & tails)
     
    178182        SchreyerSyzygyComputationFlags(setting),
    179183        m_idLeads(idLeads), m_idTails(idTails),
    180         m_syzLeads(NULL), m_syzTails(NULL), m_LS(syzLeads),
    181         m_lcm(*this), m_div(*this)
     184        m_syzLeads(syzLeads), m_syzTails(NULL), m_LS(syzLeads),
     185        m_lcm(m_idLeads, setting), m_div(m_idLeads, setting), m_checker(NULL, setting)
    182186    {
     187      if( __TAILREDSYZ__ && syzLeads != NULL )
     188        m_checker.Initialize(syzLeads);
    183189    }
    184190
     
    214220    /// just for testing via the wrapper below
    215221    inline poly _FindReducer(const poly product, const poly syzterm) const
    216         { return m_div.FindReducer(product, syzterm); } 
     222        { return m_div.FindReducer(product, syzterm, m_checker); } 
    217223   
    218224  protected:
     
    240246    ideal m_syzTails;
    241247
    242     /*mutable?*/ ideal m_LS; ///< leading syzygy terms used for reducing syzygy tails
    243 
    244248    /// Bitmask for variables occuring in leading terms
    245249    const CLCM m_lcm;
     
    247251    /// Divisor finder
    248252    const CReducerFinder m_div;
     253
     254    /// for checking tail-terms and makeing them irreducible (wrt m_LS!)
     255    CReducerFinder m_checker;
     256
     257    /*mutable?*/ ideal m_LS; ///< leading syzygy terms used for reducing syzygy tails
    249258};
    250259
Note: See TracChangeset for help on using the changeset viewer.