Program Listing for File Combinatorics.h
↰ Return to documentation for file (ADS/numeric/Combinatorics.h)
/*--------------------------------------------------------------------------*/
/*-------------------------- File Combinatorics.h --------------------------*/
/*--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------*/
/*----------------------------- DEFINITIONS --------------------------------*/
/*--------------------------------------------------------------------------*/
#ifndef __ADS_Combinatorics
#define __ADS_Combinatorics
/* self-identification: #endif constant */
/*--------------------------------------------------------------------------*/
/*------------------------------ INCLUDES ----------------------------------*/
/*--------------------------------------------------------------------------*/
#include "ADS/Contract.h"
#include <cstddef>
#include <cstdint>
#include <vector>
/*--------------------------------------------------------------------------*/
/*--------------------------- NAMESPACE ------------------------------------*/
/*--------------------------------------------------------------------------*/
namespace ADS {
inline std::uint64_t binomial( int n , int k , long * calls = nullptr );
inline std::vector< std::vector< std::uint64_t > > tartaglia( int n );
inline std::uint64_t fibonacciTable( int n );
inline std::uint64_t fibonacci( int n );
class FibonacciCache {
public:
[[nodiscard]] std::uint64_t value( int n ) const;
[[nodiscard]] int size( void ) const;
private:
mutable std::vector< std::uint64_t > f_F = { 1 , 1 };
};
inline std::uint64_t factorial( int n );
inline std::uint64_t factorialRec( int n );
inline std::uint64_t binomialByFactorials( int n , int k );
/*--------------------------------------------------------------------------*/
} // end( namespace ADS )
/*--------------------------------------------------------------------------*/
/*-------------------------- IMPLEMENTATION --------------------------------*/
/*--------------------------------------------------------------------------*/
#include "ADS/numeric/impl/Combinatorics.tpp"
/*--------------------------------------------------------------------------*/
#endif /* Combinatorics.h included */
/*--------------------------------------------------------------------------*/
/*------------------------ End File Combinatorics.h ------------------------*/
/*--------------------------------------------------------------------------*/