| Ilya Zakharevich on Mon, 9 Nov 1998 01:18:23 -0500 (EST) |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
| PARI translated to C |
Currently PARI uses assembler-like handling of GENs.
This patch provides new C-style definition for GEN and the subtypes
for GEN. Minor changes to .h files are done to fix signatures of functions
if appropriate.
Backward compatibility is preserved when PARI_OLD_GEN is
defined before inclusion of pari.h.
No *.c files of PARI library has been changed to follow new conventions,
but ./example/matexp.c is. Note that for the style matexp.c is written
in the advantages of the new style are minuscule (you need no less
type conversions from/to generic type), but for functions which need
to access components of GENs the advantage should be obvious.
Moreover, a transition to C++ may make most of the casts go away.
Note that the names of new types (valFRAC etc.) need improvement, but
I cannot introduce anything better right now.
Enjoy,
Ilya
diff -pru ./src.ini/headers/parigen.h ./src/headers/parigen.h
--- ./src.ini/headers/parigen.h Fri Nov 6 10:08:48 1998
+++ ./src/headers/parigen.h Sun Nov 8 23:25:54 1998
@@ -2,12 +2,200 @@
/* This file defines the parameters of the GEN type */
/* $Id: parigen.h,v 2.0.12.7 1998/11/06 15:07:57 belabas Exp belabas $ */
-typedef long *GEN;
-typedef int (*QSCOMP)(const void *, const void *);
#ifdef ULONG_NOT_DEFINED
typedef unsigned long ulong;
#endif
+#ifdef PARI_OLD_GEN
+
+typedef long valGEN;
+typedef long valINT;
+typedef long valREAL;
+typedef long valINTMOD;
+typedef long valFRAC;
+typedef long valFRACN;
+typedef long valCOMPLEX;
+typedef long valPADIC;
+typedef long valQUAD;
+typedef long valPOLMOD;
+typedef long valPOL;
+typedef long valSER;
+typedef long valRFRAC;
+typedef long valRFRACN;
+typedef long valQFR;
+typedef long valQFI;
+typedef long valVEC;
+typedef long valCOL;
+typedef long valMAT;
+typedef long valLIST;
+typedef long valSTR;
+
+/* These macros are temporary for the transition period. */
+# define GENheader(z) (((GEN)(z))[0])
+# define GENdescr(z) (((GEN)(z))[1])
+# define valINTbuffer(z,i) (((GEN)(z))[2+(i)])
+
+#else /* !( defined PARI_OLD_GEN ) */
+
+/* Should be bitfields! */
+# define GEN_LEADER ulong header
+# define GEN_DESCR ulong descr
+
+/* These macros are temporary for the transition period. */
+# define GENheader(z) (((GEN)(z))->int_val.header)
+# define GENdescr(z) (((GEN)(z))->int_val.descr)
+# define valINTbuffer(z,i) (((valINT*)(z))->data[(i)])
+
+union valGEN;
+struct valPOL;
+
+typedef struct valINT {
+ GEN_LEADER;
+ GEN_DESCR;
+ ulong data[1];
+} valINT;
+
+typedef struct valREAL {
+ GEN_LEADER;
+ GEN_DESCR;
+ ulong mantissa[1];
+} valREAL;
+
+typedef struct valINTMOD {
+ GEN_LEADER;
+ valINT *modulus;
+ valINT *repres;
+} valINTMOD;
+
+typedef struct valFRAC {
+ GEN_LEADER;
+ valINT *numer;
+ valINT *denom;
+} valFRAC;
+
+typedef struct valFRACN {
+ GEN_LEADER;
+ valINT *numer;
+ valINT *denom;
+} valFRACN;
+
+typedef struct valCOMPLEX {
+ GEN_LEADER;
+ union valGEN *real;
+ union valGEN *imag;
+} valCOMPLEX;
+
+typedef struct valPADIC {
+ GEN_LEADER;
+ GEN_DESCR;
+ valINT *prime;
+ valINT *error;
+ valINT *normalized;
+} valPADIC;
+
+typedef struct valQUAD {
+ GEN_LEADER;
+ struct valPOL *poly;
+ union valGEN *real;
+ union valGEN *imag;
+} valQUAD;
+
+typedef struct valPOLMOD {
+ GEN_LEADER;
+ struct valPOL *modulus;
+ struct valPOL *repres;
+} valPOLMOD;
+
+typedef struct valPOL {
+ GEN_LEADER;
+ GEN_DESCR;
+ union valGEN *coeff[1];
+} valPOL;
+
+typedef struct valSER {
+ GEN_LEADER;
+ GEN_DESCR;
+ union valGEN *coeff[1];
+} valSER;
+
+typedef struct valRFRAC {
+ GEN_LEADER;
+ valPOL *numer;
+ valPOL *denom;
+} valRFRAC;
+
+typedef struct valRFRACN {
+ GEN_LEADER;
+ valPOL *numer;
+ valPOL *denom;
+} valRFRACN;
+
+typedef struct valQFR {
+ GEN_LEADER;
+ valINT *coef[3];
+ valREAL *dist;
+} valQFR;
+
+typedef struct valQFI {
+ GEN_LEADER;
+ valINT *coef[3];
+} valQFI;
+
+typedef struct valVEC {
+ GEN_LEADER;
+ union valGEN *elt[1];
+} valVEC;
+
+typedef struct valCOL {
+ GEN_LEADER;
+ union valGEN *elt[1];
+} valCOL;
+
+typedef struct valMAT {
+ GEN_LEADER;
+ valCOL *elt[1];
+} valMAT;
+
+typedef struct valLIST {
+ GEN_LEADER;
+ GEN_DESCR;
+ union valGEN *elt[1];
+} valLIST;
+
+typedef struct valSTR {
+ GEN_LEADER;
+ char *s;
+} valSTR;
+
+typedef union valGEN {
+ long old;
+ valINT int_val;
+ valREAL real;
+ valINTMOD intmod;
+ valFRAC frac;
+ valFRACN fracn;
+ valCOMPLEX complex_val;
+ valPADIC padic;
+ valQUAD quad;
+ valPOLMOD polmod;
+ valPOL pol;
+ valSER ser;
+ valRFRAC rfrac;
+ valRFRACN rfracn;
+ valQFR qfr;
+ valQFI qfi;
+ valVEC vec;
+ valCOL col;
+ valMAT mat;
+ valLIST list;
+ valSTR str;
+} valGEN;
+#endif /* !( defined PARI_OLD_GEN ) */
+
+typedef valGEN *GEN;
+
+typedef int (*QSCOMP)(const void *, const void *);
+
#ifdef __M68K__
# define OLD_CODES
#endif
@@ -124,42 +312,45 @@ typedef int (*QSCOMP)(const void *, cons
#define m_evallg(x) (x)
#define m_evallgef(x) (x)
-#define typ(x) (((ulong) ((GEN) (x))[0]) >> TYPSHIFT)
-#define settyp(x,s) (((GEN)(x))[0]=\
- (((GEN)(x))[0]&(~TYPBITS)) | evaltyp(s))
-
-#define isclone(x) (((GEN) (x))[0] & CLONEBIT)
-#define setisclone(x) (((GEN) (x))[0] |= CLONEBIT)
-#define unsetisclone(x) (((GEN) (x))[0] &= (~CLONEBIT))
-
-#define lg(x) ((long) (((GEN) (x))[0] & LGBITS))
-#define setlg(x,s) (((GEN)(x))[0]=\
- (((GEN)(x))[0]&(~LGBITS)) | evallg(s))
-
-#define signe(x) (((long) ((GEN) (x))[1]) >> SIGNSHIFT)
-#define setsigne(x,s) (((GEN)(x))[1]=\
- (((GEN)(x))[1]&(~SIGNBITS)) | evalsigne(s))
-
-#define lgef(x) ((long) (((GEN) (x))[1] & LGEFBITS))
-#define setlgef(x,s) (((GEN)(x))[1]=\
- (((GEN)(x))[1]&(~LGEFBITS)) | evallgef(s))
-
-#define lgefint(x) ((long) (((GEN) (x))[1] & LGEFINTBITS))
-#define setlgefint(x,s) (((GEN)(x))[1]=\
- (((GEN)(x))[1]&(~LGEFINTBITS)) | evallgefint(s))
-
-#define expo(x) ((long) ((((GEN) (x))[1] & EXPOBITS) - HIGHEXPOBIT))
-#define setexpo(x,s) (((GEN)(x))[1]=\
- (((GEN)(x))[1]&(~EXPOBITS)) | evalexpo(s))
-
-#define valp(x) ((long) ((((GEN)(x))[1] & VALPBITS) - HIGHVALPBIT))
-#define setvalp(x,s) (((GEN)(x))[1]=\
- (((GEN)(x))[1]&(~VALPBITS)) | evalvalp(s))
-
-#define precp(x) ((long) (((ulong) ((GEN) (x))[1]) >> PRECPSHIFT))
-#define setprecp(x,s) (((GEN)(x))[1]=\
- (((GEN)(x))[1]&(~PRECPBITS)) | evalprecp(s))
-
-#define varn(x) ((long) ((((GEN) (x))[1]&VARNBITS) >> VARNSHIFT))
-#define setvarn(x,s) (((GEN)(x))[1]=\
- (((GEN)(x))[1]&(~VARNBITS)) | evalvarn(s))
+#define typ(x) (((ulong) GENheader(x)) >> TYPSHIFT)
+#define settyp(x,s) (GENheader(x)=\
+ (GENheader(x)&(~TYPBITS)) | evaltyp(s))
+
+#define isclone(x) (GENheader(x) & CLONEBIT)
+#define setisclone(x) (GENheader(x) |= CLONEBIT)
+#define unsetisclone(x) (GENheader(x) &= (~CLONEBIT))
+
+#define lg(x) ((long) (GENheader(x) & LGBITS))
+#define setlg(x,s) (GENheader(x)=\
+ (GENheader(x)&(~LGBITS)) | evallg(s))
+
+#define signe(x) (((long) GENdescr(x)) >> SIGNSHIFT)
+#define setsigne(x,s) (GENdescr(x)=\
+ (GENdescr(x)&(~SIGNBITS)) | evalsigne(s))
+
+#define lgef(x) ((long) (GENdescr(x) & LGEFBITS))
+#define setlgef(x,s) (GENdescr(x)=\
+ (GENdescr(x)&(~LGEFBITS)) | evallgef(s))
+
+#define lgefint(x) ((long) (GENdescr(x) & LGEFINTBITS))
+#define setlgefint(x,s) (GENdescr(x)=\
+ (GENdescr(x)&(~LGEFINTBITS)) | evallgefint(s))
+
+#define expo(x) ((long) ((GENdescr(x) & EXPOBITS) - HIGHEXPOBIT))
+#define setexpo(x,s) (GENdescr(x)=\
+ (GENdescr(x)&(~EXPOBITS)) | evalexpo(s))
+
+#define valp(x) ((long) ((GENdescr(x) & VALPBITS) - HIGHVALPBIT))
+#define setvalp(x,s) (GENdescr(x)=\
+ (GENdescr(x)&(~VALPBITS)) | evalvalp(s))
+
+#define precp(x) ((long) (((ulong) GENdescr(x)) >> PRECPSHIFT))
+#define setprecp(x,s) (GENdescr(x)=\
+ (GENdescr(x)&(~PRECPBITS)) | evalprecp(s))
+
+#define varn(x) ((long) ((GENdescr(x)&VARNBITS) >> VARNSHIFT))
+#define setvarn(x,s) (GENdescr(x)=\
+ (GENdescr(x)&(~VARNBITS)) | evalvarn(s))
+
+#define NEWvalINT(l) ((valINT*)cgeti(l+2))
+#define NEWvalREAL(l) ((valREAL*)cgetr(l+2))
diff -pru ./src.ini/basemath/alglin1.c ./src/basemath/alglin1.c
--- ./src.ini/basemath/alglin1.c Fri Nov 6 10:08:28 1998
+++ ./src/basemath/alglin1.c Sun Nov 8 21:26:04 1998
@@ -7,6 +7,8 @@
/********************************************************************/
/********************************************************************/
/* $Id: alglin1.c,v 2.0.12.7 1998/11/06 15:07:57 belabas Exp belabas $ */
+
+#define PARI_OLD_GEN
#include "pari.h"
/*******************************************************************/
diff -pru ./src.ini/basemath/alglin2.c ./src/basemath/alglin2.c
--- ./src.ini/basemath/alglin2.c Fri Nov 6 10:07:58 1998
+++ ./src/basemath/alglin2.c Sun Nov 8 21:26:04 1998
@@ -7,6 +7,8 @@
/********************************************************************/
/********************************************************************/
/* $Id: alglin2.c,v 2.0.12.7 1998/11/06 15:07:57 belabas Exp belabas $ */
+
+#define PARI_OLD_GEN
#include "pari.h"
/*******************************************************************/
diff -pru ./src.ini/basemath/arith1.c ./src/basemath/arith1.c
--- ./src.ini/basemath/arith1.c Fri Nov 6 10:07:58 1998
+++ ./src/basemath/arith1.c Sun Nov 8 21:26:04 1998
@@ -7,6 +7,8 @@
/*********************************************************************/
/*********************************************************************/
/* $Id: arith1.c,v 2.0.12.7 1998/11/06 15:07:57 belabas Exp belabas $ */
+
+#define PARI_OLD_GEN
#include "pari.h"
/*********************************************************************/
diff -pru ./src.ini/basemath/arith2.c ./src/basemath/arith2.c
--- ./src.ini/basemath/arith2.c Fri Nov 6 10:08:00 1998
+++ ./src/basemath/arith2.c Sun Nov 8 21:26:04 1998
@@ -7,6 +7,8 @@
/*********************************************************************/
/*********************************************************************/
/* $Id: arith2.c,v 2.0.12.7 1998/11/06 15:07:57 belabas Exp belabas $ */
+
+#define PARI_OLD_GEN
#include "pari.h"
GEN arith_proto(long f(GEN), GEN x, int do_error);
diff -pru ./src.ini/basemath/base1.c ./src/basemath/base1.c
--- ./src.ini/basemath/base1.c Fri Nov 6 10:08:00 1998
+++ ./src/basemath/base1.c Sun Nov 8 21:26:04 1998
@@ -6,6 +6,8 @@
/**************************************************************/
/**************************************************************/
/* $Id: base1.c,v 2.0.12.7 1998/11/06 15:07:57 belabas Exp belabas $ */
+
+#define PARI_OLD_GEN
#include "pari.h"
#include "parinf.h"
diff -pru ./src.ini/basemath/base2.c ./src/basemath/base2.c
--- ./src.ini/basemath/base2.c Fri Nov 6 10:08:02 1998
+++ ./src/basemath/base2.c Sun Nov 8 21:26:04 1998
@@ -6,6 +6,8 @@
/*******************************************************************/
/*******************************************************************/
/* $Id: base2.c,v 2.0.12.7 1998/11/06 15:07:57 belabas Exp belabas $ */
+
+#define PARI_OLD_GEN
#include "pari.h"
GEN element_muli(GEN nf, GEN x, GEN y);
diff -pru ./src.ini/basemath/base3.c ./src/basemath/base3.c
--- ./src.ini/basemath/base3.c Fri Nov 6 10:08:04 1998
+++ ./src/basemath/base3.c Sun Nov 8 21:26:04 1998
@@ -6,6 +6,8 @@
/*******************************************************************/
/*******************************************************************/
/* $Id: base3.c,v 2.0.12.7 1998/11/06 15:07:57 belabas Exp belabas $ */
+
+#define PARI_OLD_GEN
#include "pari.h"
/*******************************************************************/
diff -pru ./src.ini/basemath/base4.c ./src/basemath/base4.c
--- ./src.ini/basemath/base4.c Fri Nov 6 10:08:04 1998
+++ ./src/basemath/base4.c Sun Nov 8 21:26:04 1998
@@ -7,6 +7,8 @@
/*******************************************************************/
/*******************************************************************/
/* $Id: base4.c,v 2.0.12.7 1998/11/06 15:07:57 belabas Exp belabas $ */
+
+#define PARI_OLD_GEN
#include "pari.h"
#include "parinf.h"
diff -pru ./src.ini/basemath/base5.c ./src/basemath/base5.c
--- ./src.ini/basemath/base5.c Fri Nov 6 10:08:06 1998
+++ ./src/basemath/base5.c Sun Nov 8 21:26:04 1998
@@ -7,6 +7,8 @@
/*******************************************************************/
/*******************************************************************/
/* $Id: base5.c,v 2.0.12.7 1998/11/06 15:07:57 belabas Exp belabas $ */
+
+#define PARI_OLD_GEN
#include "pari.h"
GEN
diff -pru ./src.ini/basemath/bibli1.c ./src/basemath/bibli1.c
--- ./src.ini/basemath/bibli1.c Fri Nov 6 10:08:06 1998
+++ ./src/basemath/bibli1.c Sun Nov 8 21:26:04 1998
@@ -6,6 +6,8 @@
/********************************************************************/
/********************************************************************/
/* $Id: bibli1.c,v 2.0.12.7 1998/11/06 15:07:57 belabas Exp belabas $ */
+
+#define PARI_OLD_GEN
#include "pari.h"
#include "parinf.h"
/* scalar product of x with himself */
diff -pru ./src.ini/basemath/bibli2.c ./src/basemath/bibli2.c
--- ./src.ini/basemath/bibli2.c Fri Nov 6 10:08:08 1998
+++ ./src/basemath/bibli2.c Sun Nov 8 21:26:04 1998
@@ -7,6 +7,8 @@
/********************************************************************/
/********************************************************************/
/* $Id: bibli2.c,v 2.0.12.7 1998/11/06 15:07:57 belabas Exp belabas $ */
+
+#define PARI_OLD_GEN
#include "pari.h"
/********************************************************************/
diff -pru ./src.ini/basemath/buch1.c ./src/basemath/buch1.c
--- ./src.ini/basemath/buch1.c Fri Nov 6 10:08:08 1998
+++ ./src/basemath/buch1.c Sun Nov 8 21:26:04 1998
@@ -7,6 +7,8 @@
/*******************************************************************/
/*******************************************************************/
/* $Id: buch1.c,v 2.0.12.7 1998/11/06 15:07:57 belabas Exp belabas $ */
+
+#define PARI_OLD_GEN
#include "pari.h"
/* See buch2.c:
diff -pru ./src.ini/basemath/buch2.c ./src/basemath/buch2.c
--- ./src.ini/basemath/buch2.c Fri Nov 6 10:08:10 1998
+++ ./src/basemath/buch2.c Sun Nov 8 21:26:04 1998
@@ -7,6 +7,8 @@
/*******************************************************************/
/*******************************************************************/
/* $Id: buch2.c,v 2.0.12.7 1998/11/06 15:07:57 belabas Exp belabas $ */
+
+#define PARI_OLD_GEN
#include "pari.h"
#include "parinf.h"
diff -pru ./src.ini/basemath/buch3.c ./src/basemath/buch3.c
--- ./src.ini/basemath/buch3.c Fri Nov 6 10:08:12 1998
+++ ./src/basemath/buch3.c Sun Nov 8 21:26:06 1998
@@ -6,6 +6,8 @@
/*******************************************************************/
/*******************************************************************/
/* $Id: buch3.c,v 2.0.12.7 1998/11/06 15:07:57 belabas Exp belabas $ */
+
+#define PARI_OLD_GEN
#include "pari.h"
#include "parinf.h"
diff -pru ./src.ini/basemath/buch4.c ./src/basemath/buch4.c
--- ./src.ini/basemath/buch4.c Fri Nov 6 10:08:12 1998
+++ ./src/basemath/buch4.c Sun Nov 8 21:26:06 1998
@@ -7,6 +7,8 @@
/*******************************************************************/
/*******************************************************************/
/* $Id: buch4.c,v 2.0.12.7 1998/11/06 15:07:57 belabas Exp belabas $ */
+
+#define PARI_OLD_GEN
#include "pari.h"
static long
diff -pru ./src.ini/basemath/gen1.c ./src/basemath/gen1.c
--- ./src.ini/basemath/gen1.c Fri Nov 6 10:08:14 1998
+++ ./src/basemath/gen1.c Sun Nov 8 21:26:06 1998
@@ -7,6 +7,8 @@
/********************************************************************/
/********************************************************************/
/* $Id: gen1.c,v 2.0.12.7 1998/11/06 15:07:57 belabas Exp belabas $ */
+
+#define PARI_OLD_GEN
#include "pari.h"
#define swapspec(x,y, nx,ny) {long _a=nx;GEN _z=x; nx=ny; ny=_a; x=y; y=_z;}
diff -pru ./src.ini/basemath/gen2.c ./src/basemath/gen2.c
--- ./src.ini/basemath/gen2.c Sun Nov 8 16:47:22 1998
+++ ./src/basemath/gen2.c Sun Nov 8 21:26:06 1998
@@ -7,6 +7,8 @@
/********************************************************************/
/********************************************************************/
/* $Id: gen2.c,v 2.0.12.7 1998/11/06 15:07:57 belabas Exp belabas $ */
+
+#define PARI_OLD_GEN
#include "pari.h"
/*******************************************************************/
diff -pru ./src.ini/basemath/gen3.c ./src/basemath/gen3.c
--- ./src.ini/basemath/gen3.c Fri Nov 6 10:08:16 1998
+++ ./src/basemath/gen3.c Sun Nov 8 21:26:06 1998
@@ -7,6 +7,8 @@
/********************************************************************/
/********************************************************************/
/* $Id: gen3.c,v 2.0.12.7 1998/11/06 15:07:57 belabas Exp belabas $ */
+
+#define PARI_OLD_GEN
#include "pari.h"
/********************************************************************/
diff -pru ./src.ini/basemath/ifactor1.c ./src/basemath/ifactor1.c
--- ./src.ini/basemath/ifactor1.c Fri Nov 6 10:08:18 1998
+++ ./src/basemath/ifactor1.c Sun Nov 8 21:26:06 1998
@@ -1,4 +1,6 @@
/* $Id: ifactor1.c,v 2.0.12.7 1998/11/06 15:07:57 belabas Exp belabas $ */
+
+#define PARI_OLD_GEN
#include "pari.h"
/*********************************************************************/
diff -pru ./src.ini/basemath/polarit1.c ./src/basemath/polarit1.c
--- ./src.ini/basemath/polarit1.c Fri Nov 6 10:08:20 1998
+++ ./src/basemath/polarit1.c Sun Nov 8 21:26:06 1998
@@ -7,6 +7,8 @@
/***********************************************************************/
/***********************************************************************/
/* $Id: polarit1.c,v 2.0.12.7 1998/11/06 15:07:57 belabas Exp belabas $ */
+
+#define PARI_OLD_GEN
#include "pari.h"
GEN sort_factor(GEN y);
GEN make_base(long n, GEN base);
diff -pru ./src.ini/basemath/polarit2.c ./src/basemath/polarit2.c
--- ./src.ini/basemath/polarit2.c Fri Nov 6 10:08:22 1998
+++ ./src/basemath/polarit2.c Sun Nov 8 21:26:06 1998
@@ -7,6 +7,8 @@
/***********************************************************************/
/***********************************************************************/
/* $Id: polarit2.c,v 2.0.12.7 1998/11/06 15:07:57 belabas Exp belabas $ */
+
+#define PARI_OLD_GEN
#include "pari.h"
GEN
diff -pru ./src.ini/basemath/polarit3.c ./src/basemath/polarit3.c
--- ./src.ini/basemath/polarit3.c Fri Nov 6 10:08:30 1998
+++ ./src/basemath/polarit3.c Sun Nov 8 21:26:06 1998
@@ -7,6 +7,8 @@
/***********************************************************************/
/***********************************************************************/
/* $Id: polarit3.c,v 2.0.12.7 1998/11/06 15:07:57 belabas Exp belabas $ */
+
+#define PARI_OLD_GEN
#include "pari.h"
/*******************************************************************/
diff -pru ./src.ini/basemath/rootpol.c ./src/basemath/rootpol.c
--- ./src.ini/basemath/rootpol.c Fri Nov 6 10:08:22 1998
+++ ./src/basemath/rootpol.c Sun Nov 8 21:26:06 1998
@@ -7,6 +7,8 @@
/*******************************************************************/
/*******************************************************************/
/* $Id: rootpol.c,v 2.0.12.7 1998/11/06 15:07:57 belabas Exp belabas $ */
+
+#define PARI_OLD_GEN
#include "pari.h"
#define pariINFINITY 100000
diff -pru ./src.ini/basemath/trans1.c ./src/basemath/trans1.c
--- ./src.ini/basemath/trans1.c Fri Nov 6 12:50:10 1998
+++ ./src/basemath/trans1.c Sun Nov 8 21:26:06 1998
@@ -6,6 +6,8 @@
/********************************************************************/
/********************************************************************/
/* $Id: trans1.c,v 2.0.12.7 1998/11/06 15:07:57 belabas Exp belabas $ */
+
+#define PARI_OLD_GEN
#include "pari.h"
#ifdef LONG_IS_64BIT
diff -pru ./src.ini/basemath/trans2.c ./src/basemath/trans2.c
--- ./src.ini/basemath/trans2.c Fri Nov 6 10:08:26 1998
+++ ./src/basemath/trans2.c Sun Nov 8 21:26:06 1998
@@ -7,6 +7,8 @@
/********************************************************************/
/********************************************************************/
/* $Id: trans2.c,v 2.0.12.7 1998/11/06 15:07:57 belabas Exp belabas $ */
+
+#define PARI_OLD_GEN
#include "pari.h"
GEN mpsin(GEN x);
diff -pru ./src.ini/basemath/trans3.c ./src/basemath/trans3.c
--- ./src.ini/basemath/trans3.c Fri Nov 6 10:08:26 1998
+++ ./src/basemath/trans3.c Sun Nov 8 21:26:06 1998
@@ -7,6 +7,8 @@
/********************************************************************/
/********************************************************************/
/* $Id: trans3.c,v 2.0.12.7 1998/11/06 15:07:57 belabas Exp belabas $ */
+
+#define PARI_OLD_GEN
#include "pari.h"
/***********************************************************************/
diff -pru ./src.ini/gp/gp.c ./src/gp/gp.c
--- ./src.ini/gp/gp.c Sun Nov 8 04:22:06 1998
+++ ./src/gp/gp.c Sun Nov 8 21:26:16 1998
@@ -4,6 +4,8 @@
/** **/
/*******************************************************************/
/* $Id: gp.c,v 2.0.12.7 1998/11/06 15:07:57 belabas Exp belabas $ */
+
+#define PARI_OLD_GEN
#include "pari.h"
#ifdef _WIN32
# include <windows.h>
diff -pru ./src.ini/gp/gp_init.c ./src/gp/gp_init.c
--- ./src.ini/gp/gp_init.c Fri Nov 6 10:08:34 1998
+++ ./src/gp/gp_init.c Sun Nov 8 21:26:16 1998
@@ -4,6 +4,8 @@
/* */
/*******************************************************************/
/* $Id: gp_init.c,v 2.0.12.7 1998/11/06 15:07:57 belabas Exp belabas $ */
+
+#define PARI_OLD_GEN
#include "pari.h"
#include "../graph/rect.h"
diff -pru ./src.ini/gp/gp_rl.c ./src/gp/gp_rl.c
--- ./src.ini/gp/gp_rl.c Sun Nov 8 04:22:06 1998
+++ ./src/gp/gp_rl.c Sun Nov 8 21:26:16 1998
@@ -6,6 +6,8 @@
/*******************************************************************/
/*******************************************************************/
/* $Id: gp_rl.c,v 2.0.12.7 1998/11/06 15:07:57 belabas Exp belabas $ */
+
+#define PARI_OLD_GEN
#include "pari.h"
#include "../language/anal.h"
#include "gp.h"
diff -pru ./src.ini/graph/plotgnuplot.c ./src/graph/plotgnuplot.c
--- ./src.ini/graph/plotgnuplot.c Sun Nov 8 04:22:06 1998
+++ ./src/graph/plotgnuplot.c Sun Nov 8 21:44:32 1998
@@ -9,7 +9,9 @@
/*******************************************************************/
/*******************************************************************/
/* $Id: plotgnuplot.c,v 2.0.12.7 1998/11/06 15:07:57 belabas Exp belabas $ */
-# include "pari.h"
+
+#define PARI_OLD_GEN
+#include "pari.h"
#include "rect.h"
#define croak(str) err(talker,str)
#include "Gnuplot.h"
diff -pru ./src.ini/graph/plotnull.c ./src/graph/plotnull.c
--- ./src.ini/graph/plotnull.c Fri Nov 6 10:08:44 1998
+++ ./src/graph/plotnull.c Sun Nov 8 21:26:24 1998
@@ -1,4 +1,6 @@
/* $Id: plotnull.c,v 2.0.12.7 1998/11/06 15:07:57 belabas Exp belabas $ */
+
+#define PARI_OLD_GEN
#include "pari.h"
void
diff -pru ./src.ini/graph/plotport.c ./src/graph/plotport.c
--- ./src.ini/graph/plotport.c Sun Nov 8 17:56:08 1998
+++ ./src/graph/plotport.c Sun Nov 8 21:26:24 1998
@@ -6,6 +6,8 @@
/*******************************************************************/
/*******************************************************************/
/* $Id: plotport.c,v 2.0.12.7 1998/11/06 15:07:57 belabas Exp belabas $ */
+
+#define PARI_OLD_GEN
#include "pari.h"
#include "rect.h"
diff -pru ./src.ini/graph/plotsun.c ./src/graph/plotsun.c
--- ./src.ini/graph/plotsun.c Sun Nov 8 04:22:06 1998
+++ ./src/graph/plotsun.c Sun Nov 8 21:26:24 1998
@@ -6,6 +6,8 @@
/*******************************************************************/
/*******************************************************************/
/* $Id: plotsun.c,v 2.0.12.7 1998/11/06 15:07:57 belabas Exp belabas $ */
+
+#define PARI_OLD_GEN
#include "pari.h"
#include "rect.h"
#include <suntool/sunview.h>
diff -pru ./src.ini/graph/plotX.c ./src/graph/plotX.c
--- ./src.ini/graph/plotX.c Sun Nov 8 04:22:06 1998
+++ ./src/graph/plotX.c Sun Nov 8 21:26:24 1998
@@ -6,6 +6,8 @@
/*******************************************************************/
/*******************************************************************/
/* $Id: plotX.c,v 2.0.12.7 1998/11/06 15:07:57 belabas Exp belabas $ */
+
+#define PARI_OLD_GEN
#include "pari.h"
#include "rect.h"
#include "../language/anal.h"
diff -pru ./src.ini/kernel/none/level0.c ./src/kernel/none/level0.c
--- ./src.ini/kernel/none/level0.c Thu Jul 23 08:40:28 1998
+++ ./src/kernel/none/level0.c Sun Nov 8 21:25:36 1998
@@ -1,2 +1,4 @@
#define LEVEL0
+
+#define PARI_OLD_GEN
#include "pari.h"
diff -pru ./src.ini/kernel/none/level1.c ./src/kernel/none/level1.c
--- ./src.ini/kernel/none/level1.c Fri Nov 6 10:08:34 1998
+++ ./src/kernel/none/level1.c Sun Nov 8 21:25:36 1998
@@ -1,3 +1,5 @@
/* $Id: level1.c,v 2.0.12.7 1998/11/06 15:07:57 belabas Exp belabas $ */
#define LEVEL1
+
+#define PARI_OLD_GEN
#include "pari.h"
diff -pru ./src.ini/kernel/none/level1.h ./src/kernel/none/level1.h
--- ./src.ini/kernel/none/level1.h Fri Nov 6 10:08:34 1998
+++ ./src/kernel/none/level1.h Sun Nov 8 23:11:22 1998
@@ -18,9 +18,9 @@
void addsii(long x, GEN y, GEN z);
long addssmod(long a, long b, long p);
void addssz(long x, long y, GEN z);
-void affii(GEN x, GEN y);
-void affsi(long s, GEN x);
-void affsr(long s, GEN x);
+void affii(valINT *x, valINT *y);
+void affsi(long s, valINT *x);
+void affsr(long s, valREAL *x);
GEN cgetg(long x, long y);
GEN cgeti(long x);
GEN cgetr(long x);
@@ -46,7 +46,7 @@ long expi(GEN x);
#endif
double gtodouble(GEN x);
GEN icopy(GEN x);
-long itos(GEN x);
+long itos(valINT *x);
GEN modis(GEN x, long y);
GEN mpabs(GEN x);
GEN mpadd(GEN x, GEN y);
@@ -113,7 +113,7 @@ INLINE GEN
cgetg(long x, long y)
{
const GEN z = new_chunk(x);
- z[0] = evaltyp(y) | evallg(x);
+ GENheader(z) = evaltyp(y) | evallg(x);
return z;
}
@@ -121,7 +121,7 @@ INLINE GEN
cgeti(long x)
{
const GEN z = new_chunk(x);
- z[0] = evaltyp(t_INT) | evallg(x);
+ GENheader(z) = evaltyp(t_INT) | evallg(x);
return z;
}
@@ -129,7 +129,7 @@ INLINE GEN
cgetr(long x)
{
const GEN z = new_chunk(x);
- z[0] = evaltyp(t_REAL) | evallg(x);
+ GENheader(z) = evaltyp(t_REAL) | evallg(x);
return z;
}
# endif /* __M68K__ */
@@ -192,57 +192,57 @@ stoi(long x)
}
INLINE long
-itos(GEN x)
+itos(valINT *x)
{
const long s=signe(x);
long p1;
if (!s) return 0;
if (lgefint(x)>3) err(affer2);
- p1=x[2]; if (p1 < 0) err(affer2);
+ p1 = valINTbuffer(x,0); if (p1 < 0) err(affer2);
return (s>0) ? p1 : -(long)p1;
}
INLINE void
-affii(GEN x, GEN y)
+affii(valINT *x, valINT *y)
{
long lx;
if (x==y) return;
lx=lgefint(x); if (lg(y)<lx) err(affer3);
- while (--lx) y[lx]=x[lx];
+ while (--lx) valINTbuffer(y, lx - 2) = valINTbuffer(x, lx-2);
}
INLINE void
-affsi(long s, GEN x)
+affsi(long s, valINT *x)
{
- if (!s) { x[1]=2; return; }
+ if (!s) { GENdescr(x) = 2; return; }
if (lg(x)<3) err(affer1);
- if (s>0) { x[1] = evalsigne(1) | evallgefint(3); x[2] = s; }
- else { x[1] = evalsigne(-1) | evallgefint(3); x[2] = -s; }
+ if (s>0) { GENdescr(x) = evalsigne(1) | evallgefint(3); valINTbuffer(x,0) = s; }
+ else { GENdescr(x) = evalsigne(-1) | evallgefint(3); valINTbuffer(x,0) = -s; }
}
INLINE void
-affsr(long s, GEN x)
+affsr(long s, valREAL *x)
{
long l;
if (!s)
{
l = -bit_accuracy(lg(x));
- x[1]=evalexpo(l); x[2]=0; return;
+ GENdescr(x)=evalexpo(l); valINTbuffer(x,0)=0; return;
}
- if (s<0) { x[1] = evalsigne(-1); s = -s; }
- else x[1] = evalsigne(1);
- l=bfffo(s); x[1] |= evalexpo((BITS_IN_LONG-1)-l);
- x[2] = s<<l; for (l=3; l<lg(x); l++) x[l]=0;
+ if (s<0) { GENdescr(x) = evalsigne(-1); s = -s; }
+ else GENdescr(x) = evalsigne(1);
+ l=bfffo(s); GENdescr(x) |= evalexpo((BITS_IN_LONG-1)-l);
+ valINTbuffer(x,0) = s<<l; for (l=3; l<lg(x); l++) valINTbuffer(x,l-2)=0;
}
INLINE void
mpaff(GEN x, GEN y)
{
if (typ(x)==t_INT)
- { if (typ(y)==t_INT) affii(x,y); else affir(x,y); }
+ { if (typ(y)==t_INT) affii((valINT *)x,(valINT *)y); else affir(x,y); }
else
{ if (typ(y)==t_INT) affri(x,y); else affrr(x,y); }
}
@@ -254,7 +254,7 @@ shiftr(GEN x, long n)
const GEN y = rcopy(x);
if (e & ~EXPOBITS) err(shier2);
- y[1] = (y[1]&~EXPOBITS) | e; return y;
+ GENdescr(y) = (GENdescr(y)&~EXPOBITS) | e; return y;
}
INLINE int
@@ -272,11 +272,11 @@ INLINE int
cmpsr(long x, GEN y)
{
long av;
- GEN z;
+ valREAL *z;
if (!x) return -signe(y);
- av=avma; z=cgetr(3); affsr(x,z); avma=av;
- return cmprr(z,y);
+ av=avma; z = NEWvalREAL(1); affsr(x,z); avma=av;
+ return cmprr((GEN)z,y);
}
INLINE void
@@ -286,9 +286,9 @@ addssz(long x, long y, GEN z)
else
{
const long av=avma;
- const GEN p1=cgetr(lg(z));
+ valREAL * const p1=NEWvalREAL(lg(z) - 2);
- affsr(x,p1); affrr(addrs(p1,y),z); avma=av;
+ affsr(x,p1); affrr(addrs((GEN)p1,y),(GEN)z); avma=av;
}
}
@@ -361,31 +361,31 @@ mulssz(long x, long y, GEN z)
else
{
const long av=avma;
- const GEN p1=cgetr(lg(z));
+ valREAL * const p1 = NEWvalREAL(lg(z) - 2);
- affsr(x,p1); mpaff(mulsr(y,p1),z); avma=av;
+ affsr(x,p1); mpaff(mulsr(y,(GEN)p1),(GEN)z); avma=av;
}
}
INLINE void
-mulsii(long x, GEN y, GEN z)
+mulsii(long x, GEN y, valINT *z)
{
const long av=avma;
- affii(mulsi(x,y),z); avma=av;
+ affii((valINT *)mulsi(x,y),z); avma=av;
}
INLINE void
-addsii(long x, GEN y, GEN z)
+addsii(long x, GEN y, valINT *z)
{
const long av=avma;
- affii(addsi(x,y),z); avma=av;
+ affii((valINT *)addsi(x,y),z); avma=av;
}
INLINE long
-divisii(GEN x, long y, GEN z)
+divisii(GEN x, long y, valINT *z)
{
const long av=avma;
- affii(divis(x,y),z); avma=av; return hiremainder;
+ affii((valINT *)divis(x,y),z); avma=av; return hiremainder;
}
INLINE long
@@ -395,8 +395,8 @@ vali(GEN x)
if (!signe(x)) return -1;
lx = lgefint(x)-1;
- i=lx; while (i>=2 && !x[i]) i--;
- return ((lx-i)<<TWOPOTBITS_IN_LONG) + vals(x[i]);
+ i=lx; while (i>=2 && !valINTbuffer(x,i-2)) i--;
+ return ((lx-i)<<TWOPOTBITS_IN_LONG) + vals(valINTbuffer(x,i-2));
}
INLINE GEN
@@ -434,7 +434,7 @@ dvmdis(GEN x, long y, GEN *z)
}
INLINE void
-dvmdssz(long x, long y, GEN z, GEN t)
+dvmdssz(long x, long y, GEN z, valINT *t)
{
const long av=avma;
const GEN p1=divss(x,y);
@@ -443,7 +443,7 @@ dvmdssz(long x, long y, GEN z, GEN t)
}
INLINE void
-dvmdsiz(long x, GEN y, GEN z, GEN t)
+dvmdsiz(long x, GEN y, GEN z, valINT *t)
{
const long av=avma;
const GEN p1=divsi(x,y);
@@ -452,7 +452,7 @@ dvmdsiz(long x, GEN y, GEN z, GEN t)
}
INLINE void
-dvmdisz(GEN x, long y, GEN z, GEN t)
+dvmdisz(GEN x, long y, GEN z, valINT *t)
{
const long av=avma;
const GEN p1=divis(x,y);
@@ -511,10 +511,11 @@ divsiz(long x, GEN y, GEN z)
else
{
const long lz=lg(z);
- const GEN p1=cgetr(lz), p2=cgetr(lz);
+ valREAL * const p1 = NEWvalREAL(lz - 2);
+ valREAL * const p2 = NEWvalREAL(lz - 2);
- affsr(x,p1); affir(y,p2);
- affrr(divrr(p1,p2),z);
+ affsr(x,p1); affir(y,(GEN)p2);
+ affrr(divrr((GEN)p1,(GEN)p2),z);
}
avma=av;
}
@@ -527,9 +528,9 @@ divssz(long x, long y, GEN z)
if (typ(z)==t_INT) gaffect(divss(x,y),z);
else
{
- const GEN p1=cgetr(lg(z));
+ valREAL * const p1 = NEWvalREAL(lg(z) - 2);
- affsr(x,p1); affrr(divrs(p1,y),z);
+ affsr(x,p1); affrr(divrs((GEN)p1,y),z);
}
avma=av;
}
@@ -542,10 +543,10 @@ divrrz(GEN x, GEN y, GEN z)
}
INLINE void
-resiiz(GEN x, GEN y, GEN z)
+resiiz(GEN x, GEN y, valINT *z)
{
const long av=avma;
- affii(resii(x,y),z); avma=av;
+ affii((valINT *)resii(x,y),z); avma=av;
}
INLINE int
@@ -598,14 +599,14 @@ mpdiv(GEN x, GEN y)
}
INLINE int
-mpdivis(GEN x, GEN y, GEN z)
+mpdivis(GEN x, GEN y, valINT* z)
{
const long av=avma;
GEN p2;
const GEN p1=dvmdii(x,y,&p2);
if (signe(p2)) { avma=av; return 0; }
- affii(p1,z); avma=av; return 1;
+ affii((valINT *)p1,z); avma=av; return 1;
}
/* THE FOLLOWING ONES ARE NOT IN mp.s */
@@ -667,7 +668,7 @@ INLINE long
expi(GEN x)
{
const long lx=lgefint(x);
- return lx==2? -HIGHEXPOBIT: bit_accuracy(lx)-bfffo(x[2])-1;
+ return lx==2? -HIGHEXPOBIT: bit_accuracy(lx)-bfffo(valINTbuffer(x,0))-1;
}
#endif
diff -pru ./src.ini/kernel/none/mp.c ./src/kernel/none/mp.c
--- ./src.ini/kernel/none/mp.c Fri Nov 6 10:08:36 1998
+++ ./src/kernel/none/mp.c Sun Nov 8 21:25:36 1998
@@ -6,6 +6,8 @@
/***********************************************************************/
/***********************************************************************/
/* $Id: mp.c,v 2.0.12.7 1998/11/06 15:07:57 belabas Exp belabas $ */
+
+#define PARI_OLD_GEN
#include "pari.h"
#if 0 /* for tests on a specific broken machine! */
char *xmalloc(long x) { return malloc(x); }
diff -pru ./src.ini/language/anal.c ./src/language/anal.c
--- ./src.ini/language/anal.c Fri Nov 6 13:21:42 1998
+++ ./src/language/anal.c Sun Nov 8 21:26:30 1998
@@ -6,6 +6,8 @@
/*******************************************************************/
/*******************************************************************/
/* $Id: anal.c,v 2.0.12.7 1998/11/06 15:07:57 belabas Exp belabas $ */
+
+#define PARI_OLD_GEN
#include "pari.h"
#include "anal.h"
#include "parinf.h"
diff -pru ./src.ini/language/compat.c ./src/language/compat.c
--- ./src.ini/language/compat.c Fri Nov 6 10:09:00 1998
+++ ./src/language/compat.c Sun Nov 8 21:26:30 1998
@@ -1,4 +1,6 @@
/* $Id: compat.c,v 2.0.12.7 1998/11/06 15:07:57 belabas Exp belabas $ */
+
+#define PARI_OLD_GEN
#include "pari.h"
GEN geni(void);
diff -pru ./src.ini/language/es.c ./src/language/es.c
--- ./src.ini/language/es.c Sun Nov 8 04:22:08 1998
+++ ./src/language/es.c Sun Nov 8 21:26:30 1998
@@ -4,6 +4,8 @@
/** **/
/*******************************************************************/
/* $Id: es.c,v 2.0.12.7 1998/11/06 15:07:57 belabas Exp belabas $ */
+
+#define PARI_OLD_GEN
#include "pari.h"
#include "anal.h"
GEN confrac(GEN x); /* should be static here, but use hiremainder */
diff -pru ./src.ini/language/highlvl.c ./src/language/highlvl.c
--- ./src.ini/language/highlvl.c Sun Nov 8 04:22:08 1998
+++ ./src/language/highlvl.c Sun Nov 8 21:26:30 1998
@@ -4,6 +4,8 @@
/* */
/*******************************************************************/
/* $Id: highlvl.c,v 2.0.12.7 1998/11/06 15:07:57 belabas Exp belabas $ */
+
+#define PARI_OLD_GEN
#include "pari.h"
#include "../graph/rect.h"
#include "../language/anal.h"
diff -pru ./src.ini/language/init.c ./src/language/init.c
--- ./src.ini/language/init.c Sun Nov 8 04:22:08 1998
+++ ./src/language/init.c Sun Nov 8 21:26:30 1998
@@ -7,6 +7,8 @@
/*******************************************************************/
/* $Id: init.c,v 2.0.12.7 1998/11/06 15:07:57 belabas Exp belabas $ */
#include <string.h>
+
+#define PARI_OLD_GEN
#include "pari.h"
#include "anal.h"
#ifdef _WIN32
diff -pru ./src.ini/language/sumiter.c ./src/language/sumiter.c
--- ./src.ini/language/sumiter.c Fri Nov 6 10:08:56 1998
+++ ./src/language/sumiter.c Sun Nov 8 21:26:30 1998
@@ -7,6 +7,8 @@
/********************************************************************/
/********************************************************************/
/* $Id: sumiter.c,v 2.0.12.7 1998/11/06 15:07:57 belabas Exp belabas $ */
+
+#define PARI_OLD_GEN
#include "pari.h"
#include "anal.h"
diff -pru ./src.ini/modules/elliptic.c ./src/modules/elliptic.c
--- ./src.ini/modules/elliptic.c Fri Nov 6 10:09:08 1998
+++ ./src/modules/elliptic.c Sun Nov 8 21:14:58 1998
@@ -6,6 +6,8 @@
/********************************************************************/
/********************************************************************/
/* $Id: elliptic.c,v 2.0.12.7 1998/11/06 15:07:57 belabas Exp belabas $ */
+
+#define PARI_OLD_GEN
#include "pari.h"
void
diff -pru ./src.ini/modules/galois.c ./src/modules/galois.c
--- ./src.ini/modules/galois.c Fri Nov 6 10:09:00 1998
+++ ./src/modules/galois.c Sun Nov 8 21:15:22 1998
@@ -4,6 +4,8 @@
/* */
/**************************************************************/
/* $Id: galois.c,v 2.0.12.7 1998/11/06 15:07:57 belabas Exp belabas $ */
+
+#define PARI_OLD_GEN
#include "pari.h"
#include <fcntl.h>
diff -pru ./src.ini/modules/kummer.c ./src/modules/kummer.c
--- ./src.ini/modules/kummer.c Fri Nov 6 10:09:02 1998
+++ ./src/modules/kummer.c Sun Nov 8 21:15:28 1998
@@ -6,6 +6,8 @@
/*******************************************************************/
/*******************************************************************/
/* $Id: kummer.c,v 2.0.12.7 1998/11/06 15:07:57 belabas Exp belabas $ */
+
+#define PARI_OLD_GEN
#include "pari.h"
static long rc,gc,ell,degK,degKz,m,d,ru,rv,lraycyc,vnf,dv,nbcol,lSml2;
diff -pru ./src.ini/modules/mpqs.c ./src/modules/mpqs.c
--- ./src.ini/modules/mpqs.c Fri Nov 6 10:09:04 1998
+++ ./src/modules/mpqs.c Sun Nov 8 21:15:36 1998
@@ -29,6 +29,8 @@
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*/
/* $Id: mpqs.c,v 2.0.12.7 1998/11/06 15:07:57 belabas Exp belabas $ */
+
+#define PARI_OLD_GEN
#include "pari.h"
#ifndef SEEK_SET
diff -pru ./src.ini/modules/nffactor.c ./src/modules/nffactor.c
--- ./src.ini/modules/nffactor.c Fri Nov 6 10:09:04 1998
+++ ./src/modules/nffactor.c Sun Nov 8 21:15:40 1998
@@ -7,6 +7,8 @@
/*******************************************************************/
/*******************************************************************/
/* $Id: nffactor.c,v 2.0.12.7 1998/11/06 15:07:57 belabas Exp belabas $ */
+
+#define PARI_OLD_GEN
#include "pari.h"
/* rnfminpoly PAS ENCORE UTILISE */
diff -pru ./src.ini/modules/stark.c ./src/modules/stark.c
--- ./src.ini/modules/stark.c Fri Nov 6 10:09:06 1998
+++ ./src/modules/stark.c Sun Nov 8 21:15:10 1998
@@ -7,6 +7,8 @@
/*******************************************************************/
/*******************************************************************/
/* $Id: stark.c,v 2.0.12.7 1998/11/06 15:07:57 belabas Exp belabas $ */
+
+#define PARI_OLD_GEN
#include "pari.h"
/********************************************************************/
diff -pru ./src.ini/modules/subfield.c ./src/modules/subfield.c
--- ./src.ini/modules/subfield.c Fri Nov 6 10:09:06 1998
+++ ./src/modules/subfield.c Sun Nov 8 21:15:48 1998
@@ -8,6 +8,8 @@
/*******************************************************************/
/*******************************************************************/
/* $Id: subfield.c,v 2.0.12.7 1998/11/06 15:07:57 belabas Exp belabas $ */
+
+#define PARI_OLD_GEN
#include "pari.h"
#ifdef __WIN32
# include <io.h> /* for open, read, close */
diff -pru ./src.ini/modules/thue.c ./src/modules/thue.c
--- ./src.ini/modules/thue.c Fri Nov 6 10:09:06 1998
+++ ./src/modules/thue.c Sun Nov 8 21:15:54 1998
@@ -5,6 +5,8 @@
* The last part of the program (bnfisintnorm) was written by K. Belabas.
*/
/* $Id: thue.c,v 2.0.12.7 1998/11/06 15:07:57 belabas Exp belabas $ */
+
+#define PARI_OLD_GEN
#include "pari.h"
static int curne,r,s,t,deg,Prec,ConstPrec,numroot;
--- ./examples/matexp.c.bak Thu Jul 23 08:40:00 1998
+++ ./examples/matexp.c Sun Nov 8 23:26:16 1998
@@ -1,38 +1,42 @@
+#define PARI_OLD_GENx
#include "pari.h"
GEN
-matexp(GEN x,long prec)
+matexp(valMAT *x,long prec)
{
long lx=lg(x),i,k,n, ltop = avma;
- GEN y,r,s,p1,p2;
+ GEN y,s,p1,p2;
+ valREAL *r;
/* check that x is a square matrix */
if (typ(x) != t_MAT) err(typeer,"matexp");
if (lx == 1) return cgetg(1, t_MAT);
- if (lx != lg(x[1])) err(talker,"not a square matrix");
-
+ if (lx != lg(x->elt[0])) err(talker,"not a square matrix");
+ lx--;
+
/* convert x to real or complex of real and compute its L2 norm */
- s = gzero; r = cgetr(prec+1); affsr(1,r); x = gmul(r,x);
- for (i=1; i<lx; i++)
- s = gadd(s, gnorml2((GEN)x[i]));
+ s = gzero; r = NEWvalREAL(prec-1); affsr(1,r);
+ x = (valMAT*)gmul((GEN)r,(GEN)x);
+ for (i=0; i<lx; i++)
+ s = gadd(s, gnorml2((GEN)x->elt[i]));
if (typ(s) == t_REAL) setlg(s,3);
s = gsqrt(s,3); /* we do not need much precision on s */
/* if s<1 we are happy */
k = expo(s);
- if (k < 0) { n = 0; p1 = x; }
- else { n = k+1; p1 = gmul2n(x,-n); setexpo(s,-1); }
+ if (k < 0) { n = 0; p1 = (GEN)x; }
+ else { n = k+1; p1 = gmul2n((GEN)x,-n); setexpo(s,-1); }
/* initializations before the loop */
- y = gscalmat(r,lx-1); /* creates scalar matrix with r on diagonal */
- p2 = p1; r = s; k = 1;
+ y = gscalmat((GEN)r,lx); /* creates scalar matrix with r on diagonal */
+ p2 = p1; r = (valREAL *)s; k = 1;
y = gadd(y,p2);
/* now the main loop */
while (expo(r) >= -BITS_IN_LONG*(prec-1))
{
k++; p2 = gdivgs(gmul(p2,p1),k);
- r = gdivgs(gmul(s,r),k); y = gadd(y,p2);
+ r = (valREAL *)gdivgs(gmul(s,(GEN)r),k); y = gadd(y,p2);
}
/* now square back n times if necessary */
@@ -49,11 +53,11 @@ main()
/* take a stack of 10^6 bytes, no prime table */
pari_init(1000000, 2);
printf("precision of the computation in decimal digits:\n");
- d = itos(lisGEN(stdin));
+ d = itos((valINT *)lisGEN(stdin));
if (d > 0) prec = (long)(d*pariK1+3);
printf("input your matrix in GP format:\n");
- x = matexp(lisGEN(stdin), prec);
+ x = matexp((valMAT *)lisGEN(stdin), prec);
sor(x, 'g', d, 0);
exit(0);