Skip to content

Commit

Permalink
Merge pull request #102 from fplll/matgsointerface
Browse files Browse the repository at this point in the history
MatGSOInterface
  • Loading branch information
malb committed Feb 7, 2018
2 parents f45ea40 + d8a51e6 commit 076296b
Show file tree
Hide file tree
Showing 14 changed files with 1,348 additions and 951 deletions.
1 change: 1 addition & 0 deletions src/fpylll/algorithms/bkz.py
Original file line number Diff line number Diff line change
Expand Up @@ -281,4 +281,5 @@ def svp_reduction(self, kappa, block_size, params, tracer=dummy_tracer):
clean_post = self.svp_postprocessing(kappa, block_size, solution, tracer)
clean &= clean_post

self.lll_obj.size_reduction(0, kappa+1)
return clean
6 changes: 3 additions & 3 deletions src/fpylll/fplll/bkz.pxd
Original file line number Diff line number Diff line change
@@ -1,21 +1,21 @@
# -*- coding: utf-8 -*-

from .decl cimport bkz_auto_abort_core_t, fplll_gso_type_t
from .decl cimport bkz_auto_abort_core_t, fplll_mat_gso_data_type_t
from .decl cimport bkz_reduction_core_t
from .gso cimport MatGSO
from .bkz_param cimport BKZParam
from .lll cimport LLLReduction

cdef class BKZAutoAbort:
cdef fplll_gso_type_t _type
cdef fplll_mat_gso_data_type_t _type
cdef bkz_auto_abort_core_t _core

cdef MatGSO M


cdef class BKZReduction:

cdef fplll_gso_type_t _type
cdef fplll_mat_gso_data_type_t _type
cdef bkz_reduction_core_t _core

cdef readonly MatGSO M
Expand Down
510 changes: 258 additions & 252 deletions src/fpylll/fplll/bkz.pyx

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion src/fpylll/fplll/bkz_param.pxd
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-

from libcpp.vector cimport vector
from .decl cimport bkz_auto_abort_core_t, fplll_gso_type_t
from .decl cimport bkz_auto_abort_core_t, fplll_mat_gso_data_type_t
from .gso cimport MatGSO
from .fplll cimport BKZParam as BKZParam_c
from .fplll cimport PruningParams as PruningParams_c
Expand Down
122 changes: 63 additions & 59 deletions src/fpylll/fplll/decl.pxd
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ IF HAVE_QD:

from .fplll cimport dpe_t
from .fplll cimport Z_NR, FP_NR
from .fplll cimport ZZ_mat, MatGSO, LLLReduction, BKZAutoAbort, BKZReduction, Enumeration
from .fplll cimport ZZ_mat, MatGSOInterface, LLLReduction, BKZAutoAbort, BKZReduction, Enumeration
from .fplll cimport GaussSieve
from .fplll cimport FastEvaluator, FastErrorBoundedEvaluator, Pruner

Expand All @@ -30,31 +30,35 @@ IF HAVE_QD:
ctypedef dd_real dd_t
ctypedef qd_real qd_t

ctypedef enum fplll_mat_gso_alg_type_t:
mat_gso_gso_t = 0
mat_gso_gram_t = 1

IF HAVE_QD:
ctypedef enum fplll_gso_type_t:
gso_mpz_d = 1
gso_mpz_ld = 2
gso_mpz_dpe = 4
gso_mpz_dd = 8
gso_mpz_qd = 16
gso_mpz_mpfr = 32
gso_long_d = 64
gso_long_ld = 128
gso_long_dpe = 256
gso_long_dd = 512
gso_long_qd = 1024
gso_long_mpfr = 2048
ctypedef enum fplll_mat_gso_data_type_t:
mat_gso_mpz_d = 1
mat_gso_mpz_ld = 2
mat_gso_mpz_dpe = 4
mat_gso_mpz_dd = 8
mat_gso_mpz_qd = 16
mat_gso_mpz_mpfr = 32
mat_gso_long_d = 64
mat_gso_long_ld = 128
mat_gso_long_dpe = 256
mat_gso_long_dd = 512
mat_gso_long_qd = 1024
mat_gso_long_mpfr = 2048

