Program Listing for File Polynomial.h
↰ Return to documentation for file (ADS/numeric/Polynomial.h)
/*--------------------------------------------------------------------------*/
/*--------------------------- File Polynomial.h ----------------------------*/
/*--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------*/
/*----------------------------- DEFINITIONS --------------------------------*/
/*--------------------------------------------------------------------------*/
#ifndef __ADS_Polynomial
#define __ADS_Polynomial
/* self-identification: #endif constant */
/*--------------------------------------------------------------------------*/
/*------------------------------ INCLUDES ----------------------------------*/
/*--------------------------------------------------------------------------*/
#include "ADS/Contract.h"
#include <algorithm>
#include <cstddef>
#include <vector>
/*--------------------------------------------------------------------------*/
/*--------------------------- NAMESPACE ------------------------------------*/
/*--------------------------------------------------------------------------*/
namespace ADS {
template< class T >
std::vector< T > multiplyNaive( const std::vector< T > & p ,
const std::vector< T > & q ,
long * mults = nullptr );
namespace detail {
template< class T >
void addShifted( std::vector< T > & r , const std::vector< T > & a ,
std::size_t s , T sign = T( 1 ) );
template< class T >
std::vector< T > multiplyRec( const std::vector< T > & p ,
const std::vector< T > & q , bool three ,
long * mults );
template< class T >
std::vector< T > multiplySame( std::vector< T > p , std::vector< T > q ,
bool three , long * mults );
} // end( namespace detail )
template< class T >
std::vector< T > multiplyFour( const std::vector< T > & p ,
const std::vector< T > & q ,
long * mults = nullptr );
template< class T >
std::vector< T > multiplyKaratsuba( const std::vector< T > & p ,
const std::vector< T > & q ,
long * mults = nullptr );
/*--------------------------------------------------------------------------*/
} // end( namespace ADS )
/*--------------------------------------------------------------------------*/
/*-------------------------- IMPLEMENTATION --------------------------------*/
/*--------------------------------------------------------------------------*/
#include "ADS/numeric/impl/Polynomial.tpp"
/*--------------------------------------------------------------------------*/
#endif /* Polynomial.h included */
/*--------------------------------------------------------------------------*/
/*------------------------- End File Polynomial.h --------------------------*/
/*--------------------------------------------------------------------------*/