18#ifndef FPLLL_WRAPPER_H
19#define FPLLL_WRAPPER_H
59 double theta,
double c,
int flags);
75#ifdef FPLLL_WITH_ZLONG
87 bool little(
int kappa,
int precision);
89 template <
class Z,
class F>
91 double delta,
double eta);
93 template <
class F>
int fast_lll(
double delta,
double eta);
95 template <
class Z,
class F>
99 template <
class Z,
class F>
103 int heuristic_loop(
int precision);
104 int proved_loop(
int precision);
107 void set_use_long(
bool value);
108 int increase_prec(
int precision);
121 template <
class F>
bool call_hlll(
LLLMethod method,
int precision);
124 template <
class F>
bool fast_hlll();
127 template <
class F>
bool proved_hlll(
int precision);
130 int hlll_proved_loop(
int precision);
136#define FPLLL_DECLARE_LLL(T) \
137 int lll_reduction(ZZ_mat<T> &b, double delta = LLL_DEF_DELTA, double eta = LLL_DEF_ETA, \
138 LLLMethod method = LM_WRAPPER, FloatType floatType = FT_DEFAULT, \
139 int precision = 0, int flags = LLL_DEFAULT); \
141 int lll_reduction(ZZ_mat<T> &b, ZZ_mat<T> &u, double delta = LLL_DEF_DELTA, \
142 double eta = LLL_DEF_ETA, LLLMethod method = LM_WRAPPER, \
143 FloatType floatType = FT_DEFAULT, int precision = 0, int flags = LLL_DEFAULT); \
145 int lll_reduction(ZZ_mat<T> &b, ZZ_mat<T> &u, ZZ_mat<T> &u_inv, double delta = LLL_DEF_DELTA, \
146 double eta = LLL_DEF_ETA, LLLMethod method = LM_WRAPPER, \
147 FloatType floatType = FT_DEFAULT, int precision = 0, int flags = LLL_DEFAULT);
151#ifdef FPLLL_WITH_ZLONG
155#ifdef FPLLL_WITH_ZDOUBLE
165#define FPLLL_DECLARE_HLLL(T) \
166 int hlll_reduction(ZZ_mat<T> &b, double delta = LLL_DEF_DELTA, double eta = LLL_DEF_ETA, \
167 double theta = HLLL_DEF_THETA, double c = HLLL_DEF_C, \
168 LLLMethod method = LM_WRAPPER, FloatType float_type = FT_DEFAULT, \
169 int precision = 0, int flags = LLL_DEFAULT, bool nolll = false); \
170 int hlll_reduction(ZZ_mat<T> &b, ZZ_mat<T> &u, double delta = LLL_DEF_DELTA, \
171 double eta = LLL_DEF_ETA, double theta = HLLL_DEF_THETA, \
172 double c = HLLL_DEF_C, LLLMethod method = LM_WRAPPER, \
173 FloatType float_type = FT_DEFAULT, int precision = 0, \
174 int flags = LLL_DEFAULT, bool nolll = false); \
175 int hlll_reduction(ZZ_mat<T> &b, ZZ_mat<T> &u, ZZ_mat<T> &u_inv, double delta = LLL_DEF_DELTA, \
176 double eta = LLL_DEF_ETA, double theta = HLLL_DEF_THETA, \
177 double c = HLLL_DEF_C, LLLMethod method = LM_WRAPPER, \
178 FloatType float_type = FT_DEFAULT, int precision = 0, \
179 int flags = LLL_DEFAULT, bool nolll = false);
183#ifdef FPLLL_WITH_ZLONG
187#ifdef FPLLL_WITH_ZDOUBLE
Wrapper. This class provides an externally callable API for LLL reducing some basis b....
Definition: wrapper.h:51
bool hlll()
Definition: wrapper.cpp:478
bool lll()
Definition: wrapper.cpp:281
int status
Definition: wrapper.h:68
Wrapper(ZZ_mat< mpz_t > &b, ZZ_mat< mpz_t > &u, ZZ_mat< mpz_t > &u_inv, double delta, double eta, int flags)
Definition: wrapper.cpp:45
LLLMethod
Definition: defs.h:187
#define FPLLL_END_NAMESPACE
Definition: defs.h:117
#define FPLLL_BEGIN_NAMESPACE
Definition: defs.h:114
#define FPLLL_DECLARE_HLLL(T)
Definition: wrapper.h:165
#define FPLLL_DECLARE_LLL(T)
Definition: wrapper.h:136