|
- load("../framework/instance_gen.sage")
-
- verbosity = 0
- report_every = None
-
- """ Example
- Uncomment the following to get the detailed computation
- """
- # verbosity = 2
- # report_every = 20
-
- # FRODOKEM parameters
- n = 976
- m = 976
- q = 2**16
- t = q / 16
- D_s = {- 10: 1.52587890625e-05, - 9: 9.1552734375e-05, - 8: 0.0004425048828125,
- - 7: 0.001800537109375, - 6: 0.00604248046875, - 5: 0.0167999267578125,
- - 4: 0.0388336181640625, - 3: 0.074493408203125, - 2: 0.118621826171875,
- - 1: 0.1568145751953125, 0: 0.172088623046875, 1: 0.1568145751953125,
- 2: 0.118621826171875, 3: 0.074493408203125, 4: 0.0388336181640625,
- 5: 0.0167999267578125, 6: 0.00604248046875, 7: 0.001800537109375,
- 8: 0.0004425048828125, 9: 9.1552734375e-05, 10: 1.52587890625e-05}
- D_e = D_s
- _, var = average_variance(D_s)
- d = n + m
- ell = RR(sqrt(d * var))
-
- # nu2 = RR(var * ell**4 / (t**2))
- # for k in [0, 1, 2, 4, 8, 16, 32, 64, 128, 256]:
- # xx = 1 / (1 / var + k / nu2)
- # print(k, RR(xx / var))
-
- covh = RR(var * ell**4 / (t**2)) * identity_matrix(d)
-
- _, _, inst = initialize_from_LWE_instance(DBDD_predict_diag, n, q,
- m, D_e, D_s, verbosity=verbosity)
-
- print("# failures, relative variance, bit-security (1 bit = 0.265 bikz) ")
- for i in range(0, 256):
- if report_every is not None:
- inst.integrate_q_vectors(q, indices=range(d),
- report_every=report_every)
- else:
- inst.integrate_q_vectors(q, indices=range(d))
- print(i, ",\t \t \t", inst.S[0] / var, ",\t \t \t", inst.beta * .265)
- inst.integrate_approx_hint_fulldim(None, covh)
|