| 
    Lattice Land Core Library
    
   | 
 
#include <fixpoint.hpp>
Public Member Functions | |
| CUDA void | barrier () | 
| template<class F > | |
| CUDA local::B | iterate (int n, const F &f) const | 
| template<class F , class StopFun , class M > | |
| CUDA int | fixpoint (int n, const F &f, const StopFun &must_stop, B< M > &has_changed) | 
| template<class F , class StopFun > | |
| CUDA int | fixpoint (int n, const F &f, const StopFun &must_stop) | 
| template<class F , class M > | |
| CUDA int | fixpoint (int n, const F &f, B< M > &has_changed) | 
| template<class F > | |
| CUDA int | fixpoint (int n, const F &f) | 
A simple form of sequential fixpoint computation based on Kleene fixpoint. At each iteration, the deduction operations \( f_1, \ldots, f_n \) are simply composed by functional composition \( f = f_n \circ \ldots \circ f_1 \). This strategy basically corresponds to the Gauss-Seidel iteration method.
      
  | 
  inline | 
      
  | 
  inline | 
We iterate the function f n times: \( f(0); f(1); \ldots ; f(n); \) 
| `n` | the number of call to f.  | 
| `bool | f(int i)returnstrueif something has changed fori. \returntrueif for somei,f(i)returnedtrue,false` otherwise.  | 
      
  | 
  inline | 
We execute iterate(n, f) until we reach a fixpoint or must_stop() returns true. 
| `n` | the number of call to f.  | 
| `bool | f(int i)returnstrueif something has changed fori. \parambool must_stop()returnstrueif we must stop early the fixpoint computation. \paramhas_changedis set totrueif we were not yet in a fixpoint. \return The number of iterations required to reach a fixpoint or untilmust_stop()returnstrue`.  | 
      
  | 
  inline | 
Same as fixpoint above without has_changed. 
      
  | 
  inline | 
Same as fixpoint above with must_stop always returning false. 
      
  | 
  inline | 
Same as fixpoint above without has_changed and with must_stop always returning false.