ELSE:
ctypedef enum fplll_gso_type_t:
gso_mpz_d = 1
gso_mpz_ld = 2
gso_mpz_dpe = 4
gso_mpz_mpfr = 32
gso_long_d = 64
gso_long_ld = 128
gso_long_dpe = 256
gso_long_mpfr = 2048
ctypedef enum fplll_mat_gso_data_type_t:
mat_gso_mpz_d = 1
mat_gso_mpz_ld = 2
mat_gso_mpz_dpe = 4
mat_gso_mpz_mpfr = 32
mat_gso_long_d = 64
mat_gso_long_ld = 128
mat_gso_long_dpe = 256
mat_gso_long_mpfr = 2048

IF HAVE_QD:
ctypedef enum fplll_nr_type_t:
Expand Down Expand Up @@ -102,28 +106,28 @@ IF HAVE_LONG_DOUBLE:

IF HAVE_QD:
ctypedef union mat_gso_core_t:
MatGSO[Z_NR[mpz_t], FP_NR[d_t]] *mpz_d
MatGSO[Z_NR[mpz_t], FP_NR[ld_t]] *mpz_ld
MatGSO[Z_NR[mpz_t], FP_NR[dpe_t]] *mpz_dpe
MatGSO[Z_NR[mpz_t], FP_NR[dd_t]] *mpz_dd
MatGSO[Z_NR[mpz_t], FP_NR[qd_t]] *mpz_qd
MatGSO[Z_NR[mpz_t], FP_NR[mpfr_t]] *mpz_mpfr
MatGSO[Z_NR[long], FP_NR[d_t]] *long_d
MatGSO[Z_NR[long], FP_NR[ld_t]] *long_ld
MatGSO[Z_NR[long], FP_NR[dpe_t]] *long_dpe
MatGSO[Z_NR[long], FP_NR[dd_t]] *long_dd
MatGSO[Z_NR[long], FP_NR[qd_t]] *long_qd
MatGSO[Z_NR[long], FP_NR[mpfr_t]] *long_mpfr
MatGSOInterface[Z_NR[mpz_t], FP_NR[d_t]] *mpz_d
MatGSOInterface[Z_NR[mpz_t], FP_NR[ld_t]] *mpz_ld
MatGSOInterface[Z_NR[mpz_t], FP_NR[dpe_t]] *mpz_dpe
MatGSOInterface[Z_NR[mpz_t], FP_NR[dd_t]] *mpz_dd
MatGSOInterface[Z_NR[mpz_t], FP_NR[qd_t]] *mpz_qd
MatGSOInterface[Z_NR[mpz_t], FP_NR[mpfr_t]] *mpz_mpfr
MatGSOInterface[Z_NR[long], FP_NR[d_t]] *long_d
MatGSOInterface[Z_NR[long], FP_NR[ld_t]] *long_ld
MatGSOInterface[Z_NR[long], FP_NR[dpe_t]] *long_dpe
MatGSOInterface[Z_NR[long], FP_NR[dd_t]] *long_dd
MatGSOInterface[Z_NR[long], FP_NR[qd_t]] *long_qd
MatGSOInterface[Z_NR[long], FP_NR[mpfr_t]] *long_mpfr
ELSE:
ctypedef union mat_gso_core_t:
MatGSO[Z_NR[mpz_t], FP_NR[d_t]] *mpz_d
MatGSO[Z_NR[mpz_t], FP_NR[ld_t]] *mpz_ld
MatGSO[Z_NR[mpz_t], FP_NR[dpe_t]] *mpz_dpe
MatGSO[Z_NR[mpz_t], FP_NR[mpfr_t]] *mpz_mpfr
MatGSO[Z_NR[long], FP_NR[d_t]] *long_d
MatGSO[Z_NR[long], FP_NR[ld_t]] *long_ld
MatGSO[Z_NR[long], FP_NR[dpe_t]] *long_dpe
MatGSO[Z_NR[long], FP_NR[mpfr_t]] *long_mpfr
MatGSOInterface[Z_NR[mpz_t], FP_NR[d_t]] *mpz_d
MatGSOInterface[Z_NR[mpz_t], FP_NR[ld_t]] *mpz_ld
MatGSOInterface[Z_NR[mpz_t], FP_NR[dpe_t]] *mpz_dpe
MatGSOInterface[Z_NR[mpz_t], FP_NR[mpfr_t]] *mpz_mpfr
MatGSOInterface[Z_NR[long], FP_NR[d_t]] *long_d
MatGSOInterface[Z_NR[long], FP_NR[ld_t]] *long_ld
MatGSOInterface[Z_NR[long], FP_NR[dpe_t]] *long_dpe
MatGSOInterface[Z_NR[long], FP_NR[mpfr_t]] *long_mpfr

