GiNaC  1.8.0
remember.h
Go to the documentation of this file.
1 
6 /*
7  * GiNaC Copyright (C) 1999-2020 Johannes Gutenberg University Mainz, Germany
8  *
9  * This program is free software; you can redistribute it and/or modify
10  * it under the terms of the GNU General Public License as published by
11  * the Free Software Foundation; either version 2 of the License, or
12  * (at your option) any later version.
13  *
14  * This program is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17  * GNU General Public License for more details.
18  *
19  * You should have received a copy of the GNU General Public License
20  * along with this program; if not, write to the Free Software
21  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
22  */
23 
24 #ifndef GINAC_REMEMBER_H
25 #define GINAC_REMEMBER_H
26 
27 #include <iosfwd>
28 #include <list>
29 #include <vector>
30 
31 namespace GiNaC {
32 
33 class function;
34 class ex;
35 
41 public:
42  remember_table_entry(function const & f, ex const & r);
43  bool is_equal(function const & f) const;
44  ex get_result() const { return result; }
45  unsigned long get_last_access() const { return last_access; }
46  unsigned long get_successful_hits() const { return successful_hits; };
47 
48 protected:
49  unsigned hashvalue;
52  mutable unsigned long last_access;
53  mutable unsigned successful_hits;
54  static unsigned long access_counter;
55 };
56 
59 class remember_table_list : public std::list<remember_table_entry> {
60 public:
61  remember_table_list(unsigned as, unsigned strat);
62  void add_entry(function const & f, ex const & result);
63  bool lookup_entry(function const & f, ex & result) const;
64 protected:
65  unsigned max_assoc_size;
67 };
68 
83 class remember_table : public std::vector<remember_table_list> {
84 public:
86  remember_table(unsigned s, unsigned as, unsigned strat);
87  bool lookup_entry(function const & f, ex & result) const;
88  void add_entry(function const & f, ex const & result);
89  void clear_all_entries();
90  void show_statistics(std::ostream & os, unsigned level) const;
91  static std::vector<remember_table> & remember_tables();
92 protected:
93  void init_table();
94  unsigned table_size;
95  unsigned max_assoc_size;
97 };
98 
99 } // namespace GiNaC
100 
101 #endif // ndef GINAC_REMEMBER_H
unsigned long get_successful_hits() const
Definition: remember.h:46
void show_statistics(std::ostream &os, unsigned level) const
Definition: add.cpp:38
remember_table_entry(function const &f, ex const &r)
Definition: remember.cpp:36
exvector seq
Definition: remember.h:50
unsigned long get_last_access() const
Definition: remember.h:45
size_t r
Definition: factor.cpp:770
unsigned hashvalue
Definition: remember.h:46
unsigned long last_access
Definition: remember.h:52
bool lookup_entry(function const &f, ex &result) const
Definition: remember.cpp:157
unsigned table_size
Definition: remember.h:94
void add_entry(function const &f, ex const &result)
Definition: remember.cpp:68
std::vector< ex > exvector
Definition: basic.h:46
A list of entries in the remember table having some least significant bits of the hashvalue in common...
Definition: remember.h:59
A single entry in the remember table of a function.
Definition: remember.h:40
static unsigned long access_counter
Definition: remember.h:54
void add_entry(function const &f, ex const &result)
Definition: remember.cpp:164
static std::vector< remember_table > & remember_tables()
Definition: remember.cpp:184
Lightweight wrapper for GiNaC&#39;s symbolic objects.
Definition: ex.h:72
remember_table_list(unsigned as, unsigned strat)
Definition: remember.cpp:61
ex get_result() const
Definition: remember.h:44
unsigned successful_hits
Definition: remember.h:53
bool lookup_entry(function const &f, ex &result) const
Definition: remember.cpp:122
ex result
Definition: remember.h:51
The remember table is organized like an n-fold associative cache in a microprocessor.
Definition: remember.h:83
unsigned remember_strategy
Definition: remember.h:96
bool is_equal(function const &f) const
Definition: remember.cpp:43
unsigned max_assoc_size
Definition: remember.h:95

This page is part of the GiNaC developer's reference. It was generated automatically by doxygen. For an introduction, see the tutorial.