Skip to content

Commit

Permalink
Merge pull request #64 from embray/bugs/long-double-2
Browse files Browse the repository at this point in the history
More miscellaneous fixes for non-long double support
  • Loading branch information
malb committed Apr 13, 2017
2 parents 3e8a2da + 148f5f0 commit 35f344d
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 12 deletions.
4 changes: 2 additions & 2 deletions src/fpylll/fplll/decl.pxd
Original file line number Diff line number Diff line change
Expand Up @@ -228,12 +228,12 @@ ELSE:
FastEvaluator[FP_NR[dpe_t]] *dpe
FastEvaluator[FP_NR[dd_real]] *dd
FastEvaluator[FP_NR[qd_real]] *qd
FastEvaluator[FP_NR[mpfr_t]] *mpfr
FastErrorBoundedEvaluator *mpfr
ELSE:
ctypedef union fast_evaluator_core_t:
FastEvaluator[FP_NR[double]] *double
FastEvaluator[FP_NR[dpe_t]] *dpe
FastEvaluator[FP_NR[mpfr_t]] *mpfr
FastErrorBoundedEvaluator *mpfr

IF HAVE_QD:
ctypedef union enumeration_core_t:
Expand Down
23 changes: 14 additions & 9 deletions src/fpylll/fplll/pruner.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,9 @@ Pruner
from libcpp.vector cimport vector
from math import log, exp

from decl cimport mpz_double, mpz_ld, mpz_dpe, mpz_mpfr, fp_nr_t, mpz_t, dpe_t, mpfr_t
from decl cimport mpz_double, mpz_dpe, mpz_mpfr, fp_nr_t, mpz_t, dpe_t, mpfr_t
from bkz_param cimport Pruning
from fplll cimport FT_DOUBLE, FT_LONG_DOUBLE, FT_DPE, FT_MPFR, FloatType
from fplll cimport FT_DOUBLE, FT_DPE, FT_MPFR, FloatType
from fpylll.fplll.fplll cimport PRUNER_METHOD_GRADIENT, PRUNER_METHOD_NM, PRUNER_METHOD_HYBRID, PRUNER_METHOD_GREEDY
from fplll cimport FP_NR, Z_NR
from fplll cimport MatGSO as MatGSO_c
Expand All @@ -35,6 +35,10 @@ from fplll cimport svp_probability as svp_probability_c
from fpylll.util import adjust_radius_to_gh_bound, precision, get_precision
from fpylll.util cimport check_float_type, check_precision, check_descent_method, check_pruner_metric

IF HAVE_LONG_DOUBLE:
from fplll cimport FT_LONG_DOUBLE
from decl cimport mpz_ld

IF HAVE_QD:
from fpylll.qd.qd cimport dd_real, qd_real
from decl cimport mpz_dd, mpz_qd
Expand Down Expand Up @@ -109,13 +113,14 @@ def prune(double enumeration_radius, double preproc_cost, double target, M,
if descent_method == PRUNER_METHOD_GREEDY:
return enumeration_radius, pruning
return pruning
if ft == FT_LONG_DOUBLE:
sig_on()
prune_c[FP_NR[longdouble]]((<Pruning>pruning)._core, enumeration_radius, preproc_cost, target, vec, descent_method, metric, reset)
sig_off()
if descent_method == PRUNER_METHOD_GREEDY:
return enumeration_radius, pruning
return pruning
IF HAVE_LONG_DOUBLE:
if ft == FT_LONG_DOUBLE:
sig_on()
prune_c[FP_NR[longdouble]]((<Pruning>pruning)._core, enumeration_radius, preproc_cost, target, vec, descent_method, metric, reset)
sig_off()
if descent_method == PRUNER_METHOD_GREEDY:
return enumeration_radius, pruning
return pruning
if ft == FT_DPE:
sig_on()
prune_c[FP_NR[dpe_t]]((<Pruning>pruning)._core, enumeration_radius, preproc_cost, target, vec, descent_method, metric, reset)
Expand Down
5 changes: 4 additions & 1 deletion tests/test_util.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,10 @@ def test_gh():
for n in dimensions:
set_random_seed(n)
A = make_integer_matrix(n)
M = GSO.Mat(A, float_type="ld")
try:
M = GSO.Mat(A, float_type="ld")
except ValueError:
M = GSO.Mat(A, float_type="d")
M.discover_all_rows()
M.update_gso()
radius = M.get_r(0, 0)
Expand Down

0 comments on commit 35f344d

Please sign in to comment.