IF HAVE_QD:
ctypedef union lll_reduction_core_t:
Expand Down Expand Up @@ -287,24 +291,24 @@ ELSE:

IF HAVE_QD:
ctypedef union mat_gso_core_t:
MatGSO[Z_NR[mpz_t], FP_NR[d_t]] *mpz_d
MatGSO[Z_NR[mpz_t], FP_NR[dpe_t]] *mpz_dpe
MatGSO[Z_NR[mpz_t], FP_NR[dd_t]] *mpz_dd
MatGSO[Z_NR[mpz_t], FP_NR[qd_t]] *mpz_qd
MatGSO[Z_NR[mpz_t], FP_NR[mpfr_t]] *mpz_mpfr
MatGSO[Z_NR[long], FP_NR[d_t]] *long_d
MatGSO[Z_NR[long], FP_NR[dpe_t]] *long_dpe
MatGSO[Z_NR[long], FP_NR[dd_t]] *long_dd
MatGSO[Z_NR[long], FP_NR[qd_t]] *long_qd
MatGSO[Z_NR[long], FP_NR[mpfr_t]] *long_mpfr
MatGSOInterface[Z_NR[mpz_t], FP_NR[d_t]] *mpz_d
MatGSOInterface[Z_NR[mpz_t], FP_NR[dpe_t]] *mpz_dpe
MatGSOInterface[Z_NR[mpz_t], FP_NR[dd_t]] *mpz_dd
MatGSOInterface[Z_NR[mpz_t], FP_NR[qd_t]] *mpz_qd
MatGSOInterface[Z_NR[mpz_t], FP_NR[mpfr_t]] *mpz_mpfr
MatGSOInterface[Z_NR[long], FP_NR[d_t]] *long_d
MatGSOInterface[Z_NR[long], FP_NR[dpe_t]] *long_dpe
MatGSOInterface[Z_NR[long], FP_NR[dd_t]] *long_dd
MatGSOInterface[Z_NR[long], FP_NR[qd_t]] *long_qd
MatGSOInterface[Z_NR[long], FP_NR[mpfr_t]] *long_mpfr
ELSE:
ctypedef union mat_gso_core_t:
MatGSO[Z_NR[mpz_t], FP_NR[d_t]] *mpz_d
MatGSO[Z_NR[mpz_t], FP_NR[dpe_t]] *mpz_dpe
MatGSO[Z_NR[mpz_t], FP_NR[mpfr_t]] *mpz_mpfr
MatGSO[Z_NR[long], FP_NR[d_t]] *long_d
MatGSO[Z_NR[long], FP_NR[dpe_t]] *long_dpe
MatGSO[Z_NR[long], FP_NR[mpfr_t]] *long_mpfr
MatGSOInterface[Z_NR[mpz_t], FP_NR[d_t]] *mpz_d
MatGSOInterface[Z_NR[mpz_t], FP_NR[dpe_t]] *mpz_dpe
MatGSOInterface[Z_NR[mpz_t], FP_NR[mpfr_t]] *mpz_mpfr
MatGSOInterface[Z_NR[long], FP_NR[d_t]] *long_d
MatGSOInterface[Z_NR[long], FP_NR[dpe_t]] *long_dpe
MatGSOInterface[Z_NR[long], FP_NR[mpfr_t]] *long_mpfr

IF HAVE_QD:
ctypedef union lll_reduction_core_t:
Expand Down
2 changes: 1 addition & 1 deletion src/fpylll/fplll/enumeration.pxd
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-

from .decl cimport enumeration_core_t, fast_evaluator_core_t, fplll_gso_type_t
from .decl cimport enumeration_core_t, fast_evaluator_core_t, fplll_mat_gso_data_type_t
from .gso cimport MatGSO

cdef class Enumeration:
Expand Down

0 comments on commit 076296b

Please sign in to comment.