Let us walk on the 3-isogeny graph
Loading...
Searching...
No Matches
steps.c
Go to the documentation of this file.
1
#include "
steps.h
"
2
3
static
int
steps_overridden;
4
static
int64_t steps_override_bs;
5
static
int64_t steps_override_gs;
6
7
void
steps_override
(int64_t bs,int64_t gs)
8
{
9
steps_overridden = 1;
10
steps_override_bs = bs;
11
steps_override_gs = gs;
12
}
13
14
void
steps
(int64_t *bs,int64_t *gs,int64_t l)
15
{
16
int64_t b,g;
17
18
if
(steps_overridden) {
19
b = steps_override_bs;
20
g = steps_override_gs;
21
}
else
if
(!
steps_guess
(&b,&g,l)) {
22
b = 0;
23
do
{
24
b += 2;
25
g = (l-1)/(4*b);
26
}
while
(g >= b);
27
}
28
29
/* enforce rules for b,g: */
30
31
if
(b < 0) b = 0;
32
if
(g < 0) g = 0;
33
34
if
(b&1) ++b;
35
if
(b)
36
if
(g > (l-1)/(4*b))
37
g = (l-1)/(4*b);
38
39
if
(!g) b = 0;
40
if
(!b) g = 0;
41
42
*bs = b;
43
*gs = g;
44
}
steps.h
steps_guess
#define steps_guess
Definition
steps.h:9
steps
#define steps
Definition
steps.h:7
steps_override
#define steps_override
Definition
steps.h:8
E:
pqc-engineering-ssec-23
dCTIDH
src
common
steps.c
Generated by
1.14.0