Program Listing for File MonotoneSearch.h

↰ Return to documentation for file (ADS/search/MonotoneSearch.h)

/*--------------------------------------------------------------------------*/
/*------------------------- File MonotoneSearch.h --------------------------*/
/*--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------*/
/*----------------------------- DEFINITIONS --------------------------------*/
/*--------------------------------------------------------------------------*/

#ifndef __ADS_MonotoneSearch
 #define __ADS_MonotoneSearch
                      /* self-identification: #endif constant */

/*--------------------------------------------------------------------------*/
/*------------------------------ INCLUDES ----------------------------------*/
/*--------------------------------------------------------------------------*/

#include "ADS/Contract.h"
#include "ADS/sort/Sorted.h"

#include <concepts>
#include <cstddef>
#include <limits>
#include <type_traits>

/*--------------------------------------------------------------------------*/
/*--------------------------- NAMESPACE ------------------------------------*/
/*--------------------------------------------------------------------------*/

namespace ADS {

template< std::integral I , class P >
I exponentialSearch( P && p , I lo = I( 0 ) );

template< class G , class P >
std::size_t unboundedSearch( G && get , P && pred );

template< std::unsigned_integral U >
U integerSqrt( U n );

template< std::unsigned_integral U >
bool isPerfectSquare( U n );

/*--------------------------------------------------------------------------*/

}  // end( namespace ADS )

/*--------------------------------------------------------------------------*/
/*-------------------------- IMPLEMENTATION --------------------------------*/
/*--------------------------------------------------------------------------*/

#include "ADS/search/impl/MonotoneSearch.tpp"

/*--------------------------------------------------------------------------*/

#endif  /* MonotoneSearch.h included */

/*--------------------------------------------------------------------------*/
/*----------------------- End File MonotoneSearch.h ------------------------*/
/*--------------------------------------------------------------------------*/