1 // transform.h: declaration of quartic transformation functions 2 ////////////////////////////////////////////////////////////////////////// 3 // 4 // Copyright 1990-2012 John Cremona 5 // 6 // This file is part of the eclib package. 7 // 8 // eclib is free software; you can redistribute it and/or modify it 9 // under the terms of the GNU General Public License as published by the 10 // Free Software Foundation; either version 2 of the License, or (at your 11 // option) any later version. 12 // 13 // eclib is distributed in the hope that it will be useful, but WITHOUT 14 // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 15 // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 16 // for more details. 17 // 18 // You should have received a copy of the GNU General Public License 19 // along with eclib; if not, write to the Free Software Foundation, 20 // Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA 21 // 22 ////////////////////////////////////////////////////////////////////////// 23 // 24 // Notation: g(x,z) is replaced by g(m11*x+m12*z,m21*x+m22*z)/m00^2 25 // 26 27 #ifndef _ECLIB_TRANSFORM_H 28 #define _ECLIB_TRANSFORM_H 1 29 //flags that this file has been included 30 31 #include <eclib/unimod.h> 32 33 void apply_transform(bigint& a, bigint& b, bigint& c, bigint& d, bigint& e, 34 const unimod& m); 35 36 void apply_transform(bigint& a, bigint& b, bigint& c, bigint& d, bigint& e, 37 const scaled_unimod& m); 38 39 int check_transform(const bigint& a, const bigint& b, const bigint& c, 40 const bigint& d, const bigint& e, 41 const unimod& m, 42 const bigint& xa, const bigint& xb, const bigint& xc, 43 const bigint& xd, const bigint& xe); 44 45 int check_transform(const bigint& a, const bigint& b, const bigint& c, 46 const bigint& d, const bigint& e, 47 const scaled_unimod& m, 48 const bigint& xa, const bigint& xb, const bigint& xc, 49 const bigint& xd, const bigint& xe); 50 51 void xshift(const bigint& alpha, 52 bigint& a, bigint& b, bigint& c, bigint& d, bigint& e, 53 unimod& m); 54 55 void zshift(const bigint& gamma, 56 bigint& a, bigint& b, bigint& c, bigint& d, bigint& e, 57 unimod& m); 58 59 void m_invert(bigint& a, bigint& b, bigint& c, bigint& d, bigint& e, 60 unimod& m); 61 62 void m_invert(bigint& a, bigint& b, bigint& c, bigint& d, bigint& e, 63 scaled_unimod& m); 64 65 #endif 66