#ifndef _JACORDER_INCLUDE_1#define _JACORDER_INCLUDE_23#include <limits.h>45/*6Copyright 2007 Andrew V. Sutherland78This file is part of smalljac.910smalljac is free software: you can redistribute it and/or modify11it under the terms of the GNU General Public License as published by12the Free Software Foundation, either version 2 of the License, or13(at your option) any later version.1415smalljac is distributed in the hope that it will be useful,16but WITHOUT ANY WARRANTY; without even the implied warranty of17MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the18GNU General Public License for more details.1920You should have received a copy of the GNU General Public License21along with smalljac. If not, see <http://www.gnu.org/licenses/>.22*/2324/*25This module contains generic order computations for Jacobians using BSGS.26The detail are described in [SutherlandThesis] and [KedlayaSutherland2007].2728Most of smalljac's life is spent in the function jac_parallel_search.29*/3031#define JAC_INVALID_A1 LONG_MAX3233struct a2tab_entry {34double a1;35double a2median;36double a2mae;37};3839int jac_order (unsigned long *pP1, unsigned long Min, unsigned long Max, long a1, int *constraints, curve_t c[1], int fExponentOnly);40unsigned long jac_parallel_search (jac_t a[1], unsigned long M, unsigned long W, unsigned long Min, unsigned long Max, int tiny, int parity, curve_t c[1]);41int jac_search (mpz_t e[2], jac_t a[1], unsigned m, mpz_t Min, mpz_t Max, curve_t c[1]);4243#endif444546