Initial import.

This commit is contained in:
Jerry James 2014-02-14 12:17:12 -07:00
parent 7cd30fd8ae
commit 8d6f9f081f
12 changed files with 2982 additions and 0 deletions

1
.gitignore vendored
View File

@ -0,0 +1 @@
/qepcad-B.1.69.tar.gz

387
qepcad-B-attr.patch Normal file
View File

@ -0,0 +1,387 @@
--- ./extensions/rend/rend.h.orig 2012-03-16 06:49:31.000000000 -0600
+++ ./extensions/rend/rend.h 2013-08-28 11:34:57.057516390 -0600
@@ -34,7 +34,7 @@ extern "C" {
#include <iostream>
#include <sstream>
-istream& qein(); // fetches the current qepcad istream object
+istream& qein() __pure; // fetches the current qepcad istream object
class singlelinestream : public istringstream
{
--- ./extensions/rend/Rend_Cell.h.orig 2012-03-16 06:49:31.000000000 -0600
+++ ./extensions/rend/Rend_Cell.h 2013-08-30 14:37:28.376780785 -0600
@@ -49,8 +49,8 @@ public:
Rend_Cell& operator[](int i); /* gives child from index */
Rend_Cell* neighbor_l(); /* returns left neighbor cell */
Rend_Cell* neighbor_r(); /* returns right neighbor cell */
- int array_index(); /* returns i such that
- parent->child[i] is the cell */
+ int array_index() __pure; /* returns i such that
+ parent->child[i] is the cell */
void set_extents(Word J);
void out_descrip(Rend_Win &W, ostream &out, Mapper &M);
void out_descrip_ps(Rend_Win &W, ostream &out, Mapper &M);
--- ./extensions/adj2d/truthbytop/truthbytop.h.orig 2012-03-16 06:49:32.000000000 -0600
+++ ./extensions/adj2d/truthbytop/truthbytop.h 2013-08-30 09:41:55.321108153 -0600
@@ -4,13 +4,13 @@
#include "adj2D.h"
void GADDVERTEX(Word v, Word l, Word *G_);
-Word GSTACKHANDLE(Word i, Word G_);
+Word GSTACKHANDLE(Word i, Word G_) __pure;
Word GVERTEXHANDLE(Word v, Word G_);
Word GVERTEXLABEL(Word v, Word G_);
void GNEWLABEL(Word v, Word l, Word G_);
void GADDEDGE(Word e, Word G_);
Word GSUCCLIST(Word v, Word G_);
-Word vert2dim(Word v);
+Word vert2dim(Word v) __pure;
Word GPREDLIST(Word v, Word G_);
#endif
--- ./extensions/adj2d/adj2D.h.orig 2012-03-16 06:49:32.000000000 -0600
+++ ./extensions/adj2d/adj2D.h 2013-08-30 14:35:45.336575945 -0600
@@ -25,7 +25,7 @@ Word ADJ_2D1P2(Word U, Word V, Word w_l,
Word ADJ_2D1P3(Word U, Word w_l, Word B);
Word ADJ_2D1_COMPLETE(Word c, Word c_l, Word c_r, Word P, Word J);
Word ADJ_2D1_SIMPLE(Word U, Word V, Word w_l, Word B);
-Word CWD_VECTOR_Q(Word u, Word v);
+Word CWD_VECTOR_Q(Word u, Word v) __pure;
Word EQUAL_ON_ONES(Word u, Word v);
Word LDCOEFMASK(Word c, Word P, Word J);
Word LDCOEFMASK(Word c, Word P, Word J);
@@ -34,13 +34,13 @@ Word P1(Word U, Word V, Word W, Word v_l
Word P2(Word x_l, Word x_r, Word U, Word V, Word W, Word v_l, Word B);
Word P3(Word U, Word V, Word W, Word v_l, Word B);
Word P4(Word U, Word V, Word W, Word v_l, Word B);
-Word SUM_NORM_SP(Word v);
+Word SUM_NORM_SP(Word v) __pure;
Word VECTOR_DIF(Word u, Word v);
Word VECTOR_DIF_S(Word u, Word v, Word *f);
-Word VECTOR_LTEQ(Word u, Word v);
+Word VECTOR_LTEQ(Word u, Word v) __pure;
Word VECTOR_NEG(Word u);
-Word VECTOR_ODD_E(Word v_);
-Word VECTOR_SEMI_COMP(Word u, Word v);
+Word VECTOR_ODD_E(Word v_) __pure;
+Word VECTOR_SEMI_COMP(Word u, Word v) __pure;
Word VECTOR_SUM(Word u, Word v);
Word VECTOR_S_PROD(Word s, Word v);
Word ZERO_VECTOR(Word n);
@@ -55,7 +55,7 @@ Word RIIFACMA(Word I, Word A, Word t, Wo
Word RIIFACMABR(Word P, Word J, Word K, Word *H, Word *I);
Word SPRLC(Word c);
Word ADJ2DITOEL(Word L, Word c1, Word c0);
-Word CCTV(Word C);
+Word CCTV(Word C) __pure;
void CTVPROPUP(Word C, Word t, Word N, Word by);
void TVCLOSURE1D(Word D, Word P, Word J, Word k, Word t);
void TVCLOSURE1DS(Word D, Word P, Word J, Word k, Word t);
--- ./extensions/sfext/minhit/MINHITSETSRDR.c.orig 2012-03-16 06:49:31.000000000 -0600
+++ ./extensions/sfext/minhit/MINHITSETSRDR.c 2013-08-30 09:28:39.624633978 -0600
@@ -24,6 +24,8 @@ Note: The point is that not only sortin
#define BDCOMP(a,b) ((a) > (b) ? 1 : ((a) < (b) ? -1 : 0))
#define MC_FAIL 0
+static Word comp(Word a, Word b) __pure;
+
static Word comp(Word a, Word b) {
Word ap,bp,t,q;
ap = a; bp = b;
--- ./extensions/sfext/extlang/CLOSESTINDEX.c.orig 2012-03-16 06:49:31.000000000 -0600
+++ ./extensions/sfext/extlang/CLOSESTINDEX.c 2013-08-30 09:20:44.193946578 -0600
@@ -10,6 +10,8 @@ cp: the ESCAD cell in L with index close
#include "extlang.h"
+static Word comp(Word u, Word v) __pure;
+
static Word comp(Word u, Word v)
{
Word r,t,U,V,A,B,a,b;
--- ./extensions/sfext/sfcons/ESPCADDOPFSUFF.c.orig 2012-03-16 06:49:31.000000000 -0600
+++ ./extensions/sfext/sfcons/ESPCADDOPFSUFF.c 2013-08-30 09:32:29.048483014 -0600
@@ -17,7 +17,7 @@ outputs
#include "qepcad.h"
#include "espcad.h"
-static Word comp(Word A, Word B);
+static Word comp(Word A, Word B) __pure;
#define BDCOMP(a,b) ((a) > (b) ? 1 : ((a) < (b) ? -1 : 0))
Word ESPCADDOPFSUFF(Word P, Word K)
--- ./extensions/sfext/sort/BVCI1.c.orig 2012-03-16 06:49:31.000000000 -0600
+++ ./extensions/sfext/sort/BVCI1.c 2013-08-28 13:12:30.385244306 -0600
@@ -12,9 +12,9 @@ b : -1 if u < v in lex order, 0 if u = v
======================================================================*/
#include "qepcad.h"
-Word BVCI1(Word *u_, Word *v_, Word n)
+Word BVCI1(const Word *u_, const Word *v_, Word n)
{
- Word *w,*u,*v;
+ const Word *w,*u,*v;
u = u_+1;
v = v_+1;
w = u + n;
--- ./extensions/sfext/sort/BVC.c.orig 2012-03-16 06:49:31.000000000 -0600
+++ ./extensions/sfext/sort/BVC.c 2013-08-28 13:12:21.033150320 -0600
@@ -12,9 +12,9 @@ b : -1 if u < v in lex order, 0 if u = v
======================================================================*/
#include "mysort.h"
-Word BVC(Word *u_, Word *v_, Word n)
+Word BVC(const Word *u_, const Word *v_, Word n)
{
- Word *w,*u,*v;
+ const Word *w,*u,*v;
u = u_;
v = v_;
w = u + n;
--- ./extensions/sfext/addpol/MINPFSETNSC.c.orig 2012-03-16 06:49:31.000000000 -0600
+++ ./extensions/sfext/addpol/MINPFSETNSC.c 2013-08-28 16:29:15.985921210 -0600
@@ -25,6 +25,8 @@ outputs
#define BDCOMP(a,b) ((a) > (b) ? 1 : ((a) < (b) ? -1 : 0))
#define CFLCT 5
+static Word comp1(Word a, Word b) __pure;
+
static Word comp1(Word a,Word b) {
Word A,B,t;
A = RED(a); B = RED(b); t = 0;
--- ./extensions/sfext/mysort.h.orig 2012-03-16 06:49:31.000000000 -0600
+++ ./extensions/sfext/mysort.h 2013-08-28 11:29:59.907828961 -0600
@@ -52,7 +52,7 @@ Side Effects
Word GMSDS(Word *A, Word m, Word (*C)(Word,Word));
-extern Word BVC(Word *u_,Word *v_,Word n);
+extern Word BVC(const Word *u_,const Word *v_,Word n) __pure;
extern void BVIS(Word **A,Word m,Word n);
-extern Word BVCI1(Word *u_,Word *v_,Word n);
+extern Word BVCI1(const Word *u_,const Word *v_,Word n) __pure;
extern void BVISI1(Word **A,Word m,Word n);
--- ./extensions/newadj/HATEST.c.orig 2012-03-16 06:49:31.000000000 -0600
+++ ./extensions/newadj/HATEST.c 2013-08-30 13:26:52.518542789 -0600
@@ -1,5 +1,5 @@
#include "newadj2D.h"
-Word ISSECTOR(Word C) { return LAST(LELTI(C,INDX)) % 2; }
+static Word __pure ISSECTOR(Word C) { return LAST(LELTI(C,INDX)) % 2; }
void SAMPLECWR(Word c);
void strippedAFLWR(Word M,Word I,Word N,Word a,Word A);
void ANDWRITExx(Word M,Word I,Word n);
--- ./source/qepcad.h.orig 2012-03-16 06:49:30.000000000 -0600
+++ ./source/qepcad.h 2013-08-30 14:39:10.225632400 -0600
@@ -134,10 +134,10 @@ void IPLLDWRMOD(Word V, Word A);
void IPLSRP(Word A, Word *s_, Word *P_);
Word IPRESPRS(Word r, Word A, Word B);
Word IPRNEVAL(BDigit r, Word P, BDigit t, Word b);
-Word ISATOMF(Word F);
+Word ISATOMF(Word F) __pure;
Word ISDESIRED(Word c, Word C);
Word ISNULL(Word L);
-Word ISPRIMIT(Word s);
+Word ISPRIMIT(Word s) __pure;
void IUPRWR(Word v, Word A, Word I);
Word IXCOMP(Word c1, Word c2);
void LABELWR(Word N, Word I);
@@ -148,7 +148,7 @@ Word LOAR(Word k, Word Q, Word F);
Word LPFTOLRLP(Word r, Word L);
Word LPFZCALL(Word c, Word P, Word D);
Word LUNION(Word L1, Word L2);
-Word LVCOMP(Word c1, Word c2);
+Word LVCOMP(Word c1, Word c2) __pure;
Word MAFDIF(Word p,Word a,Word b);
Word MAFHOM(Word p,Word M,Word a);
Word MAFINV(Word p,Word M,Word a);
@@ -158,7 +158,7 @@ Word MAFUPEPROD(Word p,Word M,Word a,Wor
Word MAFUPGCD(Word p,Word M,Word A,Word B);
Word MAFUPMON(Word p, Word M, Word A);
Word MAFUPNR(Word p, Word M, Word A, Word B);
-Word MATCHWORD(Word A, Word B);
+Word MATCHWORD(Word A, Word B) __pure;
Word MBPROD(Word A, Word B);
Word MCELL(Word a1, Word a2, Word a3, Word a4, Word a5, Word a6, Word a7, Word a8, Word a9, Word a10);
Word MKMUL(Word E, Word k);
@@ -169,7 +169,7 @@ Word MPOLY(Word a1, Word a2, Word a3, Wo
Word MUPNR(Word p,Word A,Word B);
Word MVLMA(Word H_t, Word H_f);
Word MVLMASF(Word H_t, Word H_f);
-Word NEGRLOP(Word T);
+Word NEGRLOP(Word T) __constfunc;
void NEXTCELL(Word D, Word c, Word *cp_, Word *t_);
void NEXTCOMB(Word n, Word r, Word Rs, Word *R_, Word *q_);
void NEXTLEXI(Word l, Word Rs, Word *R_, Word *q_);
@@ -188,12 +188,12 @@ void PARENTWR(Word P);
void PCADWR(Word c);
void PCADSWR(Word c);
Word PFCOICQ(Word r, Word A, Word c, Word P, Word D);
-Word PFPRDQ(Word P);
+Word PFPRDQ(Word P) __pure;
void PIMPTBLWR(Word C, Word R, Word V);
void PLABELWR(Word P);
Word PLDEG(Word P);
Word PLPOS(Word P, Word i);
-Word PPPRDQ(Word P);
+Word PPPRDQ(Word P) __pure;
void PQFF(Word F, Word L, Word *Lp_);
void PRDADJINFO();
void PRDCC();
@@ -209,7 +209,7 @@ void PRLDB();
void PRODWR(Word v);
void PROMPT();
void PROPAGATE(Word D, Word c, Word k, Word f, Word Q);
-void PRQUIT();
+void PRQUIT() __noreturn;
void PRTRACEA();
void PRTRACED();
void PRUDB();
@@ -217,7 +217,7 @@ void PRWHATIS();
void PSIGTBL(Word c, Word f, Word T_t, Word T_f, Word *Tp_t_, Word *Tp_f_);
void PSIMREP(Word r, Word P, Word *rs_, Word *Ps_);
void QEGLOBALS();
-const char* QEPCADBVersion();
+const char* QEPCADBVersion() __constfunc;
Word QFFFSOP(Word H, Word P, Word f);
void QFFLPWR(Word N, Word V, Word F);
void QFFLWR(Word N, Word V, Word F);
@@ -239,7 +239,7 @@ Word RMMPF(Word P, Word k);
Word RMMPJ(Word J, Word k);
Word RMNOTOP(Word F);
Word RMNOTOPN(Word F);
-Word RNFAF(Word a);
+Word RNFAF(Word a) __pure;
Word RVSPTSVSP(BDigit r, Word P, BDigit s);
void SALGF(Word f, Word F, Word *G_, Word *H_);
void SAMPLEWR(Word r, Word s, Word PCNUMDEC);
@@ -263,7 +263,7 @@ Word SOPFST(Word T);
Word SOSRSUBS(Word L);
Word SOSRSUPS(Word L);
void SPFRPSFT(Word P, Word c, Word k, Word *R_, Word *F_);
-Word SSCOMP(Word c1, Word c2);
+Word SSCOMP(Word c1, Word c2) __pure;
Word STACKMULT(Word C);
void STACKMWR(Word M);
Word STFSOP(Word H);
@@ -630,9 +630,9 @@ Word NEWDERIV(Word KT, Word P, Word Pb,
void STRIPPED_BIGLOOP(Word Jb, Word Pb, Word P0, Word D0, Word N, Word *P_, Word *D_);
Word CADSCL(Word C, Word i);
Word CELLFINDEX(Word D, Word I);
-Word CRCELL(Word d);
+Word CRCELL(Word d) __pure;
void CSN(Word c, Word D, Word *b_, Word *d_);
-Word BZWAZ(Word a, Word b);
+Word BZWAZ(Word a, Word b) __pure;
void LISTOFCWTV(Word C, Word *Lt_, Word *Lf_);
BDigit NUMSOLPOINTS(Word D, BDigit k);
Word LPFOWCS(Word C, Word B, Word P);
@@ -669,7 +669,7 @@ void LTFOCWTVMARK(Word C, Word *Lt_, Wor
Word OPARTLIST(Word n);
Word PARTLIST(Word n);
Word SCAD2ESCAD(Word P, Word Ps, Word Ds, Word A);
-Word SCCONFLICTQ(Word L1, Word L2);
+Word SCCONFLICTQ(Word L1, Word L2) __pure;
Word SCFILTER(Word c, Word d);
void SETCADTV2MARK(Word D);
void SETMARK2FMA(Word D, Word F, Word P);
@@ -693,7 +693,7 @@ void CSORTSS(Word **A, Word a, Word L);
Word ICSIGDIFFL(Word **A, Word a, Word k);
Word MINPFSET(Word P, Word S, Word D, Word N);
Word PWUDSCWCP(Word D, Word P, Word N);
-Word SIGEQUALOL(Word *A, Word *B, Word L);
+Word SIGEQUALOL(Word *A, Word *B, Word L) __pure;
void TDTOD(Word P, Word N, Word ***P2_, Word *P1_, Word *k_);
Word FMA2DNF(Word F);
Word FMA2QUNF(Word F, Word P);
@@ -705,8 +705,8 @@ Word FMADMQ(Word F,Word C,Word k,Word P)
Word singleFMADMQ(Word F,Word C,Word k,Word P);
void FMAIWRITE(Word F);
Word FMALEVEL(Word F);
-Word FMAOPCOMBINE(Word F);
-Word FMAQEXTAF(Word F) ;
+Word FMAOPCOMBINE(Word F) __pure;
+Word FMAQEXTAF(Word F) __pure;
Word FMAPOLLIST(Word F, Word P);
void FMAREAD(Word P,Word V, Word *F_,Word *t_);
Word FMASMOOTH(Word F);
@@ -723,9 +723,9 @@ void FMAWRITENEWLINEp(Word F, Word P, Wo
void FMAWRITEQEIN(Word F, Word P, Word V);
void FMAWRITEp(Word F, Word P, Word V, Word flag);
Word FMA_REMCONST(Word F);
-Word FTYPEINFO(Word A);
+Word FTYPEINFO(Word A) __pure;
void IPDWRITELATEX(Word r, Word A, Word V);
-Word POLINDEX2SIGINDEX(Word P_i, Word j);
+Word POLINDEX2SIGINDEX(Word P_i, Word j) __pure;
void SETTV2FMA(Word D, Word P, Word F, Word k);
void SETORDERfromFMA(Word D,Word P,Word F,Word o);
void SETORDER(Word D,Word P,Word V);
@@ -739,7 +739,7 @@ Word RSFHSP(Word A, Word *Ab_);
Word CADCL(Word C, Word i);
Word CADFPCAD(Word D, Word P, Word S, Word I, Word Pb);
Word CADFPCADWI(Word D, Word P, Word S, Word I, Word Pb);
-Word CATV(Word c);
+Word CATV(Word c) __pure;
void CCADCON(Word n, Word P, Word C, Word *Ps_, Word *Cs_);
void CCADCONEXT(Word n, Word P, Word C, Word *Ps_, Word *Cs_, Word *N_);
void CCADCONFPFS(Word n, Word P, Word C, Word N, Word *Ps_, Word *Cs_);
@@ -749,7 +749,7 @@ Word CHTVQ(Word cs, Word b);
Word CTSEQ(Word as, Word bs);
void LTFOCALWTV(Word C, Word n, Word *Lt_, Word *Lf_);
void LTFOCWTV(Word C, Word *Lt_, Word *Lf_);
-Word PCADCFCADC(Word c, Word Cs);
+Word PCADCFCADC(Word c, Word Cs) __pure;
Word PCADCINDEX(Word c);
Word PCADCL(Word Cs, Word i);
Word PCADCSV(Word cs, Word Ps);
@@ -792,7 +792,7 @@ Word DOPFSUFF(Word P, Word K);
Word ESPCADDOPFSUFF(Word P, Word K);
Word GEOPARTII(Word F, Word S, Word P, Word Fs);
Word GEODATA(Word c, Word A, Word P);
-Word GEOHEURISTIC(Word a, Word b);
+Word GEOHEURISTIC(Word a, Word b) __pure;
Word GEOMERGE(Word c,Word G,Word P);
Word GEOFIT(Word c,Word G,Word P);
Word ATOMFILTER(Word L_A,Word L_C,Word P);
@@ -820,7 +820,7 @@ Word NECCONDS(Word L_T, Word L_F, Word L
Word DOPFSUFF_FULLD(Word P, Word K);
Word ESPCADDOPFSUFF_FULLD(Word P, Word K);
Word BVC(Word *u_, Word *v_, Word n);
-Word BVCI1(Word *u_, Word *v_, Word n);
+Word BVCI1(Word *u_, Word *v_, Word n) __pure;
void BVIS(Word **A, Word m, Word n);
void BVISI1(Word **A, Word m, Word n);
void GIS(Word *A, Word m, Word (*C)(Word,Word));
--- ./source/main/qepcadcls.h.orig 2012-03-16 06:49:30.000000000 -0600
+++ ./source/main/qepcadcls.h 2013-08-30 13:29:46.950334457 -0600
@@ -213,7 +213,7 @@ Word NMATOM; /* Number of atom
void CHCELL(Word cs, Word *c_, Word *t_);
void ECLI(Word D, Word *c_, Word *t_);
BDigit SCREEN(Word c);
- BDigit SCREENBYQUANTIFIER(Word c);
+ BDigit SCREENBYQUANTIFIER(Word c) __pure;
Word ISFECLI(Word D);
Word INITPCAD();
void EVALUATE(Word c, Word k, Word F, Word A);
--- ./source/ticad/QFFTEV.c.orig 2012-03-16 06:49:30.000000000 -0600
+++ ./source/ticad/QFFTEV.c 2013-08-30 13:34:05.245953999 -0600
@@ -12,7 +12,7 @@ Quantifier-Free Formula Trial Evaluation
\parm{t} is the trial truth value of $F$ on the cell $c$.
======================================================================*/
#include "qepcad.h"
-static Word zeroQ(Word s, Word I_L);
+static Word zeroQ(Word s, Word I_L) __pure;
static Word ATOMETFEVAL(Word Q, Word D, Word c, Word F);
Word QepcadCls::QFFTEV(Word F, Word c, Word k)
--- ./source/userint/PRQUIT.c.orig 2012-03-16 06:49:30.000000000 -0600
+++ ./source/userint/PRQUIT.c 2013-08-30 14:40:03.857550869 -0600
@@ -13,7 +13,4 @@ Step1: /* Process. */
ENDQEPCAD();
ENDSACLIB(SAC_FREEMEM);
exit(0);
-
-Return: /* Prepare for return. */
- return;
}

125
qepcad-B-destructor.patch Normal file
View File

@ -0,0 +1,125 @@
--- ./plot2d/plot.cc.orig 2012-03-16 06:49:32.000000000 -0600
+++ ./plot2d/plot.cc 2013-08-30 16:51:16.409298807 -0600
@@ -37,6 +37,7 @@ class CADELT
public:
virtual bool read(istream &in) = 0;
virtual void glRend(const CADColors &C) = 0;
+ virtual ~CADELT() {}
};
class SNoverSR : public CADELT
--- ./extensions/rend/Rend_Sample.cc.orig 2012-03-16 06:49:31.000000000 -0600
+++ ./extensions/rend/Rend_Sample.cc 2013-08-30 16:59:11.255885740 -0600
@@ -40,11 +40,6 @@ Rend_Sample_1DS::Rend_Sample_1DS(Word C,
}
-Rend_Sample_1DS::~Rend_Sample_1DS()
-{
-
-}
-
/*************************************************************
** Refines I to 2^k or less, and returns binary rational
** middle of interval.
@@ -112,13 +107,6 @@ Rend_Sample_1DO::Rend_Sample_1DO(Rend_Ce
L.W = NIL;
}
-
-Rend_Sample_1DO::~Rend_Sample_1DO()
-{
-
-}
-
-
Word Rend_Sample_1DO::coordinate(int k)
{
Word e,j1,j2,J,kp = k;
@@ -178,11 +166,6 @@ Rend_Sample_2DS::Rend_Sample_2DS(Word C)
}
-Rend_Sample_2DS::~Rend_Sample_2DS()
-{
-
-}
-
/*************************************************************
** Refines I to 2^k or less, and returns binary rational
** lower endpoint.
@@ -237,11 +220,6 @@ Rend_Sample_2DC::Rend_Sample_2DC(Word C,
}
-Rend_Sample_2DC::~Rend_Sample_2DC()
-{
-
-}
-
Word Rend_Sample_2DC::coordinate(int k)
{
return L.W;
@@ -265,11 +243,6 @@ Rend_Sample_BR::Rend_Sample_BR(Word a)
N.W = a;
}
-Rend_Sample_BR::~Rend_Sample_BR()
-{
-
-}
-
Word Rend_Sample_BR::coordinate(int k)
{
return N.W;
--- ./extensions/rend/Rend_Sample.h.orig 2012-03-16 06:49:31.000000000 -0600
+++ ./extensions/rend/Rend_Sample.h 2013-08-30 16:58:37.015983821 -0600
@@ -32,7 +32,7 @@ class Rend_Sample
virtual Word coordinate(int k) = 0;
virtual Word round(int k,int roundup)
{ return this -> coordinate(k); }
- // virtual ~Rend_Sample() = 0;
+ virtual ~Rend_Sample() {}
};
class Rend_Sample_1DS : public Rend_Sample
@@ -49,7 +49,6 @@ private:
gcmemloc A,I;
public:
Rend_Sample_1DS(Word C, Word P);
- virtual ~Rend_Sample_1DS();
virtual Word coordinate(int k);
virtual Word round(int k, int roundup);
Word weakcompare(Word R);
@@ -66,7 +65,6 @@ public:
gcmemloc L;
public:
Rend_Sample_1DO(Rend_Cell *dad);
- virtual ~Rend_Sample_1DO();
virtual Word coordinate(int k);
};
@@ -86,7 +84,6 @@ private:
gcmemloc A,I;
public:
Rend_Sample_2DS(Word C);
- virtual ~Rend_Sample_2DS();
virtual Word coordinate(int k);
};
@@ -101,7 +98,6 @@ public:
gcmemloc L;
public:
Rend_Sample_2DC(Word C,Word P);
- virtual ~Rend_Sample_2DC();
virtual Word coordinate(int k);
void add_point(Word p);
void clear_points();
@@ -116,7 +112,6 @@ private:
gcmemloc N;
public:
Rend_Sample_BR(Word a);
- virtual ~Rend_Sample_BR();
virtual Word coordinate(int k);
};

11
qepcad-B-env.patch Normal file
View File

@ -0,0 +1,11 @@
--- ./source/main/BEGINQEPCAD.c.orig 2012-03-16 06:49:30.000000000 -0600
+++ ./source/main/BEGINQEPCAD.c 2013-07-18 16:57:34.694879193 -0600
@@ -98,7 +98,7 @@ void BEGINQEPCAD(int &argc, char**& argv
void QEPCAD_ProcessRC(int argc, char **argv)
{
char *qepath = getenv("qe");
- if (qepath == NULL) { FAIL("QEPCAD_ProcessRC","Environment variable qe not defined!"); }
+ if (qepath == NULL) { setenv("qe", "/usr/share/qepcad", 1); qepath = getenv("qe"); }
string rcFileName = qepath + string("/default.qepcadrc");
ifstream rcin(rcFileName.c_str());
if (!rcin) { return; }

132
qepcad-B-parens.patch Normal file
View File

@ -0,0 +1,132 @@
--- ./extensions/lift2D/IBPRRIOAP.c.orig 2012-03-16 06:49:32.000000000 -0600
+++ ./extensions/lift2D/IBPRRIOAP.c 2013-08-30 16:03:12.403968400 -0600
@@ -95,7 +95,7 @@ Step3: /* Isolate the roots of B(alpha,y
goto Return; }
/* get trend of first root */
- if (PDEG(B) % 2 == 0 && s == 1 || PDEG(B) % 2 == 1 && s == -1)
+ if ((PDEG(B) % 2 == 0 && s == 1) || (PDEG(B) % 2 == 1 && s == -1))
t1 = -1;
else
t1 = 1;
--- ./extensions/lift2D/modIBPRRIOAP.c.orig 2012-03-16 06:49:32.000000000 -0600
+++ ./extensions/lift2D/modIBPRRIOAP.c 2013-08-30 16:02:49.164007931 -0600
@@ -97,7 +97,7 @@ Step3: /* Isolate the roots of B(alpha,y
goto Return; }
/* get trend of first root */
- if (PDEG(B) % 2 == 0 && s == 1 || PDEG(B) % 2 == 1 && s == -1)
+ if ((PDEG(B) % 2 == 0 && s == 1) || (PDEG(B) % 2 == 1 && s == -1))
t1 = -1;
else
t1 = 1;
--- ./extensions/adj2d/truthbytop/BOUNDARY2D.c.orig 2012-03-16 06:49:32.000000000 -0600
+++ ./extensions/adj2d/truthbytop/BOUNDARY2D.c 2013-08-30 16:14:29.779797280 -0600
@@ -80,7 +80,7 @@ Step6: /* Split cell list by dimension.
tc++;
else
fc++; }
- if (tc > 0 && fc > 0 || GVERTEXLABEL(v,G) == TRUE && tc == 0)
+ if ((tc > 0 && fc > 0) || (GVERTEXLABEL(v,G) == TRUE && tc == 0))
GNEWLABEL(v,TRUE,G);
else
GNEWLABEL(v,FALSE,G); }
--- ./source/db/SINGULAR.c.orig 2012-03-16 06:49:30.000000000 -0600
+++ ./source/db/SINGULAR.c 2013-08-30 16:04:35.516826349 -0600
@@ -58,7 +58,7 @@ void SingularServer::reportStats(ostream
char peekNonWS(istream &in)
{
- char c; while((c = in.peek()) && c == ' ' || c == '\t' || c == '\n') in.get(); return c;
+ char c; while(c = in.peek() && (c == ' ' || c == '\t' || c == '\n')) in.get(); return c;
}
--- ./source/db/convenientstreams.h.orig 2012-03-16 06:49:30.000000000 -0600
+++ ./source/db/convenientstreams.h 2013-08-30 16:05:34.707724662 -0600
@@ -31,7 +31,7 @@ public:
string s = "";
char c = in.get();
if (opt == skipleadingws)
- while(c != EOF && (isspace(c) || c == '\\' && isspace(in.peek()))) c = in.get();
+ while(c != EOF && (isspace(c) || (c == '\\' && isspace(in.peek())))) c = in.get();
// States : 0 = normal, 1 = in comment, 2 = just read a backslash
int state = 0;
do {
--- ./source/proj/GROUPSAMEPJ.c.orig 2012-03-16 06:49:30.000000000 -0600
+++ ./source/proj/GROUPSAMEPJ.c 2013-08-30 16:10:24.459222092 -0600
@@ -46,7 +46,7 @@ BDigit PRJPNTEQUAL(Word A, Word B)
Word KR = LIST2(SECOND(aK),LIST2(1,1));
Word sL = AFSIGN(aM,aI,AFPEMV(1,aM,G,KL));
Word sR = AFSIGN(aM,aI,AFPEMV(1,aM,G,KR));
- return EQUAL(KL,KR) && sL == 0 || sL == 1 && sR == -1 || sL == -1 && sR == 1;
+ return (EQUAL(KL,KR) && sL == 0) || (sL == 1 && sR == -1) || (sL == -1 && sR == 1);
}
/* One primitive, the other not */
@@ -75,10 +75,10 @@ Step1: /* Group. */
{
ADV(Jt,&J2,&Jt);
Jt2 = LELTI(J2,PO_POLY);
- if (LELTI(J1,PO_TYPE) == PO_POINT && LELTI(J2,PO_TYPE) == PO_POINT
- && PRJPNTEQUAL(Js1,Jt2) ||
- LELTI(J1,PO_TYPE) != PO_POINT && LELTI(J2,PO_TYPE) != PO_POINT
- && EQUAL(Js1,Jt2))
+ if ((LELTI(J1,PO_TYPE) == PO_POINT && LELTI(J2,PO_TYPE) == PO_POINT
+ && PRJPNTEQUAL(Js1,Jt2)) ||
+ (LELTI(J1,PO_TYPE) != PO_POINT && LELTI(J2,PO_TYPE) != PO_POINT
+ && EQUAL(Js1,Jt2)))
{
SLELTI(J2,PO_PARENT,CONC(LELTI(J2,PO_PARENT),LELTI(J1,PO_PARENT)));
t = 1;
--- ./source/proj/PROJMCECmod.c.orig 2012-03-16 06:49:30.000000000 -0600
+++ ./source/proj/PROJMCECmod.c 2013-08-30 16:12:22.235018024 -0600
@@ -67,7 +67,7 @@ Step1: /* Obtain coefficients. */
t = 1; }
/* If r = 2 OR r-1 is in free variable space, the leading coefficient is always enough! */
- if (t && (r == 2 || (PCMZERROR && r-1 <= GVNFV))
+ if ((t && (r == 2 || (PCMZERROR && r-1 <= GVNFV)))
|| (experimentalExtensionFlag && qfrCheckNonNullified(r,Ap1,GVNA.W,GVNQFF.W,GVVL.W))
)
t = 0;
@@ -101,7 +101,7 @@ Step1: /* Obtain coefficients. */
tf = tf || (Q == FULLDE || Q == FULLDA);
/* Test 3: in free variable space when the PCMZERROR option is used */
- tf = tf || PCMZERROR && rp <= GVNFV;
+ tf = tf || (PCMZERROR && rp <= GVNFV);
/* Test 4: has no common zero with the system of all other coefficients */
if (!tf)
--- ./source/proj/PROJMCmod.c.orig 2012-03-16 06:49:30.000000000 -0600
+++ ./source/proj/PROJMCmod.c 2013-08-30 16:11:49.731074222 -0600
@@ -57,7 +57,7 @@ Step1: /* Obtain coefficients. */
t = 1; }
/* If r = 2 OR r-1 is in free variable space, the leading coefficient is always enough! */
- if (t && (r == 2 || (PCMZERROR && r-1 <= GVNFV))
+ if ((t && (r == 2 || (PCMZERROR && r-1 <= GVNFV)))
|| (experimentalExtensionFlag && qfrCheckNonNullified(r,Ap1,GVNA.W,GVNQFF.W,GVVL.W))
)
t = 0;
@@ -91,7 +91,7 @@ Step1: /* Obtain coefficients. */
tf = tf || (Q == FULLDE || Q == FULLDA);
/* Test 3: in free variable space when the PCMZERROR option is used */
- tf = tf || PCMZERROR && rp <= GVNFV;
+ tf = tf || (PCMZERROR && rp <= GVNFV);
/* Test 4: has no common zero with the system of all other coefficients */
if (!tf)
--- ./source/ticad/INITPCAD.c.orig 2012-03-16 06:49:30.000000000 -0600
+++ ./source/ticad/INITPCAD.c 2013-08-30 16:13:07.946938949 -0600
@@ -14,7 +14,7 @@ Word QepcadCls::INITPCAD()
Word D, tv;
Step0: /* Determine truth value! */
- if (GVNA == FALSE || GVNA != NIL && LELTI(GVNA,1) == NEOP && LELTI(GVNA,2) == 0) tv = NA;
+ if (GVNA == FALSE || (GVNA != NIL && LELTI(GVNA,1) == NEOP && LELTI(GVNA,2) == 0)) tv = NA;
else if (LELTI(GVNQFF,1) == NEOP && LELTI(GVNQFF,2) == 0) tv = FALSE;
else if (LELTI(GVNQFF,1) == EQOP && LELTI(GVNQFF,2) == 0) tv = TRUE;
else tv = UNDET;

56
qepcad-B-return.patch Normal file
View File

@ -0,0 +1,56 @@
--- ./extensions/sfext/formula/FTYPEINFO.c.orig 2012-03-16 06:49:31.000000000 -0600
+++ ./extensions/sfext/formula/FTYPEINFO.c 2013-08-30 15:48:28.420527430 -0600
@@ -23,6 +23,6 @@ Word FTYPEINFO(Word A)
return TRUE;
if (FIRST(A) == FALSE)
return FALSE;
-
+ FAIL("FTYPEINFO","Unknown formula type!");
}
--- ./source/qepcad.h.orig 2013-08-30 14:39:10.225632400 -0600
+++ ./source/qepcad.h 2013-08-30 16:17:46.258481805 -0600
@@ -34,7 +34,7 @@ Word AFPNIPDB(Word Mb, Word B);
void AFUPGCDB(Word M, Word A, Word B, Word *C_, Word *Ab_, Word *Bb_);
void AFUPLM(Word M, Word A, Word *L_, Word *P_);
void AFUPRWR(Word a, Word v, Word A, Word I);
-Word AFUPSFNDB(Word M, Word B, Word *t_, Word *Bt_, Word *F_);
+void AFUPSFNDB(Word M, Word B, Word *t_, Word *Bt_, Word *F_);
Word APPEND(Word P, Word k, Word R);
void APPENDEC(Word P, Word k, Word R, Word *Ps_, Word *F_);
void ATOMFLWR(Word N, Word V, Word A);
--- ./source/db/AFUPSFNDB.c.orig 2012-03-16 06:49:30.000000000 -0600
+++ ./source/db/AFUPSFNDB.c 2013-08-30 16:18:05.419450506 -0600
@@ -5,7 +5,7 @@ AFUPSFN with Database.
======================================================================*/
#include "qepcad.h"
-Word AFUPSFNDB(Word M, Word B, Word *t_, Word *Bt_, Word *F_)
+void AFUPSFNDB(Word M, Word B, Word *t_, Word *Bt_, Word *F_)
{
Word t,Bt,F;
--- ./source/db/SingSacPolicy.h.orig 2012-03-16 06:49:30.000000000 -0600
+++ ./source/db/SingSacPolicy.h 2013-08-30 16:20:40.923189610 -0600
@@ -28,17 +28,17 @@ public:
Word IPRES(Word r, Word A, Word B)
{
if (r > 2)
- sing->IPRES(r,A,B);
+ return sing->IPRES(r,A,B);
else
- sac ->IPRES(r,A,B);
+ return sac ->IPRES(r,A,B);
}
Word IPDSCR(Word r, Word A)
{
if (r > 2)
- sing->IPDSCR(r,A);
+ return sing->IPDSCR(r,A);
else
- sac ->IPDSCR(r,A);
+ return sac ->IPDSCR(r,A);
}
Word IPFACTGB(Word r, Word I, Word N)

78
qepcad-B-signed.patch Normal file
View File

@ -0,0 +1,78 @@
--- ./plot2d/plot.cc.orig 2013-08-30 16:51:16.409298807 -0600
+++ ./plot2d/plot.cc 2013-08-30 16:55:10.593713039 -0600
@@ -134,7 +134,7 @@ void* readdata(void *x)
pthread_mutex_lock(&M);
swap(CE,E);
pthread_mutex_unlock(&M);
- for(int i = 0; i < E.size(); i++) delete E[i];
+ for(size_t i = 0; i < E.size(); i++) delete E[i];
E.clear(); }
else if (c == 'E') { /******* Exit! *******************/
return 0;
@@ -155,7 +155,7 @@ void display()
{
pthread_mutex_lock(&M);
glClear(GL_COLOR_BUFFER_BIT);
- for(int i = 0; i < CE.size(); i++)
+ for(size_t i = 0; i < CE.size(); i++)
CE[i]->glRend(Colors);
pthread_mutex_unlock(&M);
glutSwapBuffers();
@@ -286,7 +286,7 @@ void SNoverSR::glRend(const CADColors &C
// 128 or so points that can appear.
C.glSetColor(colorType,'D');
glBegin(GL_LINE_STRIP);
- for(int i = 0; i < V.size(); i++)
+ for(size_t i = 0; i < V.size(); i++)
glVertex2(V[i]);
glEnd();
}
@@ -328,7 +328,7 @@ bool SRoverSR::read(istream &in)
else
{
cerr << "Sector over sector in unknown format!" << endl;
- for(int i = 0; i < V.size(); i++)
+ for(size_t i = 0; i < V.size(); i++)
cerr << V[i] << endl;
exit(1);
}
--- ./source/db/SINGULAR.c.orig 2013-08-30 16:04:35.516826349 -0600
+++ ./source/db/SINGULAR.c 2013-08-30 16:22:52.913963575 -0600
@@ -67,7 +67,7 @@ Word readSingularPoly(Word r, Word V, is
Word A, t;
string s;
in >> s;
- for(int i = 0; i < s.length(); ++i)
+ for(size_t i = 0; i < s.length(); ++i)
if (s[i] == '*') s[i] = ' ';
s += ".\n";
istringstream si(s);
@@ -108,7 +108,7 @@ string WritePolyForSingular(Word r, Word
out = sout.str();
}
// Put in * symbols
- for(int i = 1; i < out.length() - 1; ++i)
+ for(size_t i = 1; i < out.length() - 1U; ++i)
if (out[i] == ' ' && out[i+1] != '+' && out[i+1] != '-'
&& out[i-1] != '+' && out[i-1] != '-'
)
--- ./source/saclib/gcword.c.orig 2012-03-16 06:49:30.000000000 -0600
+++ ./source/saclib/gcword.c 2013-08-30 16:24:04.393840511 -0600
@@ -30,7 +30,7 @@ void gcw_MARK();
}
static vector<Word*> G;
-static int lim = 10;
+static size_t lim = 10;
void clean()
{
@@ -62,7 +62,7 @@ void gcw_MARK()
{
// SWRITE("gcw size is: ");IWRITE(G.size()); SWRITE("\n");
clean();
- for(int i = 0; i < G.size(); i++)
+ for(size_t i = 0; i < G.size(); i++)
if (*G[i] > BETA && *G[i] < BETAp && (*G[i] & 1))
MARK(*G[i]);

22
qepcad-B-syntax.patch Normal file
View File

@ -0,0 +1,22 @@
--- ./source/main/BEGINQEPCAD.c.orig 2013-07-18 16:57:34.694879193 -0600
+++ ./source/main/BEGINQEPCAD.c 2013-08-30 16:28:15.882368349 -0600
@@ -49,7 +49,7 @@ void BEGINQEPCAD(int &argc, char**& argv
{
int tmp = system("bash -c 'exit $(stty size | cut -d\" \" -f2)'");
tmp = WEXITSTATUS(tmp);
- if (10 <= tmp <= 512)
+ if (10 <= tmp && tmp <= 512)
cols = tmp;
}
--- ./source/userint/USERINT.c.orig 2012-03-16 06:49:30.000000000 -0600
+++ ./source/userint/USERINT.c 2013-08-30 16:30:52.370086235 -0600
@@ -446,7 +446,7 @@ void VERTFILL2D(Word D)
Word L, S, T, CB;
/* GET 1D CAD STACK */
- L = L = LELTI(D,CHILD);
+ L = LELTI(D,CHILD);
if (L == NIL)
{
SWRITE("Must by a 2D CAD!\n");

314
qepcad-B-uninit.patch Normal file
View File

@ -0,0 +1,314 @@
--- ./cad2d/src/TICAD.c.orig 2012-03-16 06:49:32.000000000 -0600
+++ ./cad2d/src/TICAD.c 2013-08-30 15:42:57.518153269 -0600
@@ -43,6 +43,8 @@ Step2: /* Choose. */
if (L == 0) { /* Init for 1D Sectors */
L = LELTI(D,CHILD);
d = 1; }
+ else
+ d = 0;
if (d == 1 && L != NIL) { /* Choose next 1D sectors */
c = FIRST(L);
@@ -51,6 +53,7 @@ Step2: /* Choose. */
else
L = RED2(L); }
else if (d == 1 && L == NIL) { /* Init for 1D sections */
+ c = NIL;
d = 0;
L = RED(LELTI(D,CHILD));
}
--- ./extensions/rend/WRITE_PS_INTERACTIVE.cc.orig 2012-03-16 06:49:31.000000000 -0600
+++ ./extensions/rend/WRITE_PS_INTERACTIVE.cc 2013-08-28 15:31:47.564213356 -0600
@@ -262,6 +262,8 @@ void WRITE_PS_INTERACTIVE(Rend_Cell &M,
if (t == 'p') {
SWRITE("Enter projetion factor by (level,index): ");
p = LREAD(); }
+ else
+ p = NIL;
switch(c) {
case 'x': // 1D Sectors
--- ./extensions/lift2D/modIBPRRIOAPSF.c.orig 2012-03-16 06:49:32.000000000 -0600
+++ ./extensions/lift2D/modIBPRRIOAPSF.c 2013-08-28 15:36:30.044273572 -0600
@@ -77,6 +77,7 @@ Step4: /* Isolate the real roots of eac
Step5: /* Refine roots? */
if (k == NIL)
goto Return;
+ Js = NIL;
Ls = NIL;
for(Lp = L; Lp != NIL; Lp = RED(Lp))
{
--- ./extensions/lift2D/modHIPRRID.c.orig 2012-03-16 06:49:32.000000000 -0600
+++ ./extensions/lift2D/modHIPRRID.c 2013-08-28 15:34:25.468248208 -0600
@@ -28,6 +28,7 @@ Step1: /* Compute a bound for the positi
k = HIPPRB(n,A);
Step2: /* Isolate the positive roots. */
+ L = NIL;
if (k == NIL) {
L1 = NIL;
goto Step3; }
--- ./extensions/adj2d/oldadj/ACMADJ2D.c.orig 2012-03-16 06:49:31.000000000 -0600
+++ ./extensions/adj2d/oldadj/ACMADJ2D.c 2013-08-28 15:27:00.100211471 -0600
@@ -29,6 +29,7 @@ Step1: /* Get (A,I) defining c. */
FIRST2(Ip,&ip1,&ip2);
i1 = RNLBRN(ip1);
i2 = RNLBRN(ip2);
+ t = 0;
Step2: /* Get sample points for c_l and c_r. */
i_l = RNLBRN(SPRLC(c_l));
--- ./extensions/sfext/extlang/SCAD2ESCAD.c.orig 2012-03-16 06:49:31.000000000 -0600
+++ ./extensions/sfext/extlang/SCAD2ESCAD.c 2013-08-28 14:48:30.455672479 -0600
@@ -27,6 +27,8 @@ Step2: /* Generate correct i-level signi
P_i = RED(P_i);
s = RED(s); }
s = INV(ss); }
+ else
+ s = NIL;
Step3: /* Construct extended Sub-CAD cell structure. */
EDs = LIST7(C,A,LELTI(Ds,SC_INX),NIL,s,NIL,UNDET);
--- ./extensions/sfext/sfcons/SFCFULLDf.c.orig 2012-03-16 06:49:31.000000000 -0600
+++ ./extensions/sfext/sfcons/SFCFULLDf.c 2013-08-28 15:14:42.812090282 -0600
@@ -52,6 +52,7 @@ Step2: /* Extended language. */
if (Lt == NIL && Lf == NIL) {
SWRITE("No cells have truth values!\n");
+ SF = NIL;
goto Return; }
t = ESPCADDOPFSUFF(Pp,LIST1(Dp));
LA = LISTOETAmod(Pp,n,t==NIL);
--- ./extensions/sfext/sfcons/SFC4.c.orig 2012-03-16 06:49:31.000000000 -0600
+++ ./extensions/sfext/sfcons/SFC4.c 2013-08-30 15:15:10.647569953 -0600
@@ -31,6 +31,7 @@ void QepcadCls::SFC4(Word D, Word P, Wor
{
Word t,SF,Dp,Pp,Lt,Lf,LA,Q,D1,P1,D0,P0,J0,i,Lp,pflag;
char e,s,m,c;
+ e = s = m = c = '\0';
T1 = T2 = T3 = T4 = 0;
F1 = 0;
--- ./extensions/sfext/sfcons/SFC3.c.orig 2012-03-16 06:49:31.000000000 -0600
+++ ./extensions/sfext/sfcons/SFC3.c 2013-08-28 15:16:00.827160334 -0600
@@ -90,7 +90,7 @@ Step3: /* The normal language. */
switch(m) {
case (0) : SF = NECCONDS(Lt,Lf,LA,Pp); break;
case (1) : SF = NAIVESF(Lt,Lf,LA,Pp); break;
- case (2) : SWRITE("GEOTEST requires the extended language!\n"); goto Return; } }
+ case (2) : SF = NIL; SWRITE("GEOTEST requires the extended language!\n"); goto Return; } }
Step4: /* Massage the formula. */
pflag = 1;
--- ./extensions/sfext/sfcons/SFC3f.c.orig 2012-03-16 06:49:31.000000000 -0600
+++ ./extensions/sfext/sfcons/SFC3f.c 2013-08-28 15:15:36.243138257 -0600
@@ -88,7 +88,7 @@ Step3: /* The normal language. */
switch(m) {
case (0) : SF = NECCONDS(Lt,Lf,LA,Pp); break;
case (1) : SF = NAIVESF(Lt,Lf,LA,Pp); break;
- case (2) : SWRITE("GEOTEST requires the extended language!\n"); goto Return; } }
+ case (2) : SF = NIL; SWRITE("GEOTEST requires the extended language!\n"); goto Return; } }
Step4: /* Massage the formula. */
pflag = 1;
--- ./extensions/sfext/formula/FMAATOMREAD.c.orig 2012-03-16 06:49:31.000000000 -0600
+++ ./extensions/sfext/formula/FMAATOMREAD.c 2013-08-28 14:56:16.650119530 -0600
@@ -18,7 +18,7 @@ void FMAATOMREAD(Word Q, Word V, Word *F
/* hide r,s,t; */
Step1: /* Read the left polynomial. */
- t = 1; r = LENGTH(V);
+ t = 1; r = LENGTH(V); F = NIL;
IPEXPREAD(r,V,&P1,&t); if (t == 0) goto Return;
Step2: /* Read the relational operator. */
@@ -71,6 +71,7 @@ Word POLYINDEX(Word P, Word p, Word r, W
p = SECOND(p);
/* Is p already in P? */
+ pp = NIL;
P_r = LELTI(P,r); *t = 0;
for(Pp = P_r; Pp != NIL; Pp = RED(Pp)) {
pp = FIRST(Pp);
--- ./extensions/sfext/formula/FMASMOOTH.c.orig 2012-03-16 06:49:31.000000000 -0600
+++ ./extensions/sfext/formula/FMASMOOTH.c 2013-08-28 14:50:13.736716426 -0600
@@ -16,6 +16,7 @@ Step1: /* Atoms and Constants. */
if (ISLIST(F1) || F1 == TRUE || F1 == FALSE) {
G = F;
goto Return; }
+ G = NIL;
Step2: /* AND's */
if (F1 == ANDOP) {
--- ./extensions/sfext/addpol/MINPFSETNSC.c.orig 2013-08-28 16:29:15.985921210 -0600
+++ ./extensions/sfext/addpol/MINPFSETNSC.c 2013-08-30 15:07:56.269063272 -0600
@@ -42,7 +42,7 @@ Word MINPFSETNSC(Word P,Word S,Word D,Wo
Word x_s,js,Ls,O,Q,Q_i,Sp,Pp,i,Cp,*V,*Vp,**A,a,N,k,S_r,I,j,p;
Step1: /* Initialization. */
- C = NIL; Sltr = NIL; Pltr = NIL; N = LENGTH(K);
+ C = NIL; Sltr = NIL; S_r = NIL; Pltr = NIL; N = LENGTH(K);
Step2: /* Loop over each level in D. */
for(r = 1; r <= N; r++) {
--- ./extensions/sfext/espcad/PCAD2ESPCAD.c.orig 2012-03-16 06:49:31.000000000 -0600
+++ ./extensions/sfext/espcad/PCAD2ESPCAD.c 2013-08-30 15:10:16.295906419 -0600
@@ -44,6 +44,8 @@ Step2: /* Generate correct i-level signi
P_i = RED(P_i);
s = RED(s); }
s = INV(ss); }
+ else
+ s = NIL;
Step3: /* Construct extended Sub-CAD cell structure. */
EDs = LIST8(C,A,LELTI(Ds,SC_INX),NIL,s,NIL,UNDET,UNDET);
--- ./source/io/FREADR.c.orig 2012-03-16 06:49:30.000000000 -0600
+++ ./source/io/FREADR.c 2013-08-28 15:44:52.884175239 -0600
@@ -23,7 +23,7 @@ void FREADR(Word V, Word f, Word *Fs_, W
/* hide C,i,q,r,t; */
Step1: /* Read quantifier list. */
- t = 1; Q = NIL; r = LENGTH(V);
+ Fs = NIL; t = 1; Q = NIL; r = LENGTH(V);
for (i = f + 1; i <= r; i++)
{
C = CREADB();
--- ./source/io/CATTRNRDR.c.orig 2012-03-16 06:49:29.000000000 -0600
+++ ./source/io/CATTRNRDR.c 2013-08-28 15:40:18.276327460 -0600
@@ -39,7 +39,7 @@ Step2: /* Get the internal representatio
goto Return;
Step3: /* Error exit. */
- DIELOC(); t = 0;
+ DIELOC(); V = 0; t = 0;
Return: /* Prepare for return. */
*V_ = V;
--- ./source/io/ATOMFRDR.c.orig 2012-03-16 06:49:29.000000000 -0600
+++ ./source/io/ATOMFRDR.c 2013-08-28 15:37:47.085286610 -0600
@@ -76,7 +76,7 @@ void ETFATOMRDR(Word V, Word P1, BDigit
Word t, F, r, j, P2, P2p, r1, r2, a, P, s;
Step1: /* Prepare */
- t = 1; r = LENGTH(V);
+ t = 1; r = LENGTH(V); F = NIL;
Step2: /* Read "_root_" */
--- ./source/io/RLOPRDR.c.orig 2012-03-16 06:49:29.000000000 -0600
+++ ./source/io/RLOPRDR.c 2013-08-28 15:47:38.828113556 -0600
@@ -31,7 +31,7 @@ Step1: /* Read in. */
goto Return;
Step2: /* Error exit. */
- DIELOC(); t = 0; goto Return;
+ DIELOC(); p = 0; t = 0; goto Return;
Return: /* Prepare for return. */
*p_ = p;
--- ./source/io/LGOPRDR.c.orig 2012-03-16 06:49:29.000000000 -0600
+++ ./source/io/LGOPRDR.c 2013-08-28 15:46:19.140193709 -0600
@@ -50,7 +50,7 @@ Step1: /* Read in. */
{ SWRITE("Error LGOPRDR: Logic operator was expected.\n"); goto Step2; }
Step2: /* Error exit. */
- DIELOC(); t = 0; goto Return;
+ DIELOC(); p = 0; t = 0; goto Return;
Return: /* Prepare for return. */
*p_ = p;
--- ./source/io/DESIREDRDR.c.orig 2012-03-16 06:49:29.000000000 -0600
+++ ./source/io/DESIREDRDR.c 2013-08-28 15:41:17.860345319 -0600
@@ -15,6 +15,7 @@ void DESIREDRDR(Word *F_, Word *t_)
/* hide C,C1,R,V1,V2,t; */
Step1: /* Atomic condition. */
+ F = NIL;
t = 1;
C = CREADB(); if (C == '[') goto Step2;
BKSP();
--- ./source/io/QFRDR.c.orig 2012-03-16 06:49:29.000000000 -0600
+++ ./source/io/QFRDR.c 2013-08-28 15:46:59.100124953 -0600
@@ -39,7 +39,7 @@ Step1: /* Read in. */
goto Return;
Step2: /* Error exit. */
- DIELOC(); t = 0; goto Return;
+ DIELOC(); q = 0; t = 0; goto Return;
Return: /* Prepare for return. */
*q_ = q;
--- ./source/io/GREADR.c.orig 2012-03-16 06:49:29.000000000 -0600
+++ ./source/io/GREADR.c 2013-08-28 15:45:29.740181394 -0600
@@ -33,7 +33,7 @@ Step2: /* Read digits and convert. */
BKSP(); a = S * a; goto Return;
Step3: /* Error. */
- DIELOC(); t = 0; goto Return;
+ DIELOC(); a = 0; t = 0; goto Return;
Return: /* Prepare for return. */
*a_ = a;
--- ./source/main/QEPCADauto.c.orig 2012-03-16 06:49:30.000000000 -0600
+++ ./source/main/QEPCADauto.c 2013-08-28 15:52:45.403836140 -0600
@@ -27,6 +27,8 @@ void QepcadCls::QEPCADauto(Word Fs, Word
char c1,c2; /* Chris variables. */
Step1: /* Normalize. */
+ t = 0;
+ F_e = F_n = F_s = NIL;
FIRST4(Fs,&r,&f,&Q,&Fh);
F = NORMQFF(Fh);
if (GVUA != NIL) GVNA = NORMQFF(GVUA);
--- ./source/main/QEPCAD.c.orig 2012-03-16 06:49:30.000000000 -0600
+++ ./source/main/QEPCAD.c 2013-08-28 15:51:13.747873723 -0600
@@ -26,6 +26,8 @@ void QepcadCls::QEPCAD(Word Fs, Word *t_
Word Cs,Ps,Qs,Pps,Cps,Qps,SF; /* Chris variables. */
char c1,c2; /* Chris variables. */
Step1: /* Normalize. */
+ t = 0;
+ F_e = F_n = F_s = NIL;
FIRST4(Fs,&r,&f,&Q,&Fh);
/*Int*/ PCNSTEP = 1;
/*Int*/ if (INTERACT()) USERINT(LFS("Before Normalization"),'a');
--- ./source/ticad/SUBST.c.orig 2012-03-16 06:49:30.000000000 -0600
+++ ./source/ticad/SUBST.c 2013-08-30 15:36:14.959182825 -0600
@@ -24,6 +24,7 @@ Word QepcadCls::SUBST(Word c, Word k, Wo
Word P,L,Sp,T1,T2,G,Q,f,i;
Step1: /* Substitute. */
+ f = UNDET;
L = NIL;
S = NIL;
Bp = B;
--- ./source/ticad/AFUPMPR.c.orig 2012-03-16 06:49:30.000000000 -0600
+++ ./source/ticad/AFUPMPR.c 2013-08-30 15:32:39.031457638 -0600
@@ -27,6 +27,7 @@ void AFUPMPR(Word M, Word I, Word B, Wor
/* hide L1,Lp,j,jp,s,t,v,vp; */
Step1: /* Initialize. */
+ j = 0;
FIRST2(J,&a,&b);
t = AFUPSR(M,I,B,b);
if (t == 0)
--- ./source/ticad/SUBSTR.c.orig 2012-03-16 06:49:30.000000000 -0600
+++ ./source/ticad/SUBSTR.c 2013-08-30 15:36:46.631109286 -0600
@@ -24,6 +24,7 @@ Word QepcadCls::SUBSTR(Word c, Word k, W
Word P,L,Q,T1,T2,Sp,G,f,i;
Step1: /* Do it. */
+ f = UNDET;
L = NIL;
S = NIL;
Bp = B;
--- ./source/userint/PREQNCONSTL.c.orig 2012-03-16 06:49:30.000000000 -0600
+++ ./source/userint/PREQNCONSTL.c 2013-08-30 15:37:35.045721919 -0600
@@ -73,7 +73,7 @@ Return: /* Prepare for return. */
Word POLYLABEL(Word P, Word p, Word r, Word *t)
{
- Word P_r, Pp, pp;
+ Word P_r, Pp, pp = NIL;
for(; PDEG(p) == 0; r--)
p = SECOND(p);

1739
qepcad-B-unused.patch Normal file

File diff suppressed because it is too large Load Diff

116
qepcad-B.spec Normal file
View File

@ -0,0 +1,116 @@
Name: qepcad-B
Version: 1.69
Release: 2%{?dist}
Summary: Quantifier elimination tool
License: MIT
URL: http://www.usna.edu/CS/~qepcad/B/QEPCAD.html
Source0: http://www.usna.edu/CS/~qepcad/INSTALL/%{name}.%{version}.tar.gz
# Don't require users to set the "qe" environment variable. Not for upstream.
Patch0: %{name}-env.patch
# Add gcc attributes for better efficiency and warnings. Upstream: 20 Nov 2013.
Patch1: %{name}-attr.patch
# Fix use of uninitialized variables. Upstream: 20 Nov 2013.
Patch2: %{name}-uninit.patch
# Fix a non-void function where control can fall off the end. Upstream:
# 20 Nov 2013.
Patch3: %{name}-return.patch
# Fix abstract base classes with non-virtual destructors. Upstream:
# 20 Nov 2013.
Patch4: %{name}-destructor.patch
# Add parentheses to disambiguate mixed boolean operators. Upstream:
# 20 Nov 2013.
Patch5: %{name}-parens.patch
# Fix some mixed signed/unsigned operations. Upstream: 20 Nov 2013.
Patch6: %{name}-signed.patch
# Fix syntactically incorrect expressions. Upstream: 20 Nov 2013.
Patch7: %{name}-syntax.patch
# Remove unused variables and static functions.
Patch8: %{name}-unused.patch
BuildRequires: freeglut-devel
BuildRequires: readline-devel
BuildRequires: saclib-devel
Requires: bash
Requires: Singular
%description
QEPCAD is an implementation of quantifier elimination by partial
cylindrical algebraic decomposition due originally to Hoon Hong, and
subsequently added on to by many others. It is an interactive
command-line program written in C/C++, and based on the SACLIB library.
This is QEPCAD B version 1.x, the "B" designating a substantial
departure from the original QEPCAD and distinguishing it from any
development of the original that may proceed in a different direction.
%prep
%setup -q -n qesource
%patch0
%patch1
%patch2
%patch3
%patch4
%patch5
%patch6
%patch7
%patch8
# Adapt to the Fedora saclib package
sed -i 's,\${saclib}/lib/saclib.\.a,-lsaclib,' source/Makefile cad2d/Makefile
# Use the right build flags
sed -i "s/-O4/%{optflags} -Wno-unused-label $RPM_LD_FLAGS/" plot2d/Makefile
%build
# FIXME: %%{?_smp_mflags} doesn't work
export saclib=%{_prefix}
export qe=$PWD
export CC=g++
export CCo=g++
export FLAGS="%{optflags} -I%{_includedir}/saclib -Wno-unused-label"
export FLAGSo="$FLAGS"
export SPECIFLAGS="-I%{_includedir}/saclib"
export SPECLFLAGS="$RPM_LD_FLAGS"
make -C extensions/sfext
make -C extensions/adj2d
make -C extensions/rend
make -C extensions/newadj
make -C extensions/lift2D
make -C source opt FLAGSo="$FLAGS"
make -C plot2d
make -C cad2d opt FLAGSo="$FLAGS"
%install
#Install the binaries
mkdir -p %{buildroot}%{_bindir}
install -p -m 0755 source/qepcad %{buildroot}%{_bindir}
install -p -m 0755 plot2d/ADJ2D_plot %{buildroot}%{_bindir}
install -p -m 0755 cad2d/cad2d %{buildroot}%{_bindir}
# Install the default settings file
mkdir -p %{buildroot}%{_datadir}/qepcad
sed 's/^#S/S/' default.qepcadrc > \
%{buildroot}%{_datadir}/qepcad/default.qepcadrc
touch -r default.qepcadrc %{buildroot}%{_datadir}/qepcad/default.qepcadrc
# Install qepcad.help and the expected symbolic links
mkdir -p %{buildroot}%{_datadir}/qepcad/bin
cp -p source/qepcad.help %{buildroot}%{_datadir}/qepcad/bin
ln -s %{_bindir}/ADJ2D_plot %{buildroot}%{_datadir}/qepcad/bin
ln -s %{_bindir}/cad2d %{buildroot}%{_datadir}/qepcad/bin
ln -s %{_bindir}/qepcad %{buildroot}%{_datadir}/qepcad/bin
%files
%doc LICENSE LOG
%{_bindir}/qepcad
%{_bindir}/ADJ2D_plot
%{_bindir}/cad2d
%{_datadir}/qepcad/
%changelog
* Thu Feb 13 2014 Jerry James <loganjerry@gmail.com> - 1.69-2
- Install qepcad.help
* Thu Nov 21 2013 Jerry James <loganjerry@gmail.com> - 1.69-1
- Initial RPM

View File

@ -0,0 +1 @@
8eb38dcc186076896837c75f2f206bb8 qepcad-B.1.69.tar.gz