From 3e4c87f12d13cd0a2d139cf8a149874634972afa Mon Sep 17 00:00:00 2001 From: J08nY Date: Sat, 30 Jun 2018 16:21:12 +0200 Subject: Implement computation of curve metadata(j-invariant, disc, frobenius, cm disc). --- src/io/output.c | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) (limited to 'src/io/output.c') diff --git a/src/io/output.c b/src/io/output.c index 2130614..8ad4ab0 100644 --- a/src/io/output.c +++ b/src/io/output.c @@ -5,6 +5,8 @@ #include "output.h" #include +#include +#include #include "gen/field.h" #include "util/bits.h" #include "util/memory.h" @@ -120,6 +122,39 @@ static JSON_Value *output_jjson(curve_t *curve) { } json_object_set_value(root_object, "subgroups", gens_value); } + if (cfg->metadata) { + debug_log("here"); + if (curve->meta.j_invariant != NULL) { + char *j = pari_sprintf("%Pi", curve->meta.j_invariant); + json_object_dotset_string(root_object, "meta.j", j); + pari_free(j); + } + debug_log("here"); + if (curve->meta.discriminant != NULL) { + char *disc = pari_sprintf("%Pi", curve->meta.discriminant); + json_object_dotset_string(root_object, "meta.discriminant", disc); + pari_free(disc); + } + debug_log("here"); + if (curve->meta.embedding_degree != NULL) { + char *embedding_degree = pari_sprintf("%Pi", curve->meta.embedding_degree); + json_object_dotset_string(root_object, "meta.embedding_degree", embedding_degree); + pari_free(embedding_degree); + } + debug_log("here"); + if (curve->meta.frobenius_trace != NULL) { + char *frobenius = pari_sprintf("%Pi", curve->meta.frobenius_trace); + json_object_dotset_string(root_object, "meta.frobenius", frobenius); + pari_free(frobenius); + } + debug_log("here"); + if (curve->meta.cm_discriminant != NULL) { + char *cm_discriminant = pari_sprintf("%Pi", curve->meta.cm_discriminant); + json_object_dotset_string(root_object, "meta.cm_discriminant", cm_discriminant); + pari_free(cm_discriminant); + } + debug_log("here"); + } avma = ltop; return root_value; -- cgit v1.2.3-70-g09d2