aboutsummaryrefslogtreecommitdiff
path: root/src/cm/custom.c
diff options
context:
space:
mode:
authorJ08nY2018-07-02 18:49:54 +0200
committerJ08nY2018-07-02 18:49:54 +0200
commite751fe4351bbbf8f4fb0932ed9f01c9ecfae22f4 (patch)
tree4ebd829b3ec6bdc62bc40a4126cb7529684dd0d4 /src/cm/custom.c
parent26d89788658df8a65eebc64eff021882efc1e819 (diff)
downloadecgen-e751fe4351bbbf8f4fb0932ed9f01c9ecfae22f4.tar.gz
ecgen-e751fe4351bbbf8f4fb0932ed9f01c9ecfae22f4.tar.zst
ecgen-e751fe4351bbbf8f4fb0932ed9f01c9ecfae22f4.zip
Diffstat (limited to 'src/cm/custom.c')
-rw-r--r--src/cm/custom.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/src/cm/custom.c b/src/cm/custom.c
index da80329..10caff4 100644
--- a/src/cm/custom.c
+++ b/src/cm/custom.c
@@ -145,6 +145,7 @@ curve_t *custom_curve() {
}
GEN a = NULL;
+ GEN b = NULL;
GEN e = NULL;
GEN g = NULL;
@@ -170,11 +171,14 @@ curve_t *custom_curve() {
long rlen = glength(r);
for (long i = 1; i <= rlen; ++i) {
GEN root = gel(r, i);
- a = Fp_div(
- Fp_mul(stoi(27), root, quadr.p),
- Fp_mul(stoi(4), Fp_sub(stoi(1728), root, quadr.p), quadr.p),
+ a = mkintmod(
+ Fp_div(
+ Fp_mul(stoi(27), root, quadr.p),
+ Fp_mul(stoi(4), Fp_sub(stoi(1728), root, quadr.p), quadr.p),
+ quadr.p),
quadr.p);
- e = ellinit(mkvec2(a, negi(a)), quadr.p, 0);
+ b = gneg(a);
+ e = ellinit(mkvec2(a, b), quadr.p, 0);
pari_CATCH(e_TYPE) { continue; }
pari_TRY { checkell(e); };
pari_ENDCATCH{};
@@ -196,7 +200,7 @@ curve_t *custom_curve() {
curve_t *result = curve_new();
result->field = quadr.p;
result->a = a;
- result->b = negi(a);
+ result->b = b;
result->curve = e;
result->order = order;
result->generators = subgroups_new(1);