#pragma once
#include "mps.hpp"
#include "type.hpp"

#include <functional>

/**
 * @brief Type for a function to after one algorithm iteration.
 * @details
 *  The return value states wether the results have converged, thus
 *  if the function returns `true`, the simulation will stop.
 */
template<typename T>
using postUpdateFunction_t = std::function<bool (const MPS<T>&, unsigned)>;

/**
 * @brief Default post update function that does nothing
 */
template<typename T>
bool postUpdateNoop(const MPS<T>&, unsigned) { return false; };
